(57)【要約】【課題】セキュリティ強度を落とすことなく、高速にセキュリティ保護領域へアクセスすること。【解決手段】セッション鍵暗復号部２２０は、Host IF２１０を介してホスト機器１１０との間で送受信するデータをセッション鍵Ｋｓｓにより暗復号化する。格納鍵暗復号部２３０は、Flash IF２４０を介してフラッシュメモリ４００に書き込むべきデータまたはフラッシュメモリ４００から読み出すべきデータを格納鍵Ｋｓｔにより暗復号化する。アクセス管理情報暗号部３３０は、鍵記憶部３１０から取得したセッション鍵Ｋｓｓおよび格納鍵Ｋｓｔを、鍵生成部３２０が生成した暗号鍵Ｋｓで暗号化してＳＤＣ２００に送信する。アクセス管理情報復号部２６０は、受信したセッション鍵Ｋｓｓおよび格納鍵Ｋｓｔを、鍵生成部２５０が生成した暗号鍵Ｋｓで復号化して、セッション鍵暗復号部２２０および格納鍵暗復号部２３０に設定する。【選択図】図１
2007316865.tif 000002
【特許請求の範囲】
【請求項１】
メモリチップへのデータの書き込みまたはメモリチップからのデータの読み出しを実行するスマートカードチップと、前記スマートカードチップにより実行されるデータの書き込みまたは読み出しを制御するコントローラチップとが設けられたメモリカードにおいて、
前記メモリカードと外部機器との間で伝送されるデータを暗復号処理する第１の暗復号部と、
前記メモリチップと前記スマートカードチップとの間で伝送されるデータを暗復号処理する第２の暗復号部と、を備え、
前記第１の暗復号部および前記第２の暗復号部の少なくとも一方は、前記コントローラチップに設けられている、
ことを特徴とするメモリカード。
【請求項２】
前記第１の暗復号部および前記第２の暗復号部は、前記コントローラチップに設けられている、
ことを特徴とする請求項１記載のメモリカード。
【請求項３】
前記第１の暗復号部が暗復号処理に用いるセッション鍵と、前記第２の暗復号部が暗復号処理に用いる格納鍵と、を保持する鍵記憶部をさらに備え、
前記鍵記憶部は、前記スマートカードチップに設けられている、
ことを特徴とする請求項２記載のメモリカード。
【請求項４】
前記鍵記憶部が保持する、前記セッション鍵と前記格納鍵とを暗号化するセキュリティ鍵暗号部と、
前記セキュリティ鍵暗号部で暗号化された前記セッション鍵および前記格納鍵を復号化するセキュリティ鍵復号部とをさらに備え、
前記セキュリティ鍵暗号部は、前記スマートカードチップに設けられ、
前記セキュリティ鍵復号部は、前記コントローラチップに設けられている、
ことを特徴とする請求項３記載のメモリカード。
【請求項５】
前記セキュリティ鍵暗号部が暗号化に用いるセキュリティ鍵を生成する暗号化セキュリティ鍵生成部と、
前記セキュリティ鍵復号部が復号化に用いるセキュリティ鍵を生成する復号化セキュリティ鍵生成部とをさらに備え、
前記暗号化セキュリティ鍵生成部は、前記スマートカードチップに設けられ、
前記復号化セキュリティ鍵生成部は、前記コントローラチップに設けられている、
ことを特徴とする請求項４記載のメモリカード。
【請求項６】
前記暗号化セキュリティ鍵生成部および前記復号化セキュリティ鍵生成部は、
前記外部機器からのリセット命令を受けると、前記セキュリティ鍵暗号部および前記セキュリティ鍵復号部が暗復号処理に用いるセキュリティ鍵を新たに生成する、
ことを特徴とする請求項５記載のメモリカード。
【請求項７】
前記メモリチップには、複数の論理的な領域に分割されたセキュリティ情報を格納するためのセキュリティ保護領域が設けられている、
ことを特徴とする請求項３記載のメモリカード。
【請求項８】
前記鍵記憶部は、
前記セッション鍵および前記格納鍵を、前記セキュリティ保護領域の前記分割された領域ごとに対応付けて保持する、
ことを特徴とする請求項７記載のメモリカード。
【請求項９】
前記第１の暗復号部は、前記コントローラチップに設けられ、
前記第２の暗復号部は、前記スマートカードチップに設けられている、
ことを特徴とする請求項１記載のメモリカード。
【請求項１０】
前記第１の暗復号部は、前記スマートカードチップに設けられ、
前記第２の暗復号部は、前記コントローラチップに設けられている、
ことを特徴とする請求項１記載のメモリカード。
【請求項１１】
スマートカードチップで、メモリチップへのデータの書き込みまたはメモリチップからのデータの読み出しを実行するデータ伝送ステップと、コントローラチップで、前記データ伝送ステップにより実行されるデータの書き込みまたは読み出しを制御する制御ステップと、を備えるメモリカードのメモリチップへのアクセス方法であって、
前記メモリカードと外部機器との間で伝送されるデータを暗復号処理する第１の暗復号ステップと、
前記メモリチップと前記スマートカードチップとの間で伝送されるデータを暗復号処理する第２の暗復号ステップと、を備え、
前記第１の暗復号ステップおよび前記第２の暗復号ステップの少なくとも一方は、前記コントローラチップで実行される、
ことを特徴とするメモリカードのメモリチップへのアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティ処理を行うメモリカードに関する。
【背景技術】
【０００２】
セキュリティ機能を有する従来のメモリカードにおいて、Flashメモリにアクセスしてデータの書き込みおよび読み出しを行う技術として、例えば、特許文献１に記載されているものがある。
【０００３】
特許文献１には、フラッシュメモリチップと、スマートカードチップと、ホスト機器からの要求に応じてフラッシュメモリチップおよびスマートカードチップへのデータの読み書きを制御するコントローラチップとを備えるメモリカードが開示されている。このフラッシュメモリチップは、ノーマルデータエリアおよびセキュアデータエリアを有する。ノーマルデータエリアは、ホスト機器からのデータを記憶するための領域である。また、セキュアデータエリアは、スマートカードチップが拡張メモリとして利用するためのものであり、セキュリティ保護領域である。
【０００４】
また、特許文献２には、ホスト機器からのコマンドにセキュリティ処理に関する情報が含まれている場合に、スマートカードチップがホスト機器からのデータを暗復号化してセキュリティ保護領域に格納する記憶装置が開示されている。
【０００５】
特許文献１および特許文献２記載のメモリカードまたは記憶装置においては、セキュリティ保護領域へのアクセスは、例えば、図１２に示すようなステップを経ることにより行われる。
【０００６】
まず、ホスト機器１０は、フラッシュメモリ２０のセキュリティ保護領域２１へのメモリアクセスの旨を含むセキュアライトコマンドをコントローラチップ３０に送信する（ステップＡ）。次いで、コントローラチップ３０は、このセキュアライトコマンドをＡＰＤＵ（Application Protocol Data Unit）形式に変換してスマートカードチップ４０に転送する（ステップＢ）。次いで、スマートカードチップ４０上のアプリケーションは、ＡＰＤＵコマンドを解釈した後、ＡＰＤＵ形式によるセキュリティ保護領域２１へのアクセス要求であるライト・リード転送コマンドをコントローラチップ３０に送信する（ステップＣ）。次いで、コントローラチップ３０は、ライト・リード転送コマンドに従って、フラッシュメモリ２０のセキュリティ保護領域２１にアクセスしてライト・リード処理を行う（ステップＤ）。次いで、コントローラチップ３０は、ライト・リードの処理結果を示すライト・リードレスポンスをスマートカードチップ４０に返信する（ステップＥ）。次いで、スマートカードチップ４０上のアプリケーションは、ライト・リードレスポンスが示すライト・リードの処理結果をレスポンスＡＰＤＵとして組み立ててコントローラチップ３０に返信する（ステップＦ）。そして、コントローラチップ３０は、セキュアリードコマンドの受信時に、レスポンスＡＰＤＵをホスト機器１０に返信する（ステップＧ）。
【特許文献１】特開２００４−２９５１６０号公報
【特許文献２】特開２００３−２２２１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のメモリカードまたは記憶装置においては、セキュリティ強度を確保するため、コントローラチップとスマートカードチップとがデータのやりとりを行う必要があり、このデータのやりとりが多すぎる結果、フラッシュメモリへのアクセス速度が低くなってしまうという問題がある。
【０００８】
特に、セキュリティ保護領域へのアクセス時に、コントローラチップとスマートカードチップとの間の通信回数および送受信されるデータの量が多く、十分なアクセス速度を出すことができないという問題がある。また、セキュリティ保護領域に格納されるデータの暗復号化を行う場合、その暗復号化はスマートカードチップで行われるので、暗復号化されたデータがコントローラチップとスマートカードチップとの間でやり取りされることになり、この点においてもセキュリティ保護領域へのアクセス速度には一定の限界がある。
【０００９】
本発明は、かかる点に鑑みてなされたものであり、セキュリティ強度を落とすことなく、高速にセキュリティ保護領域へアクセスすることができるメモリカードを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のメモリカードは、メモリチップへのデータの書き込みまたはメモリチップからのデータの読み出しを実行するスマートカードチップと、前記スマートカードチップにより実行されるデータの書き込みまたは読み出しを制御するコントローラチップとが設けられたメモリカードにおいて、前記メモリカードと外部機器との間で伝送されるデータを暗復号処理する第１の暗復号部と、前記メモリチップと前記スマートカードチップとの間で伝送されるデータを暗復号処理する第２の暗復号部と、を備え、前記第１の暗復号部および前記第２の暗復号部の少なくとも一方は、前記コントローラチップに設けられている、構成を採る。
【００１１】
本発明のメモリカードのメモリチップへのアクセス方法は、スマートカードチップで、メモリチップへのデータの書き込みまたはメモリチップからのデータの読み出しを実行するデータ伝送ステップと、コントローラチップで、前記データ伝送ステップにより実行されるデータの書き込みまたは読み出しを制御する制御ステップと、を備えるメモリカードのメモリチップへのアクセス方法であって、前記メモリカードと外部機器との間で伝送されるデータを暗復号処理する第１の暗復号ステップと、前記メモリチップと前記スマートカードチップとの間で伝送されるデータを暗復号処理する第２の暗復号ステップと、を備え、前記第１の暗復号ステップおよび前記第２の暗復号ステップの少なくとも一方は、前記コントローラチップで実行されるようにした。
【発明の効果】
【００１２】
本発明によれば、セキュリティ処理におけるコントローラチップとスマートカードチップとの間の通信回数および送受信されるデータの量を削減することができる。これにより、セキュリティ保護領域へのアクセスを高速化することができる。
【００１３】
また、コントローラチップのなりすましや盗聴による、セキュリティ処理に用いられるセッション鍵Ｋｓｓおよび格納鍵Ｋｓｔの不正傍受を防止することができ、ひいてはセキュリティ強度を落とすことなく、セキュリティ保護領域にアクセスすることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１５】
（実施の形態１）
本実施の形態では、図１で示されるように、ＳＤＣ（SD controller chip）２００と、ＳＣＣ（smart card chip）３００とのデータのやり取りにより、フラッシュメモリ（Flash）４００に、ホスト機器１１０からの所定データを書き込むメモリカード１００について説明する。
【００１６】
具体的には、本実施の形態では、ＳＤＣ２００はホスト機器１１０との間で伝送されるデータの暗復号処理を行う、ＳＤＣ２００に設けられたセッション鍵暗復号部２２０と、フラッシュメモリ４００との間で伝送されるデータの暗復号処理を行う、ＳＤＣ２００に設けられた格納鍵暗復号部２３０と、により構成されている。
【００１７】
また、ＳＣＣ３００に設けられた鍵記憶部３１０は、セッション鍵暗復号部２２０が暗復号処理に用いるセッション鍵Ｋｓｓと、格納鍵暗復号部２３０が暗復号処理に用いる格納鍵Ｋｓｔと、を保持するように構成されている。
【００１８】
また、ＳＤＣ２００に設けられた鍵生成部２５０およびＳＣＣ３００に設けられた鍵生成部３２０は、お互いを認証し合った上で、ＳＤＣ２００とＳＣＣ３００との間の通信路を伝送されるデータを暗復号処理するための暗号鍵Ｋｓを生成するように構成されている。ここで、ＳＤＣ２００とＳＣＣ３００との間の通信路を伝送されるデータには、例えば、鍵記憶部３１０が保持するセッション鍵Ｋｓｓおよび格納鍵Ｋｓｔが含まれる。
【００１９】
上記メモリカード１００について、以下で詳述する。
【００２０】
図１は、本発明の実施の形態１に係るメモリカード１００の構成を示すブロック図である。
【００２１】
図１において、メモリカード１００は、ＳＤ（Secure Digital）コントローラチップ（以下「ＳＤＣ」と略記する）２００、スマートカードチップ（以下「ＳＣＣ」と略記する）３００、およびフラッシュメモリ４００を備える。
【００２２】
メモリカード１００は、携帯電話機やＰＤＡ（Personal Digital Assistant）、ＰＣ（Personal Computer）などのホスト機器１１０の端子に挿入されることができる。また、メモリカード１００は、接続されたホスト機器１１０との間で各種のデータを送受信する機能を有する。
【００２３】
ＳＤＣ２００は、ＳＣＣ３００およびフラッシュメモリ４００と接続されており、フラッシュメモリ４００へのデータの書き込みおよびフラッシュメモリ４００からのデータの読み出し、特にセキュリティ処理が必要なデータの書き込みおよび読み出しを制御する。
【００２４】
ＳＤＣ２００は、ホストインターフェース（以下「Host IF」という）２１０、セッション鍵暗復号部２２０、格納鍵暗復号部２３０、フラッシュインターフェース（以下「Flash IF」という）２４０、鍵生成部２５０、アクセス管理情報復号部２６０、およびＳＣＣインターフェース（以下「SCC IF」という）２７０を備える。
【００２５】
Host IF２１０は、ホスト機器１１０との間で各種のデータを送受信する。Host IF２１０は、ホスト機器１１０からフラッシュメモリ４００にアクセスする旨のコマンドを受信すると、そのコマンドをSCC IF２７０に出力する。フラッシュメモリ４００にアクセスする旨のコマンドには、例えばフラッシュメモリ４００のうちどの領域にアクセスするかを示すアクセス領域指定コマンド、およびアクセスする領域に書き込むべきデータを含むデータ転送コマンドまたはアクセスする領域から読み出すべきデータを含むデータ取得コマンドが含まれる。また、アクセス領域指定コマンドには、アクセスすべき領域を特定するための領域ナンバ、ブロックアドレス、およびブロック長などの情報が含まれる。
【００２６】
Host IF２１０は、ホスト機器１１０からのコマンドがフラッシュメモリ４００へのデータの書き込みを示す場合（データ転送コマンド）、フラッシュメモリ４００に書き込むべきデータおよびデータ転送コマンドをセッション鍵暗復号部２２０に出力する。また、Host IF２１０は、ホスト機器１１０からのコマンドがフラッシュメモリ４００からのデータの読み出しを示す場合（データ取得コマンド）、データ取得コマンドをFlash IF２４０に出力し、フラッシュメモリ４００から読み出されたデータをホスト機器１１０に送信する。
【００２７】
また、Host IF２１０は、ホスト機器１１０からリセット要求コマンドを受信すると、このリセット要求コマンドを鍵生成部２５０およびSCC IF２７０に出力する。
【００２８】
ここで、「リセット要求コマンド」とは、ＳＤＣ２００とＳＣＣ３００との間の通信路を伝送されるデータを暗復号化するための鍵を生成する旨の要求を含むコマンドである。リセット要求コマンドについては、後の動作説明で詳細に説明する。
【００２９】
第１の暗復号部としてのセッション鍵暗復号部２２０は、Host IF２１０を介してホスト機器１１０との間で送受信するデータをセッション鍵Ｋｓｓにより暗復号化する。このセッション鍵Ｋｓｓは、ＳＣＣ３００の鍵記憶部３１０が保持するアクセス管理情報に、アクセス領域指定コマンドにより指定される領域と対応付けられて格納されている。したがって、セッション鍵Ｋｓｓは、フラッシュメモリ４００のアクセス領域指定コマンドにより指定される領域により異なりうる。アクセス管理情報に格納されるセッション鍵Ｋｓｓについては、後で詳細に説明する。
【００３０】
セッション鍵暗復号部２２０は、データの書き込み時には、Host IF２１０を介してホスト機器１１０から送信された、フラッシュメモリ４００に書き込むべきデータをセッション鍵Ｋｓｓにより復号化する。また、セッション鍵暗復号部２２０は、セッション鍵Ｋｓｓにより復号化されたデータを格納鍵暗復号部２３０に出力する。
【００３１】
セッション鍵暗復号部２２０は、データの読み出し時には、フラッシュメモリ４００から読み出されたデータをセッション鍵Ｋｓｓにより暗号化する。また、セッション鍵暗復号部２２０は、セッション鍵Ｋｓｓにより暗号化されたデータをHost IF２１０を介してホスト機器１１０に送信する。
【００３２】
第２の暗復号部としての格納鍵暗復号部２３０は、Flash IF２４０を介してフラッシュメモリ４００に書き込むべきデータまたはフラッシュメモリ４００から読み出すべきデータを格納鍵Ｋｓｔにより暗復号化する。この格納鍵Ｋｓｔは、ＳＣＣ３００の鍵記憶部３１０が保持するアクセス管理情報に、アクセス領域指定コマンドにより指定される領域と対応付けられて格納されている。したがって、格納鍵Ｋｓｔは、フラッシュメモリ４００のアクセス領域指定コマンドにより指定される領域により異なりうる。アクセス管理情報に格納される格納鍵Ｋｓｔについては、後に詳細に説明する。
【００３３】
格納鍵暗復号部２３０は、データの書き込み時には、セッション鍵暗復号部２２０から入力された、フラッシュメモリ４００への書き込みデータを格納鍵Ｋｓｔにより暗号化する。また、格納鍵暗復号部２３０は、格納鍵Ｋｓｔにより暗号化された書き込みデータを、Flash IF２４０を介して、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域に送信する。
【００３４】
格納鍵暗復号部２３０は、データの読み出し時には、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域から読み出され、Flash IF２４０を介して入力されたデータを、格納鍵Ｋｓｔにより復号化する。また、格納鍵暗復号部２３０は、格納鍵Ｋｓｔにより復号化された読み出しデータをセッション鍵暗復号部２２０に出力する。
【００３５】
Flash IF２４０は、フラッシュメモリ４００との間で各種のデータを送受信する。具体的には、Flash IF２４０は、格納鍵暗復号部２３０から入力された、フラッシュメモリ４００に書き込むべきデータを、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域に送信する。また、Flash IF２４０は、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域から読み出されたデータを受信して、受信データを格納鍵暗復号部２３０に出力する。
【００３６】
復号化セキュリティ鍵生成部としての鍵生成部２５０は、ＳＤＣ２００とＳＣＣ３００との間で送受信されるデータを暗復号化するための暗号鍵Ｋｓを生成する。具体的には、鍵生成部２５０は、鍵生成部２５０内のメモリ（図示せず）に格納された暗号鍵Ｋｐｓを用いて、リセット処理時にＳＣＣ３００から送信されるＡＴＲ（Answer to Reset）データに設定された乱数Ｒｎを暗号化することにより、暗号鍵Ｋｓを生成する。鍵生成部２５０は、生成された暗号鍵Ｋｓをアクセス管理情報復号部２６０に設定する。
【００３７】
鍵生成部２５０は、暗号鍵Ｋｓを生成する際に、鍵生成部２５０内のメモリ（図示せず）に格納された認証鍵Ｋｍを用いて、リセット処理時にＳＣＣ３００から送信されるＡＴＲデータに設定された乱数Ｒｎから認証子（ＭＡＣ１）を生成する。また、鍵生成部２５０は、生成された認証子（ＭＡＣ１）およびこの認証子（ＭＡＣ１）の検証命令を、SCC IF２７０を介してＳＣＣ３００に送信する。なお、暗号鍵Ｋｐｓおよび認証鍵Ｋｍは、ＳＤＣ２００内の図示しないＲＯＭ（Read Only Memory）にプログラムコードとして格納されていてもよい。
【００３８】
セキュリティ鍵復号部としてのアクセス管理情報復号部２６０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、ＳＤＣ２００とＳＣＣ３００との間で送受信される各種の情報を復号化する。
【００３９】
アクセス管理情報復号部２６０は、暗号鍵Ｋｓを用いて、SCC IF２７０を介してＳＣＣ３００から送信された、アクセス領域指定コマンドにより指定された領域に対応する暗号化アクセス管理情報を復号化する。暗号化アクセス管理情報には、例えばエリア番号や物理アドレス、アクセス長、エリアを所有するアプリケーションのＩＤなどのフラッシュメモリ４００のアクセスすべき領域を特定するための情報、セッション鍵Ｋｓｓとその暗号アルゴリズムを示す情報、および格納鍵Ｋｓｔとその暗号アルゴリズムを示す情報が含まれる。
【００４０】
アクセス管理情報復号部２６０は、復号化されたセッション鍵Ｋｓｓを、セッション鍵暗復号部２２０に設定する。また、アクセス管理情報復号部２６０は、復号化された格納鍵Ｋｓｔを、格納鍵暗復号部２３０に設定する。また、アクセス管理情報復号部２６０は、フラッシュメモリ４００のアクセスすべき領域を特定するための情報を、Flash IF２４０に設定する。
【００４１】
SCC IF２７０は、ＳＣＣ３００との間で各種のデータを送受信する。具体的には、SCC IF２７０は、ホスト機器１１０からHost IF２１０を介して入力されたアクセス領域指定コマンドやリセット要求コマンドなどの各種のコマンドをＳＣＣ３００に送信する。また、SCC IF２７０は、ＳＣＣ３００のSDC IF３４０から送信されたＡＴＲデータや暗号化アクセス管理情報などを受信する。また、SCC IF２７０は、受信されたＡＴＲデータを鍵生成部２５０に出力し、受信された暗号化アクセス管理情報をアクセス管理情報復号部２６０に出力する。
【００４２】
なお、SCC IF２７０としては、ＩＳＯ／ＩＥＣ７８１６規格に準拠したインターフェースを用いることができる。
【００４３】
ＳＣＣ３００は、ＩＣカードやスマートカードで用いられるマイコンチップであり、スマートカードアプリケーションを実行するためのＣＰＵ（Central Processing Unit）およびＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）やＦｅＲＡＭ（Ferroelectric Random Access Memory）などの不揮発性メモリを有する。また、ＳＣＣ３００は、セキュリティ処理に必要な暗号機能等を持つ。
【００４４】
ＳＣＣ３００は、鍵記憶部３１０、鍵生成部３２０、アクセス管理情報暗号部３３０、およびSDC IF３４０を備える。
【００４５】
鍵記憶部３１０は、アクセス管理情報を保持する。アクセス管理情報には、フラッシュメモリ４００のアクセスすべき領域を特定するための情報、セッション鍵Ｋｓｓとその暗号アルゴリズムとからなるセッション暗号情報、および格納鍵Ｋｓｔとその暗号アルゴリズムとからなる格納暗号情報が、それぞれ対応付けられて格納されている。
【００４６】
ここで、鍵記憶部３１０が保持するアクセス管理情報について、図２を用いて具体的に説明する。図２は、アクセス管理情報の一例を示す図である。
【００４７】
図２において、アクセス管理情報５００は、アクセスすべき領域のエリア番号を示すエリア番号５１０と、アクセスすべき領域の物理アドレスを示す物理アドレス５２０と、アクセスすべき領域を所有するアプリケーションのＩＤを示すアプリケーションＩＤ５３０と、アクセスすべき領域に対して使用されるセッション暗号情報を示すセッション暗号情報５４０と、アクセスすべき領域に対して使用される格納暗号情報を示す格納暗号情報５５０とを含む。また、セッション暗号情報５４０は、セッション暗号に使用されるセッション鍵５４１とその暗号アルゴリズム５４２を含み、格納暗号情報５５０は、格納暗号に使用される格納鍵５５１とその暗号アルゴリズム５５２を含む。
【００４８】
例えば、“エリア１”は、物理アドレス“０ｘ００００００００”に存在し、アプリケーションＩＤ“ＡＰ１”により所有されている。また、“エリア１”にアクセスする場合に使用されるセッション鍵は“Ｋｓｓ１”であり、その暗号アルゴリズムは“Ｔ−ＤＥＳ  ＣＢＣ”である。また、“エリア１”にデータを格納する場合に使用される格納鍵は“Ｋｓｔ１”であり、その暗号アルゴリズムは“ＡＥＳ”である。
【００４９】
また、“エリア２”は、物理アドレス“０ｘ００００２０００”に存在し、アプリケーションＩＤ“ＡＰ１”により所有されている。また、“エリア２”にアクセスする場合に使用されるセッション鍵は“Ｋｓｓ２”であり、その暗号アルゴリズムは“Ｔ−ＤＥＳ  ＣＢＣ”である。また、“エリア２”にデータを格納する場合に使用される格納鍵は“Ｋｓｔ１”であり、その暗号アルゴリズムは“ＡＥＳ”である。
【００５０】
また、“エリア３”は、物理アドレス“０ｘ００００４０００”に存在し、アプリケーションＩＤ“ＡＰ２”により所有されている。また、“エリア３”にアクセスする場合には、セッション鍵は使用されない。また、“エリア３”にデータを格納する場合に使用される格納鍵は“Ｋｓｔ２”であり、その暗号アルゴリズムは“ＡＥＳ”である。
【００５１】
このように、アクセス管理情報５００には、セッション暗号情報および格納暗号情報が、フラッシュメモリ４００の各エリア番号に対応付けられて格納されている。
【００５２】
暗号化セキュリティ鍵生成部としての鍵生成部３２０は、ＳＤＣ２００から送信されたリセット要求コマンドをSDC IF３４０を介して受信すると、乱数Ｒｎを生成し、この乱数Ｒｎが設定されたＡＴＲデータを生成する。また、鍵生成部３２０は、生成されたＡＴＲデータを、SDC IF３４０を介してＳＤＣ２００に送信する。ここで、鍵生成部３２０は、生成された乱数Ｒｎを、例えばＡＴＲデータの１５バイトの“Historical Character”に設定することができる。
【００５３】
鍵生成部３２０は、上記ＡＴＲデータを生成および送信するとともに、鍵生成部３２０内のメモリ（図示せず）に格納された認証鍵Ｋｍを用いて、リセット要求コマンドの受信時に生成された乱数Ｒｎから認証子（ＭＡＣ２）を生成する。
【００５４】
鍵生成部３２０は、ＳＤＣ２００の鍵生成部２５０で生成された認証子（ＭＡＣ１）と認証子（ＭＡＣ２）とを比較して、これらの認証子が正しい場合には、ＳＣＣ３００とＳＤＣ２００との間で送受信されるデータを暗復号化するための暗号鍵Ｋｓを生成する。具体的には、鍵生成部３２０は、鍵生成部３２０内のメモリ（図示せず）に格納された暗号鍵Ｋｐｓを用いて、リセット要求コマンドの受信時に生成された乱数Ｒｎを暗号化することにより、暗号鍵Ｋｓを生成する。また、鍵生成部３２０は、生成した暗号鍵Ｋｓをアクセス管理情報暗号部３３０に設定する。なお、暗号鍵Ｋｐｓおよび認証鍵Ｋｍは、例えばＳＣＣ３００の製造時に鍵記憶部３１０に設定されている。
【００５５】
ここで、上述のＳＤＣ２００の鍵生成部２５０内のメモリに格納された暗号鍵Ｋｐｓおよび認証鍵Ｋｍは、ＳＣＣ３００の鍵生成部３２０内のメモリに格納された暗号鍵Ｋｐｓおよび認証鍵Ｋｍと同一である。したがって、認証子（ＭＡＣ１）と認証子（ＭＡＣ２）とが正しい認証子である場合、ＳＤＣ２００の鍵生成部２５０で生成される暗号鍵ＫｓとＳＣＣ３００の鍵生成部３２０で生成される暗号鍵Ｋｓとは同一となる。これにより、ＳＤＣ２００およびＳＣＣ３００の間で暗号鍵Ｋｓの共有が可能となり、ＳＤＣ２００およびＳＣＣ３００の間のデータの送受信の安全性および信頼性を向上させることができる。
【００５６】
セキュリティ鍵暗号部としてのアクセス管理情報暗号部３３０は、ＳＤＣ２００から送信されたアクセス領域指定コマンドを受信すると、アクセス領域指定コマンドに対応するアクセス管理情報を、鍵記憶部３１０が保持するアクセス管理情報から取得する。具体的には、まず、アクセス管理情報暗号部３３０は、アクセス領域指定コマンドに基づいて、アクセスすべき領域のエリア番号またはアクセスすべき領域の物理アドレスを特定する。そして、アクセス管理情報暗号部３３０は、特定されたエリア番号または物理アドレス、ならびにこれらに対応するセッション暗号情報および格納暗号情報などを、アクセス管理情報として取得する。
【００５７】
アクセス管理情報暗号部３３０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、取得されたアクセス管理情報を暗号化する。また、アクセス管理情報暗号部３３０は、暗号化されたアクセス管理情報を、SDC IF３４０を介してＳＤＣ２００に送信する。
【００５８】
SDC IF３４０は、ＳＤＣ２００との間で各種のデータを送受信する。具体的には、SDC IF３４０は、鍵生成部３２０で生成されたＡＴＲデータやアクセス管理情報暗号部３３０で暗号化されたアクセス管理情報などをＳＤＣ２００に送信する。また、SDC IF３４０は、ＳＣＣ２００のSCC IF２７０から送信されたアクセス領域指定コマンドやリセット要求コマンドなどの各種のコマンドを受信する。また、SDC IF３４０は、受信されたアクセス領域指定コマンドをアクセス管理情報暗号部３３０に出力し、受信されたリセット要求コマンドを鍵生成部３２０に出力する。
【００５９】
なお、SDC IF３４０としては、ＩＳＯ／ＩＥＣ７８１６規格に準拠したインターフェースを用いることができる。これにより、標準的なスマートカードチップを、本発明のＳＣＣ３００として適用することができる。
【００６０】
フラッシュメモリ４００は、不揮発性の半導体メモリを記憶媒体とするメモリチップである。フラッシュメモリ４００は、データ転送コマンドやデータ取得コマンドなどのフラッシュメモリコマンドにより、データの書き込みおよび読み出しが可能となっている。
【００６１】
フラッシュメモリ４００は、通常領域４１０とセキュリティ保護領域４２０とを有する。また、セキュリティ保護領域４２０は、複数のエリアブロック４２１，４２２，４２３，４２４で区切られている。
【００６２】
通常領域４１０は、セキュリティ処理の必要がない標準データの書き込みおよび読み出しを行うための領域である。ホスト機器１１０からのアクセス領域指定コマンドにより通常領域４１０が指定された場合、ホスト機器１１０からのデータが通常領域４１０に書き込まれ、または通常領域４１０に格納されたデータが読み出されてホスト機器１１０に送信される。なお、通常領域４１０へのデータの書き込み、および通常領域４１０からのデータの読み出しを行う場合、セッション鍵Ｋｓｓおよび格納鍵Ｋｓｔによる暗復号化を行うか否かは任意である。
【００６３】
セキュリティ保護領域４２０は、例えば個人情報や機密情報などの秘匿性の高い情報の書き込みおよび読み出しを行うための拡張メモリ領域である。セキュリティ保護領域４２０を構成する各エリアブロックは、アクセス領域指定コマンドにより指定可能な最小の領域単位である。また、セキュリティ保護領域４２０を構成する各エリアブロックは、例えばＳＣＣ３００のアプリケーションごとに割り当てることができる。なお、ここではセキュリティ保護領域４２０が４つのエリアブロック４２１，４２２，４２３，４２４で区切られているが、セキュリティ保護領域４２０を構成するエリアブロックの数は特に限定されず、任意に設定することができる。
【００６４】
セキュリティ保護領域４２０に書き込まれるデータおよびセキュリティ保護領域４２０から読み出されるデータは、各エリアブロックに対応付けられたセッション鍵Ｋｓｓにより暗号化された状態で、メモリカード１００とホスト機器１１０との間を送受信される。また、セキュリティ保護領域４２０に格納されるデータは、各エリアブロックに対応付けられた格納鍵Ｋｓｔにより暗号化された状態で各エリアブロックに格納される。なお、アプリケーションとホスト機器１１０との間の用途に応じた取り決めによりセッション鍵Ｋｓｓによるデータの暗号を行わないモードが設定されている場合、セッション鍵Ｋｓｓによる暗号化は行われない。
【００６５】
以上、メモリカード１００のＳＤＣ２００、ＳＣＣ３００、およびフラッシュメモリ４００の構成について説明した。
【００６６】
次に、上述のように構成されたメモリカード１００の動作について、図３乃至図５を用いて詳細に説明する。
【００６７】
まず、リセット処理におけるＳＤＣ２００とＳＣＣ３００との間の認証および暗号鍵Ｋｓの共有の仕組みについて、図３を用いて説明する。
【００６８】
図３は、リセット処理により暗号鍵Ｋｓを生成する場合におけるホスト機器１１０、ＳＤＣ２００およびＳＣＣ３００の動作の一例を示すシーケンス図である。ここでは、ホスト機器１１０から送信されたリセット要求コマンドによりリセット処理が行われる場合について説明する。
【００６９】
まず、ホスト機器１１０は、リセット要求コマンドを生成して、生成したリセット要求コマンドをメモリカード１００のＳＤＣ２００に対して送信する（Ｓ１）。ＳＤＣ２００のHost IF２１０で受信されたこのリセット要求コマンドは、鍵生成部２５０およびSCC IF２７０に出力される。また、SCC IF２７０は、入力されたリセット要求コマンドを、さらにＳＣＣ３００に送信する（Ｓ２）。ＳＣＣ３００のSDC IF３４０で受信されたリセット要求コマンドは、鍵生成部３２０に出力される。
【００７０】
鍵生成部３２０は、リセット要求コマンドを受信してリセット処理を行うことを決定すると、乱数Ｒｎを生成する（Ｓ３）。また、鍵生成部３２０は、ＩＳＯ／ＩＥＣ７８１６規格に従い、ステップＳ３で生成した乱数Ｒｎが設定されたＡＴＲデータを生成し、生成したＡＴＲデータを、SDC IF３４０を介してＳＤＣ２００に送信する（Ｓ４）。このとき、鍵生成部３２０は、乱数Ｒｎを、例えばＡＴＲデータの１５バイトの“Historical Character”に設定する。また、ＳＤＣ２００のSCC IF２７０で受信されたＡＴＲデータは、鍵生成部２５０に出力される。
【００７１】
鍵生成部２５０は、鍵生成部２５０内部のメモリ（図示せず）に格納された認証鍵Ｋｍを用いて、ＡＴＲに設定された乱数Ｒｎから認証子（ＭＡＣ１）を生成する（Ｓ５）。また、鍵生成部２５０は、生成した認証子（ＭＡＣ１）を含む検証命令を生成し、この検証命令をＳＣＣ３００に送信する（Ｓ６）。
【００７２】
また、鍵生成部２５０は、上記ステップＳ５およびステップＳ６の処理を行うとともに、鍵生成部２５０内部のメモリ（図示せず）に格納された暗号鍵Ｋｐｓを用いてＡＴＲデータに設定された乱数Ｒｎを暗号化することにより、暗号鍵Ｋｓを生成する（Ｓ７）。
【００７３】
ＳＣＣ３００の鍵生成部３２０は、ＳＤＣ２００からの認証子（ＭＡＣ１）を含む検証命令を受信すると、鍵生成部３２０内部のメモリ（図示せず）に格納された認証鍵Ｋｍを用いて、ステップＳ３で生成した乱数Ｒｎから認証子（ＭＡＣ２）を生成する（Ｓ８）。また、鍵生成部３２０は、認証子（ＭＡＣ１）と認証子（ＭＡＣ２）とを比較して、これらの認証子の正当性を確認する（Ｓ９）。そして、鍵生成部３２０は、認証子（ＭＡＣ１）および認証子（ＭＡＣ２）が正しい場合、鍵生成部３２０内部のメモリ（図示せず）に格納された暗号鍵Ｋｐｓを用いてステップＳ３で生成した乱数Ｒｎを暗号化することにより、暗号鍵Ｋｓを生成する（Ｓ１０）。
【００７４】
ここで、鍵生成部３２０は、リセット処理のたびに乱数Ｒｎを生成するので、乱数Ｒｎを用いて生成される暗号鍵Ｋｓは、リセット処理のたびに異なりうる。したがって、ＳＤＣ２００およびＳＣＣ３００は、リセット処理のたびに異なる暗号鍵Ｋｓを生成し、生成した暗号鍵Ｋｓを用いて、セキュリティ処理に関する情報、例えばセキュリティ保護領域４２０の各エリアブロックのアクセス管理情報を暗復号化して送受信することになる。これにより、ＳＤＣ２００のなりすましや盗聴による、ＳＤＣ２００とＳＣＣ３００との間で送受信されるセキュリティ処理に関する情報の不正傍受を防止することができる。すなわち、セキュリティ保護領域４２０への不正アクセスの危険性を低減させることができる。
【００７５】
なお、図３の例ではホスト機器１１０から送信されたリセット要求コマンドによりリセット処理が行われる場合について説明したが、本発明はこれに限定されない。例えば、リセット処理は、例えば、メモリカード１００が電源の投入を検知したタイミングやメモリカード１００がホスト機器１１０の接続を検知したタイミングなどに、自動的に行われるようにしてもよい。また、予め設定された所定の時間ごとにリセット処理が行われるようにしてもよい。
【００７６】
また、図３の例では、リセット処理における暗号鍵Ｋｓの共有の仕組みについて説明したが、本発明はこれに限定されない。例えば、ＳＤＣ２００とＳＣＣ３００との間で暗号鍵Ｋｓを共有する旨のコマンドを定義しておき、このコマンドを受けたＳＣＣ３００がレスポンスとして乱数Ｒｎを返信し、上述の認証処理および暗号鍵Ｋｓの生成処理を行うようにしてもよい。
【００７７】
以上、リセット処理におけるＳＤＣ２００とＳＣＣ３００との間の認証および暗号鍵Ｋｓの共有の仕組みについて説明した。
【００７８】
次に、フラッシュメモリ４００のセキュリティ保護領域４２０へのデータの書き込み動作について、図４を用いて説明する。
【００７９】
図４は、メモリカード１００のセキュリティ保護領域４２０にデータを書き込む場合におけるホスト機器１１０、ＳＤＣ２００およびＳＣＣ３００の動作の一例を示すシーケンス図である。ここでは、セキュリティ保護領域４２０のエリアブロック４２１にデータを書き込む場合について説明する。また、簡単のため、エリアブロック４２１は、図２に示すアクセス管理情報の“エリア１”に対応すると仮定する。
【００８０】
図４において、セキュリティ保護領域４２０へのデータの書き込みは、データを書き込む領域に対応する各種の情報を設定するためのアクセス領域指定コマンド処理（ステップＳ１１〜ステップＳ１６）と、実際にデータを書き込むためのデータ転送コマンド処理（ステップＳ１７〜ステップＳ２１）との２段階の処理により行われる。
【００８１】
［アクセス領域指定コマンド処理］
まず、アクセス領域指定コマンド処理について説明する。
【００８２】
まず、ホスト機器１１０は、アクセスすべき領域を特定するための領域ナンバ、ブロックアドレス、およびブロック長が記述されたアクセス領域指定コマンドを、ＳＤＣ２００に対して送信する（Ｓ１１）。ＳＤＣ２００のHost IF２１０で受信されたアクセス領域指定コマンドは、SCC IF２７０に出力される。また、SCC IF２７０は、入力されたアクセス領域指定コマンドを、さらにＳＣＣ３００に送信する（Ｓ１２）。ＳＣＣ３００のSDC IF３４０で受信されたアクセス領域指定コマンドは、アクセス管理情報暗号部３３０に出力される。
【００８３】
アクセス管理情報暗号部３３０は、アクセス領域指定コマンドを受信すると、鍵記憶部３１０が保持するアクセス管理情報から、アクセス領域指定コマンドに対応するアクセス管理情報、例えばアクセスすべき領域の物理アドレス、アクセス長、セッション鍵Ｋｓｓ、および格納鍵Ｋｓｔを取得する（Ｓ１３）。この例では、アクセス管理情報暗号部３３０は、エリアブロック４２１（エリア１）に対応する物理アドレス０ｘ００００００００、アクセス長、セッション鍵Ｋｓｓ１、および格納鍵Ｋｓｔ１を、アクセス管理情報として取得する。
【００８４】
アクセス管理情報暗号部３３０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、ステップＳ１３で取得したアクセス管理情報、つまりエリアブロック４２１に対応する物理アドレス、アクセス長、セッション鍵Ｋｓｓ、および格納鍵Ｋｓｔを暗号化する。また、アクセス管理情報暗号部３３０は、暗号化されたアクセス管理情報をＳＤＣ２００に送信する（Ｓ１４）。ＳＤＣ２００のSCC IF２７０で受信された暗号化アクセス管理情報は、アクセス管理情報復号部２６０に出力される。
【００８５】
ＳＤＣ２００のアクセス管理情報復号部２６０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、ＳＣＣ３００からの暗号化アクセス管理情報を復号化する。これにより、アクセス管理情報復号部２６０は、アクセス先、つまりエリアブロック４２１に対応する物理アドレス０ｘ００００００００、アクセス長、セッション鍵Ｋｓｓ１、および格納鍵Ｋｓｔ１を取得する（Ｓ１５）。
【００８６】
そして、アクセス管理情報復号部２６０は、ステップＳ１５で取得したセッション鍵Ｋｓｓ１を、セッション鍵暗復号部２２０に設定し、ステップＳ１５で取得した格納鍵Ｋｓｔ１を、格納鍵暗復号部２３０に設定する。また、アクセス管理情報復号部２６０は、ステップＳ１５で取得した物理アドレスおよびアクセス長を、Flash IF２４０に設定する（Ｓ１６）。
【００８７】
［データ転送コマンド処理］
次いで、データ転送コマンド処理について説明する。
【００８８】
まず、ホスト機器１１０は、セッション鍵Ｋｓｓ、例えばセッション鍵Ｋｓｓ１を用いて、エリアブロック４２１に書き込むデータを暗号化する（Ｓ１７）。ここで、ホスト機器１１０は、予め、メモリカード１００との間でセッション鍵Ｋｓｓを共有している。また、例えば、Diffe-Helmanなどの鍵交換処理を使用して、セッション鍵を共有することも可能である。
【００８９】
また、ホスト機器１１０は、セッション鍵Ｋｓｓ１により暗号化された書き込みデータとともに、データの書き込みを指示するデータ転送コマンドをＳＤＣ２００に送信する（Ｓ１８）。ＳＤＣ２００のHost IF２１０で受信された書き込みデータは、セッション鍵暗復号部２２０に出力される。
【００９０】
セッション鍵暗復号部２２０は、ステップＳ１６で設定されたセッション鍵Ｋｓｓ１を用いて、ホスト機器１１０からの暗号化された書き込みデータを復号化する（Ｓ１９）。次に、格納鍵暗復号部２３０は、ステップＳ１６で設定された格納鍵Ｋｓｔ１を用いて、復号化された書き込みデータを暗号化する（Ｓ２０）。そして、格納鍵Ｋｓｔ１により暗号化された書き込みデータは、Flash IF２４０を介して、ステップＳ１６でFlash IF２４０に設定された物理アドレスにより示される領域、例えばエリアブロック４２１に書き込まれる。
【００９１】
以上、フラッシュメモリ４００のセキュリティ保護領域４２０へのデータの書き込み動作について説明した。
【００９２】
次に、フラッシュメモリ４００のセキュリティ保護領域４２０からのデータの読み出し動作について、図５を用いて説明する。
【００９３】
図５は、メモリカード１００のセキュリティ保護領域４２０からデータを読み出す場合におけるホスト機器１１０、ＳＤＣ２００およびＳＣＣ３００の動作の一例を示すシーケンス図である。ここでは、セキュリティ保護領域４２０のエリアブロック４２１に格納されたデータを読み出す場合について説明する。また、簡単のため、エリアブロック４２１は、図２に示すアクセス管理情報の“エリア１”に対応すると仮定する。
【００９４】
図５において、セキュリティ保護領域４２０からのデータの読み出しは、データを読み出す領域に対応する各種の情報を設定するためのアクセス領域指定コマンド処理（ステップＳ１１〜ステップＳ１６）と、実際にデータを読み出すためのデータ取得コマンド処理（ステップＳ３１〜ステップＳ３６）との２段階の処理により行われる。なお、図５のアクセス領域指定コマンド処理は、前述した図４のアクセス領域指定コマンド処理と同一であるためその説明を省略し、データ取得コマンド処理についてのみ説明する。
【００９５】
［データ取得コマンド処理］
まず、ホスト機器１１０は、データの読み出しを指示するデータ取得コマンドをＳＤＣ２００に送信する（Ｓ３１）。ＳＤＣ２００のHost IF２１０で受信されたデータ取得コマンドは、Flash IF２４０に出力される。
【００９６】
Flash IF２４０は、ステップＳ１６で設定された物理アドレスにより示される領域、例えばエリアブロック４２１に格納されたデータを読み出す（Ｓ３２）。この読み出しデータは、格納鍵暗復号部２３０に出力される。
【００９７】
格納鍵暗復号部２３０は、ステップＳ１６で設定された格納鍵Ｋｓｔ１を用いて、エリアブロック４２１から読み出されたデータを復号化する（Ｓ３３）。次に、セッション鍵暗復号部２２０は、ステップＳ１６で設定されたセッション鍵Ｋｓｓ１を用いて、復号化された読み出しデータを暗号化する（Ｓ３４）。そして、セッション鍵Ｋｓｓ１により暗号化された読み出しデータは、Host IF２１０を介してホスト機器１１０に送信される（Ｓ３５）。
【００９８】
ホスト機器１１０は、セッション鍵Ｋｓｓ１を用いてＳＤＣ２００からの暗号化された読み出しデータを復号化することにより、平文の読み出しデータを取得する（Ｓ３６）。
【００９９】
以上、フラッシュメモリ４００のセキュリティ保護領域４２０からのデータの読み出し動作について説明した。
【０１００】
このように、本実施の形態によれば、セキュリティ保護領域４２０へのアクセスデータのセッション鍵Ｋｓｓによる暗復号化および格納鍵Ｋｓｔによる暗復号化をＳＤＣ２００で行うので、セキュリティ処理におけるＳＤＣ２００とＳＣＣ３００との間の通信回数および送受信されるデータの量を削減することができる。これにより、セキュリティ保護領域４２０へのアクセスを高速化することができる。
【０１０１】
また、セッション鍵Ｋｓｓおよび格納鍵ＫｓｔはＳＣＣ３００に格納されており、セキュリティ処理を行う旨のコマンド、例えばアクセス領域指定コマンドを受信した場合に、ＳＤＣ２００とＳＣＣ３００との間で共有される暗号鍵Ｋｓで暗号化されてＳＤＣ２００に送信されるので、ＳＤＣ２００のなりすましや盗聴によるセッション鍵Ｋｓｓおよび格納鍵Ｋｓｔの不正傍受を防止することができる。これにより、セキュリティ保護領域４２０への不正アクセスの危険性を低減させることができる。
【０１０２】
さらに、ＳＤＣ２００およびＳＣＣ３００は、適宜リセット処理を行うことで、お互いを認証し合い、共有される暗号鍵Ｋｓを生成し直すので、暗号鍵Ｋｓの安全性および信頼性を向上させることができる。
【０１０３】
（実施の形態２）
本実施の形態では、外部機器１１０との間で伝送されるデータの暗復号処理をＳＤＣ２００に設けられたセッション鍵暗復号部６１０が行い、フラッシュメモリ４００との間で伝送されるデータの暗復号処理をＳＣＣ３００に設けられた格納鍵暗復号部６６０が行うように構成されているメモリカード６００について説明する。
【０１０４】
図６は、本発明の実施の形態２に係るメモリカード６００の構成を示すブロック図である。図１と同一の構成部分には同一の符号を付して重複箇所の説明を省略する。また、図１の構成部分に付加的な機能を有する構成部分については、その付加的な機能についてのみ説明するものとする。
【０１０５】
図６において、メモリカード６００のＳＤＣ２００は、セッション鍵暗復号部６１０、アクセス管理情報暗復号部６２０、Flash IF６３０およびSCC IF６４０を備える。
【０１０６】
セッション鍵暗復号部６１０は、Host IF２１０を介してホスト機器１１０との間で送受信するデータをセッション鍵Ｋｓｓにより暗復号化する。
【０１０７】
セッション鍵暗復号部６１０は、データの書き込み時には、ホスト機器１１０から送信されたフラッシュメモリ４００への書き込みデータを、セッション鍵Ｋｓｓにより復号化する。また、セッション鍵暗復号部６１０は、復号化された書き込みデータを、アクセス管理情報暗復号部６２０に出力する。
【０１０８】
セッション鍵暗復号部６１０は、データの読み出し時には、アクセス管理情報暗復号部６２０から入力されたフラッシュメモリ４００からの読み出しデータを、セッション鍵Ｋｓｓにより暗号化する。また、セッション鍵暗復号部６１０は、暗号化された読み出しデータを、Host IF２１０を介してホスト機器１１０に送信する。
【０１０９】
アクセス管理情報暗復号部６２０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、ＳＤＣ２００とＳＣＣ３００との間で送受信される各種の情報を暗復号化する。
【０１１０】
アクセス管理情報暗復号部６２０は、データの書き込み時には、暗号鍵Ｋｓを用いて、セッション鍵暗復号部６１０から入力された書き込みデータを暗号化する。また、アクセス管理情報暗復号部６２０は、暗号鍵Ｋｓで暗号化された書き込みデータを、SCC IF６４０を介してＳＣＣ３００に送信する。
【０１１１】
アクセス管理情報暗復号部６２０は、データの読み出し時には、暗号鍵Ｋｓを用いて、ＳＣＣ３００から入力された読み出しデータを復号化する。また、アクセス管理情報暗復号部６２０は、復号化された読み出しデータを、セッション鍵暗復号部６１０に出力する。
【０１１２】
アクセス管理情報暗復号部６２０は、暗号鍵Ｋｓを用いて、ＳＣＣ３００から送信された、アクセス領域指定コマンドにより指定された領域に対応する暗号化アクセス管理情報を復号化する。暗号化アクセス管理情報には、例えばエリア番号や物理アドレス、アクセス長、エリアを所有するアプリケーションのＩＤなどのフラッシュメモリ４００のアクセスすべき領域を特定するための情報、およびセッション鍵Ｋｓｓとその暗号アルゴリズムを示す情報が含まれる。
【０１１３】
アクセス管理情報暗復号部６２０は、復号化されたセッション鍵Ｋｓｓを、セッション鍵暗復号部６１０に設定する。また、アクセス管理情報暗復号部６２０は、フラッシュメモリ４００のアクセスすべき領域を特定するための情報を、Flash IF６３０に設定する。
【０１１４】
Flash IF６３０は、フラッシュメモリ４００との間で各種のデータを送受信する。具体的には、Flash IF６３０は、SCC IF６４０から入力されたフラッシュメモリ４００への書き込みデータを、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域に送信する。また、Flash IF６３０は、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域から読み出されたデータを受信する。Flash IF６３０は、この読み出しデータをSCC IF６４０を介してＳＣＣ３００に送信する。
【０１１５】
SCC IF６４０は、ＳＣＣ３００との間で各種のデータを送受信する。具体的には、SCC IF６４０は、アクセス管理情報暗復号部６２０から入力された暗号鍵Ｋｓで暗号化された書き込みデータ、およびFlash IF６３０から入力された格納鍵Ｋｓｔで暗号化された読み出しデータを、ＳＣＣ３００に送信する。また、SCC IF６４０は、ＳＣＣ３００のSDC IF６７０から送信された格納鍵Ｋｓｔで暗号化された書き込みデータ、およびＳＣＣ３００のSDC IF６７０から送信された暗号鍵Ｋｓで暗号化された読み出しデータを受信する。また、SCC IF６４０は、受信された書き込みデータをFlash IF６３０に出力し、受信された読み出しデータをアクセス管理情報暗復号部６２０に出力する。
【０１１６】
メモリカード６００のＳＣＣ３００は、アクセス管理情報暗復号部６５０、格納鍵暗復号部６６０およびSDC IF６７０を備える。
【０１１７】
アクセス管理情報暗復号部６５０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、ＳＤＣ２００とＳＣＣ３００との間で送受信される各種の情報を暗復号化する。
【０１１８】
アクセス管理情報暗復号部６５０は、ＳＤＣ２００から送信されたアクセス領域指定コマンドを受信すると、アクセス領域指定コマンドに対応するアクセス管理情報を、鍵記憶部３１０が保持するアクセス管理情報から取得する。また、アクセス管理情報暗復号部６５０は、取得されたアクセス管理情報に含まれる格納鍵Ｋｓｔを、格納鍵暗復号部６６０に設定する。
【０１１９】
アクセス管理情報暗復号部６５０は、暗号鍵Ｋｓを用いて、格納鍵Ｋｓｔを除いたアクセス管理情報を暗号化する。また、アクセス管理情報暗復号部６５０は、暗号化されたアクセス管理情報を、SDC IF６７０を介してＳＤＣ２００に送信する。
【０１２０】
アクセス管理情報暗復号部６５０は、データの書き込み時には、暗号鍵Ｋｓを用いて、ＳＤＣ２００から送信された、暗号鍵Ｋｓで暗号化された書き込みデータを復号化する。また、アクセス管理情報暗復号部６５０は、復号化された書き込みデータを、格納鍵暗復号部６６０に出力する。
【０１２１】
アクセス管理情報暗復号部６５０は、データの読み出し時には、暗号鍵Ｋｓを用いて、格納鍵暗復号部６６０から入力された読み出しデータを暗号化する。また、アクセス管理情報暗復号部６５０は、暗号鍵Ｋｓで暗号化された読み出しデータを、SDC IF６７０を介してＳＤＣ２００に送信する。
【０１２２】
格納鍵暗復号部６６０は、フラッシュメモリ４００に書き込むべきデータまたはフラッシュメモリ４００から読み出すべきデータを格納鍵Ｋｓｔにより暗復号化する。
【０１２３】
格納鍵暗復号部６６０は、データの書き込み時には、格納鍵Ｋｓｔを用いて、アクセス管理情報暗復号部６５０から入力された書き込みデータを暗号化する。また、格納鍵暗復号部６６０は、格納鍵Ｋｓｔにより暗号化された書き込みデータをSDC IF６７０を介してＳＤＣ２００に送信する。
【０１２４】
格納鍵暗復号部６６０は、データの読み出し時には、格納鍵Ｋｓｔを用いて、ＳＤＣ２００からの読み出しデータを復号化する。また、格納鍵暗復号部６６０は、格納鍵により復号化された読み出しデータを、アクセス管理情報暗復号部６５０に出力する。
【０１２５】
SDC IF６７０は、ＳＤＣ２００との間で各種のデータを送受信する。具体的には、SDC IF６７０は、格納鍵暗復号部６６０から入力された格納鍵Ｋｓｔで暗号化された書き込みデータ、およびアクセス管理情報暗復号部６５０から入力された暗号鍵Ｋｓで暗号化された読み出しデータを、ＳＤＣ２００に送信する。また、SDC IF６７０は、ＳＤＣ２００のSCC IF６４０から送信された暗号鍵Ｋｓで暗号化された書き込みデータおよび格納鍵Ｋｓｔで暗号化された読み出しデータを受信する。また、SDC IF６７０は、受信された書き込みデータをアクセス管理情報暗復号部６５０に出力し、受信された読み出しデータを格納鍵暗復号部６６０に出力する。
【０１２６】
次に、上述のように構成されたメモリカード６００の動作について、図７および図８を用いて詳細に説明する。なお、リセット処理におけるＳＤＣ２００とＳＣＣ３００との間の認証および暗号鍵Ｋｓの共有の仕組みは実施の形態１と同一であるため、その説明を省略し、セキュリティ保護領域４２０へのデータの書き込み動作およびセキュリティ保護領域４２０からのデータの読み出し動作について説明する。
【０１２７】
図７は、メモリカード６００のセキュリティ保護領域４２０にデータを書き込む場合におけるホスト機器１１０、ＳＤＣ２００およびＳＣＣ３００の動作の一例を示すシーケンス図である。ここでは、セキュリティ保護領域４２０のエリアブロック４２２にデータを書き込む場合について説明する。また、簡単のため、エリアブロック４２２は、図２に示すアクセス管理情報の“エリア２”に対応すると仮定する。
【０１２８】
図７において、セキュリティ保護領域４２０へのデータの書き込みは、データを書き込む領域に対応する各種の情報を設定するためのアクセス領域指定コマンド処理（ステップＳ４１〜ステップＳ４７）と、実際にデータを書き込むためのデータ転送コマンド処理（ステップＳ４８〜ステップＳ５４）との２段階の処理により行われる。
【０１２９】
［アクセス領域指定コマンド処理］
まず、アクセス領域指定コマンド処理について説明する。
【０１３０】
まず、ホスト機器１１０は、アクセスすべき領域を指定するための領域ナンバ、ブロックアドレス、およびブロック長が記述されたアクセス領域指定コマンドを、ＳＤＣ２００に対して送信する（Ｓ４１）。ＳＤＣ２００のHost IF２１０で受信されたアクセス領域指定コマンドは、SCC IF６４０に出力される。また、SCC IF６４０は、入力されたアクセス領域指定コマンドを、さらにＳＣＣ３００に送信する（Ｓ４２）。ＳＣＣ３００のSDC IF６７０で受信されたアクセス領域指定コマンドは、アクセス管理情報暗復号部６５０に出力される。
【０１３１】
アクセス管理情報暗復号部６５０は、アクセス領域指定コマンドを受信すると、鍵記憶部３１０が保持するアクセス管理情報から、アクセス領域指定コマンドに対応するアクセス管理情報、例えばアクセスすべき領域の物理アドレス、アクセス長、セッション鍵Ｋｓｓ、および格納鍵Ｋｓｔを取得する（Ｓ４３）。この例では、アクセス管理情報暗復号部６５０は、エリアブロック４２２（エリア２）に対応する物理アドレス０ｘ００００２０００、アクセス長、セッション鍵Ｋｓｓ２、および格納鍵Ｋｓｔ１を、アクセス管理情報として取得する。
【０１３２】
アクセス管理情報暗復号部６５０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、ステップＳ４３で取得したアクセス管理情報、つまりエリアブロック４２２に対応する物理アドレス、アクセス長、およびセッション鍵Ｋｓｓを暗号化する。また、アクセス管理情報暗復号部６５０は、暗号化されたアクセス管理情報をＳＤＣ２００に送信する（Ｓ４４）。ＳＤＣ２００のSCC IF６４０で受信された暗号化アクセス管理情報は、アクセス管理情報暗復号部６２０に出力される。
【０１３３】
また、アクセス管理情報暗復号部６５０は、ステップＳ４３で取得した格納鍵Ｋｓｔ、例えばＫｓｔ１を、格納鍵暗復号部６６０に設定する（Ｓ４５）。
【０１３４】
ＳＤＣ２００のアクセス管理情報暗復号部６２０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、ＳＣＣ３００からの暗号化アクセス管理情報を復号化する。これにより、アクセス管理情報暗復号部６２０は、アクセス先、つまりエリアブロック４２２に対応する物理アドレス０ｘ００００２０００、アクセス長、およびセッション鍵Ｋｓｓ２を取得する（Ｓ４６）。
【０１３５】
そして、アクセス管理情報暗復号部６２０は、ステップＳ４６で取得したセッション鍵Ｋｓｓ２を、セッション鍵暗復号部６１０に設定する。また、アクセス管理情報暗復号部６２０は、ステップＳ４６で取得した物理アドレスおよびアクセス長を、Flash IF６３０に設定する（Ｓ４７）。
【０１３６】
［データ転送コマンド処理］
次いで、データ転送コマンド処理について説明する。
【０１３７】
まず、ホスト機器１１０は、セッション鍵Ｋｓｓ、例えばセッション鍵Ｋｓｓ２を用いて、エリアブロック４２２に書き込むデータを暗号化する（Ｓ４８）。ここで、ホスト機器１１０は、予め、メモリカード６００との間でセッション鍵Ｋｓｓを共有している。また、例えば、Diffe-Helmanなどの鍵交換処理を使用して、セッション鍵を共有することも可能である。
【０１３８】
また、ホスト機器１１０は、セッション鍵Ｋｓｓ２により暗号化された書き込みデータとともに、データの書き込みを指示するデータ転送コマンドをＳＤＣ２００に送信する（Ｓ４９）。ＳＤＣ２００のHost IF２１０で受信されたこの書き込みデータは、セッション鍵暗復号部６１０に出力される。
【０１３９】
セッション鍵暗復号部６１０は、ステップＳ４７で設定されたセッション鍵Ｋｓｓ２を用いて、ホスト機器１１０からの書き込みデータを復号化する（Ｓ５０）。アクセス管理情報暗復号部６２０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、復号化された書き込みデータを暗号化する（Ｓ５１）。また、アクセス管理情報暗復号部６２０は、暗号鍵Ｋｓで暗号化された書き込みデータを、SCC IF６４０を介してＳＣＣ３００に送信する。
【０１４０】
ＳＣＣ３００のアクセス管理情報暗復号部６５０は、ＳＤＣ２００からの暗号鍵Ｋｓで暗号化された書き込みデータを受信すると、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、この書き込みデータを復号化する（Ｓ５２）。また、アクセス管理情報暗復号部６５０は、復号化された書き込みデータを、格納鍵暗復号部６６０に出力する。
【０１４１】
格納鍵暗復号部６６０は、ステップＳ４５で設定された格納鍵Ｋｓｔ１を用いて、復号化された書き込みデータを暗号化する（Ｓ５３）。また、格納鍵暗復号部６６０は、格納鍵Ｋｓｔ１で暗号化された書き込みデータを、SDC IF６７０を介してＳＤＣ２００に送信する。そして、Flash IF６３０は、格納鍵Ｋｓｔ１で暗号化された書き込みデータを、ステップＳ４７で設定された物理アドレスにより示される領域、例えばエリアブロック４２２に書き込む（Ｓ５４）。
【０１４２】
以上、フラッシュメモリ４００のセキュリティ保護領域４２０へのデータの書き込み動作について説明した。
【０１４３】
次に、フラッシュメモリ４００のセキュリティ保護領域４２０からのデータの読み出し動作について、図８を用いて説明する。
【０１４４】
図８は、メモリカード６００のセキュリティ保護領域４２０からデータを読み出す場合におけるホスト機器１１０、ＳＤＣ２００およびＳＣＣ３００の動作の一例を示すシーケンス図である。ここでは、セキュリティ保護領域４２０のエリアブロック４２２に格納されたデータを読み出す場合について説明する。また、簡単のため、エリアブロック４２２は、図２に示すアクセス管理情報の“エリア２”に対応すると仮定する。
【０１４５】
図８において、セキュリティ保護領域４２０からのデータの読み出しは、データを読み出す領域に対応する各種の情報を設定するためのアクセス領域指定コマンド処理（ステップＳ４１〜ステップＳ４７）と、実際にデータを読み出すためのデータ取得コマンド処理（ステップＳ６１〜ステップＳ６８）との２段階の処理により行われる。なお、図８のアクセス領域指定コマンド処理は、前述した図７のアクセス領域指定コマンド処理と同一であるためその説明を省略し、データ取得コマンド処理についてのみ説明する。
【０１４６】
［データ取得コマンド処理］
まず、ホスト機器１１０は、データの読み出しを指示するデータ取得コマンドをＳＤＣ２００に送信する（Ｓ６１）。ＳＤＣ２００のHost IF２１０で受信されたデータ取得コマンドは、Flash IF６３０に出力される。
【０１４７】
Flash IF６３０は、ステップＳ４７で設定された物理アドレスにより示される領域、例えばエリアブロック４２２に格納されたデータを読み出す（Ｓ６２）。この読み出しデータは、SCC IF６４０を介してＳＣＣ３００に送信され、さらに格納鍵暗復号部６６０に出力される。
【０１４８】
格納鍵暗復号部６６０は、ステップＳ４５で設定された格納鍵Ｋｓｔ、例えば格納鍵Ｋｓｔ１を用いて、エリアブロック４２２から読み出されたデータを復号化する（Ｓ６３）。復号化された読み出しデータは、アクセス管理情報暗復号部６５０に出力される。アクセス管理情報暗復号部６５０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、復号化された読み出しデータを暗号化する（Ｓ６４）。アクセス管理情報暗復号部６５０は、暗号鍵Ｋｓで暗号化された読み出しデータを、SDC IF６７０を介してＳＤＣ２００に送信する。
【０１４９】
ＳＤＣ２００のアクセス管理情報暗復号部６２０は、ＳＣＣ３００からの暗号鍵Ｋｓで暗号化された読み出しデータを受信すると、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、この読み出しデータを復号化する（Ｓ６５）。アクセス管理情報暗復号部６２０は、復号化された読み出しデータを、セッション鍵暗復号部６１０に出力する。
【０１５０】
セッション鍵暗復号部６１０は、ステップＳ４７で設定されたセッション鍵Ｋｓｓ２を用いて、復号化された読み出しデータを暗号化する（Ｓ６６）。そして、セッション鍵暗復号部６１０は、セッション鍵Ｋｓｓ２により暗号化された読み出しデータを、Host IF２１０を介してホスト機器１１０に送信する（Ｓ６７）。
【０１５１】
ホスト機器１１０は、セッション鍵Ｋｓｓ２を用いてＳＤＣ２００からの暗号化された読み出しデータを復号化することにより、平文の読み出しデータを取得する（Ｓ６８）。
【０１５２】
以上、フラッシュメモリ４００のセキュリティ保護領域４２０からのデータの読み出し動作について説明した。
【０１５３】
このように、本実施の形態によれば、セキュリティ保護領域４２０へのアクセスデータの格納鍵Ｋｓｔによる暗復号化をＳＣＣ３００で行うので、格納鍵Ｋｓｔによる暗復号化の安全性および信頼性を向上させることができる。
【０１５４】
また、ＳＤＣ２００およびＳＣＣ３００は、送受信する書き込みデータまたは読み出しデータを、ＳＤＣ２００とＳＣＣ３００との間で共有される暗号鍵Ｋｓで暗号化するので、ＳＤＣ２００とＳＣＣ３００との間の通信路の秘匿性を向上させることができる。
【０１５５】
（実施の形態３）
本実施の形態では、ホスト機器１１０との間で伝送されるデータの暗復号処理をＳＣＣ３００に設けられたセッション鍵暗復号部７７０が行い、フラッシュメモリ４００との間で伝送されるデータの暗復号処理をＳＤＣ２００に設けられた格納鍵暗復号部７２０が行うように構成されているメモリカード７００について説明する。
【０１５６】
図９は、本発明の実施の形態３に係るメモリカード７００の構成を示すブロック図である。図１と同一の構成部分には同一の符号を付して重複箇所の説明を省略する。また、図１の構成部分に付加的な機能を有する構成部分については、その付加的な機能についてのみ説明するものとする。
【０１５７】
図９において、メモリカード７００のＳＤＣ２００は、Host IF７１０、格納鍵暗復号部７２０、アクセス管理情報暗復号部７３０、Flash IF７４０およびSCC IF７５０を備える。
【０１５８】
Host IF７１０は、ホスト機器１１０との間で各種のデータを送受信する。具体的には、Host IF７１０は、ホスト機器１１０から送信された、セッション鍵Ｋｓｓで暗号化された書き込みデータを受信して、SCC IF７５０を介してＳＣＣ３００に送信する。また、Host IF７１０は、SCC IF７５０から入力されたセッション鍵Ｋｓｓで暗号化された読み出しデータを、ホスト機器１１０に送信する。
【０１５９】
格納鍵暗復号部７２０は、フラッシュメモリ４００に書き込むべきデータまたはフラッシュメモリ４００から読み出すべきデータを格納鍵Ｋｓｔにより暗復号化する。
【０１６０】
格納鍵暗復号部７２０は、データの書き込み時には、格納鍵Ｋｓｔを用いて、アクセス管理情報暗復号部７３０から入力された書き込みデータを暗号化する。また、格納鍵暗復号部７２０は、格納鍵Ｋｓｔにより暗号化された書き込みデータを、Flash IF７４０を介して、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域に送信する。
【０１６１】
格納鍵暗復号部７２０は、データの読み出し時には、格納鍵Ｋｓｔを用いて、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域から読み出されたデータを復号化する。また、格納鍵暗復号部７２０は、格納鍵Ｋｓｔにより復号化された読み出しデータをアクセス管理情報暗復号部７３０に出力する。
【０１６２】
アクセス管理情報暗復号部７３０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、ＳＤＣ２００とＳＣＣ３００との間で送受信される各種の情報を暗復号化する。
【０１６３】
アクセス管理情報暗復号部７３０は、データの書き込み時には、暗号鍵Ｋｓを用いて、ＳＣＣ３００から送信された書き込みデータを復号化する。また、アクセス管理情報暗復号部７３０は、復号化された書き込みデータを、格納鍵暗復号部７２０に出力する。
【０１６４】
アクセス管理情報暗復号部７３０は、データの読み出し時には、暗号鍵Ｋｓを用いて、格納鍵暗復号部７２０から入力された読み出しデータを暗号化する。また、アクセス管理情報暗復号部７３０は、暗号化された読み出しデータを、SCC IF７５０を介してＳＣＣ３００に送信する。
【０１６５】
アクセス管理情報暗復号部７３０は、暗号鍵Ｋｓを用いて、ＳＣＣ３００から送信された、アクセス領域指定コマンドにより指定された領域に対応する暗号化アクセス管理情報を復号化する。暗号化アクセス管理情報には、例えばエリア番号や物理アドレス、アクセス長、エリアを所有するアプリケーションのＩＤなどのフラッシュメモリ４００のアクセスすべき領域を特定するための情報、および格納鍵Ｋｓｔとその暗号アルゴリズムを示す情報が含まれる。
【０１６６】
アクセス管理情報暗復号部７３０は、復号化された格納鍵Ｋｓｔを、格納鍵暗復号部７２０に設定する。また、アクセス管理情報暗復号部７３０は、フラッシュメモリ４００のアクセスすべき領域を特定するための情報を、Flash IF７４０に設定する。
【０１６７】
Flash IF７４０は、フラッシュメモリ４００との間で各種のデータを送受信する。具体的には、Flash IF７４０は、格納鍵暗復号部７２０から入力されたフラッシュメモリ４００への書き込みデータを、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域に送信する。また、Flash IF７４０は、フラッシュメモリ４００のアクセス領域指定コマンドにより指定された領域から読み出されたデータを受信する。Flash IF７４０は、この読み出しデータを格納鍵暗復号部７２０に出力する。
【０１６８】
SCC IF７５０は、ＳＣＣ３００との間で各種のデータを送受信する。具体的には、SCC IF７５０は、ホスト機器１１０からHost IF７１０を介して受信されたセッション鍵Ｋｓｓで暗号化された書き込みデータ、およびアクセス管理情報暗復号部７３０から入力された暗号鍵Ｋｓで暗号化された読み出しデータを、ＳＣＣ３００に送信する。また、SCC IF７５０は、ＳＣＣ３００のSDC IF７８０から送信された暗号鍵Ｋｓで暗号化された書き込みデータおよびセッション鍵Ｋｓｓで暗号化された読み出しデータを受信する。また、SCC IF７４０は、受信された書き込みデータをアクセス管理情報暗復号部７３０に出力し、受信された読み出しデータを、Host IF７１０を介してホスト機器１１０に送信する。
【０１６９】
メモリカード７００のＳＣＣ３００は、アクセス管理情報暗復号部７６０、セッション鍵暗復号部７７０およびSDC IF７８０を備える。
【０１７０】
アクセス管理情報暗復号部７６０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、ＳＤＣ２００とＳＣＣ３００との間で送受信される各種の情報を暗復号化する。
【０１７１】
アクセス管理情報暗復号部７６０は、ＳＤＣ２００から送信されたアクセス領域指定コマンドを受信すると、アクセス領域指定コマンドに対応するアクセス管理情報を、鍵記憶部３１０が保持するアクセス管理情報から取得する。また、アクセス管理情報暗復号部７６０は、取得されたアクセス管理情報に含まれるセッション鍵Ｋｓｓを、セッション鍵暗復号部７７０に設定する。
【０１７２】
アクセス管理情報暗復号部７６０は、暗号鍵Ｋｓを用いて、セッション鍵Ｋｓｓを除いたアクセス管理情報を暗号化する。また、アクセス管理情報暗復号部７６０は、暗号化されたアクセス管理情報を、SDC IF７８０を介してＳＤＣ２００に送信する。
【０１７３】
アクセス管理情報暗復号部７６０は、データの書き込み時には、暗号鍵Ｋｓを用いて、セッション鍵暗復号部７７０から入力された書き込みデータを暗号化する。また、アクセス管理情報暗復号部７６０は、暗号化された書き込みデータを、SDC IF７８０を介してＳＤＣ２００に送信する。
【０１７４】
アクセス管理情報暗復号部７６０は、データの読み出し時には、暗号鍵Ｋｓを用いて、ＳＤＣ２００から送信された読み出しデータを復号化する。また、アクセス管理情報暗復号部７６０は、復号化された読み出しデータを、セッション鍵暗復号部７７０に出力する。
【０１７５】
セッション鍵暗復号部７７０は、ホスト機器１１０との間で送受信するデータをセッション鍵Ｋｓｓにより暗復号化する。
【０１７６】
セッション鍵暗復号部７７０は、データの書き込み時には、ＳＤＣ２００から送信されたフラッシュメモリ４００への書き込みデータを、セッション鍵Ｋｓｓにより復号化する。また、セッション鍵暗復号部７７０は、復号化された書き込みデータを、アクセス管理情報暗復号部７６０に出力する。
【０１７７】
セッション鍵暗復号部７７０は、データの読み出し時には、アクセス管理情報暗復号部７６０から入力されたフラッシュメモリ４００からの読み出しデータを、セッション鍵Ｋｓｓにより暗号化する。また、セッション鍵暗復号部７７０は、暗号化された読み出しデータを、SDC IF７８０を介してＳＤＣ２００に送信する。
【０１７８】
SDC IF７８０は、ＳＤＣ２００との間で各種のデータを送受信する。具体的には、SDC IF７８０は、アクセス管理情報暗復号部７６０から入力された暗号鍵Ｋｓで暗号化された書き込みデータ、およびセッション鍵暗復号部７７０から入力されたセッション鍵Ｋｓｓで暗号化された読み出しデータを、ＳＤＣ２００に送信する。また、SDC IF７８０は、ＳＤＣ２００のSCC IF７５０から送信されたセッション鍵Ｋｓｓで暗号化された書き込みデータおよび暗号鍵Ｋｓで暗号化された読み出しデータを受信する。また、SDC IF７８０は、受信された書き込みデータをセッション鍵暗復号部７７０に出力し、受信された読み出しデータをアクセス管理情報暗復号部７６０に出力する。
【０１７９】
次に、上述のように構成されたメモリカード７００の動作について、図１０および図１１を用いて詳細に説明する。なお、リセット処理におけるＳＤＣ２００とＳＣＣ３００との間の認証および暗号鍵Ｋｓの共有の仕組みは実施の形態１と同一であるため、その説明を省略し、セキュリティ保護領域４２０へのデータの書き込み動作およびセキュリティ保護領域４２０からのデータの読み出し動作について説明する。
【０１８０】
図１０は、メモリカード７００のセキュリティ保護領域４２０にデータを書き込む場合におけるホスト機器１１０、ＳＤＣ２００およびＳＣＣ３００の動作の一例を示すシーケンス図である。ここでは、セキュリティ保護領域４２０のエリアブロック４２２にデータを書き込む場合について説明する。また、簡単のため、エリアブロック４２２は、図２に示すアクセス管理情報の“エリア２”に対応すると仮定する。
【０１８１】
図１０において、セキュリティ保護領域４２０へのデータの書き込みは、データを書き込む領域に対応する各種の情報を設定するためのアクセス領域指定コマンド処理（ステップＳ７１〜ステップＳ７７）と、実際にデータを書き込むためのデータ転送コマンド処理（ステップＳ７８〜ステップＳ８４）との２段階の処理により行われる。
【０１８２】
［アクセス領域指定コマンド処理］
まず、アクセス領域指定コマンド処理について説明する。
【０１８３】
まず、ホスト機器１１０は、アクセスすべき領域を指定するための領域ナンバ、ブロックアドレス、およびブロック長が記述されたアクセス領域指定コマンドを、ＳＤＣ２００に対して送信する（Ｓ７１）。ＳＤＣ２００のHost IF７１０で受信されたアクセス領域指定コマンドは、SCC IF７５０に出力される。また、SCC IF７５０は、入力されたアクセス領域指定コマンドを、さらにＳＣＣ３００に送信する（Ｓ７２）。ＳＣＣ３００のSDC IF７８０で受信されたアクセス領域指定コマンドは、アクセス管理情報暗復号部７６０に出力される。
【０１８４】
アクセス管理情報暗復号部７６０は、アクセス領域指定コマンドを受信すると、鍵記憶部３１０が保持するアクセス管理情報から、アクセス領域指定コマンドに対応するアクセス管理情報、例えばアクセスすべき領域の物理アドレス、アクセス長、セッション鍵Ｋｓｓ、および格納鍵Ｋｓｔを取得する（Ｓ７３）。この例では、アクセス管理情報暗復号部７６０は、エリアブロック４２２（エリア２）に対応する物理アドレス０ｘ００００２０００、アクセス長、セッション鍵Ｋｓｓ２、および格納鍵Ｋｓｔ１を、アクセス管理情報として取得する。
【０１８５】
アクセス管理情報暗復号部７６０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、ステップＳ７３で取得したアクセス管理情報、つまりエリアブロック４２２に対応する物理アドレス、アクセス長、および格納鍵Ｋｓｔを暗号化する。また、アクセス管理情報暗復号部７６０は、暗号化されたアクセス管理情報をＳＤＣ２００に送信する（Ｓ７４）。ＳＤＣ２００のSCC IF７５０で受信された暗号化アクセス管理情報は、アクセス管理情報暗復号部７３０に出力される。
【０１８６】
また、アクセス管理情報暗復号部７６０は、ステップＳ７３で取得したセッション鍵Ｋｓｓ、例えばＫｓｓ２を、セッション鍵暗復号部７７０に設定する（Ｓ７５）。
【０１８７】
ＳＤＣ２００のアクセス管理情報暗復号部７３０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、ＳＣＣ３００からの暗号化アクセス管理情報を復号化する。これにより、アクセス管理情報暗復号部７３０は、アクセス先、つまりエリアブロック４２２に対応する物理アドレス０ｘ００００２０００、アクセス長、および格納鍵Ｋｓｔ１を取得する（Ｓ７６）。
【０１８８】
そして、アクセス管理情報暗復号部７３０は、ステップＳ７６で取得した格納鍵Ｋｓｔ１を、格納鍵暗復号部７２０に設定する。また、アクセス管理情報暗復号部７３０は、ステップＳ７６で取得した物理アドレスおよびアクセス長を、Flash IF７４０に設定する（Ｓ７７）。
【０１８９】
［データ転送コマンド処理］
次いで、データ転送コマンド処理について説明する。
【０１９０】
まず、ホスト機器１１０は、セッション鍵Ｋｓｓ、例えばセッション鍵Ｋｓｓ２を用いて、エリアブロック４２２に書き込むデータを暗号化する（Ｓ７８）。ここで、ホスト機器１１０は、予め、メモリカード７００との間でセッション鍵Ｋｓｓを共有している。また、例えば、Diffe-Helmanなどの鍵交換処理を使用して、セッション鍵を共有することも可能である。
【０１９１】
また、ホスト機器１１０は、セッション鍵Ｋｓｓ２により暗号化された書き込みデータとともに、データの書き込みを指示するデータ転送コマンドをＳＤＣ２００に送信する（Ｓ７９）。ＳＤＣ２００のHost IF７１０で受信されたこの書き込みデータは、SCC IF７５０を介してＳＣＣ３００に送信される。また、ＳＣＣ３００のSDC IF７８０で受信された書き込みデータは、セッション鍵暗復号部７７０に出力される。
【０１９２】
セッション鍵暗復号部７７０は、ステップＳ７５で設定されたセッション鍵Ｋｓｓ２を用いて、ＳＤＣ２００からの書き込みデータを復号化する（Ｓ８０）。アクセス管理情報暗復号部７６０は、鍵生成部３２０で生成された暗号鍵Ｋｓを用いて、復号化された書き込みデータを暗号化する（Ｓ８１）。また、アクセス管理情報暗復号部７６０は、暗号鍵Ｋｓで暗号化された書き込みデータを、SDC IF７８０を介してＳＤＣ２００に送信する。
【０１９３】
ＳＤＣ２００のアクセス管理情報暗復号部７３０は、ＳＣＣ３００からの暗号鍵Ｋｓで暗号化された書き込みデータを受信すると、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、この書き込みデータを復号化する（Ｓ８２）。また、アクセス管理情報暗復号部７３０は、復号化された書き込みデータを、格納鍵暗復号部７２０に出力する。
【０１９４】
格納鍵暗復号部７２０は、ステップＳ７７で設定された格納鍵Ｋｓｔ１を用いて、復号化された書き込みデータを暗号化する（Ｓ８３）。また、格納鍵暗復号部７２０は、格納鍵Ｋｓｔ１で暗号化された書き込みデータを、Flash IF７４０に出力する。そして、Flash IF７４０は、格納鍵Ｋｓｔ１で暗号化された書き込みデータを、ステップＳ７７で設定された物理アドレスにより示される領域、例えばエリアブロック４２２に書き込む（Ｓ８４）。
【０１９５】
以上、フラッシュメモリ４００のセキュリティ保護領域４２０へのデータの書き込み動作について説明した。
【０１９６】
次に、フラッシュメモリ４００のセキュリティ保護領域４２０からのデータの読み出し動作について、図１１を用いて説明する。
【０１９７】
図１１は、メモリカード７００のセキュリティ保護領域４２０からデータを読み出す場合におけるホスト機器１１０、ＳＤＣ２００およびＳＣＣ３００の動作の一例を示すシーケンス図である。ここでは、セキュリティ保護領域４２０のエリアブロック４２２に格納されたデータを読み出す場合について説明する。また、簡単のため、エリアブロック４２２は、図２に示すアクセス管理情報の“エリア２”に対応すると仮定する。
【０１９８】
図１１において、セキュリティ保護領域４２０からのデータの読み出しは、データを読み出す領域に対応する各種の情報を設定するためのアクセス領域指定コマンド処理（ステップＳ７１〜ステップＳ７７）と、実際にデータを読み出すためのデータ取得コマンド処理（ステップＳ９１〜ステップＳ９８）との２段階の処理により行われる。なお、図１１のアクセス領域指定コマンド処理は、前述した図１０のアクセス領域指定コマンド処理と同一であるためその説明を省略し、データ取得コマンド処理についてのみ説明する。
【０１９９】
［データ取得コマンド処理］
まず、ホスト機器１１０は、データの読み出しを指示するデータ取得コマンドをＳＤＣ２００に送信する（Ｓ９１）。ＳＤＣ２００のHost IF７１０で受信されたデータ取得コマンドは、Flash IF７４０に出力される。
【０２００】
Flash IF７４０は、ステップＳ７７で設定された物理アドレスにより示される領域、例えばエリアブロック４２２に格納されたデータを読み出す（Ｓ９２）。また、Flash IF７４０は、この読み出しデータを、格納鍵暗復号部７２０に出力する。
【０２０１】
格納鍵暗復号部７２０は、ステップＳ７７で設定された格納鍵Ｋｓｔ、例えば格納鍵Ｋｓｔ１を用いて、エリアブロック４２２から読み出されたデータを復号化する（Ｓ９３）。復号化された読み出しデータは、アクセス管理情報暗復号部７３０に出力される。アクセス管理情報暗復号部７３０は、鍵生成部２５０で生成された暗号鍵Ｋｓを用いて、復号化された読み出しデータを暗号化する（Ｓ９４）。また、アクセス管理情報暗復号部７３０は、暗号鍵Ｋｓで暗号化された読み出しデータを、SCC IF７５０を介してＳＣＣ３００に送信する。
【０２０２】
ＳＣＣ３００のアクセス管理情報暗復号部７６０は、ＳＤＣ２００からの暗号鍵Ｋｓで暗号化された読み出しデータを受信すると、鍵生成３２０で生成された暗号鍵Ｋｓを用いて、この読み出しデータを復号化する（Ｓ９５）。また、アクセス管理情報暗復号部７６０は、復号化された読み出しデータを、セッション鍵暗復号部７７０に出力する。
【０２０３】
セッション鍵暗復号部７７０は、ステップＳ７５で設定されたセッション鍵Ｋｓｓ２を用いて、復号化された読み出しデータを暗号化する（Ｓ９６）。また、セッション鍵暗復号部７７０は、セッション鍵Ｋｓｓ２により暗号化された読み出しデータを、SDC IF７８０を介してＳＤＣ２００に送信する。そして、SCC IF７５０は、この読み出しデータを受信し、Host IF７１０を介してホスト機器１１０に送信する（Ｓ９７）。
【０２０４】
ホスト機器１１０は、セッション鍵Ｋｓｓ２を用いてＳＤＣ２００からの暗号化された読み出しデータを復号化することにより、平文の読み出しデータを取得する（Ｓ９８）。
【０２０５】
以上、フラッシュメモリ４００のセキュリティ保護領域４２０からのデータの読み出し動作について説明した。
【０２０６】
このように、本実施の形態によれば、ホスト機器１１０との間で送受信するデータのセッション鍵Ｋｓｓによる暗復号化をＳＣＣ３００で行うので、セッション鍵Ｋｓｓによる暗復号化の安全性および信頼性を向上させることができる。
【産業上の利用可能性】
【０２０７】
本発明に係るメモリカードは、セキュリティ強度を落とすことなく、高速にセキュリティ保護領域へアクセスすることができる効果を有し、個人認証や機密情報の保護などのセキュリティ処理を行うメモリカードとして有用である。
【図面の簡単な説明】
【０２０８】
【図１】本発明の実施の形態１に係るメモリカードの構成を示すブロック図
【図２】アクセス管理情報の一例を示す図
【図３】リセット処理により暗号鍵Ｋｓを生成する場合におけるホスト機器、ＳＤＣおよびＳＣＣの動作の一例を示すシーケンス図
【図４】図１のメモリカードのセキュリティ保護領域にデータを書き込む場合におけるホスト機器、ＳＤＣおよびＳＣＣの動作の一例を示すシーケンス図
【図５】図１のメモリカードのセキュリティ保護領域からデータを読み出す場合におけるホスト機器、ＳＤＣおよびＳＣＣの動作の一例を示すシーケンス図
【図６】本発明の実施の形態２に係るメモリカードの構成を示すブロック図
【図７】図６のメモリカードのセキュリティ保護領域にデータを書き込む場合におけるホスト機器、ＳＤＣおよびＳＣＣの動作の一例を示すシーケンス図
【図８】図６のメモリカードのセキュリティ保護領域からデータを読み出す場合におけるホスト機器、ＳＤＣおよびＳＣＣの動作の一例を示すシーケンス図
【図９】本発明の実施の形態３に係るメモリカードの構成を示すブロック図
【図１０】図９のメモリカードのセキュリティ保護領域にデータを書き込む場合におけるホスト機器、ＳＤＣおよびＳＣＣの動作の一例を示すシーケンス図
【図１１】図９のメモリカードのセキュリティ保護領域からデータを読み出す場合におけるホスト機器、ＳＤＣおよびＳＣＣの動作の一例を示すシーケンス図
【図１２】従来のメモリカードにおけるセキュリティ保護領域にアクセスするための手順を示す図
【符号の説明】
【０２０９】
１００、６００、７００  メモリカード
１１０  ホスト機器
２００  ＳＤコントローラチップ
２１０、７１０  Host IF
２２０、６１０、７７０  セッション鍵暗復号部
２３０、６６０、７２０  格納鍵暗復号部
２４０、６３０、７４０  Flash IF
２５０、３２０  鍵生成部
２６０  アクセス管理情報復号部
２７０、６４０、７５０  SCC IF
３００  スマートカードチップ
３１０  鍵記憶部
３３０  アクセス管理情報暗号部
３４０、６７０、７８０  SDC IF
４００  フラッシュメモリ
４１０  通常領域
４２０  セキュリティ保護領域
５００  アクセス管理情報
６２０、６５０、７３０、７６０  アクセス管理情報暗復号部
【図１】
2007316865.tif 000003
【図２】
2007316865.tif 000004
【図３】
2007316865.tif 000005
【図４】
2007316865.tif 000006
【図５】
2007316865.tif 000007
【図６】
2007316865.tif 000008
【図７】
2007316865.tif 000009
【図８】
2007316865.tif 000010
【図９】
2007316865.tif 000011
【図１０】
2007316865.tif 000012
【図１１】
2007316865.tif 000013
【図１２】
2007316865.tif 000014