(57)【特許請求の範囲】
【請求項１】
機器からメモリデバイスに対するアクセス方法であって、
前記機器が、
前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
前記アクセス領域への処理命令と、前記指定情報に関する検証情報と、を併せて送信するステップと、
前記メモリデバイスが、
前記指定情報を受信するステップと、
前記処理命令と前記検証情報を受信し、前記指定情報を前記検証情報を用いて検証するステップと、
前記検証にて成功した場合、前記処理命令を実行するステップと、
を有するアクセス方法。
【請求項２】
機器からメモリデバイスに対するアクセス方法であって、
前記機器が、
前記メモリデバイスとで、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、
前記可能領域情報を参照し、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
前記アクセス領域への処理命令と、前記指定情報に関する検証情報と、を併せて送信するステップと、
前記メモリデバイスが、
前記指定情報を受信するステップと、
前記処理命令と前記検証情報を受信し、前記指定情報を前記検証情報を用いて検証するステップと、
前記検証にて成功した場合、前記処理命令を実行するステップと、
を有するアクセス方法。
【請求項３】
機器からメモリデバイスに対するアクセス方法であって、
前記機器が、
前記メモリデバイスとで、検証用鍵を共有化するステップと、
前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、
前記メモリデバイスが、
前記指定情報を受信するステップと、
前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、
前記検証にて成功した場合、前記処理命令を実行するステップと、
を有するアクセス方法。
【請求項４】
機器からメモリデバイスに対するアクセス方法であって、
前記機器が、
前記メモリデバイスとで、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、
前記メモリデバイスとで、前記アクセス可能領域に対応した検証用鍵を共有化するステップと、
前記可能領域情報を参照し、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、
前記メモリデバイスが、
前記指定情報を受信するステップと、
前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、
前記検証にて成功した場合、前記処理命令を実行するステップと、
を有するアクセス方法。
【請求項５】
機器からメモリデバイスに対するアクセス方法であって、
前記機器が、
前記メモリデバイスとで、第一の処理系コマンドを用いて、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、
前記可能領域情報を参照し、第二の処理系コマンドを用いて、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
前記第二の処理系コマンドを用いて、前記アクセス領域への処理命令と、前記指定情報に関する検証情報と、を併せて送信するステップと、
前記メモリデバイスが、
前記指定情報を受信するステップと、
前記処理命令と前記検証情報を受信し、前記指定情報を前記検証情報を用いて検証するステップと、
前記検証にて成功した場合、前記処理命令を実行するステップと、
を有するアクセス方法。
【請求項６】
機器からメモリデバイスに対するアクセス方法であって、
前記機器が、
前記メモリデバイスとで、第一の処理系コマンドを用いて、検証用鍵を共有化するステップと、
第二の処理系コマンドを用いて、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
前記第二の処理系コマンドを用いて、前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、
前記メモリデバイスが、
前記指定情報を受信するステップと、
前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、
前記検証にて成功した場合、前記処理命令を実行するステップと、
を有するアクセス方法。
【請求項７】
機器から読み書きされるメモリデバイスであって、
アクセスする領域を指定する指定情報を受信するとともに、前記指定情報に基づく検証情報と読み出し又は書き込み命令を併せて受信する処理命令受信手段と、
前記指定情報を、前記検証情報を用いて検証処理を行う指定情報検証手段と、
データを格納する記憶領域と、
前記検証処理が成功した場合に、前記処理命令に応じて、前記記憶領域の前記指定領域に対する読み出し又は書き込みを行う記憶領域アクセス手段と、
前記記憶領域アクセス手段が読み出したデータを前記機器に送信するデータ送信手段と、
前記機器から書き込みデータを受信するデータ受信手段と、
を備えることを特徴とするメモリデバイス。
【請求項８】
前記指定情報検証手段の検証処理が、前記検証情報と検証用鍵を用いて行うことを特徴とする請求項７記載のメモリデバイス。
【請求項９】
前記機器との間で前記検証用鍵を共有する検証用鍵共有手段をさらに備えることを特徴とする請求項８記載のメモリデバイス。
【請求項１０】
前記機器との間でメモリデバイスへのアクセス可能な領域を示す可能領域情報を共有する可能領域情報共有手段をさらに備えることを特徴とする請求項７記載のメモリデバイス。
【請求項１１】
メモリデバイスを読み書きする情報機器であって、
読み出し又は書き込みする領域を決定し、前記領域を指定する指定情報を決定する指定情報決定手段と、
前記指定情報から前記検証情報の生成処理を行う検証情報生成手段と、
前記指定情報の送信と、前記検証情報と読み出し又は書き込みの処理命令とを併せて送信する処理命令送信手段と、
前記処理命令が書き込みの場合は、前記メモリデバイスにデータを送信するデータ送信手段と、
前記処理命令が読み出しの場合は、前記メモリデバイスからデータを受信するデータ受信手段と、
前記メモリデバイスに送信するデータを記憶し、または、前記メモリデバイスから受信したデータを記憶するデータ記憶手段と、
を備えることを特徴とする情報機器。
【請求項１２】
前記検証情報生成手段の前記検証情報の生成処理が、前記指定情報と検証用鍵とを用いて行うことを特徴とする請求項１１記載の情報機器。
【請求項１３】
前記メモリデバイスとの間で前記検証用鍵を共有する検証用鍵共有手段を備えることを特徴とする請求項１２記載の情報機器。
【請求項１４】
前記メモリデバイスとの間で、当該メモリデバイスへのアクセス可能な領域を示す可能領域情報を共有する可能領域情報共有手段をさらに備えることを特徴とする請求項１１記載の情報機器。
【請求項１５】
機器からメモリデバイスに対するアクセス方法であって、
前記機器が、
前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
前記アクセス領域への処理命令と、前記指定情報に関する検証情報を検証用鍵で暗号化した検証データと、を併せて送信するステップと、
前記メモリデバイスが、
前記指定情報を受信するステップと、
前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと検証用鍵とを用いて検証するステップと、
前記検証に成功した場合、前記処理命令を実行するステップと、
を有するアクセス方法。
【請求項１６】
機器からメモリデバイスに対するアクセス方法であって、
前記機器は、
第一の処理系コマンドを用いて前記メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、
第一の処理系コマンドを用いて前記アクセス可能領域に対応した検証用鍵を共有化するステップと、
第二の処理系コマンドを用いて、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、
第二の処理系コマンドを用いて前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、
前記メモリデバイスは、
前記指定情報を受信するステップと、
前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、
前記検証にて成功した場合は、前記処理命令を実行するステップと、
を有するアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣや携帯電話などの端末に挿入して使用されるメモリカード、並びにメモリカードに対するアクセス方法に関するものである。
【背景技術】
【０００２】
従来、メモリカードは端末に挿入され、端末がデータを格納するためのものである。
以下に、従来のメモリカードの一例をあげる（例えば、下記特許文献１参照）。
【０００３】
カードは、端末から各種コマンドを受け付け、またコマンドに対するレスポンスを返すコマンド用端子（ＣＭＤライン）と、データの入力を受け付け、またデータの出力を行うデータ用端子（ＤＡＴライン）を持つ。
【０００４】
図４６に示した従来のメモリカードの例では、端子４６０２がＣＭＤラインとなっており、端子４６０７、４６０８、４６０９がＤＡＴラインであり、それぞれＤＡＴ０、ＤＡＴ１、ＤＡＴ２となっている。また端子４６０１はデータ入出力用とカード検出用（ＣＤ）を兼ねたＣＤ／ＤＡＴ３となっている。ＤＡＴ０〜ＤＡＴ３については、ＤＡＴ０のみを使うモードと、ＤＡＴ０〜３を同時に利用しＤＡＴ０のみを使う場合の４倍の転送速度を実現するモードが存在する。
【０００５】
次に、図４７を用いて、従来カードのカード内モジュール構成について説明する。
【０００６】
カード内モジュールは、ＣＭＤライン４６０２に接続された、コマンド受信及びレスポンス送信を行う処理命令受信手段４７０１と、ＤＡＴライン４６０７、４６０８、４６０９、４６０１に接続された、データ送受信を行うデータ送受信手段４７０２と、記憶領域４７０４と、受信したコマンドに応じて記憶領域４７０４へのデータの読み書きを行う記憶領域アクセス手段４７０３からなる。
【０００７】
次に、従来のメモリカードにおける、データ読み出し時の処理動作について説明する。ここではデータの出力はＤＡＴ０端子４６０７のみを利用するモードに設定されているものとするが、ＤＡＴ１端子４６０８、ＤＡＴ２端子４６０９、ＤＡＴ３端子４６０１を併用するモードであってもよい。
【０００８】
まず、端末はカードのＣＭＤライン４６０２にデータ読み出しコマンドを送信する。この読み出しコマンドは図７で示されるフォーマットとなっており、６ビットのコマンドコード４０１と３２ビットのコマンド引数４０２から構成される。データ読み出しコマンドにおけるコマンド引数は、読み出し開始アドレスを格納する。
【０００９】
端末からコマンドを受信した処理命令受信手段４７０１は、コマンドコード４０１を参照して、データ読み出しコマンドであることを認識する。
【００１０】
次に、処理命令受信手段４７０１は、コマンド引数４０２を参照して、指定されたアドレスが正しいものであるか、つまりカードが対応している範囲に指定されたアドレスが収まっているかを調べ、アドレスが正しくなければレスポンスとしてエラーである旨のレスポンスコードを返す。アドレスが正しければ正常である旨のレスポンスコードを返す。
【００１１】
処理命令受信手段４７０１は、レスポンスを端末に返送した後、記憶領域アクセス手段４７０３に対し、指定されたアドレスとともに、読み出し要求を行う。
【００１２】
記憶領域アクセス手段４７０３は、記憶領域４７０４の指定アドレスからデータを読み出し、データ送受信手段４７０２に送信する。
【００１３】
データ送受信手段４７０２は、ＤＡＴ０ライン４６０７を通じて、端末に読み出しデータの出力を行う。
【００１４】
このようなメモリカードでは、端末からアドレスを指定して自由にカードの読み書きが可能である。
【特許文献１】特開２００３−９１７０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記のようなメモリカードにおいて、フラッシュメモリの特定領域をセキュリティ保護領域としてアクセス制限をかけ、アクセスが許可された特定の端末からのみアクセス可能としたい場合に、上記文献で示されたカードでは、ＩＣカードコマンドを用いて柔軟な認証を行うことが可能である。しかし、ＩＣカードの標準的なコマンドフォーマットであるＡＰＤＵ（Application protocol data unit）では、２５６バイトのデータ送受信しか行えないことと、半二重プロトコルのために、ホストからのコマンド送信の度にレスポンス受信が必要であるという理由から、高速なデータ転送が困難である。そこで、ＩＣカードコマンドを用いて、セキュリティポリシーに柔軟にあわせた方式にて認証処理を行った後でメモリカードコマンドを用いてデータ転送を行う方式が考えられるが、ＩＣカードコマンドの発行者とメモリカードコマンドを発行したホスト上のアプリケーションが同一であることを確認することが困難である。
【００１６】
そこで、ＩＣカードコマンドを用いた認証処理の過程で生成した情報を、ＩＣカードコマンドとメモリカードコマンドの発行者の同一性を検証するための検証データとしてメモリカードコマンドに含める場合、コマンド引数にアクセス領域指定情報（アクセスするアドレスなど）と認証用の検証データを含めることになるが、データ読み出しコマンドのコマンド引数４０２のサイズは上述の通り、３２ビットの固定であるので、セキュリティを向上させるため認証用の検証データのサイズを大きくすると、アクセス領域指定情報の長さが短くなりアクセス可能な領域が制限されてしまう。一方、検証データのサイズを小さくすれば、セキュリティ強度が下がってしまう。
【００１７】
この課題を解決するために、従来のデータ読み出しコマンドのフォーマットを変更すると、従来のメモリカードにアクセスができなくなってしまうおそれがある。
【００１８】
また、従来のデータ読み出しコマンドと、セキュリティ保護領域を備えたメモリカードへのデータ読み出しコマンドとを別個のものとして併存させるとすると、端末側でメモリカードの種類によってコマンドを切り換える必要が発生し、メモリカードへのアクセスが複雑となり、端末にとっては利用しづらいものとなる。そのため、検証データを送信するためのコマンドとデータの読み出しまたは書き込みを行うためのメモリカードコマンドをそれぞれ定義し、２つのコマンドを組み合わせてセキュリティ保護領域へのアクセスを行う必要があるが、２つのコマンドの間でコマンド発行者の同一性を確認することができない。
【００１９】
そこで本発明では、メモリカード内でアクセス制限がされていない領域にアクセスする場合は、上述のデータ読み出しコマンドに代表されるメモリカードコマンドを用い、アクセス制限がされているセキュリティ保護領域に関しては、まずアクセス領域を指定するメモリカードコマンドによってアクセス領域指定情報をメモリカードに送付した後に、ホストとメモリカード間でＩＣカードコマンドを用いた柔軟な認証処理を用いて共有した、または、予め共有している鍵情報と、上記アクセス領域指定情報を用いて生成した認証用の検証データを含ませた、セキュリティ保護領域の読み出しまたは書き込み用メモリカードコマンドをメモリカードに送付して、セキュリティ保護領域へのデータの書き込み、セキュリティ保護領域からのデータを読み出しする、という２段階のコマンド構成にすることで、メモリカードコマンドのフォーマットの変更を必要とせず、また少ないコマンド引数でもセキュリティを低下させることなく、セキュリティ保護領域へのアクセスを可能にするアクセス方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
第１の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器が、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、前記アクセス領域への処理命令と、前記指定情報に関する検証情報と、を併せて送信するステップと、前記メモリデバイスが、前記指定情報を受信するステップと、前記処理命令と前記検証情報を受信し、前記指定情報を前記検証情報を用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００２１】
この発明によれば、アクセス領域指定とセキュリティ保護領域アクセスのコマンドを分離し、セキュリティ保護領域アクセス用のコマンドに検証データを含めることで、アクセス領域指定を行った機器アプリケーションとセキュリティ保護領域アクセス用コマンドを発行した機器アプリケーションとメモリカードとの間で共有している検証用鍵を保持した、つまりセキュリティ保護領域にアクセスする権限を持った機器アプリケーションが同一であることをメモリデバイスが検証することが可能となる。さらに、アクセス領域指定とセキュリティ保護領域アクセスのコマンドの２段階の構成にしたことで、メモリアクセスについては従来のメモリカードコマンドを使用することでコマンドの複雑さを回避しながら、少ないコマンド引数でもセキュリティを低下させることなくセキュリティ保護領域へアクセスすることが可能になる。
【００２２】
第２の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器が、前記メモリデバイスとで、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、前記可能領域情報を参照し、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、前記アクセス領域への処理命令と、前記指定情報に関する検証情報と、を併せて送信するステップと、前記メモリデバイスが、前記指定情報を受信するステップと、前記処理命令と前記検証情報を受信し、前記指定情報を前記検証情報を用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００２３】
この発明によれば、セキュリティ保護領域内の各領域に対して、セキュリティ保護領域アクセスコマンドによるアクセスの可否を明示的に設定することができる。
【００２４】
第３の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器が、前記メモリデバイスとで、検証用鍵を共有化するステップと、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、前記メモリデバイスが、前記指定情報を受信するステップと、前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００２５】
この発明によれば、検証用鍵を必要に応じて更新することで、セキュリティ強度を向上させることができる。
【００２６】
第４の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器が、前記メモリデバイスとで、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、前記メモリデバイスとで、前記アクセス可能領域に対応した検証用鍵を共有化するステップと、前記可能領域情報を参照し、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、前記メモリデバイスが、前記指定情報を受信するステップと、前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００２７】
この発明によれば、該機器のみが読み書き可能な領域に対して、アクセスしないときはセキュリティ保護領域アクセスコマンドによるアクセスを無効化することができ、セキュリティ強度を向上することができ、検証用鍵を必要に応じて更新することで、セキュリティ強度を向上させることができる。
【００２８】
第５の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器が、前記メモリデバイスとで、第一の処理系コマンドを用いて、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、前記可能領域情報を参照し、第二の処理系コマンドを用いて、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、前記第二の処理系コマンドを用いて、前記アクセス領域への処理命令と、前記指定情報に関する検証情報と、を併せて送信するステップと、前記メモリデバイスが、前記指定情報を受信するステップと、前記処理命令と前記検証情報を受信し、前記指定情報を前記検証情報を用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００２９】
この発明によれば、アクセス可能な領域に関する情報の共有を、アクセス領域指定とセキュリティ保護領域アクセスのコマンドと異なるコマンド処理系で分離することが可能となり、アクセス領域指定を行った機器アプリケーションとセキュリティ保護領域アクセス用コマンドを発行した機器アプリケーションと、セキュリティ保護領域にアクセスする権限を持った機器アプリケーションが同一であることをメモリデバイスが検証することが可能となる。
【００３０】
第６の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器が、前記メモリデバイスとで、第一の処理系コマンドを用いて、検証用鍵を共有化するステップと、第二の処理系コマンドを用いて、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、前記第二の処理系コマンドを用いて、前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、前記メモリデバイスが、前記指定情報を受信するステップと、前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００３１】
この発明によれば、検証鍵の共有処理をセキュリティ保護領域アクセスのコマンドと異なるコマンド処理系で分離することが可能となり、その領域に限定した検証用鍵を更新することで、よりセキュリティ強度を向上することができる。
【００３２】
第７の発明は、機器からメモリデバイスに対するアクセス方法であって、前記メモリデバイスは、前記機器からのアクセスが制約された耐タンパ性の第１領域と、前記機器からのアクセスが制約された非耐タンパ性の第２領域と、前記機器からアクセスすることが可能な第３領域と、を有し、少なくとも前記第１領域への処理命令である第一の処理系コマンドと、少なくとも前記第３領域への処理命令である第二の処理系コマンドと、を判別する機能を備え、前記機器は、前記メモリデバイスとで、第一の処理系コマンドを用いて、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、前記可能領域情報を参照し、第二の処理系コマンドを用いて、前記第２領域へのアクセス領域を指定する指定情報を送信するステップと、第二の処理系コマンドを用いて、前記アクセス領域への処理命令と、前記指定情報に関する検証情報と、を併せて送信するステップと、前記メモリデバイスは、前記指定情報を受信するステップと、前記処理命令と前記検証情報を受信し、前記指定情報を前記検証情報を用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００３３】
この発明によれば、非耐タンパである領域へのアクセスに必要なアクセス可能化設定は耐タンパ性領域の裁量で行い、データの読み書きは非タンパ性領域に適したコマンドを用いることで、セキュリティの柔軟性と読み書きのパフォーマンスを両立することができる。
【００３４】
第８の発明は、機器からメモリデバイスに対するアクセス方法であって、前記メモリデバイスは、前記機器からのアクセスが制約された耐タンパ性の第１領域と、前記機器からのアクセスが制約された非耐タンパ性の第２領域と、前記機器からアクセスすることが可能な第３領域と、を有し、少なくとも前記第１領域への処理命令である第一の処理系コマンドと、少なくとも前記第３領域への処理命令である第二の処理系コマンドと、を判別する機能を備え、前記機器は、前記メモリデバイスとで、第一の処理系コマンドを用いて、検証用鍵を共有化するステップと、第二の処理系コマンドを用いて、前記第２領域へのアクセス領域を指定する指定情報を送信するステップと、第二の処理系コマンドを用いて、前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、前記メモリデバイスは、前記指定情報を受信するステップと、前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００３５】
この発明によれば、非耐タンパである領域へのアクセスに必要なアクセス可能化設定と検証用鍵共有は耐タンパ性領域の裁量で行い、データの読み書きは非タンパ性領域に適したコマンドを用いることで、セキュリティの柔軟性と読み書きのパフォーマンスを両立することができる。
【００３６】
第９の発明は、機器から読み書きされるメモリデバイスであって、アクセスする領域を指定する指定情報を受信するとともに、前記指定情報に基づく検証情報と読み出し又は書き込み命令を併せて受信する処理命令受信手段と、前記指定情報を、前記検証情報を用いて検証処理を行う指定情報検証手段と、データを格納する記憶領域と、前記検証処理が成功した場合に、前記処理命令に応じて、前記記憶領域の前記指定領域に対する読み出し又は書き込みを行う記憶領域アクセス手段と、前記記憶領域アクセス手段が読み出したデータを前記機器に送信するデータ送信手段と、前記機器から書き込みデータを受信するデータ受信手段と、を備えるメモリデバイスである。
【００３７】
この発明によれば、アクセス領域の指定とメモリへのアクセスのコマンドが異なる場合でも、前記２つのコマンドが同一端末から送信されたことを確認することができる。
【００３８】
第１０の発明は、第９の発明のメモリデバイスにおいて、前記指定情報検証手段の検証処理が、前記検証情報と検証用鍵を用いて行うメモリデバイスである。
【００３９】
この発明によれば、鍵を用いることで、端末との共有秘密情報を用いた端末の認証を行うことができる。
【００４０】
第１１の発明は、第１０の発明のメモリデバイスにおいて、前記機器との間で前記検証用鍵を共有する検証用鍵共有手段をさらに備えるメモリデバイスである。
【００４１】
この発明によれば、検証用鍵を必要に応じて更新することで、セキュリティ強度を向上させることができる。
【００４２】
第１２の発明は、第９の発明のメモリデバイスにおいて、前記機器との間でメモリデバイスへのアクセス可能な領域を示す可能領域情報を共有する可能領域情報共有手段をさらに備えるメモリデバイスである。
【００４３】
この発明によれば、セキュリティ保護領域内の各領域に対して、セキュリティ保護領域アクセスコマンドによるアクセスの可否を明示的に設定することができる。
【００４４】
第１３の発明は、メモリデバイスを読み書きする情報機器であって、読み出し又は書き込みする領域を決定し、前記領域を指定する指定情報を決定する指定情報決定手段と、前記指定情報から前記検証情報の生成処理を行う検証情報生成手段と、前記指定情報の送信と、前記検証情報と読み出し又は書き込みの処理命令とを併せて送信する処理命令送信手段と、前記処理命令が書き込みの場合は、前記メモリデバイスにデータを送信するデータ送信手段と、前記処理命令が読み出しの場合は、前記メモリデバイスからデータを受信するデータ受信手段と、前記メモリデバイスに送信するデータを記憶し、または、前記メモリデバイスから受信したデータを記憶するデータ記憶手段と、を備える情報機器である。
【００４５】
この発明によれば、メモリカードのセキュリティ保護領域に格納したデータを読み書きすることができる。
【００４６】
第１４の発明は、第１３の発明の情報機器において、前記検証情報生成手段の前記検証情報の生成処理が、前記指定情報と検証用鍵とを用いて行う情報機器である。
【００４７】
この発明によれば、カードと秘密供給した鍵を用いた検証を行うことで、該情報機器以外が読み書きできない領域にデータを格納することができる。
【００４８】
第１５の発明は、第１４の発明の情報機器において、前記メモリデバイスとの間で前記検証用鍵を共有する検証用鍵共有手段を備える情報機器である。
【００４９】
この発明によれば、検証用鍵を必要に応じて更新することで、セキュリティ強度を向上させることができる。
【００５０】
第１６の発明は、第１３の発明の情報機器において、前記メモリデバイスとの間で、当該メモリデバイスへのアクセス可能な領域を示す可能領域情報を共有する可能領域情報共有手段をさらに備える情報機器である。
【００５１】
この発明によれば、該情報機器のみが読み書き可能な領域に対して、アクセスしないときはセキュリティ保護領域アクセスコマンドによるアクセスを無効化することができ、セキュリティ強度を向上することができる。
【００５２】
第１７の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器が、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、前記アクセス領域への処理命令と、前記指定情報に関する検証情報を検証用鍵で暗号化した検証データと、を併せて送信するステップと、前記メモリデバイスが、前記指定情報を受信するステップと、前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと検証用鍵とを用いて検証するステップと、前記検証に成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００５３】
この発明によれば、機器とメモリデバイスで共有した検証用鍵を用いて検証を行うことで、アクセスする権限を持った機器のみにアクセスを許可することができる。
【００５４】
第１８の発明は、機器からメモリデバイスに対するアクセス方法であって、前記機器は、第一の処理系コマンドを用いて前記メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、第一の処理系コマンドを用いて前記アクセス可能領域に対応した検証用鍵を共有化するステップと、第二の処理系コマンドを用いて、前記メモリデバイスへのアクセス領域を指定する指定情報を送信するステップと、第二の処理系コマンドを用いて前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、前記メモリデバイスは、前記指定情報を受信するステップと、前記処理命令と前記検証データを受信し、前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、前記検証にて成功した場合は、前記処理命令を実行するステップと、を有するアクセス方法である。
【００５５】
この発明によれば、セキュリティ保護領域内の領域に対してセキュリティ保護領域アクセスコマンドによるアクセスを有効にするとともに、その領域に限定した検証用鍵を更新することで、よりセキュリティ強度を向上することができる。
【００５６】
第１９の発明は、機器からメモリデバイスに対するアクセス方法であって、前記メモリデバイスは、前記機器からのアクセスが制約された耐タンパ性の第１領域と、前記機器からのアクセスが制約された非耐タンパ性かつ大容量の第２領域と、前記機器からアクセスすることが可能なかつ大容量の第３領域と、を有し、少なくとも前記第１領域への処理命令である第一の処理系コマンドと、少なくとも前記第３領域への処理命令である第二の処理系コマンドと、を判別する機能を備え、前記機器は、前記メモリデバイスとで、第一の処理系コマンドを用いて、当該メモリデバイスへのアクセス可能領域に関する可能領域情報を共有化するステップと、第一の処理系コマンドを用いて、前記アクセス可能領域に対応した検証用鍵を共有化するステップと、第二の処理系コマンドを用いて、前記第２領域へのアクセス領域を指定する指定情報を送信するステップと、第二の処理系コマンドを用いて、前記アクセス領域への処理命令と、前記指定情報に関する検証情報を前記検証用鍵で暗号化した検証データと、を併せて送信するステップと、前記メモリデバイスは、前記指定情報を受信するステップと、前記処理命令と前記検証データを受信し前記指定情報を前記検証データと前記検証用鍵とを用いて検証するステップと、前記検証にて成功した場合、前記処理命令を実行するステップと、を有するアクセス方法である。
【００５７】
この発明によれば、非耐タンパである領域へのアクセスに必要なアクセス可能化設定と検証用鍵共有は耐タンパ性領域の裁量で行い、データの読み書きは大容量領域に適したコマンドを用いることで、セキュリティの柔軟性と読み書きのパフォーマンスを両立することができる。
【発明の効果】
【００５８】
本発明によれば、アクセス領域指定とセキュリティ保護領域アクセスのコマンドを分離し、セキュリティ保護領域アクセス用のコマンドに検証データを含めることで、アクセス領域指定を行った端末アプリケーションとセキュリティ保護領域アクセス用コマンドを発行した端末アプリケーションとメモリカードとの間で共有している検証用鍵を保持した、つまりセキュリティ保護領域にアクセスする権限を持った端末アプリケーションが同一であることをカードが検証することが可能となる。さらに、アクセス領域指定とセキュリティ保護領域アクセスのコマンドの２段階の構成にしたことで、メモリアクセスについては従来のメモリカードコマンドを使用することでコマンドの複雑さを回避しながら、少ないコマンド引数でもセキュリティを低下させることなくセキュリティ保護領域へアクセスすることが可能になる。
【発明を実施するための最良の形態】
【００５９】
（実施の形態１）
本発明におけるカード内モジュール構成について図１を用いて説明する。なお、カード１００の端子配置は、図２に示すが、その端子構成は、図４６に示したものと各端子に付した符号は異なるが、その構成は同様であるため、説明は省略する。
【００６０】
カード内モジュールは、コントローラ１０６とフラッシュメモリ１０５からなる。コントローラ１０６は、ＣＭＤラインに接続された、コマンド受信及びレスポンス送信を行うコマンド受信部１０１と、ＤＡＴラインに接続されたデータ送受信部１０２と、データ送受信部１０２が送受信したデータに対してセッション鍵で暗復号処理を施し、またフラッシュメモリ格納用鍵で暗復号してメモリアクセス部１０４とのデータ受け渡しを行う暗復号部１０７と、フラッシュメモリ１０５へのデータの読み書きを行うメモリアクセス部１０４と、受信したコマンドに応じて、メモリアクセス部１０４、セッション鍵共有部１１０、及びパラメータ検証部１０８、暗復号部１０７に対して処理要求を行うデータ制御部１０３と、端末２００から受信したセキュリティ保護領域にアクセスするためのパラメータを記憶しておくパラメータ記憶部１０９と、パラメータが正しいことを検証するパラメータ検証部１０８と、端末２００との間で認証用及び暗復号用のセッション鍵を交換するセッション鍵共有部１１０と、セッション鍵と、セッション鍵と対応付けられたセキュリティ保護領域を記憶しておくエリア・セッション鍵管理部１１１からなる。
【００６１】
次に、本実施の形態１における端末２００の構成について図３を用いて説明する。
【００６２】
端末２００は、カード１００にメモリカードコマンドを送信するコマンド送信部２０４と、カード１００のＤＡＴラインにデータを送信するデータ送受信手段２０７と、データ送受信手段２０７が送信するデータを暗号化し、また受信するデータを復号化する暗復号手段２０６と、カード１００との間でセッション鍵の共有処理を行うセッション鍵共有手段２０２と、セキュリティ保護領域アクセスコマンドによってアクセスする領域を決定し、領域指定情報を生成する、指定情報決定手段２０１と、領域指定情報とセッション鍵から検証データを生成する検証データ生成部２０３と、送信するデータ、または受信したデータを記憶するデータ記憶手段２０５とを備える。
【００６３】
次に、図１のカード１００と図３の端末２００の間で行われる処理の概要について図４を用いて説明する。
【００６４】
図４において、まず、端末２００とカード１００の間では、カード１００ＩＣカードコマンドを用いた処理として、端末２００とカード１００相互間を認証するための認証処理及びセッション鍵を共有するための鍵共有処理と、端末２００からカード１００内メモリへのアクセス可能領域の領域番号（図中の領域Ｎｏ．ｘ）を割り当てる領域番号割り当て処理とが実行される（ステップＳ４０１）。
【００６５】
認証処理を行い、相互に正当性が確認された後、鍵共有処理及び領域番号割り当て処理が行われ、その結果として、端末２００内とカード１００内には、領域Ｎｏ．ｘにて示されるセキュリティ保護領域へのアクセスを可能にする検証用及び暗号用のセッション鍵が領域番号（領域Ｎｏ．ｘ）と対応付けて保持される。
【００６６】
次に、端末２００とカード１００の間では、メモリカードコマンドを用いた処理として、端末２００からカード１００へのアクセス領域指定コマンド送信処理（ステップＳ４０２）及びデータ転送コマンド送信処理（ステップＳ４０３）と、カード１００から端末２００への暗号化データ送信処理（ステップＳ４０４）とが実行される。
【００６７】
アクセス領域指定コマンド送信処理では、アクセスしたいセキュリティ保護領域内の領域を指定するため、領域Ｎｏ．ｘ、ブロックアドレス及びブロック長を設定したデータを含むアクセス領域指定コマンドが端末２００からカード１００へ送信される。カード１００では、受信したアクセス領域指定コマンドから抽出した領域Ｎｏ．ｘに基づいてセキュリティ保護領域へのアクセス可否検証処理が実行される。
【００６８】
また、データ転送コマンド送信処理では、端末２００において領域Ｎｏ．ｘ、ブロックアドレス及びブロック長と、ステップＳ４０１にてカード１００との間で共有した検証用鍵を用いて検証データが作成され、この検証データを含むデータ転送（Ｒｅａｄ）コマンドがカード１００に送信される。カード１００では、受信したデータ転送（Ｒｅａｄ）コマンドから端末２００との間で共有した検証用鍵を用いて領域Ｎｏ．ｘ、ブロックアドレス及びブロック長を元に検証データを作成していることを確認することで、ステップＳ４０２にて指定されたセキュリティ保護領域へのアクセス可否が検証される。
【００６９】
また、暗号化データ送信処理では、カード１００において上記検証処理においてアクセス可となった領域Ｎｏ．ｘに格納されたデータが、端末２００との間で共有した暗号用鍵を用いて暗号化され、この暗号化データが端末２００に送信される。
【００７０】
以下の説明では、上記処理概要に処理手順について詳細に説明する。
【００７１】
端末２００とセッション鍵共有部１１０との間で送受信されるコマンド形態は、一般的なＩＣカードで用いられるＡＰＤＵフォーマットに従った形とする。つまり、セッション鍵共有部１１０はＩＣカードアプリケーションの形態をとる。
【００７２】
ここでは、ＡＰＤＵの送受信方法について、図５のシーケンス図を用いて説明する。
【００７３】
まず、端末２００からカード１００に対するコマンドＡＰＤＵの送信処理について説明する。ここで、コマンドＡＰＤＵとは、メモリカード側で実行させたいコマンドをＡＰＤＵフォーマット形式で端末２００からメモリカード送付するものをいい、具体的にはＩＣカード用コマンドを使用する。
【００７４】
まず、端末２００はセッション鍵共有部１１０に対して送信するコマンドＡＰＤＵを作成する。次に、端末２００は図２のカード１００のＣＭＤライン２２に対して、ＡＰＤＵ送信コマンドを送信する（ステップＳ５０１）。
【００７５】
このＡＰＤＵ送信コマンドは、従来のデータ読み出しコマンドと同様、図７で示されるフォーマットとなっており、６ビットのコマンドコード４０１と３２ビットのコマンド引数４０２から構成される。
【００７６】
ＡＰＤＵ送信コマンドにおけるコマンド引数４０２は、図１６で示すように、ＤＡＴ０ライン２７に入力するデータがコマンドＡＰＤＵであることを示すフラグ１４０１と送信データ数を示す１４０３とからなる。フラグ１４０１及び送信データ数１４０３を合わせて３２ビットに満たない場合は未使用フィールド１４０２が存在する。
【００７７】
図２のＤＡＴ０ライン２７に入力するデータは５１２バイト単位となっており、送信データ数１４０３は、この５１２バイト単位の入力を何回行うかを示す。
【００７８】
次に、カード１００のコマンド受信部１０１は、端末２００から送信されたコマンドを受信し（ステップＳ５０２）、それがＡＰＤＵ送信コマンドであることを認識し、ＣＭＤライン２２を介して端末２００にレスポンスを返すとともに（ステップＳ５０３）、データ制御部１０３に対して、ＡＰＤＵ送信コマンドを受信したことを通知する（ステップＳ５０４）。
【００７９】
次に、端末２００はカード１００のＣＭＤライン２２からＡＰＤＵ送信コマンドに対するレスポンスを受信し（ステップＳ５０３）、ＤＡＴ０ライン２７に図１８で示すフォーマットでコマンドＡＰＤＵ１６０２を入力する（ステップＳ５０５）。
【００８０】
図１８において、１６０１で示される長さは後に続くＡＰＤＵ１６０２の長さを示している。長さフィールド１６０１とＡＰＤＵ１６０２の合計長にあわせてコマンド引数の送信データ数１４０３が設定されている。また、前記合計長は必ずしも５１２バイトの倍数になるわけではないので、５１２バイトの倍数になるようにパディング１６０３を付加する。
【００８１】
次に、カード１００内部のデータ送受信部１０２は、端末２００からＤＡＴ０ライン２７に入力されたコマンドＡＰＤＵを受信するとともに（ステップＳ５０５）、データ制御部１０３にコマンドＡＰＤＵを受信したことを通知する（ステップＳ５０６）。次に、データ制御部１０３は、データ送受信部１０２からコマンドＡＰＤＵを読み出し（ステップＳ５０７）、セッション鍵共有部１１０（ＩＣカードアプリケーション）にコマンドＡＰＤＵを渡す（ステップＳ５０８）。
【００８２】
次に、セッション鍵共有部１１０は、コマンドＡＰＤＵに記述されたとおりの処理を行い（ステップＳ５０９）、処理の結果生じたデータとステータス情報をレスポンスＡＰＤＵとしてデータ制御部１０３に渡す（ステップＳ５１０）。このステータス情報とは、ＩＳＯ７８１６で定義されたステータスワードであり、正常終了したか、異常終了したかを示す２バイトの値である。次に、カード１００から端末２００に対するレスポンスＡＰＤＵの送信処理について、図６のシーケンス図を用いて説明する。ここでレスポンスＡＰＤＵとは、カード１００が実行したコマンドＡＰＤＵの処理結果をカード１００から端末２００へ送信するものをいう。
【００８３】
ここでは、前記のコマンドＡＰＤＵの送信方法で示したとおり、セッション鍵共有部１１０が出力したレスポンスＡＰＤＵがデータ制御部１０３で保持されている状態であるものとする。
【００８４】
まず、端末２００は、カード１００のＣＭＤライン２２に対して、ＡＰＤＵ受信コマンドを送信する（ステップＳ６０１）。このＡＰＤＵ受信コマンドは、ＡＰＤＵ送信コマンドと同様、図７で示される従来のデータ読み出しコマンドと同様のフォーマットとなっており、６ビットのコマンドコード４０１と３２ビットのコマンド引数４０２から構成される。
【００８５】
ＡＰＤＵ受信コマンドにおけるコマンド引数４０２は、図１７で示すように、未使用フィールド１５０１と送信データ数１５０２とからなる。送信データ数１５０２が３２ビットに満たない場合は未使用フィールド１５０１が存在する。
【００８６】
図２のＤＡＴ０端子２７から出力されるデータは、ＡＰＤＵ送信コマンドにおける入力データと同様に５１２バイト単位となっており、送信データ数１５０２は５１２バイト単位で何回出力を行うかを示す。
【００８７】
次に、カード１００のコマンド受信部１０１は、端末２００から送信されたコマンドを受信し（ステップＳ６０２）、それがＡＰＤＵ受信コマンドであることを認識し、ＣＭＤライン２２を介して端末２００にレスポンスを返すとともに（ステップＳ６０３）、データ制御部１０３に対して、ＡＰＤＵ受信コマンドを受信したことを通知する（ステップＳ６０４）。
【００８８】
次に、データ制御部１０３は、データ送受信部１０２に対して、セッション鍵共有部１１０から受け取ったレスポンスＡＰＤＵを渡す（ステップＳ６０５）。
【００８９】
次に、端末２００は、カード１００のＣＭＤライン２２からＡＰＤＵ受信コマンドに対するレスポンスを受信し（ステップＳ６０３）、ＤＡＴ０ライン２７を介してデータ送受信部１０２からレスポンスＡＰＤＵを読み出す（ステップＳ６０６）。読み出されるレスポンスＡＰＤＵは、図１８で示すフォーマットで出力される。各フィールドの詳細については、ＡＰＤＵ送信コマンドにおける入力時と同様であるため、説明を省略する。
【００９０】
カード１００に搭載されるフラッシュメモリ１０５は、図８に示すように、少なくとも端末２００から従来の読み出し用コマンド及び書き込み用コマンドに代表されるメモリカードコマンドでアクセスすることが可能な通常領域（非耐タンパ性のメモリ領域）６２と、前記の従来のコマンドではアクセスすることができないセキュリティ保護領域（耐タンパ性のメモリ領域）６１を持つ。また、カード１００は、図８に示すように、ＩＣカードコマンドでアクセスすることが可能な耐タンパ領域（ＴＲＭ：tamper resistant module ）８０を持つ。
【００９１】
セキュリティ保護領域６１は、通常、カードアプリケーションからのみアクセス可能な状態であって、端末２００からの従来の読み出し用コマンド及び書き込み用コマンドに対しては、コマンド受信部１０１によってアクセスは排除される。
【００９２】
本発明におけるメモリカードは内部に複数のカードアプリケーションを搭載することが可能となっており、図９に示すように、セキュリティ保護領域６１は各アプリケーションに対して個別の領域（ＡＰ１用領域７１〜ＡＰ３用領域７３）を割り当てることが可能である。
【００９３】
セキュリティ保護領域６１は、データ制御部１０３が管理する格納用暗号鍵（Ｋｓ）で暗号化されている。この暗号鍵は、セキュリティ保護領域６１全体で１つのＫｓであってもよいし、各アプリケーション用のＡＰ１用領域７１〜ＡＰ３用領域７３に個別に格納用暗号鍵Ｋｓ＿１〜Ｋｓ＿３を用意してもよい。本実施の形態では各アプリケーションＡＰ１〜３に格納用暗号鍵Ｋｓ＿１〜Ｋｓ＿３を用意する。
【００９４】
次に、セキュリティ保護領域６１内の各アプリケーション用のＡＰ１用領域７１〜ＡＰ３用領域７３の内部構成について、図１０を用いて説明する。
【００９５】
ここでは、例としてカードアプリケーションＡＰ１用領域７１をあげている。ＡＰ１用領域７１の内部はディレクトリＤＩＲ１，ＤＩＲ２とファイルＦＩＬＥ１〜ＦＩＬＥ３を用いた階層構造を用いたデータ管理となっている。
【００９６】
カードアプリケーションＡＰ１は、ＡＰ１用領域７１内でディレクトリ移動を行い、目的のファイルが存在するディレクトリＤＩＲ１，ＤＩＲ２上でファイルＦＩＬＥ１〜ＦＩＬＥ３に対する読み書きを行う。
【００９７】
例えば、カードアプリケーションＡＰ１がファイルＦＩＬＥ３にアクセスする場合は、ディレクトリＤＩＲ１に移動し、次にディレクトリＤＩＲ２に移動した後、ファイルＦＩＬＥ３の読み書きを行う。また、各ディレクトリＤＩＲ１，ＤＩＲ２において、その下位のディレクトリまたはファイルの作成及び削除が可能である。
【００９８】
次に、カード１００内のセッション鍵共有部１１０と、端末２００との間で行われるセッション鍵共有手順について図１１〜図１４を用いて説明する。
【００９９】
カードアプリケーションと端末２００はそれぞれ公開鍵暗号で用いられる公開鍵と秘密鍵の対を保持し、お互いに相手の公開鍵を保持している。
【０１００】
セッション鍵共有手順におけるコマンド形態は前記で示したＡＰＤＵを用いる。以降の説明においてはコマンド形態に関する記述を行わず、単にコマンドＡＰＤＵ、レスポンスＡＰＤＵと表記する。
【０１０１】
まず、端末２００は、ＳＥＬＥＣＴコマンドＡＰＤＵを送信することで、カードアプリケーションＡＰ１の選択を行う（ステップ９０１）。ＳＥＬＥＣＴコマンドＡＰＤＵとは、以降のＩＣカードコマンド（コマンドＡＰＤＵ）をカード１００内部のどのアプリケーションに送信するかを指定するコマンドＡＰＤＵであり、他のコマンドＡＰＤＵと同様にＡＰＤＵ送信コマンドを用いて送信する。
【０１０２】
カード１００は、端末２００から指定されたカードアプリケーションＡＰ１の選択が正常に完了すれば正常完了のレスポンスＡＰＤＵ、完了しなければ異常終了のレスポンスＡＰＤＵを返す（ステップ９０２）。
【０１０３】
次に、端末２００は、処理９０３を実行する。この処理９０３について簡単に説明すると、選択したカードアプリケーションＡＰ１にアクセスすることを可能にするＤＡＴＡ２を生成するための処理である。この処理９０３の詳細については、図１２のフローチャートを参照して説明する。
【０１０４】
端末２００は、乱数Ｒｈの生成を行い（ステップＳ９０３１）、乱数Ｒｈと、端末２００がアクセスしたい図１０で示したファイルＦＩＬＥ３のファイル名を結合し、カードアプリケーションＡＰ１が保持する秘密鍵ＰｒｉＳに対応した公開鍵ＰｕｂＳで暗号化してＤＡＴＡ１を生成し（ステップＳ９０３２）、さらに端末２００が保持する秘密鍵ＰｒｉＨに対応した公開鍵ＰｕｂＨを示す識別子Ｉｎｆｏ＿ＰｕｂＨとＤＡＴＡ１を結合してＤＡＴＡ２を生成する（ステップＳ９０３３）。
【０１０５】
図１１に戻り、次に、端末２００は、カードアプリケーションとのセッション鍵の共有及び、端末２００がアクセス可能な領域情報の共有を行うために、ステップＳ９０３３で生成したＤＡＴＡ２を含んだＲＥＱ＿ＡＲＥＡ＿ＩＮＦＯコマンドをカードアプリケーションに送信する（ステップ９０４）。
【０１０６】
ＲＥＱ＿ＡＲＥＡ＿ＩＮＦＯコマンドを受信したカードアプリケーションＡＰ１は、処理９０５を実行する。この処理９０５の詳細については、図１３のフローチャートを参照して説明する。
【０１０７】
カードアプリケーションＡＰ１は、ＤＡＴＡ２よりＤＡＴＡ１を抽出し、カードアプリケーションＡＰ１が保持する秘密鍵ＰｒｉＳで復号化し、乱数Ｒｈとファイル名ＦＩＬＥ３を得る（ステップＳ９０５１）。
【０１０８】
次に、ＤＡＴＡ２より公開鍵を識別して識別子Ｉｎｆｏ＿ＰｕｂＨを抽出し、Ｉｎｆｏ＿ＰｕｂＨが示す公開鍵ＰｕｂＨに対応付けられた端末２００によるアクセスが認められているかを、ファイルＦＩＬＥ３のアクセス権限設定を参照して確認する。権限がなければ、その旨のエラーをレスポンスＡＰＤＵとして端末２００に返す。アクセスする権限があれば、ＦＩＬＥ３のファイルサイズＳＩＺＥ３を取得する（ステップＳ９０５２）。
【０１０９】
次に、乱数Ｒｓを生成し（ステップＳ９０５３）、ファイルＦＩＬＥ３に対する端末２００からのセキュリティ保護領域アクセスコマンドによるアクセスが可能となるように、図４５で示すアクセス有効テーブル４５００への登録を行い、端末２００がセキュリティ保護領域アクセスコマンドを用いてアクセスするときに使用するためのエリア番号ＸをファイルＦＩＬＥ３に割り当て、ファイルサイズＳＩＺＥ３とともにエリア・セッション鍵管理部１１１に記憶する（ステップＳ９０５４）。このエリア番号とは、端末２００がセキュリティ保護領域アクセスコマンドによるアクセスを行うときに、アクセス領域指定コマンドによって送信するアクセス領域指定情報に含める情報をいう。
【０１１０】
次に、乱数Ｒｓ、エリア番号Ｘ、ファイルサイズＳＩＺＥ３を結合し、ＤＡＴＡ３を生成し（ステップＳ９０５５）、ＤＡＴＡ３を端末２００の公開鍵ＰｕｂＨで暗号化してＤＡＴＡ４を生成する（ステップＳ９０５６）。
【０１１１】
次に、乱数Ｒｓと乱数Ｒｈに排他的論理和を施し、乱数Ｒを生成し（ステップＳ９０５７）、乱数Ｒから暗号用セッション鍵Ｋｄ、検証用セッション鍵Ｋｍを生成する（ステップＳ９０５８）。
【０１１２】
次に、セッション鍵Ｋｄ及びＫｍをエリア番号Ｘと関連付け、エリア・セッション鍵管理部１１１に記憶する（ステップＳ９０５９）。
【０１１３】
図１１に戻り、カード１００はここまでの処理を終えると端末２００にＤＡＴＡ４を含んだレスポンスＡＰＤＵを端末２００に送信する（ステップ９０６）。
【０１１４】
レスポンスＡＰＤＵを受信した端末２００は、レスポンスＡＰＤＵからＤＡＴＡ４を抽出し、処理９０７を実行する。この処理９０７の詳細については、図１４のフローチャートを参照して説明する。
【０１１５】
端末２００は、端末２００の秘密鍵ＰｒｉＨを用いてＤＡＴＡ４を復号しＤＡＴＡ３を取得する（ステップＳ９０７１）。次に、端末２００は、ＤＡＴＡ３より乱数Ｒｓを取得し、乱数Ｒｓと乱数Ｒｈに排他的論理和を施し、乱数Ｒを生成し（ステップＳ９０７２）、乱数Ｒから暗号用セッション鍵Ｋｄ、検証用セッション鍵Ｋｍを生成する（ステップＳ９０７３）。
【０１１６】
以上のステップ９０１から９０７を踏むことで、端末２００とカード１００間の相互認証を行い、かつ端末２００が指定したファイルに対するアクセス権限があれば端末２００からのアクセスが可能な状態となり、またアクセスする際に必要なエリア番号、エリア番号に割り当てられたファイルのサイズＳＩＺＥ３、および検証用セッション鍵Ｋｍ、暗号用セッション鍵Ｋｄを共有することができる。
【０１１７】
なお、ステップ９０４において端末２００からカード１００に伝えられるファイル名は、カードアプリケーションが管理するファイルを直接示すものである必要はなく、カードアプリケーションがどのファイルを指しているかが認識できる形であればよい。
【０１１８】
また、端末２００がアクセスしたいファイル及びステップＳ９０５４において、そのファイルに対して端末２００がアクセス可能となる設定を行った際に割り当てられるエリア番号が常に同じとなるようにし、これらの情報を端末２００とカード１００間であらかじめ認識しておくことで、ステップ９０４における端末２００がアクセスしたいファイル名の通知およびステップ９０６におけるファイルに割り当てられたエリア番号の通知を省略することもできる。
【０１１９】
さらに、本説明では、各カードアプリケーションが図１０で示すようにディレクトリとファイルからなる階層構造をもち、ディレクトリ名およびファイル名でデータを管理している形態で説明したが、カードアプリケーションに割り当てられた領域を適当な大きさに分割し、分割されたそれぞれの領域に番号のような識別子を割り当てて管理する形態でもよい。その場合は、図１１で示した処理手順で用いられるファイル名ＦＩＬＥ３の代わりに前記識別子を用いる。
【０１２０】
次に、端末２００からセキュリティ保護領域に対してアクセスを行う際の処理について図１５及び図１を用いて説明する。図１５の実線はＣＭＤライン２２、点線はＤＡＴ０ライン２７における転送を表す。
【０１２１】
まず、端末２００はカード１００に対してメモリカードコマンドであるアクセス領域指定コマンドを送信する（ステップ１３０１）。このアクセス領域指定コマンドは、図７で示されるフォーマットとなっており、６ビットのコマンドコード４０１と３２ビットのコマンド引数４０２から構成される。
【０１２２】
アクセス領域指定コマンドにおけるコマンド引数４０２は、図１６で示すように、ＤＡＴ０ライン２７に入力するデータがアクセス領域指定情報であることを示すフラグ１４０１と送信データ数を示す１４０３とからなる。フラグ１４０１及び送信データ数１４０３を合わせて３２ビットに満たない場合は未使用フィールド１４０２が存在する。
【０１２３】
ＤＡＴ０ライン２７に入力するデータは、５１２バイト単位となっており、送信データ数１４０３は、この５１２バイト単位の入力を何回行うかを示す。
【０１２４】
次に、カード１００のコマンド受信部１０１は、端末２００から送信されたコマンドを受信し、それがアクセス領域指定コマンドであることを認識し、端末にレスポンスを返すとともにデータ制御部１０３に対して、アクセス領域指定コマンドを受信したことを通知する（ステップ１３０２）。
【０１２５】
次に、端末２００はカード１００のＣＭＤライン２２からアクセス領域指定コマンドに対するレスポンスを受信し、ＤＡＴ０ライン２７に図１９で示すフォーマットでアクセス領域指定情報１７０２を入力する（ステップ１３０３）。
【０１２６】
図１９の１７０１で示される長さは、後に続くアクセス領域指定情報１７０２の長さを示している。長さフィールド１７０１とアクセス領域指定情報１７０２の合計長に合わせてコマンド引数４０２の送信データ数１４０３が設定されている。また、前記合計長は必ずしも５１２バイトの倍数になるわけではないので、５１２バイトの倍数になるようにパディング１７０３を付加する。
【０１２７】
アクセス領域指定情報１７０２は、図２０で示されるように、図１１のステップ９０６でカードから通知されたエリア番号Ｘを指定するエリア番号１８０１と、０以上であり、同じくカードから通知されたファイルサイズＳＩＺＥ３の範囲で選択可能なアクセス開始アドレス１８０２と、１以上であり、（ファイルサイズＳＩＺＥ３−アクセス開始アドレス１８０２）の範囲で選択可能なアクセスデータサイズ１８０３とで構成される。
【０１２８】
次に、カード内部のデータ送受信部１０２は、端末から入力されたアクセス領域指定情報１７０２を受信するとともに、データ制御部１０３にアクセス領域指定情報１７０２を受信したことを通知する。
【０１２９】
次に、データ制御部１０３は、データ送受信部１０２からアクセス領域指定情報１７０２を読み出し、エリア番号１８０１が、図１３のステップＳ９０５４にて割り当てられたエリア番号Ｘであるか、アクセス開始アドレス及びアクセスデータサイズは、エリア番号Ｘと対応したファイルのファイルサイズ範囲に収まっているかをチェックし、異常があればカード内部に保持するエラーフラグをＯＮに設定する。
【０１３０】
データ制御部１０３は、異常がなければ、図１に示すパラメータ記憶部１０９にアクセス領域指定情報１７０２（具体的にはエリア番号１８０１、アクセス開始アドレス１８０２、アクセスデータサイズ１８０３）を記憶する。
【０１３１】
以上が、アクセス領域を指定する処理である。
【０１３２】
次に、図８のセキュリティ保護領域６１に対して読み出しを行う際の処理について説明する。
【０１３３】
図１５において、端末２００は、カード１００に対してセキュリティ保護領域読み出しコマンドを送信する（ステップ１３０４）。このセキュリティ保護領域読み出しコマンドは、図６で示されるフォーマットとなっており、６ビットのコマンドコード４０１と３２ビットのコマンド引数４０２から構成される。
【０１３４】
セキュリティ保護領域読み出しコマンドにおけるコマンド引数４０２は、セキュリティ保護領域読み出しコマンドを送信した端末が、アクセス領域指定コマンドを送信した端末２００と同一であるか、またセッション鍵共有手順を経てエリア番号Ｘが示す領域に対するアクセス権限があることを確認された端末２００と同一であるかを検証するための検証データからなる。
【０１３５】
この検証データの生成方法について図２１を用いて説明する。
【０１３６】
アクセス領域指定情報１７０２は、アクセス領域指定コマンドにおいてＤＡＴ０ライン２７に入力するパラメータである。検証鍵２１０１は、図１１のステップ９０７で生成した検証用セッション鍵Ｋｍである。
【０１３７】
端末２００内部の検証データ生成部２０３は、暗号演算を行うモジュールであり、セキュリティ保護領域アクセス（読み出しまたは書き込み）コマンドに含める検証データを生成する。ここでは、ＤＥＳ−ＭＡＣと呼ばれるＭＡＣ（Message Authentication Code）生成処理を行う。アクセス領域指定情報１７０２に対してパディングデータ２１０５を付加した２１０２を入力データとして、検証鍵２１０１を用いてＤＥＳ暗号を用いたＭＡＣ生成処理を行い、ＭＡＣデータを検証データ２１０４として作成する。
【０１３８】
パディングデータ２１０５については、端末２００からカード１００に対してアクセス領域指定コマンドを送信するときにアクセス領域指定情報１７０２と併せて送信してもよいし、あらかじめ端末とカードの間で取り決めをしたパディング生成ルールに基づいて生成したパディングデータを付与してもよい。
【０１３９】
なお、本実施の形態ではＤＥＳ−ＭＡＣを用いて検証データを作成しているが、他のア
ルゴリズムを用いてもよい。さらに、用途に応じて検証アルゴリズムを選択可能としても良い。
【０１４０】
なお、端末２００が正当であるか認証する必要がなく、アクセス領域指定コマンドとの対応付けのみ確認したい場合は、暗号処理を用いずに、単にＳＨＡ１（Secure Hash Algorithm 1 ）やＭＤ５（Message Digest 5）アルゴリズムを用いたハッシュデータを検証データとして用いてもよい。
【０１４１】
端末２００は、上記の検証データ生成処理によって３２ビットの検証データを生成し、セキュリティ保護領域読み出しコマンドの引数として使用する。
【０１４２】
次に、カード１００のコマンド受信部１０１は、端末２００から送信されたコマンドを受信し、それがセキュリティ保護領域読み出しコマンドであることを認識し、アクセス領域指定情報１７０２に関するエラーフラグがＯＮに設定されている場合は、レスポンスとしてエラーを返す。また、アクセス領域指定情報１７０２に関するエラーフラグがＯＮに設定されていない場合は、図１５で示すように、端末に正常レスポンスを返す（ステップ１３０５）とともに、データ制御部１０３に対してセキュリティ保護領域読み出しコマンドを受信したことを通知し、パラメータ検証部１０８にコマンド引数４０２として与えられた検証データ２１０４を渡す。
【０１４３】
次に、端末２００は、カード１００のＣＭＤライン２２からセキュリティ保護領域読み出しコマンドに対するレスポンスを受信し、ＤＡＴ０ライン２７からデータが出力されるのを待つ。
【０１４４】
以降にカード１００によるセキュリティ保護領域のデータ出力処理について説明する。
【０１４５】
カード１００のパラメータ検証部１０８は、パラメータ記憶部１０９からアクセス領域指定コマンドによって端末２００から与えられ、記憶しておいたアクセス領域指定情報１７０２を読み出し、アクセス領域指定情報１７０２に含まれるエリア番号Ｘ（１８０１）に対応する、図１３のステップＳ９０５９で記憶した検証用セッション鍵Ｋｍをエリア・セッション鍵管理部１１１から取得する。
【０１４６】
次に、カード１００のパラメータ検証部１０８は、検証用セッション鍵Ｋｍとアクセス領域指定情報１７０２を用いて、図２２に示した検証データ生成処理を行い、検証データ１９０４を生成する。なお、検証データ生成処理については、図２１で示した端末２００による検証データ生成処理と同様であるので詳細な説明は省略する。
【０１４７】
次に、カード１００のパラメータ検証部１０８は、上記検証データ生成処理で生成した検証データ１９０４と、端末２００からセキュリティ保護領域読み出しコマンドの引数によって与えられた検証データ２１０４を比較し、一致しなければエラーとし、データ読み出し処理に移行しない。一致した場合は、次のデータ読み出し処理に移行することをデータ制御部１０３に通知する。
【０１４８】
次に、カード１００のデータ制御部１０３は、パラメータ記憶部１０９からアクセス領域指定情報１７０２を読み出し、その中に含まれるエリア番号Ｘを取得し、エリア・セッション鍵管理部１１１からエリア番号に対応するファイルＦＩＬＥ３を認識する。
【０１４９】
次に、カード１００のデータ制御部１０３は、ファイルＦＩＬＥ３がアプリケーションＡＰ１用の領域であることを確認し、格納用暗号鍵Ｋｓ＿１を取得する。
【０１５０】
次に、カード１００のデータ制御部１０３は、アクセス領域指定情報１７０２からアクセス開始アドレス１８０２とアクセスデータサイズ１８０３を取得し、ファイルＦＩＬＥ３として管理されている領域に対して、アクセス開始アドレス１８０２をオフセット、アクセスデータサイズ１８０３を読み出しサイズとしてメモリアクセス部１０４にデータ読み出し要求を行う。
【０１５１】
次に、カード１００のデータ制御部１０３は、暗復号部１０７に対して、メモリアクセス部１０４によって読み出されたデータを格納用暗号鍵Ｋｓ＿１で復号化するよう要求する。
【０１５２】
次に、カード１００のデータ制御部１０３は、暗復号部１０７に対して、暗復号部１０７によって復号化されたデータを暗号用セッション鍵Ｋｄで暗号化するよう要求する。
【０１５３】
次に、カード１００のデータ制御部１０３は、データ送受信部１０２に対して、暗復号部１０７によって暗号用セッション鍵Ｋｄで暗号化されたデータを端末２００に送信するよう要求する。
【０１５４】
上記の処理によって、カード１００からセキュリティ保護領域のデータがセッション鍵Ｋｄによって暗号化された状態で出力可能となる。
【０１５５】
端末２００は、カード１００からデータが出力可能となったことを認識し、図１５に示すように、ＤＡＴ０ライン２７からセッション鍵Ｋｄによって暗号化された状態のデータを取得し（ステップ１３０６）、端末が保持する暗号用セッション鍵Ｋｄによってデータを復号化し、アクセス領域指定情報１７０２で指定した領域のデータを得る。
【０１５６】
次に、セキュリティ保護領域に対して書き込みを行う際の処理について、図２３を参照して説明する。
【０１５７】
端末２００からのアクセス領域指定コマンドの送信（ステップ２００１）、前記コマンドに対するカード１００からのレスポンス（ステップ２００２）、及びアクセス領域指定情報の送信（ステップ２００３）については、それぞれ図１５に示したセキュリティ保護領域に対する読み出し処理におけるステップ１３０１〜１３０３と同様であるので、説明を省略する。ステップ２００１〜ステップ２００３を行った後、端末２００は、カード１００に対してセキュリティ保護領域書き込みコマンドを送信する（ステップ２００４）。このセキュリティ保護領域書き込みコマンドは、図６で示されるフォーマットとなっており、６ビットのコマンドコード４０１と３２ビットのコマンド引数４０２から構成される。
【０１５８】
セキュリティ保護領域読み出しコマンドにおけるコマンド引数４０２は、セキュリティ保護領域読み出しコマンドを送信した端末２００が、アクセス領域指定コマンドを送信した端末２００と同一であるか、また、セッション鍵共有手順を経てエリア番号Ｘが示す領域に対するアクセス権限があることを確認された端末２００と同一であるかを検証するための検証データ２１０４からなる。
【０１５９】
この検証データの生成方法についてはセキュリティ保護領域読み出しコマンドと同様であるため、詳細な説明は省略する。
【０１６０】
端末２００は、検証データ生成処理によって３２ビットの検証データを生成し、セキュリティ保護領域書き込みコマンドの引数として使用する。
【０１６１】
次に、カード１００のコマンド受信部１０１は、端末２００から送信されたコマンドを受信し、それがセキュリティ保護領域書き込みコマンドであることを認識し、アクセス領域指定情報１７０２に関するエラーフラグが設定されている場合は、レスポンスとしてエラーを返す。
【０１６２】
また、アクセス領域指定情報１７０２に関するエラーフラグが設定されていない場合は、ＣＭＤライン２２から端末２００に対して正常レスポンスを返す（ステップ２００５）
とともに、データ制御部１０３に対してセキュリティ保護領域書き込みコマンドを受信したことを通知し、パラメータ検証部１０８にコマンド引数として与えられた検証データ１９０４を渡す。
【０１６３】
次に、端末２００は、カード１００のＣＭＤライン２２からセキュリティ保護領域書き込みコマンドに対するレスポンスを受信し、ＤＡＴ０ライン２７にデータの入力を行う。ここでＤＡＴ０ライン２７に入力するデータは、図１１のステップ９０７で生成した暗号用セッション鍵Ｋｄで暗号化したものである。また、入力データサイズは、アクセス領域指定情報１７０２で指定したアクセスデータサイズと同一である。
【０１６４】
以降にカードによるセキュリティ保護領域へのデータ格納処理について説明する。
【０１６５】
カード１００のパラメータ検証部１０８は、パラメータ記憶部１０９からアクセス領域指定コマンドによって端末２００から与えられ、記憶しておいたアクセス領域指定情報１７０２を読み出し、アクセス領域指定情報１７０２に含まれるエリア番号Ｘ（１８０１）に対応する、図１３のステップ９０５９で記憶した検証用セッション鍵Ｋｍをエリア・セッション鍵管理部１１１から取得する。
【０１６６】
次に、カード１００のパラメータ検証部１０８内部の検証データ生成部１９０３は、検証用セッション鍵Ｋｍとアクセス領域指定情報１７０２を用いて、図２２に示した検証データ生成処理を行い、検証データ１９０４を生成する。なお、検証データ生成処理については、図２１で示した端末による検証データ生成処理と同様であるので詳細な説明は省略する。
【０１６７】
次に、カード１００のパラメータ検証部１０８は、上記で生成した検証データ１９０４と、端末２００からセキュリティ保護領域書き込みコマンドの引数によって与えられた検証データ２１０４を比較し、一致しなければエラーとし、データ書き込み処理に移行しない。一致した場合は次のデータ書き込み処理に移行することをデータ制御部１０３に通知する。
【０１６８】
次に、カード１００のデータ制御部１０３は、パラメータ記憶部１０９からアクセス領域指定情報１７０２を読み出し、その中に含まれるエリア番号Ｘを取得し、エリア・セッション鍵管理部１１１からエリア番号に対応するファイルＦＩＬＥ３を認識する。
【０１６９】
次に、カード１００のデータ送受信部１０２は、端末２００から入力されたデータを受信する。
【０１７０】
次に、カード１００のデータ制御部１０３は、ファイルＦＩＬＥ３がアプリケーションＡＰ１用の領域７１の中に存在することから、アプリケーションＡＰ１用領域７１に対応した格納用暗号鍵Ｋｓ＿１を取得する。
【０１７１】
次に、カード１００のデータ制御部１０３は、暗復号部１０７に対して、データ送受信部１０２が受信したデータを暗号用セッション鍵Ｋｄで復号化するよう要求する。
【０１７２】
次に、カード１００のデータ制御部１０３は、暗復号部１０７に対して、暗復号部１０７が復号化したデータを格納用暗号鍵Ｋｓ＿１で暗号化するよう要求する。
【０１７３】
次に、カード１００のデータ制御部１０３は、アクセス領域指定情報１７０２からアクセス開始アドレス１８０２とアクセスデータサイズ１８０３を取得し、ファイルＦＩＬＥ３として管理されている領域に対し、アクセス開始アドレス１８０２をオフセット、アクセスデータサイズ１８０３を書き込みサイズとして、メモリアクセス部１０４に対してデータ書き込み要求を行う。
【０１７４】
上記のようにして、端末２００が入力したセッション鍵Ｋｄで暗号化されたデータを格納鍵Ｋｓ＿１で暗号化してフラッシュメモリ１０５に格納する。
【０１７５】
本実施の形態では、セッション鍵の共有と、アクセス可能領域に関する情報の共有を１つのコマンドで同時に行っているが、別コマンドとして行ってもよい。
【０１７６】
本実施の形態では、図１１にてセッション鍵共有手順を含めているが、セキュリティポリシーとしてセッション鍵を毎回更新する必要がないと考える場合は、端末２００およびカード１００があらかじめ検証鍵および暗号鍵を保持し、それをセッション鍵として用いてもよい。
【０１７７】
以上、本発明のように、ＩＣカード用コマンドとメモリアクセス用コマンドを受信可能なメモリカードにおいて、カードアプリケーションが利用し、通常はカードアプリケーション経由でのみアクセス可能であり、端末からのアクセスが制限されているセキュリティ保護領域に対して、カードアプリケーションと端末が相互認証し、カードアプリケーションがアクセス可能設定を行うことにより、端末からメモリアクセス用コマンドを用いてアクセスすることが可能となる。
【０１７８】
また、カードアプリケーションがアクセス可能設定を行うためのカードアプリケーションと端末間の相互認証は、用途が限定されたメモリアクセス用コマンドではなく、ＩＣカード用コマンドを使うことにより、データのセキュリティレベルに応じて相互認証方式を柔軟に選択可能となる。
【０１７９】
また、メモリアクセス用コマンドに含められる引数サイズが３２ビットのように小さい場合でも、本発明のように、アクセス領域指定とセキュリティ保護領域アクセスのコマンドを分離し、セキュリティ保護領域アクセス用のコマンドに検証データを含めることで、アクセス領域指定を行った端末アプリケーションとセキュリティ保護領域アクセス用コマンドを発行した端末アプリケーションと検証用鍵を保持した端末アプリケーションが同一であることをカードが検証することが可能となる。
【０１８０】
また、検証用及び暗号用セッション鍵の共有処理をセキュリティ保護領域アクセスのたびに行うことにより、セキュリティ保護領域アクセスに含める検証データとして適当な値を設定して繰り返し不正アクセスを行う攻撃に対する防御性を高めることができる。
【０１８１】
また、端末からアクセスしたいファイルをカードに通知し、それにエリア番号を割り当て、カードから端末に通知することにより、端末がアクセス可能な領域を設定することが可能となる。また、複数のファイルに対して行うことにより、同時に複数のファイルに対してアクセス可能な状態を作ることができる。
【０１８２】
（実施の形態２）
本実施の形態では、端末が、領域指定コマンドで指定するエリア番号をあらかじめ認識している場合のシーケンスを説明する。
【０１８３】
まず、カード内モジュール構成について図２４を用いて説明する。なお、図２４のカード５００の端子構成は、図２に示したものと同様であるため、その図示及び説明は省略する。
【０１８４】
カード５００内モジュールは、ＣＭＤラインに接続され、コマンドの受信及びレスポンスの送信を行う処理命令受信手段５０１と、データを格納する記憶領域５０６と、記憶領域５０６へのアクセス処理を行う記憶領域アクセス手段５０５と、ＤＡＴラインに接続され、記憶領域アクセス手段５０５が読み出したデータを外部機器に送信するデータ送信手段５０２と、同じくＤＡＴラインに接続され、外部機器からデータを受信するデータ受信手段５０３と、処理命令受信手段５０１が受け取った指定情報を検証する指定情報検証手段５０４と、からなる。
【０１８５】
次に、端末６００内モジュール構成について、図２５を用いて説明する。
【０１８６】
端末６００内モジュールは、カード５００に対するコマンド送信と、レスポンス受信を行う処理命令送信手段６０４と、カード５００に対するデータ送信を行うデータ送信手段６０５と、カード５００からのデータ受信を行うデータ受信手段６０６と、アクセスする領域を決定する指定情報決定手段６０１と、指定情報から検証情報を生成する検証情報生成手段６０２と、カード５００に送信するデータ及びカード５００から受信するデータを格納するデータ記憶手段６０３と、からなる。
【０１８７】
次に、端末６００からカード５００のセキュリティ保護領域に対してアクセスを行う際の処理について、上記図２４及び図２５と、図２６に示すフローチャートを用いて説明する。
【０１８８】
まず、端末６００は指定情報決定手段６０１にてリードアクセス又はライトアクセスを行う領域を決定し（ステップＳ２６０１）、アクセス領域指定情報を生成する（ステップＳ２６０２）。次に、このアクセス領域指定情報をデータ記憶手段６０３に格納して領域指定命令を処理命令送信手段６０４からカード５００に送信する（ステップＳ２６０３）。
【０１８９】
領域指定命令のデータ部の一例を図２７に示す。
【０１９０】
ＤＡＴ０ライン２７に入力するデータは５１２バイト単位となっており、領域指定命令のデータ部は、アクセス領域指定情報２７０２の長さフィールド２７０１と、アクセス領域指定情報フィールド２７０２の合計長が５１２バイトに満たない場合、パディング２７０３が追加される。本実施の携帯では、長さフィールド２７０１は２バイトの長さを持ち、アクセス領域指定情報２７０２は、図２８に示すように、１バイトのエリア番号２８０１、３バイトのアクセス開始アドレス２８０２、及び３バイトのアクセスデータサイズ２８０３からなる。つまり合計９バイトであり５１２バイトに満たないため、５０３バイトのパディング２７０３が付加される。
【０１９１】
次に、図２６に戻り、カード５００は、処理命令受信手段５０１にて領域指定命令を受信すると（ステップＳ２６０４）、指定情報検証手段５０４にてアクセス領域指定情報２７０２を確認し、指定した領域が正しいかどうかをエリア番号２８０１に対応する領域が存在するか、アクセス開始アドレス２８０２及びアクセスデータサイズ２８０３がエリア番号２８０１で示された領域の範囲に収まっているかを元に判断する（ステップＳ２６０５）。指定情報検証手段５０４は、指定した領域が正しくなければ、領域指定命令を無効として扱う（ステップＳ２６０６）。指定した領域が正しい場合、アクセス領域指定情報２７０２を保存し、アクセス領域指定情報２７０２と、端末６００とカード５００の間で共有している鍵を用いて、比較情報を生成する（ステップＳ２６０７）。
【０１９２】
比較情報の生成方法の一例を図２９に示す。
【０１９３】
検証データ生成部２９０２は暗号演算を行うモジュールであり、本実施の形態ではＤＥＳ−ＭＡＣと呼ばれるＭＡＣ（Message Authentication Code）を生成する処理を行う。入力は、領域指定命令のデータ部２７０４と、端末６００との間で共有している検証用の鍵２９０１である。ＤＥＳ−ＭＡＣの出力結果は６４ビットであるが、本実施の形態では、比較対象となる端末６００から送信される検証情報が３２ビットであるため、その出力を切り詰めた２９０３である前半３２ビットのみを比較情報２９０４として用いる。なお、検証用鍵２９０１は、エリア番号に対応して個別かつ固定の鍵であってもよいし、エリア番号によらず１つの鍵であってもよい。
【０１９４】
また、図３０に示すように、カード７００内部に検証用鍵共有手段７０１を備え、図３１に示すように端末８００内部に検証用鍵共有手段８０１を備え、カード７００と端末８００の間で、セキュリティ保護領域へのアクセスを行うたびに検証用鍵を変更してもよい。なお、図３０及び図３１の各構成において、図２４及び図２５に示した構成と同一部分には同一符号を付している。
【０１９５】
次に、検証用鍵の共有方法について上記図３０及び図３１と、図３２に示すシーケンスおよび図３３に示す検証用鍵生成方法を用いて説明する。
【０１９６】
図３２において、端末８００は検証用鍵共有手段８０１において、乱数Ｒａを生成し、この乱数Ｒａを含んだセッション鍵共有要求コマンドＡＰＤＵを作成し、処理命令送信手段６０４からＡＰＤＵ送信コマンドをカード７００に送信するとともに（ステップＳ３２０１）、データ送信手段６０５からセッション鍵共有要求コマンドＡＰＤＵをカード７００に送信する（ステップＳ３２０２）。
【０１９７】
次に、カード７００は処理命令受信手段５０１にてＡＰＤＵ送信コマンドを端末８００から受信し、データ受信手段５０３にて端末８００から受信したセッション鍵共有要求コマンドＡＰＤＵを検証用鍵共有手段７０１に渡す。
【０１９８】
検証用鍵共有手段８０１では、乱数Ｒｂを生成し、図３３に示すように、端末８００から受信した乱数Ｒａと乱数Ｒｂを結合したものに対し、あらかじめ端末８００との間で共有しているマスター鍵Ｋを用いて暗号化処理（ＤＥＳ−ＭＡＣ処理）を行い、セッション鍵Ｒを生成する。次に、カード７００は、乱数Ｒｂを含むレスポンスＡＰＤＵを生成する。
【０１９９】
次に、端末８００は、処理命令送信手段６０４からＡＰＤＵ受信コマンドをカード７００に送信する（ステップＳ３２０３）。
【０２００】
次に、カード７００は、処理命令受信手段５０１にてＡＰＤＵ受信コマンドを端末８００から受信し、先ほど作成した乱数Ｒｂを含むレスポンスＡＰＤＵをデータ送信手段５０２より端末８００に送信する（ステップＳ３２０４）。
【０２０１】
次に、端末８００は、データ受信手段６０６によりレスポンスＡＰＤＵをカード７００から受信し、検証用鍵共有手段８０１に渡す。検証用鍵共有手段８０１は、図３３に示すように、先ほど自身が生成した乱数Ｒａと、レスポンスＡＰＤＵに含まれる乱数Ｒｂを結合したものに対し、あらかじめカード７００との間で共有しているマスター鍵Ｋを用いて暗号化処理（ＤＥＳ−ＭＡＣ処理）を行い、セッション鍵Ｒを生成する。
【０２０２】
以上が、セキュリティ保護領域へのアクセスを行うたびにセッション鍵を変更する場合の、端末８００とカード７００の間における検証用鍵共有手順である。
【０２０３】
なお，本実施の形態ではＤＥＳ−ＭＡＣを用いているが、当然他の暗号アルゴリズムを用いてもよい。また、端末８００が正当であるか、つまり同一の鍵を持っているかを検証する必要がない場合、例えば、領域指定命令のアクセス領域指定情報２７０２が端末の意図したものになっているかの検証のみ行う場合は、暗号処理を用いずに、図３４に示すような検証データ生成部３４０１にてＳＨＡ−１演算や、ＭＤ５アルゴリズムを用いたハッシュ演算やチェックサム演算の結果を比較情報として用いることができる。これらのアルゴリズムを用いた場合も、比較対象が３２ビット長ならば、出力結果を切りつめ３４０２、その一部の３２ビットのみを比較情報３４０３とする。
【０２０４】
次に、図２６に戻り、端末８００は、検証データ生成部にてアクセス領域指定情報２７０２と、端末８００とカード７００の間で共有している検証用鍵２９０１から検証情報を生成する（ステップＳ２６０８）。
【０２０５】
この検証情報の生成について、図３５に示す。検証情報生成部３５０２にて検証用鍵３５０１と領域指定命令のデータ部２７０４を用いて暗号処理を行い、検証情報３５０４を生成する。生成方法は、図２９で示したカード７００における比較情報２９０４の生成方法と全く同じである。
【０２０６】
次に、図２６に戻り、端末８００は、生成した検証情報３５０４をアクセス命令（読み出し）の引数に載せて、処理命令送信手段６０４からアクセス命令を送信する（ステップＳ２６０９）。
【０２０７】
アクセス命令は、図３６で示すフォーマットとなっており、コマンドコード３６０１とコマンド引数３６０２の長さはそれぞれ６ビットと３２ビットである。アクセス命令では、コマンド引数３６０２に検証情報３５０４を格納する。
【０２０８】
次に、図２６に戻り、カード７００は、処理命令受信手段５０１にてアクセス命令（読み出し）を受信し（ステップＳ２６１０）、指定情報検証手段５０４にて事前に領域指定命令が正常に完了したかどうかを確認する（ステップＳ２６１１）。領域指定命令が未受信である、又は指定した領域が正しくないなどの理由で正常に完了していない場合は、アクセス命令をエラーとして端末８００に通知する（ステップＳ２６１２）。この時、端末８００は、カード７００からエラーを受信する（ステップＳ２６１２Ａ）。
【０２０９】
事前に領域指定命令が正常に完了している場合、指定情報検証手段５０４は、先ほどカード７００が作成した比較情報２９０４と、アクセス命令のコマンド引数に格納された検証情報３５０４を比較する（ステップＳ２６１３）。比較の結果、検証情報３５０４が不正であったならば、アクセス命令をエラーとして端末８００に通知する（ステップＳ２６１４）。この時、端末８００は、カード７００からエラーを受信する（ステップＳ２６１４Ａ）。検証情報が正常であったならば、指定情報検証手段５０４は記憶領域アクセス手段５０５にアクセス領域指定情報２７０２を通知し、記憶領域アクセス手段５０５は記憶領域５０６内のアクセス領域指定情報２７０２で指定された領域からデータを読み出し、データ送信手段５０２からデータを端末８００に送信する（ステップＳ２６１５）。
【０２１０】
次に、端末８００は、カード７００から送信された読み出しデータをデータ受信手段６０６にて受信し（ステップＳ２６１６）、データ記憶手段６０３に格納する。
【０２１１】
以上の通り、メモリアクセス用コマンドに含められる引数サイズが３２ビットのように小さい場合でも、本発明のように、アクセス領域指定とセキュリティ保護領域アクセスのコマンドを分離し、セキュリティ保護領域アクセス用のコマンドに検証データを含めることで、アクセス領域指定を行った端末アプリケーションとセキュリティ保護領域アクセス用コマンドを発行した端末アプリケーションと検証用鍵を保持した端末アプリケーションが同一であることをカードが検証することが可能となる。
【０２１２】
なお、検証データ生成のために、領域指定情報と検証用鍵に加え、カードから出力される乱数情報を利用する方法を、図３７に示すフローチャートを用いて以下に説明する。なお、図３７に示す各ステップにおいて、図２６に示したフローチャートのステップと同一のステップには同一符号を付して、その説明は省略する。
【０２１３】
図３７に示すように、端末８００から乱数取得命令を端末８００からカード７００に送信し(ステップＳ３７０１)、カード７００が乱数Ｔを生成し、この乱数Ｔをカード７００内部の指定情報検証手段５０４に保持するとともに、データ送信手段５０２から端末８００に送信する（ステップＳ３７０２）。端末８００は、カード７００から送信された乱数Ｔをデータ受信手段６０６にて受信する（ステップＳ３７０３）。
【０２１４】
乱数Ｔを検証情報生成処理に利用する場合のカード７００における比較情報の生成処理（ステップＳ２６０７）、および、端末８００における検証情報の生成処理（ステップＳ２６０８）は、それぞれ図３８および図３９で示すように、乱数Ｔと領域指定命令のデータ部２７０４を結合したものに対して暗号処理を行い、比較情報３８０４及び検証情報３９０４を出力する。
【０２１５】
以上のように、検証情報生成に乱数情報を利用することにより、同一の領域指定情報と検証用鍵を用いて検証情報を作成しても、乱数情報が変化することで出力される検証情報が変化するため、よりセキュリティ強度を向上させることができる。
【０２１６】
（実施の形態３）
本実施の形態では、鍵の共有処理を含むシーケンスの例を説明する。
【０２１７】
まず、カード内モジュール構成について図４０を用いて説明する。なお、カードの端子構成は、図２に示したものと同様であるため、その図示及び説明は省略する。
【０２１８】
カード内モジュールは、ＣＭＤラインに接続され、コマンドの受信及びレスポンスの送信を行う処理命令受信手段９０１と、データを格納する記憶領域９０６と、記憶領域９０６へのアクセス処理を行う記憶領域アクセス手段９０５と、ＤＡＴラインに接続され、記憶領域アクセス手段９０５が読み出したデータを外部機器に送信するデータ送信手段９０２と、同じくＤＡＴラインに接続され、外部機器からデータを受信するデータ受信手段９０３と、端末１０００との間でセキュリティ保護領域アクセスコマンドによるアクセスが可能な領域に関する情報を共有する可能領域情報共有部９０７と、データ受信手段９０３経由して受け取った指定情報を、検証用鍵を用いて検証する指定情報検証手段９０４と、からなる。
【０２１９】
次に、端末内モジュール構成について、図４１を用いて説明する。
【０２２０】
端末内モジュールは、カード９００に対するコマンド送信と、レスポンス受信を行う処理命令送信手段１００４と、カード９００に対するデータ送信を行うデータ送信手段１００５と、カード９００からのデータ受信を行うデータ受信手段１００６と、アクセスする領域を決定する指定情報決定手段１００１と、セキュリティ保護領域アクセスコマンドによるアクセスが可能な領域に関する情報を共有する可能領域情報共有部１００７と、指定情報から検証情報を生成する検証情報生成手段１００２と、カード９００に送信するデータ及びカード９００から受信するデータを格納するデータ記憶手段１００３と、からなる。
【０２２１】
次に、端末１０００からカード９００内のセキュリティ保護領域に対してアクセスを行う際の処理について、上記図４０及び図４１と、図４２及び図４３に示すフローチャートを用いて説明する。
【０２２２】
まず、端末１０００は、指定情報決定手段１００１にて、リードアクセス又はライトアクセスを行う領域Ａを決定し（ステップＳ４２０１）、可能領域情報共有部１００７にて、前記領域Ａに対するセキュリティ保護領域アクセスコマンドによるアクセスを許可するように要求するコマンドＡＰＤＵである領域開放要求コマンドを処理命令送信手段１００４からカード９００に送信する（ステップＳ４２０２）。領域開放要求コマンドは、端末１０００の公開鍵を表す識別子Ｉｎｆｏ＿ＰｕｂＨと、領域Ａを示す識別子ａをカード９００の公開鍵ＰｕｂＳで暗号化したデータとを含む。なお、コマンドＡＰＤＵの送信方法は実施の形態１で説明した方法と同様であるので、詳細な説明は省略する。
【０２２３】
次に、カード９００は、領域開放要求コマンドを受信すると（ステップＳ４２０３）、可能領域情報共有手段９０７にてコマンドに含まれる暗号化データをカード９００自身の秘密鍵ＰｒｉＳで復号化する（ステップＳ４２０４）。次いで、端末１０００の公開鍵識別子Ｉｎｆｏ＿ＰｕｂＨからコマンドを送信した端末１０００を識別し、識別子ａで示される領域Ａのアクセス権限を参照することで、該端末１０００が領域Ａに対するアクセスを許可されているかどうかを確認する（ステップＳ４２０５）。
【０２２４】
アクセスが許可されていない場合は、領域開放失敗を示すデータをレスポンスＡＰＤＵとしてデータ送信手段９０２から端末１０００に送信する（ステップＳ４２０６）。アクセスが許可されている場合は、領域Ａの識別子ａと領域Ａに割り当てたエリア番号Ｘを、指定情報検証手段９０４内に持つ、セキュリティ保護領域アクセスコマンドによるアクセス可否を設定するアクセス有効テーブル４４００（図４４参照）に登録する（ステップＳ４２０７）。次に、領域Ａに対応した検証用鍵Ｒをアクセス有効テーブル４４００に登録する（ステップＳ４２０８）。
【０２２５】
次に、エリア番号Ｘ、領域Ａのサイズを端末１０００の公開鍵ＰｕｂＨで暗号化し、レスポンスＡＰＤＵとしてデータ送信手段９０２から端末１０００に送信する（ステップＳ４２０９）。
【０２２６】
次に、端末１０００は、ＡＰＤＵ受信コマンドを処理命令送信手段１００４からカード９００に送信し、データ受信手段１００６を用いてレスポンスＡＰＤＵをカード９００から取得する（ステップＳ４２１０）。なお、レスポンスＡＰＤＵの取得方法は実施の形態１で説明した方法と同様であるので、詳細な説明は省略する。
【０２２７】
次に、端末１０００の可能領域情報共有手段１００７は、レスポンスＡＰＤＵに含まれる暗号データを端末１０００自身の秘密鍵ＰｒｉＨで復号化し（ステップＳ４２１１）、エリア番号Ｘ、エリア番号Ｘで示される領域Ａのサイズを得る。次に、端末１０００は領域Ａに対応したセッション鍵を検証情報生成手段１００２に登録する。エリア番号Ｘはアクセス領域指定情報を生成するために指定情報決定手段１００１に登録する（ステップＳ４２１２）。以後、図４３のフローチャートに移行する。
【０２２８】
次に、端末１０００は指定情報決定手段１００１にて可能領域情報共有手段１００７によって登録されたエリア番号Ｘを用いてアクセス領域指定情報を生成する（ステップＳ４２１３）。次に、このアクセス領域指定情報をデータ部２７０４（図２７参照）に格納して、領域指定命令を処理命令送信手段１００４からカード９００に送信する（ステップＳ４２１４）。なお、領域指定命令におけるアクセス領域指定情報は実施の形態２と同様であるので、詳細な説明は省略する。
【０２２９】
次に、カード９００は、処理命令受信手段９０１にて端末１０００から領域指定命令を受信すると（ステップＳ４２１５）、指定情報検証手段９０４にてアクセス領域指定情報を確認し、エリア番号Ｘがアクセス有効テーブル４４００に登録されているか、図２８に示したアクセス開始アドレス２８０２及びアクセスデータサイズ２８０３を元に領域Ａの範囲に収まっているか判断する（ステップＳ４２１６）。指定情報検証手段９０４は、指定した領域が正しくなければ、領域指定命令を無効として扱う（ステップＳ４２１７）。指定した領域が正しい場合、アクセス領域指定情報を保存し、アクセス領域指定情報とアクセス有効テーブル４４００に登録された領域Ａに対応した検証用鍵Ｒを用いて、比較情報を生成する（ステップＳ４２１８）。なお、比較情報の生成方法は実施の形態２と同様であるので、詳細な説明は省略する。
【０２３０】
次に、端末１０００は、検証情報生成手段１００２にてアクセス領域指定情報と、可能領域情報共有部１００７によって登録されたセッション鍵Ｒを用いて検証情報を生成し（ステップＳ４２１９）、アクセス命令（読み出し）の引数に載せて、処理命令送信手段１００１からアクセス命令をカード９００に送信する（ステップＳ４２２０）。なお、検証情報の生成方法及びアクセス命令の送信方法は実施の形態２と同様であるので、詳細な説明は省略する。
【０２３１】
次に、カード９００は、処理命令受信手段９０１にてアクセス命令（読み出し）を受信し（ステップＳ４２２１）、指定情報検証手段９０４にて事前に領域指定命令が正常に完了したかどうかを確認する（ステップＳ４２２２）。領域指定命令が未受信である、又は指定した領域が正しくないなどの理由で正常に完了していない場合は、アクセス命令をエラーとして端末１０００に通知する（ステップＳ４２２３）。この時、端末１０００は、カード９００からエラーを受信する（ステップＳ４２２３Ａ）。
【０２３２】
事前に領域指定命令が正常に完了している場合、指定情報検証手段９０４は、先ほどカード９００が作成した比較情報と、アクセス命令の引数に格納された検証情報を比較する（ステップＳ４２２４）。比較の結果、検証情報が不正であったならば、アクセス命令をエラーとして端末１０００に通知する（ステップＳ４２２５）。この時、端末１０００は、カード９００からエラーを受信する（ステップＳ４２２５Ａ）。
【０２３３】
検証情報が正常であったならば，指定情報検証手段９０４は、記憶領域アクセス手段９０５に指定情報を通知し、記憶領域アクセス手段９０５は記憶領域９０６内の領域指定命令で指定された領域からデータを読み出し、データ送信手段９０２からデータを端末１０００に送信する（ステップＳ４２２６）。
【０２３４】
次に、端末１０００は、カード９００から送信された読み出しデータをデータ受信手段１００６にて受信し、データ記憶手段１００３に格納する（ステップＳ４２２７）。
【０２３５】
次に、端末１０００は、領域Ａに対するセキュリティ保護領域アクセスコマンドによるアクセスが不要になったとき、領域Ａに対応するエリア番号Ｘを無効化するための領域無効コマンドＡＰＤＵを作成し、データ送信手段１００５からカード９００に送信する（ステップＳ４２２８）。
【０２３６】
次に、領域無効コマンドＡＰＤＵを受信したカード９００は、アクセス有効テーブル４４００を検索し、エリア番号Ｘが見つかれば、テーブル内のエリア番号Ｘに割り当てられた領域識別子ａ、セッション鍵Ｒとともにエリア番号Ｘの登録を削除し、エリア番号Ｘを指定した領域Ａへのセキュリティ保護領域アクセスコマンドによるアクセスを無効化する（ステップＳ４２２９）。
【０２３７】
以上の通り、セキュリティ保護領域内のある領域に対し、必要な場合のみ領域開放要求によってセキュリティ保護領域アクセスコマンドによるアクセスが可能な状態にし、また不要となったときは領域無効要求によって、その領域へのアクセスを不可能にすることで、セキュリティ強度を向上させることができる。
【産業上の利用可能性】
【０２３８】
本発明にかかるアクセス方法は、メモリカードコマンドとＩＣカードコマンドを併用し、メモリアクセスについてはメモリカードコマンドを使用することで複雑さを回避しながら、少ないコマンド引数でも安全に端末を認証可能とすることである。
【図面の簡単な説明】
【０２３９】
【図１】本発明の実施の形態１におけるメモリカードの内部モジュール構成を示す図
【図２】カードの端子構成を示す図
【図３】本実施の形態１における端末の内部構成を示す図
【図４】本実施の形態１におけるカードと端末の間で行われる処理の概要を示す図
【図５】本実施の形態１におけるＡＰＤＵの送受信方法のシーケンスを示す図
【図６】本実施の形態１におけるレスポンスＡＰＤＵの送信処理のシーケンスを示す図
【図７】本実施の形態１におけるメモリカードのコマンドフォーマットを示す図
【図８】本実施の形態１におけるフラッシュメモリの内部構成を示す図
【図９】本実施の形態１におけるセキュリティ保護領域の内部構成を示す図
【図１０】本実施の形態１におけるセキュリティ保護領域内の各アプリケーション用領域の内部構成を示す図
【図１１】本実施の形態１におけるセッション鍵共有及びアクセス可能領域共有手順を示す図
【図１２】図１１のステップ９０３における処理の詳細を説明するためのフローチャート
【図１３】図１１のステップ９０５における処理の詳細を説明するためのフローチャート
【図１４】図１１のステップ９０７における処理の詳細を説明するためのフローチャート
【図１５】本実施の形態１における端末からセキュリティ保護領域を読み出すためのコマンドシーケンスを示す図
【図１６】本実施の形態１におけるＡＰＤＵ送信コマンドの引数フォーマットを示す図
【図１７】本実施の形態１におけるＡＰＤＵ受信コマンドの引数フォーマットを示す図
【図１８】本実施の形態１におけるＡＰＤＵ送信コマンドの入力データ及びＡＰＤＵ受信コマンドの出力データのフォーマットを示す図
【図１９】本実施の形態１におけるアクセス領域指定コマンドの入力データフォーマットを示す図
【図２０】本実施の形態１におけるアクセス領域指定情報を示す図
【図２１】本実施の形態１における端末の正当性検証を行うための検証データの端末による生成方法を示す図
【図２２】本実施の形態１における端末の正当性検証を行うための検証データのカードによる生成方法を示す図
【図２３】本実施の形態１における端末からセキュリティ保護領域に書き込むためのコマンドシーケンスを示す図
【図２４】本発明の実施の形態２におけるメモリカードの内部モジュール構成を示す図
【図２５】本実施の形態２における端末の内部構成を示す図
【図２６】本実施の形態２における端末からカードのセキュリティ保護領域に対してアクセスを行う際の処理を示すフローチャート
【図２７】本実施の形態２における領域指定命令のデータ部の一例を示す図
【図２８】図２７のアクセス領域指定情報のフォーマットを示す図
【図２９】本実施の形態２における比較情報の生成方法の一例を示す図
【図３０】本実施の形態２における内部に検証用鍵共有手段を備える場合のカード構成を示す図
【図３１】本実施の形態２における内部に検証用鍵共有手段を備える場合の端末構成を示す図
【図３２】本実施の形態２における検証用鍵の共有方法のシーケンスを示す図
【図３３】本実施の形態２における検証用鍵生成方法を説明するための図
【図３４】本実施の形態２におけるＳＨＡ−１演算を用いた比較情報生成方法を示す図
【図３５】本実施の形態２における検証情報生成方法を示す図
【図３６】本実施の形態２におけるアクセス命令のフォーマットを示す図
【図３７】本実施の形態２における乱数情報を利用した検証データ生成処理を示すフローチャート
【図３８】本実施の形態２における乱数を利用した比較情報生成方法を示す図
【図３９】本実施の形態２における乱数を利用した検証情報生成方法を示す図
【図４０】本発明の実施の形態３におけるメモリカードの内部モジュール構成を示す図
【図４１】本実施の形態３における端末の内部構成を示す図
【図４２】本実施の形態３における端末からカード内のセキュリティ保護領域へのアクセス処理の一部を示すフローチャート
【図４３】図４２に続くアクセス処理の一部を示すフローチャート
【図４４】本実施の形態３におけるアクセス有効テーブルの一例を示す図
【図４５】本実施の形態１におけるアクセス有効テーブルの一例を示す図
【図４６】従来のメモリカードの端子構成を示す図
【図４７】従来のカード内モジュール構成を示す図
【符号の説明】
【０２４０】
１００、５００、７００、９００  カード
２００、６００、８００、１０００  端末
１０１  コマンド受信部
１０２  データ送受信部
１０３  データ制御部
１０４  メモリアクセス部
１０５  フラッシュメモリ
１０６  コントローラ
１０７  暗復号部
１０８  パラメータ検証部
１０９  パラメータ記憶部
１１０  セッション鍵共有部
１１１  エリア・セッション鍵管理部
２０１、６０１、１００１  指定情報決定手段
２０２  セッション鍵共有手段
２０３  検証データ生成部
２０４  コマンド送信部
２０５、６０３、１００３  データ記憶手段
データ記憶手段
２０６  暗復号手段
２０７  データ送受信手段
５０１、９０１  処理命令受信手段
５０２、６０５、９０２、１００５  データ送信手段
５０３、６０６、９０３、１００６  データ受信手段
５０４、９０４  指定情報検証手段
５０５、９０５  記憶領域アクセス手段
５０６、９０６  記憶領域
６０２、１００２  検証情報生成手段
６０４、１００４  処理命令送信手段
８０１  検証用鍵共有手段
９０７、１００７  可能領域情報共有手段
４４００、４５００  アクセス有効テーブル
【図１】
0004624732.tif 000002
【図２】
0004624732.tif 000003
【図３】
0004624732.tif 000004
【図４】
0004624732.tif 000005
【図５】
0004624732.tif 000006
【図６】
0004624732.tif 000007
【図７】
0004624732.tif 000008
【図８】
0004624732.tif 000009
【図９】
0004624732.tif 000010
【図１０】
0004624732.tif 000011
【図１１】
0004624732.tif 000012
【図１２】
0004624732.tif 000013
【図１３】
0004624732.tif 000014
【図１４】
0004624732.tif 000015
【図１５】
0004624732.tif 000016
【図１６】
0004624732.tif 000017
【図１７】
0004624732.tif 000018
【図１８】
0004624732.tif 000019
【図１９】
0004624732.tif 000020
【図２０】
0004624732.tif 000021
【図２１】
0004624732.tif 000022
【図２２】
0004624732.tif 000023
【図２３】
0004624732.tif 000024
【図２４】
0004624732.tif 000025
【図２５】
0004624732.tif 000026
【図２６】
0004624732.tif 000027
【図２７】
0004624732.tif 000028
【図２８】
0004624732.tif 000029
【図２９】
0004624732.tif 000030
【図３０】
0004624732.tif 000031
【図３１】
0004624732.tif 000032
【図３２】
0004624732.tif 000033
【図３３】
0004624732.tif 000034
【図３４】
0004624732.tif 000035
【図３５】
0004624732.tif 000036
【図３６】
0004624732.tif 000037
【図３７】
0004624732.tif 000038
【図３８】
0004624732.tif 000039
【図３９】
0004624732.tif 000040
【図４０】
0004624732.tif 000041
【図４１】
0004624732.tif 000042
【図４２】
0004624732.tif 000043
【図４３】
0004624732.tif 000044
【図４４】
0004624732.tif 000045
【図４５】
0004624732.tif 000046
【図４６】
0004624732.tif 000047
【図４７】
0004624732.tif 000048