(57)【要約】【課題】本発明は、セキュリティ処理の安全性を確保しつつ、セキュリティ処理の処理時間を短縮する。【解決手段】デジタル証明書１３０２と、乱数タネ１３０３とを記憶するフラッシュメモリチップ１３０１と、デジタル証明書を管理するための管理処理と乱数タネを用いて前記擬似乱数を発生するための乱数発生処理とを実行可能なコントローラチップ１１０１と、ホスト機器１４０１から入力された個人識別情報（ＰＩＮ）を認証するための認証処理と乱数タネを暗号化するための暗号化処理とを実行可能なＩＣカードチップ１２０１とを備える。【選択図】図１
2004104539.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリと、コントローラと、ＩＣカードチップとを備えたメモリカードにおいて、
前記フラッシュメモリは、外部のホスト機器が前記ホスト機器と通信可能なサーバからデータを取得するために必要なデジタル証明書と、前記サーバと前記ホスト機器との間で前記データを相互に交換するために用いられる乱数の元となる乱数タネとを記憶し
前記コントローラは、前記デジタル証明書を管理するための管理処理と、前記乱数タネを用いて前記擬似乱数を発生するための乱数発生処理とを実行可能で、
前記ＩＣカードチップは、前記ホスト機器から入力された個人識別情報を認証するための認証処理と、前記サーバが保持する鍵に対応する鍵を用いて前記乱数タネを暗号化するための暗号化処理とを実行可能なメモリカード。
【請求項２】
前記コントローラは、前記ホスト機器からのアクセスが制限されたレジスタを備え、
前記コントローラは、前記ＩＣカードチップによる前記個人識別情報の認証結果に基づいて、前記乱数発生処理を実行する前に、前記レジスタに所定のデータを設定する請求項１に記載のメモリカード。
【請求項３】
前記ＩＣカードチップは、前記コントローラとの間で共有する共有鍵を用いて、前記個人識別情報の認証結果を暗号化し、暗号化された前記個人識別情報の認証結果を前記コントローラへ出力し、
前記コントローラは、前記共有鍵を用いて、暗号化された前記個人識別情報の認証結果を復号し、復号された前記個人識別情報の認証結果に基づいて、前記レジスタに前記所定のデータを設定する請求項２に記載のメモリカード。
【請求項４】
前記レジスタは、前記コントローラへの電源の供給が停止した場合に、当該レジスタに設定されていた前記所定のデータを破棄する請求項２に記載のメモリカード。
【請求項５】
前記コントローラは、前記レジスタに前記所定のデータを参照することによって前記個人識別情報の認証が成功していると判断した場合に、前記乱数発生処理の実行を開始する請求項２に記載のメモリカード。
【請求項６】
前記管理処理は、前記デジタル証明書を更新又は追加するための処理を含む請求項１に記載のメモリカード。
【請求項７】
前記ＩＣカードチップは、前記乱数タネを暗号化するための暗号コプロセッサを備える請求項１に記載のメモリカード。
【請求項８】
前記ＩＣカードチップは、前記コントローラよりも耐タンパ性が高く、
前記ＩＣカードチップは、前記ホスト機器から入力された個人識別情報を認証するために用いられる参照情報を保持し、参照情報と前記個人識別情報とを比較することによって、前記個人識別情報を認証する請求項１に記載のメモリカード。
【請求項９】
不揮発性メモリと、外部のホスト機器からのコマンドに応答して所定の処理を実行するためのコントローラと、前記コントローラからのコマンドに応答して所定の処理を実行するためのＩＣとを備えた記憶装置において、
前記コントローラは、ネットワークを介してサーバと前記ホスト機器との間で情報を交換するために必要な一連のセキュリティ処理の一部を実行可能で、
前記ＩＣは、前記一連のセキュリティ処理の他部を実行する記憶装置。
【請求項１０】
前記一連のセキュリティ処理の一部は、前記情報を暗号化又は復号するための乱数を発生するための乱数発生処理を含み、
前記一連のセキュリティ処理の他部は、前記一連のセキュリティ処理を開始する際に、前記ホスト機器から入力された個人識別情報を認証するための認証処理を含む請求項９に記載の記憶装置。
【請求項１１】
前記ＩＣは、所定のデータを一時的に保持する第１のレジスタを備え、
前記コントローラは、所定のデータを一時的に保持する第２のレジスタを備え、
前記ＩＣは、前記個人識別情報の認証が成功した場合に、前記所定のデータを前記第１のレジスタに設定可能で、前記所定のデータが前記第１のレジスタに設定されている場合に、前記一連のセキュリティ処理の他部を実行し、
前記コントローラは、前記個人識別情報の認証が成功した場合に、前記所定のデータを前記第２のレジスタに設定可能で、前記所定のデータが前記第２のレジスタに設定されている場合に、前記一連のセキュリティ処理の一部を実行する請求項１０に記載の記憶装置。
【請求項１２】
前記不揮発性メモリは、前記乱数の元となる乱数タネを記憶し、
前記乱数発生処理は、前記乱数タネを用いて前記乱数を擬似的に発生し。
前記一連のセキュリティ処理の他部は、前記サーバが保持する鍵に対応する鍵を用いて前記乱数のタネを暗号化するための暗号化処理を含む請求項１０の記憶装置。
【請求項１３】
前記不揮発性メモリは、認証局が発行したデジタル証明書を記憶し、
前記一連のセキュリティ処理の一部は、前記デジタル証明書を、前記不揮発性メモリから読み出して前記ホスト機器へ出力するための管理処理を含む請求項１０に記載の記憶装置。
【請求項１４】
前記コントローラは、前記ホスト機器からのコマンドを前記ＩＣが解釈可能なコマンドに変換し、変換されたコマンドを前記ＩＣへ出力する請求項９に記載の記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はセキュリティ機能を搭載した記憶装置及びその記憶装置が挿入可能なホスト機器及びその記憶装置を備えたホスト機器に係り、フラッシュメモリチップ及びコントローラを有するメモリカード及びそのメモリカードが挿入可能な情報処理装置及びそのそのメモリカードを備えた情報処理装置に関する。
【０００２】
【従来の技術】
ＩＣカードは、プラスチックカード基板中にＩＣ（集積回路）チップを埋め込んだものであり、その表面にＩＣチップの外部端子を持つ。ＩＣチップの外部端子には電源端子、クロック端子、データ入出力端子などがある。ＩＣチップは、接続装置が外部端子から電源や駆動クロックを直接供給することによって動作する。ＩＣカードは外部端子を通して端末機などの接続装置との間で電気信号を送受信することにより、接続装置と情報交換をおこなう。情報交換の結果として、ＩＣカードは計算結果や記憶情報の送出、記憶情報の変更をおこなう。ＩＣカードは、これらの動作仕様に基づいて、機密データ保護や個人認証などのセキュリティ処理を実行する機能を持つことができる。ＩＣカードは、クレジット決済やバンキングなど機密情報のセキュリティが必要とされるシステムにおいて、個人識別のためのユーザデバイスとして利用されている。
【０００３】
【特許文献１】
特開２０００−２４２７５０号公報
【特許文献２】
特開２０００−３３８８６８号公報
【特許文献３】
特開２００１−３５７３６５号公報
【特許文献４】
特開２００２−０２４７７３号公報
【０００４】
【発明が解決しようとする課題】
従来の技術では、すべてのセキュリティ処理をＩＣカードチップで行うため、処理時間が長くなる。つまり、ＩＣカードチップのＣＰＵは、メモリカードのコントローラのＣＰＵに比較して、処理能力が低いため、セキュリティ処理のうちソフトウェアによって実行される処理に時間を要してしまう。　一方、すべてのセキュリティ処理をメモリカードのコントローラで行う場合は、メモリカードのコントローラは、ＩＣカードチップに比較して、耐タンパ性が低いため、外部からのアタックを受けやすく、セキュリティ処理の安全性を確保できない。
【０００５】
本発明の目的は、セキュリティ処理の安全性を確保しつつ、セキュリティ処理の処理時間を短縮した記憶装置を提供することである。
【０００６】
【課題を解決するための手段】
本発明は、一連のセキュリティ処理のうち、メモリカード内のコントローラが、デジタル証明書を管理するための管理処理と、乱数のタネを用いて擬似乱数を発生するための乱数発生処理とを実行し、メモリカード内のＩＣカードチップが、ホスト機器から入力された個人識別情報（ＰＩＮ）を認証するための認証処理と、サーバが保持する鍵に対応する鍵を用いて乱数のタネを暗号化するための暗号化処理を実行する。
【０００７】
尚、一連のセキュリティ処理とは、例えば、メモリカードを備えたホスト機器とサーバとが情報を交換する場合や情報をホスト機器で再生する場合に、暗号技術等を用いて、その情報の閲覧・利用権限のない第三者によるハッキングや改ざんを防止するための処理をいう。
【０００８】
【発明の実施の形態】
以下、本発明の一実施形態について説明する。
【０００９】
図１は、本発明を適用したメモリカードの内部構成図を簡単に表したものである。メモリカード１００１は、ＭｕｌｔｉＭｅｄｉａＣａｒｄ仕様に準拠するのが好ましい。ＭｕｌｔｉＭｅｄｉａＣａｒｄはＩｎｆｉｎｅｏｎＴｅｃｈｎｏｌｏｇｉｅｓＡＧの登録商標である。メモリカード１００１は、外部に接続したホスト機器１４０１がメモリカードコマンドを発行することによって、ホスト機器が使用するファイルデータを読み書きするストレージ処理と、機密データ保護やユーザ認証などに必要な暗号演算等のセキュリティ処理との二種類を実行する機能を有する。ここで、機密データとは、このメモリカード１００１の所有者に固有な秘密鍵やデジタル証明書などを意味する。また、ユーザ認証とは、その所有者がそれらの機密データを使用することを許可される前に、メモリカード１００１自身が、アクセスしている人物がメモリカード１００１の所有者本人であるかいなかをチェックする機能を意味する。本実施形態において使用するユーザ認証方式は、所有者が個人的に記憶している暗証番号や生態情報等の個人認証情報（以下、ＰＩＮ（Ｐｅｒｓｏｎａｌ　Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ　Ｎｕｍｂｅｒ）という。）を、ホスト機器１４０１を介して、メモリカード１００１に入力し、メモリカード１００１内部にある参照データ（以下、参照ＰＩＮという。）と一致するかを判定することで本人を特定する方式である。
【００１０】
メモリカード１００１は、ホスト機器１４０１と接続するための外部端子１００２、フラッシュメモリチップ１３０１へのファイルデータの書き込みとフラッシュメモリチップ１３０１からのファイルデータの読み出しとフラッシュメモリチップ１３０１内のファイルデータの消去を制御するためのコントローラチップ１１０１、データを記憶可能なフラッシュメモリチップ１３０１、公開鍵又は秘密鍵を用いてデータを暗号化又は復号化するためのＩＣカードチップ１２０１を持つ。メモリカード１００１は、一種類の外部インタフェースを通じて、標準メモリカードコマンド（フラッシュメモリチップ１３０１へアクセスするためのコマンド）に加えて、セキュリティ処理を実行するためのセキュアコマンドを受け付ける。コントローラチップ１１０１は、メモリカード１００１が受信したコマンドが標準メモリカードコマンドであるか、セキュアコマンドであるか、さらに、セキュアコマンドの場合は、要求されたセキュリティ処理の内容が何であるかによって、アクセスすべきチップ（フラッシュメモリ１３０１又はＩＣカードチップ１２０１の何れか）を選択し、コマンド処理を分配する機能を持つ。コントローラチップ１１０１は、標準メモリカードコマンドを受信したならば、フラッシュメモリチップ１３０１を選択し、これにフラッシュメモリコマンドを発行してホスト機器のためのデータを読み書きする。また、コントローラチップ１１０１は、セキュアコマンドを受信したならば、そのコマンドが指示するセキュリティ処理がＩＣカードチップ１２０１で実行すべきものかいなかを判断し、ＩＣカードチップ１２０１で実行すべきものの場合は、ＩＣカードチップ１２０１を選択し、これにＩＣカードコマンドを発行して所望のセキュリティ処理を実行する。ＩＣカードチップ１２０１で実行すべきものでない場合は、コントローラチップ１１０１内部でセキュリティ処理を実行する。
【００１１】
ホスト機器１４０１は、例えば、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ、音楽再生（及び録音）装置、カメラ、ビデオカメラ、自動預金預払器、街角端末、決済端末等が該当する。
【００１２】
フラッシュメモリチップ１３０１は、不揮発性の半導体メモリを記憶媒体とするメモリチップであり、コントローラチップ１１０１から送信されるフラッシュメモリコマンドによりファイルデータの読み書きができる。フラッシュメモリチップ１３０１は、コントローラチップ１１０１内部で実行するセキュリティ処理に使用されるデジタル証明書１３０２および乱数発生の元となる乱数タネ１３０３を格納する。
【００１３】
外部端子１００２は複数の端子から構成され、外部のホスト機器１４０１と情報交換するために、電源供給端子、クロック入力端子、コマンド入出力端子、データ入出力端子、グランド端子を含む。
【００１４】
ＩＣカードチップ１２０１は、ＩＣカードのプラスチック基板中に埋め込むためのマイコンチップであり、その外部端子、電気信号プロトコル、コマンドはＩＳＯ／ＩＥＣ７８１６規格に準拠している。ＩＣカードチップ１２０１の外部端子には、電源供給端子、クロック入力端子、リセット入力端子、Ｉ／Ｏ入出力端子、グランド端子がある。コントローラチップ１１０１が、ＩＣカードチップ１２０１の外部端子からＩＣカードチップ１２０１にＩＣカードコマンド（ＩＣカードチップ１２０１が解釈可能なコマンド）を発行することによって、セキュリティ処理に必要な演算をおこなうことができる。
【００１５】
コントローラチップ１１０１は、メモリカード１００１内部の他の構成要素（外部端子１００２、フラッシュメモリチップ１３０１、ＩＣカードチップ１２０１）と接続されており、これらを制御することを主たる役割とするマイコンチップである。コントローラチップ１１０１内部にあるＣＰＵ１１１１は、自身に内蔵するプログラムに従って、コントローラチップ１１０１を構成する他の全ての要素を制御する。ホストインタフェース制御ロジック１１０２は、メモリカード１００１内のＣＰＵ１１１１が、外部のホスト機器１４０１からメモリカードコマンドを受信したり、ＣＰＵ１１１１がそのコマンドに対するメモリカードレスポンスを外部のホスト機器１４０１に送信するときの電気信号プロトコルを実行する論理回路である。フラッシュメモリインタフェース制御ロジック１１０３は、ＣＰＵ１１１１とフラッシュメモリチップ１３０１との間でファイルデータをリード／ライト転送するためのフラッシュメモリコマンドを送信したり、そのコマンドに対するレスポンスをＣＰＵ１１１１が受信するときの電気信号プロトコルを実行する論理回路である。ＩＣカードインタフェース制御ロジック１１０４は、ＣＰＵ１１１１とＩＣカードチップ１２０１との間でＩＣカードコマンドを送信したり、そのコマンドに対するレスポンスをＣＰＵ１１１１が受信するときの電気信号プロトコルを実行する論理回路である。ＣＰＵ１１１１は、上記３種類の制御ロジック１１０２、１１０３、１１０４を制御するプログラムを含むが、それ以外に、上で述べたセキュリティ処理を実行するためのプログラム１１１２と１１１３も含む。ＰＩＮ処理プログラム１１１２は、ユーザ認証のときにコントローラチップ１１０１内部で実行する処理を記述している。セキュリティ処理Ｂプログラム１１１３は、コントローラチップ１１０１内で実行するその他のセキュリティ処理を記述している。その具体的な内容として、証明書管理１１１４と乱数発生１１１５を含む。これらの処理では、フラッシュメモリチップ１３０１に格納されたデジタル証明書１３０２、乱数タネ１３０３をそれぞれ使用する。さらに、コントローラチップ１１０１は、ユーザ認証の状態を一時的に保持するためのＰＩＮ認証レジスタＢ１１０５を含む。一時的に保持するとは、電源が供給されている場合に、データが保持可能で、電源の供給が停止した場合に、保持されていたデータが消滅する（破棄される）ことを意味する。
【００１６】
ＩＣカードチップ１２０１は、演算処理を行うためのＣＰＵ１２０２と、ユーザ認証の状態を一時的に保持するためのＰＩＮ認証レジスタＡ１２０３と、不揮発性のメモリであるＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ　Ｅｒａｓａｂｌｅ　Ｐｒｏｇｒａｍｍａｂｌｅ　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）１２１１と、非対称暗号の１種であるＲＳＡ暗号に関する処理を行うための暗号コプロセサ１２０４とを備える。そして、暗号コプロセサ１２０４を利用することによって、ＩＣカードチップ１２０１はＲＳＡ暗号に基づくセキュリティ処理を実行する。そのセキュリティ処理とは、例えば、デジタル署名の作成や検証、秘密データの暗号化や復号である。尚、ＩＣカードチップ１２０１は、暗号コプロセサ１２０４（ハードウェア）だけでなく、ＣＰＵ１２０２内部のプログラム（ソフトウェア）を利用してセキュリティ処理を実行することもできる。ここで、ＣＰＵ１２０２のプログラム処理性能は、ＣＰＵ１１１１のそれよりも低いものとする（但し、本発明を適用するメモリカードは、そうでないものであってもよい）。ＥＥＰＲＯＭ１２１１は、ＣＰＵ１２０２内部や暗号コプロセサ１２０４で実行するセキュリティ処理に使用されるためのデータやプログラムを格納する。具体的には、ＲＳＡ暗号用の秘密鍵１２１７、ユーザ認証用のＰＩＮ参照１２１８、およびＩＣカードチップ内で実行するセキュリティ処理を記述したセキュリティ処理Ａプログラム１２１２を格納する。セキュリティ処理Ａプログラム１２１２の内容としては、ユーザ認証用のためのＰＩＮ検証１２１３、ＲＳＡ暗号計算のための鍵設定１２１４、ＲＳＡ暗号による秘密鍵演算１２１５、ＲＳＡ暗号による公開鍵演算１２１６を含む。なお、１２１５と１２１６の処理の中で必要となる剰余乗算の実行には、ＲＳＡ暗号コプロセサ１２０４を利用する。
【００１７】
ＩＣカードチップ１２０１のＥＥＰＲＯＭ１２１１の記憶容量は、フラッシュメモリチップ１３０１の記憶容量より小さい。但し、本発明を適用するときには、ＩＣカードチップ１２０１のＥＥＰＲＯＭ１２１１の記憶容量は、フラッシュメモリチップ１３０１の記憶容量と同じでもよいし、大きくてもかまわない。
【００１８】
ＩＣカードチップ１２０１には、セキュリティ評価基準の国際標準であるＩＳＯ／ＩＥＣ１５４０８の評価・認証機関によって認証済みである製品を利用する。一般に、セキュリティ処理をおこなう機能を持つＩＣカードを実際の電子決済サービスなどで利用する場合、そのＩＣカードはＩＳＯ／ＩＥＣ１５４０８の評価・認証機関による評価と認定を受ける必要がある。メモリカード１００１は、評価・認証機関によって認証済みのＩＣカードチップ１２０１を内蔵するのが好ましい。そして、このＩＣカードチップ１２０１を利用してセキュリティ処理の一部をおこなうことができる構造を持つ。一方、コントローラチップ１１０１は上記の評価と認定を受けていなくてもよい。メモリカード１００１は、ＩＣカードチップ１２０１を利用することによって、コントローラチップ１１０１内部で実行するセキュリティ処理において確保できるセキュリティの強度よりも高い強度を確保する必要があるセキュリティ処理を実行する機能を得る。
【００１９】
ＩＣカードチップ１２０１の外部端子は、電源供給端子、クロック入力端子、リセット入力端子、Ｉ／Ｏ入出力端子がコントローラチップ１１０１に接続されている。
【００２０】
コントローラチップ１１０１は、電源供給端子、クロック入力端子を通して、ＩＣカードチップ１２０１への電源供給、クロック供給を制御する。電源供給されていないＩＣカードチップ１２０１を、ＩＣカードコマンドを受信できる状態にするには、まず、ＩＣカードチップ１２０１に電源供給を開始し、ＩＳＯ／ＩＥＣ７８１６−３規格に基づくリセット処理（クロック供給の開始を含む）を施す。例えば、コントローラチップ１１０１は、メモリカード１００１がホスト機器１４０１からセキュリティ処理を実行するコマンドを受信したのを契機に、電源供給端子を通してＩＣカードチップ１２０１への電源供給を開始してもよい。あるいは、コントローラチップ１１０１は、セキュリティ処理を実行しないときもＩＣカードチップ１２０１への電源供給を維持しておき、メモリカード１００１がホスト機器１４０１からセキュリティ処理を実行するコマンドを受信したのを契機に、リセット入力端子を通してＩＣカードチップ１２０１のリセット処理をおこなってもよい。メモリカード１００１は、ＩＣカードチップ１２０１のクロック入力端子を通してＩＣカードチップ１２０１に供給するクロック信号を、カード外部からのクロック入力信号から独立してコントローラチップ１１０１内部で発生し、その周波数、供給開始タイミング、供給停止タイミングを制御することが望ましい。
【００２１】
次に、本発明を適用した図１のメモリカード１００１で実行するセキュリティ処理の内容について述べる。メモリカード１００１は、主として次の４種類のセキュリティ処理をおこなう。（１）ユーザ認証のためのＰＩＮ検証、（２）デジタル証明書の読出／更新、（３）擬似乱数の発生、（４）ＲＳＡ暗号方式による演算。このうち、（２）〜（４）の処理は、（１）の処理によってユーザが正しく認証された後に限って実行が許可される。しかし、メモリカード１００１の電源供給がを停止された場合は、（１）による認証結果は破棄される（認証されていない状態になる）ものとし、再度電源供給を開始した後に（２）〜（４）を実行するためには、まず（１）によりもう一度ユーザが正しく認証される必要がある。以下、このセキュリティ処理を応用したシステムの一例を説明する。ネットワーク接続する機能を持つホスト機器１４０１およびそれを操作するユーザは、このセキュリティ処理を利用してネットワーク上の遠隔サーバ１５０１との間で、盗聴やなりすましを許さない安全なデータ通信（例えば、個人情報のダウンロード）をおこなう。まず（１）によるユーザ認証に基づき、（４）によってデジタル証明書の検証などを行い、サーバ１５０１とホスト機器１４０１との間で相互認証を実行する。その成果として両者は秘密データを共有することができる。それは擬似乱数発生用のタネである。次にコントローラチップ１１０１は、（３）によってそのタネから擬似乱数を発生し、その乱数でサーバ１５０１とホスト機器１４０１との間で交換したい情報を暗号化又は復号する。両者は、暗号化した情報をネットワークを介して伝送する。例えば、ホスト機器１４０１は、擬似乱数を用いてサーバ１５０１へ送信する情報を暗号化し、又は、サーバ１５０１から受信した情報を復号する。コントローラチップ１１０１は、ホスト機器１４０１とサーバ１５０１とが通信セッションを確立する度に、ホスト機器１４０１からのコマンドに応答して、（３）擬似乱数を発生してもよい。（即ち、擬似乱数は、通信セッションを確立してから切断する間のみ有効である）。その暗号を解くことができるのは、乱数タネ１３０３を持っているサーバ１５０１とホスト機器１４０１のみである。以上より、通信データを安全に交換することができる。また、（２）によって、ユーザ自身のデジタル証明書、ホスト機器１４０１のデジタル証明書、ホスト機器１４０１の通信相手（サーバ１５０１）のデジタル証明書、それらを発行した認証局の証明書などをメモリカード１００１内で管理することができる。ホスト機器１４０１がサーバ１５０１からファイルデータをダウンロードする場合に、ホスト機器１４０１は、デジタル証明書を、サーバ１５０１へ送信する。サーバ１５０１は、ホスト機器１４０１からのデジタル証明書を用いて、ホスト機器１４０１の正当性を検証する。検証の結果、ホスト機器１４０１は、ホスト機器１４０１が正当であると判断された場合に、ファイルデータのダウンロードを許可し、ホスト機器１４０１が正当でないと判断された場合にファイルデータのダウンロードを拒否する。ユーザ自身のデジタル証明書は、決済等に用いられるのが好ましい。ホスト機器１４０１のデジタル証明書は、ホスト機器１４０１がサーバ１５０１から情報を取得するために用いられるのが好ましい。
【００２２】
さて、メモリカード１００１が実行する４種類のセキュリティ処理のうち、（２）と（３）の処理はコントローラチップ１１０１内部で実行し、（１）と（４）の処理はＩＣカードチップ１２０１内部で実行する。つまり、ＩＣカードチップ１２０１は、コントローラチップ１１０１に比較して、耐タンパ性が高い、即ち、外部からのアタックに強いため、ＰＩＮ参照１２１８は、ＩＣカードチップ１２０１によって保持される方が安全である。尚、より高いセキュリティ強度を確保することを考慮して、４種類全ての処理をＩＣカードチップ１２０１内部で実行してもよいが、上記の振り分け方はユーザの利便性の向上という側面から見て以下の２つの利点を持つ。第一に、（２）の処理で扱うことができるデジタル証明書（フラッシュメモリチップ１３０１に格納された１３０２を指す。）の個数を、ＩＣカードチップ１２０１のＥＥＰＲＯＭ１２１１に格納できる個数よりも多くすることができる。第二に、（３）の実行に要する処理時間を、（ＣＰＵの性能差により）ＩＣカードチップ１２０１で実行した場合の処理時間よりも短くすることができる。つまり、ＩＣカードチップ１２０１のＣＰＵ１２０２よりも、コントローラチップ１１０１のＣＰＵ１１１１の方が、その処理能力が高い（その処理速度が速い）ため、ソフトウェアによって実行されるべき処理は、コントローラチップ１１０１で実行された方が速い。一方、ソフトウェアによって実行される暗号化又は復号の処理よりも、ハードウェアである暗号コプロセサ１２０４による暗号化又は復号の処理の方が速いため、暗号化又は復号の処理は、ＩＣカードチップ１２０１の方が速い。さて、（２）と（３）の実行許可の判定は（１）の処理結果に基づくことになるため、ＩＣカードチップ１２０１での（１）の処理結果がコントローラチップ１１０１に正しく伝えられる仕組みが必要となる。この後に述べるように、この課題は本発明の適用により解決される。
【００２３】
図２は、本発明を適用した図１のメモリカード１００１に、セキュリティ処理を実行させるときの詳細なプロセスを表したフローチャートである。セキュリティ処理を実行するため、上で述べたセキュアコマンドには２種類ある。第一にセキュアライトコマンド、第二にセキュアリードコマンドである。セキュアライトコマンドは、ホスト機器１４０１が要求するセキュリティ処理の内容を含むデータ（以下、セキュアライトデータと呼ぶ）をメモリカード１００１に送信するコマンドである。セキュアリードコマンドは、そのセキュリティ処理の結果を含むデータ（以下、セキュアリードデータと呼ぶ）をホスト機器１４０１が読み出すコマンドである。ホスト機器１４０１は、この２種類のコマンドを発行してメモリカード１００１にセキュリティ処理を実行させる。なお、上記セキュリティ処理は複数の処理を含んでいるが、一組のセキュアライトコマンドとセキュアリードコマンドの発行によって実行できる処理は、その中のひとつである。
【００２４】
図２のフローチャートに従って、セキュリティ処理の実行過程を詳しく説明する。まず、ホスト機器１４０１は、セキュアライトコマンドをメモリカード１００１に送信し（２１０１）、続けて、要求するセキュリティ処理の内容を含むセキュアライトデータを送信する（２１０２）。コントローラチップ１１０１は、セキュアライトデータをＩＣカードコマンドに変換する（２２０１）。そして、そのＩＣカードコマンドがＰＩＮ入力を検証するコマンドであるかを調べる（２２０２）。もし、ＰＩＮ検証ならば、ＰＩＮ処理プログラム１１１２によってＩＣカードコマンドの中のＰＩＮ入力部分を、もとのＰＩＮ入力を暗号化したものに置き換え（２２０３）、ステップ２２０５に移る。ここで、ＰＩＮ入力を暗号化する鍵として、あらかじめコントローラチップ１１０１とＩＣカードチップ１２０１との間で共有された秘密の鍵（以下、チップ共有鍵と呼ぶ。）を用いる。これにより、２つのチップ間を伝わるＰＩＮ入力を不正な改ざんから保護することができる。なお、チップ共有鍵はＰＩＮ処理プログラム１１１２の中に記述されている。さて、ステップ２２０２においてＰＩＮ検証コマンドでないならば、そのＩＣカードコマンドがＩＣカードチップにおいて実行すべきものかいなかを調べる（２２０４）。もし、ＩＣカードで実行すべきものなら、ステップ２２０５に移る。さもなくば、ステップ２２０６に移る。ステップ２２０５では、前記ＩＣカードコマンドをＩＣカードチップ１２０１に送信し、ステップ２３０１に移る。ステップ２２０６では、前記ＩＣカードコマンドを基にして、セキュリティ処理Ｂプログラム１１１３を実行する。その内部詳細は図３を用いて後述する。そして、その処理結果をセキュアリードデータに変換する（２２０９）。一方、ステップ２３０１では、ＩＣカードチップ１２０１は前記ＩＣカードコマンドを受信する。そして、前記ＩＣカードコマンドを基にして、セキュリティ処理Ａプログラム１２１２を実行する（２３０２）。その内部詳細は図４を用いて後述する。その処理結果をＩＣカードレスポンスとしてコントローラチップ１１０１に送信する（２３０３）。コントローラチップ１１０１は、そのＩＣカードレスポンスを受信する（２２０７）。そして、そのＩＣカードレスポンスがＰＩＮ検証コマンドに対するレスポンスかいなかを調べる（２２０８）。もし、ＰＩＮ検証のレスポンスでないならばステップ２２０９に移って、処理結果をセキュアリードデータに変換する。一方、ＰＩＮ検証のレスポンスならば、ステップ２２１０に移る。なお、ＰＩＮ検証のレスポンス中の検証結果を示すデータ部はＩＣカードチップ１２０１においてチップ共有鍵によって暗号化されている。ステップ２２１０では、コントローラチップ１１０１が、ＰＩＮ処理プログラム１１１２によって、この暗号化された検証結果をチップ共有鍵で復号して、検証結果を復元する。この手段により、先ほどと同様に、２つのチップ間を伝わるＰＩＮ検証結果を不正な改ざんから保護することができる。コントローラチップ１１０１は次に、そのＰＩＮ検証結果が「ＰＩＮ参照に一致」を示すデータであるか「ＰＩＮ参照に不一致」を示すデータであるかを調べる（２２１２）。「ＰＩＮ参照に一致」を示すデータであれば、コントローラチップ１１０１内部のＰＩＮ認証レジスタＢ１１０５に「認証済」を示すデータを設定し（２２１３）、ステップ２２０９に移る。なお、ＰＩＮ認証レジスタＢ１１０５は一時的なデータ保持を目的とするので、揮発性のＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）によって実装することが望ましく、メモリカード１００１外部から自由に内容を書き換えできないようにすることが望ましい。一方、ＰＩＮ検証結果が「ＰＩＮ参照に不一致」を示すデータであれば、ＰＩＮ認証レジスタＢ１１０５に「認証済」を示すデータを設定せずに、ステップ２２０９に移る。ステップ２２０９の後、メモリカード１００１は、ホスト機器１４０１による次のコマンドを待機する状態に入る（２２１１）。そして、ホスト機器１４０１によりメモリカード１００１へセキュアリードコマンドが送信されると（２１０３）、メモリカード１００１はステップ２２０９で得られたセキュアリードデータを送信し（２２１４）、ホスト機器１４０１はこれを受信する（２１０４）。以上で、セキュリティ処理中の一つの処理の実行が完了する。
【００２５】
図３は、図２のステップ２３０２におけるＩＣカードチップ１２０１内のセキュリティ処理Ａプログラム１２１２の詳細な処理フローを表したものである。セキュリティ処理Ａプログラム１２１２の最初のステップとして、ＩＣカードコマンドがＰＩＮ検証コマンドかどうかを調べる（３１０３）。もしそうなら、本コマンドで入力されたＰＩＮ入力（ＰＩＮ処理プログラム１１１２によって暗号化されている）を前述のチップ共有鍵で復号し（３１０４）、その値とＰＩＮ参照１２１８の値とを比較する（３１０５）。そして、その結果が「一致」であるか「不一致」であるかを判定し（３１０６）、「一致」ならばＰＩＮ認証レジスタＡ１２０３に「認証済」を設定し（３１０７）、ステップ３１０９に移る。なお、ＰＩＮ認証レジスタＡ１２０３は一時的なデータ保持を目的とするので、ＰＩＮ認証レジスタＢ１１０５と同様に揮発性のＲＡＭによって実装することが望ましく、ＩＣカードチップ１２０１外部から自由に内容を書き換えできないようにすることが望ましい。一方、検証結果が「不一致」ならば検証エラー処理を実行し（３１０８）、ステップ３１０９に移る。なお、検証エラー処理とは、「不一致」と判定された累積回数をカウントする処理などを意味する。例えば、この累積回数がある一定数を超えたら、本セキュリティ処理を完全に利用停止するようにして、不正使用に対する安全性を向上させてもよい。さて、ステップ３１０９では、ＰＩＮ検証結果をチップ共有鍵で暗号化する。そしてステップ３１１８に移り、暗号化されたＰＩＮ検証結果を含んだＩＣカードレスポンスを作成する。一方、ステップ３１０３でＰＩＮ検証コマンドでない場合、公開鍵設定コマンド（ＲＳＡ暗号方式による公開鍵演算に使用する鍵をあらかじめ設定するためのコマンド）かどうかを調べる（３１１０）。もしそうなら、そのコマンドとともにホスト機器１４０１から入力された公開鍵をＣＰＵ１２０２内部のレジスタ（ＲＡＭが望ましい）に設定する（３１１１）。そしてステップ３１１８に移り、公開鍵の設定に成功したかいなかを示す情報を含んだＩＣカードレスポンスを作成する。一方、ステップ３１１０で公開鍵設定コマンドでない場合、ＲＳＡ暗号方式による公開鍵演算コマンドかどうかを調べる（３１１２）。もしそうなら、ＰＩＮ認証レジスタＡ１２０３に「認証済」が設定されているかを調べ（３１１３）、「認証済」ならば公開鍵設定コマンドにより設定された公開鍵を用いて、入力されたデータに対して、暗号コプロセサ１２０４によりＲＳＡ暗号演算を実行する（３１１４）。「認証済」でないならばステップ３１１４を実行しない。そしてステップ３１１８に移り、公開鍵演算による出力データ、または演算が成功したかいなかを示す情報を含んだＩＣカードレスポンスを作成する。一方、ステップ３１１２で公開鍵演算コマンドでない場合、ＲＳＡ暗号方式による秘密鍵演算コマンドかどうかを調べる（３１１５）。もしそうなら、ＰＩＮ認証レジスタＡ１２０３に「認証済」が設定されているかを調べ（３１１６）、「認証済」ならば秘密鍵１２１７を用いて、入力されたデータに対して、暗号コプロセサ１２０４によりＲＳＡ暗号演算を実行する（３１１７）。「認証済」でないならばステップ３１１７を実行しない。そしてステップ３１１８に移り、秘密鍵演算による出力データ、または演算が成功したかいなかを示す情報を含んだＩＣカードレスポンスを作成する。一方、ステップ３１１５で秘密鍵演算コマンドでない場合、ステップ３１１８に移り、コマンドが解釈できなかったことを示す情報を含んだＩＣカードレスポンスを作成する。以上でセキュリティ処理Ａプログラム１２１２は完了する。なお、ステップ３１１４において暗号演算されるべき入力データのひとつは、上で述べた擬似乱数発生のためのタネデータであり、フラッシュメモリチップ１３０１内に乱数タネ１３０３として格納されている。
【００２６】
図４は、図２のステップ２２０６におけるコントローラチップ１１０１内のセキュリティ処理Ｂプログラム１１１３の詳細な処理フローを表したものである。セキュリティ処理Ｂプログラム１１１３の最初のステップとして、ＩＣカードコマンドがファイル選択コマンド（アクセスしたいデジタル証明書を選択するためのコマンド）かどうかを調べる（４１０３）。もしそうなら、証明書管理１１１４のプログラムによって、フラッシュメモリチップ１３０１内のデジタル証明書１３０２ファイル（複数であってもよい）の中から、本コマンドで入力されるＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）番号が指示する証明書ファイルを検索し、見つけた証明書ファイルのＩＤ番号をＣＰＵ１１１１内部のレジスタ（ＲＡＭが望ましい）に設定する。なお、見つからなかった場合は、選択失敗を示す特別な番号を設定してもよい（４１０４）。そしてステップ４１１３に移り、ファイル選択結果を示す情報を含んだＩＣカードレスポンスを作成する。一方、ステップ４１０３でファイル選択コマンドでない場合、ファイル読出コマンド（デジタル証明書を読み出すコマンド）かどうかを調べる（４１０５）。もしそうなら、証明書管理１１１４のプログラムによってフラッシュメモリチップ１３０１から前記のレジスタに設定されたＩＤ番号が指すデジタル証明書を読み出す（４１０６）。そしてステップ４１１３に移り、読み出したデジタル証明書を含んだＩＣカードレスポンスを作成する。一方、ステップ４１０５でファイル読出コマンドでない場合、ファイル更新コマンド（デジタル証明書を更新するコマンド）かどうかを調べる（４１０７）。もしそうなら、ＰＩＮ認証レジスタＢ１１０５に「認証済」が設定されているかを調べ（４１０８）、「認証済」ならば、本コマンドとともに入力された更新データを証明書管理１１１４のプログラムによって、前記のレジスタに設定されたＩＤ番号が指すデジタル証明書が占有していたフラッシュメモリチップ１３０１上のファイル領域に上書きする。なお、更新データのサイズがその領域のサイズよりも大きい場合などは更新をおこなわない（４１０９）。ステップ４１０８で「認証済」でないならばステップ４１０９を実行しない。そしてステップ４１１３に移り、更新が成功したかいなかを示す情報を含んだＩＣカードレスポンスを作成する。一方、ステップ４１０７でファイル更新コマンドでない場合、乱数発生コマンドかどうかを調べる（４１１０）。もしそうなら、ＰＩＮ認証レジスタＢ１１０５に「認証済」が設定されているかを調べ（４１１１）、「認証済」ならばフラッシュメモリチップ１３０１内の乱数タネ１３０３を用いて、擬似乱数発生１１１５のプログラムによって擬似乱数を発生する（４１１２）。「認証済」でないならばステップ４１１２を実行しない。そしてステップ４１１３に移り、発生した乱数データ、または発生が成功したかいなかを示す情報を含んだＩＣカードレスポンスを作成する。一方、ステップ４１１０で乱数発生コマンドでない場合、ステップ４１１３に移り、コマンドが解釈できなかったことを示す情報を含んだＩＣカードレスポンスを作成する。以上でセキュリティ処理Ｂプログラム１１１３は完了する。なお、上記デジタル証明書１３０２は、データ保護のため、暗号化したり署名を付加した状態でフラッシュメモリチップ１３０１内に格納してもよい。その場合、ステップ４１０６において証明書の復号と署名の検証、ステップ４１０９において署名の作成と証明書の暗号化もおこなう。
【００２７】
次に、前記セキュリティ処理を実行する際の安定性を向上させるために、本発明を適用したメモリカード１００１が持つ機能について述べる。これまでの説明から明らかなように、前記セキュリティ処理は２つのチップ内にある各セキュリティ処理ＡおよびＢプログラム（１２１２および１１１３）が協調してはじめて正常に実行される。したがって、もしＩＣカードチップ１２０１において何らかの原因（例えば、ＥＥＰＲＯＭ１２１１の劣化による格納データの破壊など）によってセキュリティ処理プログラムＡ１２１２が存在しなかった場合、前記セキュリティ処理は正常に実行されない。図５は、その問題に対処してセキュリティ処理の実行安定性を向上するためにメモリカード１００１がおこなう処理を示したフローチャートである。メモリカード１００１は、「セキュリティ処理確認コマンド」と呼ばれるコマンドを解釈する機能を持つ。セキュリティ処理確認コマンドは、前記セキュリティ処理が正常に動作可能かを、メモリカード１００１にあらかじめ確認させるためのコマンドである。また、ＩＣカードチップ１２０１は、「プログラム存在確認コマンド」と呼ばれるコマンドを解釈する機能を持つ。図５のフローチャートに従って、「セキュリティ処理確認コマンド」の処理過程を詳しく説明する。まず、ホスト機器１４０１は「セキュリティ処理確認コマンド」を送信する（５１０１）。コントローラチップ１１０１は、このコマンドを受けてＩＣカードチップ１２０１に「プログラム存在確認コマンド」を送信する（５２０１）。すると、ＩＣカードチップ１２０１はセキュリティ処理ＡプログラムがＥＥＰＲＯＭ１２１１内に存在するかを検索し、見つかった場合そのプログラムを使用可能な状態にする（５３０１）。次に、その検索結果（存在もしくは不在）をＩＣカードレスポンスとしてコントローラチップ１１０１に送信する（５３０２）。コントローラチップ１１０１は受信したＩＣカードレスポンスからセキュリティ処理Ａプログラム１２１２の存在を知る（５２０２）。存在するならば、セキュリティ処理Ｂプログラム１１１３を実行可能な状態にする（５２０３）。さもなくば、それをおこなわない。以上により、前記セキュリティ処理の実行安定性は向上する。
【００２８】
図６は、図２のステップ２１０２においてメモリカード１００１に送信するセキュアライトデータ、およびステップ２１０４でホスト機器１４０１が受信するセキュアリードデータそれぞれのフォーマットの一例を示したものである。このフォーマットは、要求されたセキュリティ処理の内容が１つのＩＣカードコマンドで表現でき、セキュリティ処理の結果が１つのＩＣカードレスポンスで表現できる場合に適用することが好ましい。上述の通り、ＩＣカードチップ１２０１に送信するＩＣカードコマンド、ＩＣカードチップ１２０１から受信するＩＣカードレスポンスはともにＩＳＯ／ＩＥＣ７８１６−４規格に従う。本規格によれば、ＩＣカードコマンドの構成は、４バイトのヘッダ（クラスバイトＣＬＡ、命令バイトＩＮＳ、パラメータバイトＰ１とＰ２）が必須であり、必要に応じて、入力データ長指示バイトＬｃ、入力データＤａｔａＩｎ、出力データ長指示バイトＬｅが後に続く。また、ＩＣカードレスポンスの構成は、２バイトのステータスＳＷ１とＳＷ２が必須であり、必要に応じて、出力データＤａｔａＯｕｔがその前に置かれる。本フォーマットにおけるセキュアライトデータ６００１は、ＩＣカードコマンド６００２の前にフォーマット識別子ＦＩＤ６００３とＩＣカードコマンド長Ｌｃａ６００４を付け、さらにＩＣカードコマンド６００２の後にダミーデータ６００５をパディングしたものである。ＦＩＤ６００３はフォーマットの識別番号またはフォーマットの属性データを含む。Ｌｃａ６００４の値はＩＣカードコマンド６００２の各構成要素の長さを合計した値である。一方、セキュアリードデータ６１０１は、ＩＣカードレスポンス６１０２の前にフォーマット識別子ＦＩＤ６１０３とＩＣカードレスポンス長Ｌｒａ６１０４を付け、さらにＩＣカードレスポンス６１０２の後にダミーデータ６１０５をパディングしたものである。ＦＩＤ６１０３はフォーマットの識別番号またはフォーマットの属性データを含む。Ｌｒａ６１０４の値はＩＣカードレスポンス６１０２の各構成要素の長さを合計した値である。なお、この図では、ＩＣカードコマンドにＬｃ、ＤａｔａＩｎ、Ｌｅが含まれ、ＩＣカードレスポンスにＤａｔａＯｕｔが含まれる場合のフォーマット例を表している。多くのメモリカードにおいて、ファイルデータのリード／ライトコマンドの仕様では、リード／ライトアクセスするデータを固定長のブロック単位で処理することが標準となっている。よって、セキュアライトデータ６００１やセキュアリードデータ６１０１のサイズも、メモリカード１００１の標準メモリカードコマンドの仕様に準拠したブロックサイズに一致させることが好ましい。ダミーデータ６００５、６１０５は、セキュアライトデータ６００１やセキュアリードデータ６１０１のサイズをブロックサイズに一致させるために適用される。ブロックサイズとして採用する値は、一般の小型メモリカードが論理ファイルシステムに採用しているＦＡＴ方式におけるセクタサイズ（５１２バイト）が望ましい。パディングするダミーデータ６００５、６１０５は全てゼロでもよいし、乱数でもよいし、ＣＰＵ１１１１やホスト機器１４０１がデータエラーを検出したり訂正するためのチェックサムでもよい。Ｌｃａ６００４の値はＣＰＵ１１１１がセキュアライトデータ６００１からダミーデータ６００５を除去するために使用し、Ｌｒａ６１０４の値はホスト機器１４０１がセキュアリードデータ６１０１からダミーデータ６１０５を除去するために使用する。
【００２９】
【発明の効果】
本発明によれば、記憶装置のセキュリティ処理の安全性を確保しつつ、セキュリティ処理の処理時間を短縮するという効果を奏する。
【図面の簡単な説明】
【図１】本発明を適用したメモリカードの内部構成を示す図である。
【図２】本発明を適用したメモリカードによるセキュリティ処理の実行プロセスを示すフローチャートである。
【図３】図２で示したフローチャートのうち、ＩＣカードチップで実行されるセキュリティ処理プログラムのフローチャートである。
【図４】図２で示したフローチャートのうち、コントローラチップで実行されるセキュリティ処理プログラムのフローチャートである。
【図５】図２のセキュリティ処理が動作可能かいなかを確認するプロセスを示すフローチャートである。
【図６】セキュアライトデータとセキュアリードデータのフォーマット形式の一例を示す図である。
【符号の説明】
１００１…メモリカード、１１０１…コントローラチップ、１００２…外部端子、１２０１…ＩＣカードチップ、６００１…セキュアライトデータ、６００２…ＩＣカードコマンド、６１０１…セキュアリードデータ、６１０２…ＩＣカードレスポンス。
【図１】
2004104539.tif 000003
【図２】
2004104539.tif 000004
【図３】
2004104539.tif 000005
【図４】
2004104539.tif 000006
【図５】
2004104539.tif 000007
【図６】
2004104539.tif 000008