(57)【要約】【課題】ＩＣカード等を用いて電子署名を行う場合に、データ処理の効率及びセキュリティを向上させることができるデータ処理方法等を提供する。【解決手段】第１データを含む第１コマンドを機器から半導体装置に送信する第１指示ステップ（Ｓ１０１）と、半導体装置において第１コマンドに従って第１データを用いてデータ処理を行う第１処理ステップ（Ｓ１０２）と、半導体装置に第１データを格納する第１格納ステップ（Ｓ１０３）と、第１処理ステップの結果を機器に対して送信する第１応答ステップ（Ｓ１０４）と、第２コマンドを機器から半導体装置に送信する第２指示ステップ（Ｓ１０５）と、半導体装置において、第２コマンドに従って、第１格納ステップで格納された第１データのハッシュ値を計算する第２処理ステップ（Ｓ１０６）と、第２処理ステップの結果を機器に送信する第２応答ステップ（Ｓ１０８）とを含む。【選択図】図３
2010146414.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置と、前記半導体装置と通信する機器との間におけるデータ処理方法であって、
第１データを含む第１コマンドを、前記機器から前記半導体装置に送信する第１指示ステップと、
前記半導体装置において、前記第１コマンドに従って前記第１データを用いてデータ処理を行う第１処理ステップと、
前記半導体装置に前記第１データを格納する第１格納ステップと、
前記第１処理ステップの結果を前記機器に送信する第１応答ステップと、
第２コマンドを、前記機器から前記半導体装置に送信する第２指示ステップと、
前記半導体装置において、前記第１格納ステップで格納された前記第１データを読み出し、前記第２コマンドに従って、読み出した前記第１データのハッシュ値を計算する第２処理ステップと、
前記第２処理ステップの結果を前記機器に送信する第２応答ステップとを含む
データ処理方法。
【請求項２】
前記データ処理方法は、さらに、
第３コマンドを前記機器から前記半導体装置に送信する第３指示ステップと、
前記半導体装置において、前記第３コマンドに従って前記ハッシュ値に対する署名データを計算する第３処理ステップと、
前記第３処理ステップの結果を前記署名データと共に前記機器に送信する第３応答ステップとを含む
請求項１に記載のデータ処理方法。
【請求項３】
前記データ処理方法は、さらに、
前記半導体装置に前記ハッシュ値を格納する第２格納ステップを含み、
前記第３指示ステップにおいて、第２データを含む前記第３コマンドを送信し、
前記第３処理ステップにおいて、前記半導体装置に格納された前記ハッシュ値を読み出し、読み出した前記ハッシュ値と受信した前記第２データとを含むデータに対する署名データを計算する
請求項２に記載のデータ処理方法。
【請求項４】
前記第２処理ステップにおいて、前記半導体装置は、前記第２コマンドを受信する前に、前記ハッシュ値を計算する
請求項１に記載のデータ処理方法。
【請求項５】
前記データ処理方法は、さらに、
前記機器において、前記第１データをＮ（Ｎは２以上の整数）個の第１サブデータに分割するデータ分割ステップを含み、
前記第１指示ステップにおいて、前記Ｎ個の第１サブデータのそれぞれを含む、Ｎ個の前記第１コマンドをそれぞれ別々に送信し、
前記第１格納ステップにおいて、前記Ｎ個の第１サブデータのそれぞれを受信するたびに、前記Ｎ個の第１サブデータのそれぞれを前記半導体装置に格納し、
前記第２処理ステップは、
第１回目に格納された第１サブデータを読み出し、読み出した前記第１サブデータの第１ハッシュ値を計算する第２処理第１サブステップと、
第Ｍ（Ｍは２以上の整数、１＜Ｍ≦Ｎ）回目に格納された第１サブデータを読み出し、読み出した前記第１サブデータと第（Ｍ−１）ハッシュ値とを含むデータの第Ｍハッシュ値を計算する第２処理第Ｍサブステップとを含み、
前記第２処理ステップにおいて、前記第Ｎハッシュ値を前記第１データのハッシュ値として算出する
請求項４に記載のデータ処理方法。
【請求項６】
前記第２指示ステップにおいて、ハッシュ値の計算に用いられるデータを含まない前記第２コマンドを送信する
請求項１に記載のデータ処理方法。
【請求項７】
前記第１格納ステップにおいて、さらに、前記第１処理ステップにおいて生成された第２データを前記半導体装置に格納し、
前記第２処理ステップにおいて、さらに、前記半導体装置に格納された前記第２データを読み出し、読み出した前記第２データのハッシュ値を計算する
請求項１に記載のデータ処理方法。
【請求項８】
前記第１格納ステップにおいて、さらに、前記半導体装置に前記第１処理ステップにおいて生成された第２データを格納し、
前記第２処理ステップにおいて、前記半導体装置に格納された前記第１データ及び前記第２データを読み出し、読み出した前記第１データ及び前記第２データを含むデータのハッシュ値を計算する
請求項１に記載のデータ処理方法。
【請求項９】
前記第１指示ステップにおいて、生体データの認証を指示するコマンドであって、生体データを含むコマンドである前記第１コマンドを、前記機器から前記半導体装置に送信し、
前記第１処理ステップにおいて、前記第１コマンドに従って前記生体データの認証を行う
請求項１に記載のデータ処理方法。
【請求項１０】
前記第１格納ステップにおいて、前記半導体装置内のメモリに前記第１データを一時的に格納し、
前記第２処理ステップにおいて、前記第１格納ステップにおいて前記メモリに一時的に格納された前記第１データを読み出す
請求項１に記載のデータ処理方法。
【請求項１１】
データ処理を行う半導体装置であって、
データが格納されるメモリと、
第１データを含み、かつ、データ処理を指示する第１コマンドが入力される第１入力部と、
前記第１コマンドに従って前記第１データを用いてデータ処理を行う第１処理部と、
前記メモリに前記第１データを格納する格納部と、
前記データ処理の結果を出力する第１出力部と、
ハッシュ値の計算を指示する第２コマンドが入力される第２入力部と、
前記メモリに格納された前記第１データを読み出し、読み出した前記第１データのハッシュ値を計算する第２処理部と、
前記ハッシュ値の計算結果を出力する第２出力部とを備える
半導体装置。
【請求項１２】
請求項１１に記載の半導体装置を含む
ＩＣカード。
【請求項１３】
請求項１１に記載の半導体装置が１つの半導体基板上に形成された
半導体集積回路。
【請求項１４】
請求項１１に記載の半導体装置と、前記半導体装置と通信する機器とを備え、前記半導体装置及び前記機器においてデータ処理を行うデータ処理システムであって、
前記機器は、
前記第１コマンドを前記半導体装置に送信する第１送信部と、
前記データ処理の結果を前記半導体装置から受信する第１受信部と、
前記第２コマンドを前記半導体装置に送信する第２送信部と、
前記ハッシュ値の計算結果を前記半導体装置から受信する第２受信部とを備える
データ処理システム。
【請求項１５】
半導体装置と、前記半導体装置と通信する機器との間におけるデータ処理方法であって、
署名データの計算の対象となる署名対象データを指定するデータである第１データを含むコマンドであって、前記署名対象データを決定することを指示するコマンドである第１コマンドを、前記機器から前記半導体装置に送信する第１指示ステップと、
前記半導体装置において、前記第１コマンドに従って前記第１データにより指定されるデータを署名対象データと決定する第１処理ステップと、
前記第１処理ステップの結果を前記機器に送信する第１応答ステップと、
前記署名データの計算を指示する第２コマンドを前記機器から前記半導体装置に送信する第２指示ステップと、
前記半導体装置において、前記第２コマンドに従って前記署名対象データに対する署名データを計算する第２処理ステップと、
前記第２処理ステップの結果を前記署名データと共に前記機器に送信する第２応答ステップとを含む
データ処理方法。
【請求項１６】
前記第１データは、前記機器から送信されるデータである第２データと、前記半導体装置内に格納されている第３データとを指定するデータであり、
前記第１処理ステップにおいて、前記第２データ及び前記第３データを含むデータを署名対象データと決定し、
前記第２指示ステップにおいて、前記第２コマンドと共に前記第２データを送信し、
前記第２処理ステップにおいて、前記半導体装置に格納された前記第３データを読み出し、前記第２データと読み出した前記第３データとを含むデータに対する署名データを計算する
請求項１５に記載のデータ処理方法。
【請求項１７】
前記第１データは、データの種別を指定するタブフィールドとデータの長さを示す長さフィールドとの組み合わせにより、前記第２データ及び前記第３データを指定するリストデータである
請求項１６に記載のデータ処理方法。
【請求項１８】
データ処理を行う半導体装置であって、
署名データの計算の対象となる署名対象データを指定するデータである第１データを含むコマンドであって、前記署名対象データを決定することを指示するコマンドである第１コマンドが入力される第１入力部と、
前記第１コマンドに従って前記第１データにより指定されるデータを署名対象データと決定する第１処理部と、
前記第１コマンドに対する処理結果を出力する第１出力部と、
前記署名データの計算を指示する第２コマンドが入力される第２入力部と、
前記第２コマンドに従って前記署名対象データに対する署名データを計算する第２処理部と、
前記第２コマンドに対する処理結果を前記署名データと共に出力する第２出力部とを備える
半導体装置。
【請求項１９】
請求項１８に記載の半導体装置を含む
ＩＣカード。
【請求項２０】
請求項１８に記載の半導体装置が１つの半導体基板上に形成された
半導体集積回路。
【請求項２１】
請求項１８に記載の半導体装置と、前記半導体装置と通信する機器とを備え、前記半導体装置及び前記機器においてデータ処理を行うデータ処理システムであって、
前記機器は、
前記第１コマンドを前記半導体装置に送信する第１送信部と、
前記第１コマンドに対する処理結果を前記半導体装置から受信する第１受信部と、
前記第２コマンドを前記半導体装置に送信する第２送信部と、
前記第２コマンドに対する処理結果を前記署名データと共に前記半導体装置から受信する第２受信部とを備える
データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカード等が備える半導体装置と、その半導体装置と通信する機器との間におけるデータ処理方法等に関する。
【背景技術】
【０００２】
近年、交通、金融、パスポート、運転免許証等の様々な分野でＩＣカードの普及が進んでいる。ＩＣカードはＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を搭載することにより、暗号演算を初めとするセキュリティ機能をＩＣカード内で実現できることが最大の特徴である。その応用例として、ＩＣカード自身が行った演算であることを後日証明するために、トランザクションデータに対し、ＩＣカードがデジタル署名を行う場合がある。例えば、預金口座の残高の一部がＩＣカード内の不揮発性メモリにチャージされたＩＣカードの所持者が、そのＩＣカードを使用して買い物をした際に、ＩＣカードは、日付、商品名、金額等のトランザクションデータに対して署名を生成する。そして、後日、決済センターのコンピュータが、その署名が正しいと確認した場合に、ＩＣカードの所持者の口座から店の口座に資金を移す。このようにＩＣカードを利用した買い物を実現する電子マネーシステムが従来から考えられている。
【０００３】
このようなシステムにおいてＩＣカードに各種処理を実行させるためのコマンドが国際規格で規定されている（例えば、非特許文献１参照）。非特許文献１に記載の国際規格は、ＩＣカードにおけるセキュリティ処理に関するコマンドについて規定している。この国際規格において規定される複数のコマンドのそれぞれは、原則として、互いに依存関係がない独立した処理を指示するためのコマンドである。
【０００４】
なお、ＩＳＯ／ＩＥＣ７８１６のコマンドに関するパート（非特許文献１に記載のパートを含む）は、接触型ＩＣカード及び非接触型ＩＣカードに関する国際規格であるが、この国際規格が適用されるＩＣカードの形状は、カード型に限定されるものではない。この国際規格は、例えば、タグのような小さな形状、携帯電話のような形状など、耐タンパ性を有するセキュアなデバイスであれば形状によらず適用可能な規格である。
【０００５】
図１３は、現行の国際規格であるＩＳＯ／ＩＥＣ７８１６に準拠したコマンドを用いて上記のようなデータ処理を実行した場合の従来の処理フローを示す図である。
【０００６】
図１３に示すように、まず、機器１０２はＩＣカード１０１に対し、トランザクションデータを含むトランザクションコマンドを送信する。ここでトランザクションコマンドとは、トランザクションコマンド処理の実行を指示するコマンドである。また、トランザクションデータとは、トランザクション処理を実行する際に利用するデータである。ここでトランザクションコマンド処理は、上記の例では、日付、商品名、金額等のデータを含むトランザクションデータを履歴情報としてＩＣカードの不揮発性メモリに書き込むとともに、ＩＣカードの不揮発性メモリに書かれている残高からトランザクションデータに含まれる金額を減算して残高を更新する処理である。ＩＣカード１０１は、このトランザクション処理が終了した後、トランザクション処理が正常終了したことを示す処理結果を機器１０２に送信する。
【０００７】
次に、機器１０２は、ＩＣカード１０１に対し、コマンドデータを含むハッシュコマンドを送信する。ここでハッシュコマンドとは、ハッシュコマンド処理の実行を指示するコマンドである。また、ハッシュコマンド処理とは、主として、ハッシュ値を計算する処理である。ここで、ハッシュコマンドにはコマンドデータが含まれるので、ハッシュコマンドは、コマンドデータを入力として、ＩＣカード１０１内でハッシュ値を生成することを指示する。また、ハッシュコマンドに含まれるコマンドデータは、前記トランザクションデータと同じものである。したがって、ＩＣカード１０１は、ハッシュコマンドに従って、このコマンドデータ（トランザクションデータ）のハッシュ値を計算する。そして、ＩＣカード１０１は、ハッシュコマンドに対する応答として、機器１０２にハッシュ値を送信する。
【０００８】
最後に、機器１０２はＩＣカード１０１に対し、コマンドデータを含む署名コマンドを送信する。ここで署名コマンドとは、署名コマンド処理の実行を指示するコマンドである。また、署名コマンド処理とは、主として、署名データを計算する処理である。署名コマンドにコマンドデータが含まれる場合、署名コマンドは、コマンドデータを署名対象データとして、ＩＣカード１０１内で署名データを生成することを指示する。ここでコマンドデータは、前記ハッシュコマンドに従って生成されたハッシュ値である。したがって、ＩＣカード１０１は、署名コマンドに従って、このコマンドデータ（ハッシュ値）に対する署名データを計算する。そして、ＩＣカード１０１は、署名コマンドに対する処理結果として、機器１０２に署名データを送信する。
【０００９】
図１４は、現行の国際規格であるＩＳＯ／ＩＥＣ７８１６に準拠したコマンドを用いて図１３に示した方法とは異なる方法でデータ処理を実行した場合の処理フローを示す図である。図１４に示す処理フローが図１３に示す処理フローと異なる点は、ハッシュコマンドと署名コマンドとが互いに連携している点である。具体的には、ハッシュコマンド処理において、ＩＣカード１０１は、ハッシュ値を機器１０２に送信せず、ＩＣカード１０１内の揮発性メモリに一時的に保持する。その後、機器１０２は、コマンドデータを含まない署名コマンドを送信する。そして、署名コマンド処理において、ＩＣカード１０１は自身の揮発性メモリに保持されたハッシュ値に対して署名データを計算する。このように、ハッシュコマンドと署名コマンドとを一連の処理として扱うことにより、トランザクションデータと署名データの一貫性が確保され、セキュリティが向上する。
【非特許文献１】ＩＳＯ／ＩＥＣ７８１６−８  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ  ５．２節
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、従来技術には次のような課題がある。まず第一の課題として、トランザクションコマンドを送信するときとハッシュコマンドを送信するときとで同じデータが二度送られるため、処理が非効率であるという点が挙げられる。ＩＣカードに要求される機能の高度化に伴い、ＩＣカードが扱うデータ長は長くなる傾向にあるため、この非効率性は今後益々無視できなくなってくる。
【００１１】
また、トランザクションコマンドを送信するときとハッシュコマンドを送信するときとで同じデータを二度送ることは、セキュリティ面でも問題がある。すなわち、トランザクションコマンド処理において利用されたトランザクションデータと異なるデータを署名対象とする不正が可能となる。図１４の従来例では、ハッシュコマンド処理と署名コマンド処理との一貫性を確保しているが、よりセキュリティを高めるためには、トランザクションコマンド処理をも含めた一貫性が必要となる。
【００１２】
次に第二の課題として、署名対象データの指定方法のバリエーションが限定されるという点が挙げられる。具体的には、図１３の場合、署名コマンドと共に送信されるコマンドデータのみが署名対象となる。また、図１４の場合、ＩＣカード１０１内に保持されたハッシュ値のみが署名対象となる。更にセキュリティを高めるために、例えば、ＩＣカード１０１に保持されるハッシュ値に加え、機器１０２から与えられる乱数も含むデータを署名対象とすることが考えられる。この場合、トランザクションデータが同じであっても毎回署名データが異なるようにすることができる。このように、ＩＣカード１０１内に保持されているデータと、機器１０２からのコマンドデータの集合に対して署名を行うといった処理が考えられるが、従来技術ではこれを実現することができない。
【００１３】
そこで、本発明は、上記課題を鑑みてなされたものであり、ＩＣカード等を用いて電子署名を行う場合に、データ処理の効率を向上させるとともに、セキュリティを向上させることができるデータ処理方法等を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明に係るデータ処理方法は、半導体装置と、前記半導体装置と通信する機器との間におけるデータ処理方法であって、第１データを含む第１コマンドを、前記機器から前記半導体装置に送信する第１指示ステップと、前記半導体装置において、前記第１コマンドに従って前記第１データを用いてデータ処理を行う第１処理ステップと、前記半導体装置に前記第１データを格納する第１格納ステップと、前記第１処理ステップの結果を前記機器に送信する第１応答ステップと、第２コマンドを、前記機器から前記半導体装置に送信する第２指示ステップと、前記半導体装置において、前記第１格納ステップで格納された前記第１データを読み出し、前記第２コマンドに従って、読み出した前記第１データのハッシュ値を計算する第２処理ステップと、前記第２処理ステップの結果を前記機器に送信する第２応答ステップとを含むことを特徴とする。
【００１５】
これにより、第１コマンドとともに送信されてきた第１データが半導体装置に保持されるので、第２コマンドを送信する際に第１データを送信する必要がなくなり、データ処理の効率を向上させることが可能となる。
【００１６】
さらに、第１コマンドとともに送信されてきた第１データが半導体装置に保持されるので、第１処理ステップ及び第２処理ステップにおいて利用される第１データの同一性が保持される。したがって、第１コマンド及び第２コマンドに対する処理の一貫性が確保されるので、データ処理のセキュリティを向上させることが可能となる。
【００１７】
また、本発明に係るデータ処理方法は、半導体装置と、前記半導体装置と通信する機器との間におけるデータ処理方法であって、署名データの計算の対象となる署名対象データを指定するデータである第１データを含むコマンドであって、前記署名対象データを決定することを指示するコマンドである第１コマンドを、前記機器から前記半導体装置に送信する第１指示ステップと、前記半導体装置において、前記第１コマンドに従って前記第１データにより指定されるデータを署名対象データと決定する第１処理ステップと、前記第１処理ステップの結果を前記機器に送信する第１応答ステップと、前記署名データの計算を指示する第２コマンドを前記機器から前記半導体装置に送信する第２指示ステップと、前記半導体装置において、前記第２コマンドに従って前記署名対象データに対する署名データを計算する第２処理ステップと、前記第２処理ステップの結果を前記署名データと共に前記機器に送信する第２応答ステップとを含むことを特徴とする。
【００１８】
これにより、第１データにより署名対象データを指定することができるので、複数のデータの組み合わせを署名対象データとすることが可能となる。したがって、署名対象データが同一となる機会を減少させることができるので、データ処理のセキュリティを向上させることが可能となる。
【発明の効果】
【００１９】
以上の説明から明らかなように、本発明に係るデータ処理方法は、同一のデータを重複して送信する必要がなくなるので、データ処理の効率を向上させることが可能となる。また、同一のデータを利用する２つのコマンドに対する処理において、データの同一性を確保されるので、データ処理のセキュリティを向上させることが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２１】
（実施の形態１）
図１は、本発明の実施の形態１に係るデータ処理システム１００の構成を示す図である。図１に示すように、データ処理システム１００は、ＩＣカード１及び機器２により構成される。
【００２２】
ＩＣカード１は、ＣＰＵ２１、不揮発性メモリ２２及び揮発性メモリ２３を備える。
ＣＰＵ２１は、様々な数値計算、情報処理などを行う処理部であり、受信部２４、トランザクションコマンド処理部２５、ハッシュコマンド処理部２６、署名コマンド処理部２７及び送信部２８を備える。
【００２３】
受信部２４は、機器２から各コマンド（トランザクションコマンド、ハッシュコマンド、署名コマンド等）を受信する。具体的には、受信部２４は、トランザクションデータを含むコマンドであって、残高の更新、履歴情報の登録などの処理を指示するコマンドであるトランザクションコマンドを受信する。ここで、トランザクションデータは、日付、商品名、金額等を含むデータである。また、受信部２４は、ハッシュ値の計算を指示するハッシュコマンド及び署名データの計算を指示する署名コマンドを機器２から受信する。受信部２４は、受信した各コマンドを解析する。そして、受信部２４は、解析結果に応じて、トランザクションコマンド処理部２５、ハッシュコマンド処理部２６、及び署名コマンド処理部２７のいずれかのコマンド処理部に処理を引き渡す。実際には、ＣＰＵ２１は、発行段階の処理等、ここでの説明以外の処理を行うため、その他のコマンド処理部も含むが、ここでは説明を割愛する。
【００２４】
トランザクションコマンド処理部２５は、受信部２４がトランザクションコマンドを受信した場合、トランザクションコマンドに従ってトランザクションデータを用いてデータ処理を行う。具体的には、トランザクションコマンド処理部２５は、不揮発性メモリ２２の残高格納部２９に記録されている残高を更新する。さらに、トランザクションコマンド処理部２５は、トランザクションデータを不揮発性メモリ２２のトランザクションデータ格納部３０に格納する。またさらに、トランザクションコマンド処理部２５は、トランザクションデータを揮発性メモリ２３のトランザクションデータ保持部３１に一時的に格納する。
【００２５】
ハッシュコマンド処理部２６は、受信部２４がハッシュコマンドを受信した場合、ハッシュコマンドに従ってハッシュ値を計算する。具体的には、ハッシュコマンド処理部２６は、トランザクションデータ保持部３１に保持されているトランザクションデータを読み出す。そして、ハッシュコマンド処理部２６は、読み出したトランザクションデータのハッシュ値を計算する。さらに、ハッシュコマンド処理部２６は、計算したハッシュ値を揮発性メモリ２３のハッシュ値保持部３２に一時的に格納する。
【００２６】
署名コマンド処理部２７は、受信部２４が署名コマンドを受信した場合、署名コマンドに従って署名データを計算する。具体的には、署名コマンド処理部２７は、ハッシュ値保持部３２に保持されているハッシュ値に対する署名データを計算する。
【００２７】
送信部２８は、各コマンド処理部の処理が終了した場合、各コマンドに対する処理結果を機器２に送信する。具体的には、トランザクションコマンド処理部２５が処理を終了した場合、送信部２８は、トランザクションコマンドにより指示された処理が終了したことを示す処理結果を機器２に送信する。また、ハッシュコマンド処理部２６が処理を終了した場合、送信部２８は、ハッシュコマンドにより指示された処理が終了したことを示す処理結果を機器２に送信する。また、署名コマンド処理部２７が処理を終了した場合、送信部２８は、署名コマンドにより指示された処理が終了したことを示す処理結果とともに、署名コマンドに従って計算された署名データを機器２に送信する。
【００２８】
不揮発性メモリ２２は、電源を供給しなくても記憶している情報を保持するメモリであり、残高格納部２９及びトランザクションデータ格納部３０を含む。残高格納部２９は、残高が格納される。トランザクションデータ格納部３０は、トランザクションデータが履歴情報として格納される。
【００２９】
揮発性メモリ２３は、電源を供給しないと記憶している情報を保持できないメモリであり、トランザクションデータ保持部３１及びハッシュ値保持部３２を含む。トランザクションデータ保持部３１は、トランザクションデータを一時的に保持する。ハッシュ値保持部３２は、ハッシュコマンド処理部２６により計算されたハッシュ値を一時的に保持する。
【００３０】
機器２は、ＩＣカード１とデータ通信が可能な機器であり、送信部６１及び受信部６２を備える。
【００３１】
送信部６１は、各コマンドをＩＣカード１に送信する。具体的には、送信部６１は、トランザクションコマンド、ハッシュコマンド、署名コマンド等をＩＣカード１に送信する。
【００３２】
受信部６２は、各コマンドに対する処理結果をＩＣカード１から受信する。具体的には、受信部６２は、トランザクションコマンド、ハッシュコマンド、署名コマンド等に対する処理結果をＩＣカード１から受信する。
【００３３】
次に、以上のように構成されたデータ処理システム１００における各種動作について説明する。
【００３４】
図２は、本発明の実施の形態１に係るデータ処理システム１００におけるデータの流れを示す図である。
【００３５】
図２に示すように、まず、機器２からＩＣカード１に、トランザクションデータを含むトランザクションコマンドが送信される。そして、ＩＣカード１において、トランザクションコマンド処理が実行された後、ＩＣカード１から機器２に、トランザクションコマンドに対する処理結果が送信される。
【００３６】
次に、機器２からＩＣカード１に、ハッシュコマンドが送信される。ここで送信されるハッシュコマンドには、ハッシュ値の計算に用いられるコマンドデータが含まれない。続いて、ＩＣカード１において、ハッシュコマンド処理が実行された後、ＩＣカード１から機器２に、ハッシュコマンドに対する処理結果が送信される。ここで送信される処理結果には、ハッシュコマンド処理において計算されたハッシュ値が含まれない。
【００３７】
次に、機器２からＩＣカード１に、署名コマンドが送信される。ここで送信される署名コマンドには、署名データの計算に用いられるコマンドデータが含まれない。続いて、ＩＣカード１において、署名コマンド処理が実行された後、ＩＣカード１から機器２に、署名コマンドに対する処理結果が送信される。ここで送信される処理結果には、署名コマンド処理において計算された署名データが含まれる。
【００３８】
図３は、本発明の実施の形態１に係るデータ処理システム１００において実行される処理の流れを示すフローチャートである。
【００３９】
まず、機器２の送信部６１はＩＣカード１に対し、日付、商品名、金額等のトランザクションデータを含むトランザクションコマンドを送信する（ステップＳ１０１）。ＩＣカード１の受信部２４はトランザクションコマンドを受信し、トランザクションコマンド処理部２５にトランザクションコマンドを受信したことを通知する。そして、ＩＣカード１のトランザクションコマンド処理部２５は、トランザクションデータに含まれる金額がＩＣカード１の不揮発性メモリ２２に書かれている残高を超えていないか等の必要な確認を行った後、残高を更新する（ステップＳ１０２）。また、ＩＣカード１のトランザクションコマンド処理部２５は、履歴情報としてＩＣカード１の不揮発性メモリ２２にトランザクションデータを格納する。さらに後続のハッシュコマンド処理においてハッシュコマンド処理部２６が使用するために、ＩＣカード１のトランザクションコマンド処理部２５は、このトランザクションデータをＩＣカード１の揮発性メモリ２３に格納する（ステップＳ１０３）。ＩＣカード１の送信部２８は、ステップＳ１０２及びＳ１０３のトランザクションコマンド処理を全て完了した後、トランザクションコマンド処理が正常終了したことを示す処理結果を機器２に送信する（ステップＳ１０４）。
【００４０】
次に、機器２の送信部６１はＩＣカード１に対し、コマンドデータを含まないハッシュコマンドを送信する（ステップＳ１０５）。ＩＣカード１の受信部２４はハッシュコマンドを受信し、ハッシュコマンド処理部２６にハッシュコマンドを受信したことを通知する。そして、ＩＣカード１のハッシュコマンド処理部２６は、ＩＣカード１の揮発性メモリ２３に保持されている前記トランザクションデータを読み出し、読み出したトランザクションデータのハッシュ値を計算する（ステップＳ１０６）。さらに後続の署名コマンド処理において署名コマンド処理部２７が使用するために、ＩＣカード１のハッシュコマンド処理部２６は、計算したハッシュ値をＩＣカード１の揮発性メモリ２３に格納する（ステップＳ１０７）。ＩＣカード１の送信部２８は、ステップＳ１０６及びＳ１０７のハッシュコマンド処理を全て完了した後、ハッシュコマンド処理が正常終了したことを示す処理結果を機器２に送信する（ステップＳ１０８）。
【００４１】
最後に、機器２の送信部６１はＩＣカード１に対し、コマンドデータを含まない署名コマンドを送信する（ステップＳ１０８）。ＩＣカード１の受信部２４は署名コマンドを受信し、署名コマンド処理部２７に署名コマンドを受信したことを通知する。そして、ＩＣカード１の署名コマンド処理部２７は、ＩＣカード１の揮発性メモリ２３に保持されているハッシュ値を読み出し、読み出したハッシュ値に対する署名データを計算する（ステップＳ１１０）。続いて、ＩＣカード１の送信部２８は署名コマンド処理が正常終了したことを示す処理結果と共に署名データを機器２に送信する（ステップＳ１１１）。
【００４２】
このように、ＩＣカード１がトランザクションコマンドにより送られてきたトランザクションデータをＩＣカード１内の揮発性メモリ２３に一時的に保持することにより、データ処理システム１００は、トランザクションデータを二度にわたって送信又は受信する必要がなくなり、処理効率が向上する。
【００４３】
さらに、ハッシュコマンド処理及び署名コマンド処理において、ＩＣカード１の揮発性メモリ２３に保持されている、当該コマンド処理よりも前のコマンド処理において使用されたデータ、あるいは当該コマンド処理よりも前のコマンド処理により生成されたデータが用いられるため、トランザクションコマンド、ハッシュコマンド及び署名コマンドに対する処理の一貫性が確保されることとなる。このため、ＩＣカード１が耐タンパ性を有することによりトランザクションデータと署名データとの関連性が保証される場合、データ処理システム１００は、署名対象データの置き換えによる不正を防止できる。
【００４４】
なお、トランザクションデータ及びハッシュ値を保持するメモリは書換え可能な不揮発性メモリでもよいが、一時的な使用であるため、揮発性メモリの方が適している。揮発性メモリは、ＩＣカード１への電源が遮断されたときに保持されているデータが消去されるため、不揮発性メモリよりもセキュリティ面でも有利である。
【００４５】
また、上記の説明では、トランザクションデータをそのままハッシュ計算の対象としたが、その変形も可能である。例えば、履歴情報としては残しておきたいが決済処理には不要なデータ（例えば、商品の詳細情報など）をトランザクションデータの中から省いたり、更新された残高をハッシュ計算の対象に加える等の変形が考えられる。その場合、ＩＣカード１の揮発性メモリ２３に保持されるデータは、トランザクションデータそのものではなく、トランザクションコマンド処理の中で生成されたデータとなる。
【００４６】
（実施の形態２）
次に、本発明の実施の形態２に係るデータ処理システムについて説明する。本実施の形態では、トランザクションデータがＩＣカード１の受信できるデータサイズを超える場合について説明する。
【００４７】
ＩＣカード１に要求される機能の高度化に伴い、ＩＣカード１が扱うデータ（トランザクションデータなど）はサイズが大きくなる傾向にある。一方、ＩＣカード１のリソースの制限から、１回のコマンドでＩＣカード１が受信できるデータサイズ（受信バッファサイズ）は限られる。このため、ＩＣカード１の受信できるデータサイズを超えるデータを機器２がＩＣカード１に送る場合、機器２は複数回のコマンドに分割してデータを送ることになる。
【００４８】
例えば、ＩＣカード１の受信バッファサイズが２５６バイトであり、かつ、トランザクションデータのサイズが４００バイトである場合、機器２は、トランザクションデータをおよそ２５６バイトと１４４バイトとの２回に分けて送信する。この４００バイトのトランザクションデータ全体が後続のハッシュコマンド処理においてハッシュ計算の対象となるため、ＩＣカード１は、実施の形態１と同様の処理を行うためには、２回のトランザクションコマンドのデータのすべてをＩＣカード１内の揮発性メモリ２３に格納する必要がある。しかし、トランザクションデータのサイズが非常に大きく、ＩＣカード１がトランザクションデータのすべてを保持するための揮発性メモリ２３をＩＣカード１内に持てない場合、実施の形態１のデータ処理システム１００と同様の処理を本実施の形態に係るデータ処理システム２００がそのまま実行することはできない。
【００４９】
そこで、本実施の形態に係るデータ処理システム２００において、ＩＣカード１は、１回のトランザクションコマンドを受信する度に、残高更新、履歴情報の書込み等のトランザクションコマンド本来の処理と並行して、中間ハッシュ値を計算する。以下、本実施の形態に係るデータ処理システム２００の詳細を説明する。
【００５０】
図４は、本発明の実施の形態２に係るデータ処理システム２００の構成を示す図である。本実施の形態に係るデータ処理システム２００は、図１に示す実施の形態１に係るデータ処理システム１００と比較して、ＩＣカード１の揮発性メモリ２３がトランザクションデータ保持部３１を含まない点と、トランザクションコマンド処理部４１及びハッシュコマンド処理部４２の処理内容が異なる点と、機器２が分割部７１を備える点とが異なる。なお、図４に示すデータ処理システム２００において、図１に示すデータ処理システム１００と同じ機能を備える構成要素については同じ符号を付し、説明を省略する。
【００５１】
トランザクションコマンド処理部４１は、Ｎ（Ｎは２以上の整数）回に分けて送られてくるトランザクションコマンドを受信部２４が受信する度に中間ハッシュ値を計算する。そして、トランザクションコマンド処理部４１は、揮発性メモリ２３に含まれるハッシュ値保持部３２に中間ハッシュ値を格納する。
【００５２】
具体的には、受信部２４が第１回目のトランザクションコマンドを受信した場合、トランザクションコマンド処理部４１は、受信した第１回目のトランザクションコマンドに含まれる分割されたトランザクションデータの中間ハッシュ値を計算する。また、受信部２４が第Ｍ（Ｍは２以上の整数、１＜Ｍ≦Ｎ）回目のトランザクションコマンドを受信した場合、トランザクションコマンド処理部４１は、受信した第Ｍ回目のトランザクションコマンドに含まれる分割されたトランザクションデータと、第（Ｍ−１）回目にトランザクションコマンドを受信したときに計算した中間ハッシュ値とを含むデータの中間ハッシュ値を計算する。そして、トランザクションコマンド処理部４１は、最後（第Ｎ回目）のトランザクションコマンドに対して計算した中間ハッシュ値を分割前のトランザクションデータのハッシュ値としてハッシュ値保持部３２に格納する。
【００５３】
ハッシュコマンド処理部４２は、受信部２４がハッシュコマンドを受信した場合、ハッシュ値保持部３２へのアクセスを行わない。すなわち、ハッシュコマンド処理部４２は、ハッシュコマンドに対して正常終了を示す処理結果を送信部２８を介して機器２に送信する処理のみを行う。
【００５４】
機器２が備える分割部７１は、ＩＣカード１が受信できるデータサイズとなるように、サイズが大きいトランザクションデータをＮ個に分割する。
【００５５】
次に、以上のように構成されたデータ処理システム２００における各種動作について説明する。
【００５６】
図５は、本発明の実施の形態２に係るデータ処理システム２００におけるデータの流れを示す図である。図５には、トランザクションデータが２回のトランザクションコマンドに分けて送られる場合のデータの流れが示されている。
【００５７】
図５に示すように、まず、機器２からＩＣカード１に、分割されたトランザクションデータを含む第１回目のトランザクションコマンドが送信される。そして、ＩＣカード１において、トランザクションコマンド処理が実行された後、ＩＣカード１から機器２に、第１回目のトランザクションコマンドに対する処理結果として、第２回目のトランザクションコマンドを継続して送信することを要求する継続要求が送信される。
【００５８】
次に、機器２からＩＣカード１に、分割されたトランザクションデータを含む第２回目（最後）のトランザクションコマンドが送信される。そして、ＩＣカード１において、トランザクションコマンド処理が実行された後、ＩＣカード１から機器２に、第２回目のトランザクションコマンドに対する処理結果が送信される。
【００５９】
次に、機器２からＩＣカード１に、ハッシュ値の計算に用いられるコマンドデータを含まないハッシュコマンドが送信される。そして、ＩＣカード１において、ハッシュ値を計算することなく、ＩＣカード１から機器２に、ハッシュコマンドに対する処理結果が送信される。
【００６０】
署名コマンド及び署名コマンドに対する処理結果の送信については、実施の形態１に係るデータ処理システム１００と同様であるので説明を省略する。
【００６１】
図６は、本発明の実施の形態２に係るデータ処理システム２００において実行される処理の流れを示すフローチャートである。図６には、図５と同様に、機器２が２回のトランザクションコマンドに分けてトランザクションデータを送る場合のフローチャートが示されている。
【００６２】
まず、機器２の分割部７１は、トランザクションデータを２つのデータ（第１トランザクションデータ及び第２トランザクションデータ）に分割する（ステップＳ２０１）。続いて、機器２の送信部６１は、第１トランザクションデータを含む、第１回目のトランザクションコマンドをＩＣカード１に送信する（ステップＳ２０２）。
【００６３】
次に、ＩＣカード１のトランザクションコマンド処理部４１は、第１トランザクションデータに基づいて残高を更新する（ステップＳ２０３）。また、トランザクションコマンド処理部４１は、ＩＣカード１の不揮発性メモリ２２に第１トランザクションデータを格納する（ステップＳ２０４）。さらに、第１回目のトランザクションコマンドを受信した際に、トランザクションコマンド処理部４１は、第１トランザクションデータを入力として中間ハッシュ値を計算し（ステップＳ２０５）、計算した中間ハッシュ値をＩＣカード１の揮発性メモリ２３に格納する（ステップＳ２０６）。ＩＣカード１の送信部２８は、ステップＳ２０３〜Ｓ２０６のトランザクションコマンド処理を全て完了した後、第１回目のトランザクションコマンド処理が正常終了したことを示す処理結果、つまり第２回目のトランザクションコマンドを継続して送信することを要求する継続要求を機器２に送信する（ステップＳ２０７）。
【００６４】
続いて、機器２の送信部６１は、第２トランザクションデータを含む、第２回目のトランザクションコマンドをＩＣカード１に送信する（ステップＳ２０８）。
【００６５】
次に、ＩＣカード１のトランザクションコマンド処理部４１は、第２トランザクションデータに基づいて残高を更新する（ステップＳ２０９）。また、トランザクションコマンド処理部４１は、ＩＣカード１の不揮発性メモリ２２に第２トランザクションデータを格納する（ステップＳ２１０）。さらに、第２回目（この例では最終）のトランザクションコマンドを受信した際に、トランザクションコマンド処理部４１は、ステップＳ２０６において揮発性メモリ２３に保持されている中間ハッシュ値と第２トランザクションデータとを含むデータのハッシュ値を計算し（ステップＳ２１１）、計算したハッシュ値を、トランザクションデータのハッシュ値としてＩＣカード１の揮発性メモリ２３に格納する（ステップＳ２１２）。ＩＣカード１の送信部２８は、ステップＳ２０８〜Ｓ２１２のトランザクションコマンド処理を全て完了した後、第２回目のトランザクションコマンド処理が正常終了したことを示す処理結果を機器２に送信する（ステップＳ２１３）。
【００６６】
後続の処理は、図３に示した、同一の番号が付された処理と同一であるので説明を省略する。なお、ハッシュコマンドを受信した際には、既に最終ハッシュ値が計算されているため、ハッシュコマンド処理部４２は、ハッシュ計算に関する処理（ステップＳ１０６及びＳ１０７）を行わない。
【００６７】
この方法によれば、トランザクションデータのサイズが大きい場合でも、ＩＣカード１の限られたリソースを用いて実施の形態１と同じ目的を達成することが可能となる。しかし、上記の例のような処理フローとは異なり、トランザクションコマンドに続いてハッシュコマンドが送られて来ないような場合には、トランザクション処理と並行して行われるハッシュ計算は無駄な処理となってしまうため非効率である。これを解決するために、機器２が第１回目のトランザクションコマンドを送る際、そのトランザクションコマンドのコマンドパラメータの中に、ハッシュコマンドが後続するか否かを示す後続コマンド情報が含まれることが望ましい。すなわち、ハッシュコマンドが続くことをこの後続コマンド情報が示している場合、ＩＣカード１はトランザクション処理と並行してハッシュ計算を行い、逆にハッシュコマンドが続くことをこの後続コマンド情報が示していない場合、ＩＣカード１はハッシュ計算は行わず本来のトランザクションコマンドの処理のみを行う。
【００６８】
他の解決方法として、ハッシュコマンドが後続するか否かを示す後続コマンド情報をトランザクションコマンドのパラメータに含めるのではなく、トランザクションコマンドに先行するコマンドで指定してもよい。実際の処理フローにおいては、機器２は、トランザクションコマンドに先行して、署名アルゴリズム等を指定するコマンドを送る場合もある。その場合、このコマンドにおいて、機器２は、トランザクションコマンドにハッシュコマンドが続くか否かを示す方法が考えられる。また、機器２が、この署名アルゴリズム等を指定するコマンドにおいて、署名アルゴリズムとともにハッシュアルゴリズムを指定する場合、ハッシュコマンドが送られることが明確となるため、署名アルゴリズム等を指定するコマンドは、前記後続コマンド情報の役割を兼ねることができる。
【００６９】
なお、上記の説明においては、複数回のトランザクションコマンドを送信する場合について説明したが、トランザクションデータのサイズが小さく、１回のトランザクションコマンドのみが送られる場合でも本実施の形態で説明した方法が適用可能であることは言うまでもない。
【００７０】
（実施の形態３）
次に、本発明の実施の形態３に係るデータ処理システムについて説明する。
【００７１】
実施の形態１又は２に係るデータ処理システム１００又は２００では、署名対象データは、ハッシュコマンドの処理結果としてＩＣカード１内の揮発性メモリ２３に保持されているデータのみであった。しかし、本実施の形態に係るデータ処理システム３００では、更にセキュリティを高めるために、例えば署名対象データは、ＩＣカード１内の揮発性メモリに保持されているハッシュ値に加え、機器２から与えられる乱数、ＩＣカード１内の不揮発性メモリに格納されているカード固有番号などを含む。このように、本実施の形態に係るデータ処理システム３００は、署名対象データに乱数を含めることにより、同じトランザクションデータに対しても毎回異なる署名データを計算することができるため、署名データの複製による不正を防止することができる。また、データ処理システム３００は、署名対象データにカード固有番号を含めることにより、同じトランザクションデータであっても処理するカードが異なれば異なる署名データを計算することができるため、やはりセキュリティが向上する。
【００７２】
以下、本実施の形態に係るデータ処理システム３００について、図７〜図１２を用いて説明する。
【００７３】
図７は、本発明の実施の形態３に係るデータ処理システム３００の構成を示す図である。本実施の形態に係るデータ処理システム３００は、図１に示す実施の形態１に係るデータ処理システム１００と比較して、ＩＣカード１が環境設定コマンド処理部５１、署名コマンド処理部５２、カード固有番号格納部５３、及び署名対象データ保持部５４を有する点が異なる。なお、図７に示すデータ処理システム３００において、図１に示すデータ処理システム１００と同じ機能を備える構成要素については同じ符号を付し、説明を省略する。
【００７４】
環境設定コマンド処理部５１は、受信部２４により受信された環境設定コマンドに含まれる拡張ヘッダリストによって指定されるデータを署名対象データと決定する。具体的には、環境設定コマンド処理部５１は、拡張ヘッダリストを参照することにより、例えばカード固有番号及びハッシュ値が署名対象データであることを取得する。そして、環境設定コマンド処理部５１は、カード固有番号格納部５３及びハッシュ値保持部３２に書き込まれているカード固有番号及びハッシュ値を、拡張ヘッダリストで指定された通りの構成（例えば、後述するＴＬＶ構造）で署名対象データ保持部５４に書き込む。また、環境設定コマンド処理部５１は、後続の署名コマンドで送られてくる乱数も署名対象データであることを署名コマンド処理部５２に伝える。
【００７５】
署名コマンド処理部５２は、署名コマンドに含まれる乱数を、拡張ヘッダリストで指定された通りの構成で署名対象データ保持部５４に追記する。そして、署名コマンド処理部５２は、署名対象データ保持部５４に書き込まれたデータ全体（署名対象データ）に対し、署名データを計算する。
【００７６】
不揮発性メモリ２２に含まれるカード固有番号格納部５３には、ＩＣカード１を識別するための番号が格納される。
【００７７】
揮発性メモリ２３に含まれる署名対象データ保持部５４は、署名対象データが一時的に保持される。
【００７８】
次に、拡張ヘッダリストにより指定される各データ項目（以下、データオブジェクトと記す）のデータ構造を表すＴＬＶ構造について説明する。ＴＬＶ構造とは、タグフィールド（Ｔａｇ）と長さフィールド（Ｌｅｎｇｔｈ）と値フィールド（Ｖａｌｕｅ）との３要素で構成される構造である（それぞれの頭文字をとって“ＴＬＶ”と呼ぶ）。タグフィールドはそのデータオブジェクトの種類を示す。長さフィールドは後続の値フィールドの長さを示す。また値フィールドはこのデータオブジェクトの情報本体である。
【００７９】
また、ＴＬＶ構造は階層構造を表現することができる。図８は、階層的な構造を表す一般的なＴＬＶ構造の一例を示す図である。この図の例では、タグＴ１で表されるデータオブジェクトの値Ｖ１が、タグＴ２で表されるデータオブジェクトとタグＴ３で表されるデータオブジェクトとで構成されており、長さＬ１は値Ｖ１の長さを示す。すなわち、上位層であるタグＴ１のデータオブジェクトが、下位層であるタグＴ２のデータオブジェクトとタグＴ３のデータオブジェクトとを入れ子にした構造となっている。タグＴ１のデータオブジェクトのように、他のデータオブジェクトを入れ子にしたものを「構造型」と呼ぶ。これに対し、タグＴ２のデータオブジェクトやタグＴ３のデータオブジェクトは「基本型」と呼ぶ。本実施の形態では、各タグは１バイトで表され、各タグの６番目のビットが、構造型と基本型とを識別する識別子となる。具体的には、タグの６番目のビットが０であれば、そのデータオブジェクトは基本型である。一方、タグの６番目のビットが１であれば、そのデータオブジェクトは構造型である。図８に示すＴＬＶ構造は２階層のＴＬＶ構造であるが、構造型オブジェクトを更に入れ子にすることにより、多階層の構造も表現可能である。
【００８０】
図９は、本実施の形態における署名対象データのデータ構造を示す図である。図９に示すデータ構造は、図５で示したタグＴ１の構造型データオブジェクトにタグＴ４の基本型データオブジェクトが連結されている。ここで、タグＴ１はＩＣカード１内のデータを意味し、タグＴ２は不揮発性メモリに格納されているカード固有番号、タグＴ３は揮発性メモリに保持されているハッシュ値を示す。また、タグＴ４は機器２から与えられる乱数を示す。図９に示すデータ構造では、各データの長さも具体的に記されており、Ｌ２、Ｌ３、Ｌ４は各々１０バイト、２０バイト、８バイトである。タグフィールド及び長さフィールドは各々１バイトであるため、Ｌ１はＬ１＝Ｌ２＋２＋Ｌ３＋２＝１０＋２＋２０＋２＝３４バイトとなる。
【００８１】
図１０は、本発明の実施の形態３に係るデータ処理システム３００におけるデータの流れを示す図である。図１０において、トランザクションコマンド及びハッシュコマンドに関するデータの流れは図１に示すデータの流れと同じであるため説明を割愛する。
【００８２】
ハッシュコマンドに対する処理結果が送信された後、機器２からＩＣカード１に、署名データの計算の対象となる署名対象データを指定するデータを含む環境設定コマンドが送信される。環境設定コマンドの詳細については後述する。そして、ＩＣカード１において、環境設定コマンド処理が実行された後、ＩＣカード１から機器２に、環境設定コマンドに対する処理結果が送信される。
【００８３】
次に、機器２からＩＣカード１に、署名コマンドが送信される。ここで送信される署名コマンドには、署名データの計算に用いられる乱数が含まれる。続いて、ＩＣカード１において、署名コマンド処理が実行された後、ＩＣカード１から機器２に、署名コマンドに対する処理結果が送信される。ここで送信される処理結果には、署名コマンド処理において計算された署名データが含まれる。
【００８４】
以下、環境設定コマンドについて詳細に説明する。環境設定コマンドとは、後続の署名コマンドにおける署名対象データを予め指定するためのコマンドである。また、署名対象データを指定するデータとは、ＩＳＯ／ＩＥＣ７８１６−４（Ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ）の８．５．１節で規定されるＥｘｔｅｎｄｅｄ  ｈｅａｄｅｒ  ｌｉｓｔ（以下、拡張ヘッダリストと記す）である。拡張ヘッダリストとは、基本型データオブジェクトをタグフィールドと長さフィールドのみの組合せで指定する方法である。具体的には、署名対象データとして図９に示すデータオブジェクトの集合を指定したい場合、環境設定コマンドに含まれる拡張ヘッダリストは、図１１に示すとおりとなる。
【００８５】
拡張ヘッダリストの基本型データオブジェクトは値フィールドを持たないが、各基本型データオブジェクトの長さフィールドには図９の対応するデータオブジェクトの長さフィールドと同じ値が設定される。すなわち、Ｌ２、Ｌ３、Ｌ４には各々「１０」、「２０」、「８」が設定される。一方、構造型データオブジェクトの長さフィールドには、入れ子にしたタグフィールドと長さフィールド分の長さが設定される。具体的には、図１１に示す拡張ヘッダリストの場合、各々１バイトのタグフィールド及び長さフィールドの対が２組入れ子になっているため、Ｌ１には「４」が設定される。
【００８６】
図１２は、本発明の実施の形態３に係るデータ処理システム３００において実行される処理の流れを示すフローチャートである。なお、図１２に示すフローチャートにおいて、図３に示す実施の形態１のフローチャートと同じ処理については、同一の符号を記し、説明を省略する。
【００８７】
データ処理システム３００においてステップＳ１０１〜Ｓ１０８の処理が実行された後、機器２の送信部６１は、拡張ヘッダリストを含む環境設定コマンドを送信する（ステップＳ３０１）。
【００８８】
次に、ＩＣカード１の受信部２４は環境設定コマンドを受信し、環境設定コマンド処理部５１に環境設定コマンドを受信したことを通知する。そして、ＩＣカード１の環境設定コマンド処理部５１は、拡張ヘッダリストにより指定されるデータを、後続の署名コマンドにおける署名対象データと決定する（ステップＳ３０２）。具体的には、図１１に示す拡張ヘッダリストを含む環境設定コマンドを受信した場合、環境設定コマンド処理部５１は、拡張ヘッダリストの先頭のタグＴ１が構造型を示しており、その長さが４バイトであることから２組のタグフィールドと長さフィールドの情報が含まれていることを認識する。その１番目のタグＴ２がカード固有番号を意味しており、その長さＬ２が１０であるため、環境設定コマンド処理部５１は、ＩＣカード１の不揮発性メモリ２２の固定アドレスに格納されている１０バイトのカード固有番号を１番目の署名対象データと決定する。次に２番目のタグＴ３がハッシュ値を意味しており、その長さＬ３が２０であるため、環境設定コマンド処理部５１は、ＩＣカード１の揮発性メモリ２３の固定アドレスに保持されている２０バイトのハッシュ値を２番目の署名対象データと決定する。最後に基本型データオブジェクトのタグＴ４が機器から与えられる乱数を意味しているため、環境設定コマンド処理部５１は、後続の署名コマンドに含まれる乱数を３番目の署名対象データと決定する。
【００８９】
次に、ＩＣカード１の送信部２８は、ステップＳ３０２の環境設定コマンド処理を完了した後、環境設定コマンド処理が正常終了したことを示す処理結果を機器２に送信する（ステップＳ３０３）。
【００９０】
次に、機器２の送信部６１は乱数を含む署名コマンドをＩＣカード１に送信する（ステップＳ３０４）。ＩＣカード１の受信部２４は署名コマンドを受信し、署名コマンド処理部５２に署名コマンドを受信したことを通知する。そして、ＩＣカード１の署名コマンド処理部５２は、ステップＳ３０２において署名コマンドに含まれる乱数が署名対象データであると決定されているので、今回送られてきた８バイトの乱数が３番目の署名対象データであると判断する。そして、署名コマンド処理部５２は、図９に示す構造を持つデータが署名対象データであると解釈し、このデータ対する署名データを計算する（ステップＳ３０５）。続いて、ＩＣカード１の送信部２８は署名コマンド処理が正常終了したことを示す処理結果と共に署名データを機器２に送信する（ステップＳ３０６）。
【００９１】
このように、本実施の形態に係るデータ処理システム３００は、拡張ヘッダリストを用いて署名対象データを指定することにより、ＩＣカード１内に保持されたデータや機器２から送られるデータ等、複数のデータの集合に対する署名が可能となる。さらに、データ処理システム３００は、階層化が可能なリスト構造を用いて署名対象データを指定することにより、複雑に組み合わされたデータに対して署名を行うことが可能となる。なお、本実施の形態では、ＴＬＶ構造が２階層の場合で説明したが、前述したようにＴＬＶ構造は多重の階層化が可能なため、３階層以上のデータの集合に対して署名を行うことも可能となる。
【００９２】
なお、本実施の形態では、拡張ヘッダリストは、署名コマンドを送る直前に送信する環境設定コマンドによりＩＣカード１に送信されていたが、ＩＣカード１の発行段階等において、予めＩＣカード１のメモリ内に格納されておいてもよい。また、拡張ヘッダリストは必ずしも署名対象データが複雑な構成である場合のみに適用されるわけではなく、例えば、機器２から送られてくる乱数を含めず、ＩＣカード１内のデータだけを対象とするような簡単なものであってもよい。すなわち、例えば実施の形態１と同様に、ＩＣカード１の揮発性メモリに保持されるハッシュ値だけを署名対象データとするような場合にも拡張ヘッダリストは適用可能である。この場合、署名対象データは基本型データオブジェクトのみで構成されることになる。
【００９３】
また、本実施の形態では、タグフィールド及び長さフィールドを各々１バイトで表現したが、複数バイトで表現することも可能である。また、本実施の形態で示したように、拡張ヘッダリストの長さフィールドに具体的な値を設定することも可能であるが、暗黙的な指定方法も可能である。具体的には、基本型データオブジェクトの長さフィールドに０が設定されている場合、ＩＣカード１はその基本型データオブジェクト全体が指定されたものとみなし、暗黙的に知っている固定値をその長さとみなして処理を行う。さらに、本実施の形態における拡張ヘッダリストでは、構造型データオブジェクトに入れ子にされた基本型オブジェクトの各タグを明記する例を示したが、構造型データオブジェクトのタグを示せば入れ子にされた基本型データオブジェクトが暗黙的に決まるような場合、構造型データオブジェクトのタグフィールドと長さフィールドだけを拡張ヘッダリストに明記すればよい。その場合、長さフィールドには、暗黙的な長さを示す規定値（ＩＳＯ／ＩＥＣ７８１６−４の規定では、０ｘ８０（１６進表示））を設定する。
【００９４】
以上、本発明に係るデータ処理システム及びＩＣカードについて、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【００９５】
例えば、上記実施の形態において、データ処理システムは、いずれもＩＣカードを用いた電子マネーシステムであったが、本発明が利用できるシステムはこれに限ったものではない。セキュリティが要求される処理をＩＣカードが行った際、その時に使用したデータに対してＩＣカード自身が生成した署名データによって、その処理の正当性を確認するという本発明の機能は様々なシステムで利用可能である。
【００９６】
具体的には、本発明は、例えば、ＩＣカードを用いた生体認証システムに利用することができる。この場合、本発明に係るデータ処理システムにおいて、機器は、生体データを含むトランザクションコマンドをＩＣカードに送信する。また、ＩＣカードが備える不揮発性メモリには、照合用生体データが予め格納される。そして、トランザクションコマンド処理部は、トランザクションコマンドに含まれる生体データと、不揮発性メモリに格納されている照合用生体データとを照合することにより認証を行う。なお、生体認証とは、生体データ（手、指等の血管パターン、指紋、虹彩パターンなど）を用いて行う個人認証である。
【００９７】
このように、本発明を生体認証システムに適用することにより、例えば、ＩＣカードが行った指紋照合等の生体認証結果をネットワークを介して遠隔地にあるセンターに知らせる場合、照合された指紋データ（あるいは、そのハッシュ値）や照合結果と、それに対するＩＣカード自身が生成した署名データとをセンター側で検証することにより、生体認証システムは、照合結果の正当性を確認することができる。同様に、本発明は、指紋データをＩＣカードに記録しておき、照合を別のセキュアなデバイスで行う生体認証システムや、指紋データの取得から照合までの全ての生体認証処理をＩＣカード内で行うような生体データ認証システムにも適用可能である。このような生体認証システムでは、指紋データ等の生体データはサイズが大きいため、本発明を適用した場合、効率面において高い効果を得ることができる。
【００９８】
また、上記実施の形態において、ＩＣカードのハッシュコマンド処理部は、トランザクションコマンドに含まれるトランザクションデータのハッシュ値を計算したが、さらに、トランザクションコマンド処理により生成されたデータのハッシュ値も計算してもよい。具体的には、トランザクション処理が生体データの認証である場合、ハッシュコマンド処理部は、認証結果のデータのハッシュ値を計算してもよい。また、ハッシュコマンド処理部は、トランザクションコマンドに含まれるトランザクションデータとトランザクションコマンド処理により生成されたデータとを含むデータのハッシュ値を計算してもよい。
【００９９】
なお、これらのシステムで使用されるセキュアなデバイスはカード形状である必要はなく、耐タンパ性を有するものであればよいことは言うまでもない。
【０１００】
また、本発明は、このようなデータ処理システムとして実現することができるだけでなく、このようなデータ処理システムが備える特徴的な構成部をステップとするデータ処理方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
【０１０１】
また、本発明は、ＩＣカードの機能の全て又は一部を実現する半導体装置として実現しり、その半導体装置が１つの半導体基板上に形成された半導体集積回路（ＬＳＩ）として実現したりすることもできる。
【産業上の利用可能性】
【０１０２】
本発明にかかるデータ処理方法は、ＩＣカード等のセキュアなデバイスを用いたシステムに有用である。
【図面の簡単な説明】
【０１０３】
【図１】本発明の実施の形態１に係るデータ処理システムの構成を示す図である。
【図２】本発明の実施の形態１に係るデータ処理システムにおけるデータの流れを示す図である。
【図３】本発明の実施の形態１に係るデータ処理システムにおいて実行される処理の流れを示すフローチャートである。
【図４】本発明の実施の形態２に係るデータ処理システムの構成を示す図である。
【図５】本発明の実施の形態２に係るデータ処理システムにおけるデータの流れを示す図である。
【図６】本発明の実施の形態２に係るデータ処理システムにおいて実行される処理の流れを示すフローチャートである。
【図７】本発明の実施の形態３に係るデータ処理システムの構成を示す図である。
【図８】階層的な構造を表す一般的なＴＬＶ構造の一例を示す図である。
【図９】本発明の実施の形態３における署名対象データのデータ構造を示す図である。
【図１０】本発明の実施の形態３に係るデータ処理システムにおけるデータの流れを示す図である。
【図１１】本発明の実施の形態３における拡張ヘッダリストの一例を示す図である。
【図１２】本発明の実施の形態３に係るデータ処理システムにおいて実行される処理の流れを示すフローチャートである。
【図１３】従来のデータ処理システムにおける処理フローを示す図である。
【図１４】従来のデータ処理システムにおける処理フローを示す図である。
【符号の説明】
【０１０４】
１  ＩＣカード
２  機器
２１  ＣＰＵ
２２  不揮発性メモリ
２３  揮発性メモリ
２４  受信部
２５  トランザクションコマンド処理部
２６  ハッシュコマンド処理部
２７  署名コマンド処理部
２８  送信部
３１  トランザクションデータ保持部
３２  ハッシュ値保持部
４１  トランザクションコマンド処理部
４２  ハッシュコマンド処理部
５１  環境設定コマンド処理部
５２  署名コマンド処理部
５３  カード固有番号格納部
５４  署名対象データ保持部
６１  送信部
６２  受信部
７１  分割部
１００  データ処理システム
２００  データ処理システム
３００  データ処理システム
【図１】
2010146414.tif 000003
【図２】
2010146414.tif 000004
【図３】
2010146414.tif 000005
【図４】
2010146414.tif 000006
【図５】
2010146414.tif 000007
【図６】
2010146414.tif 000008
【図７】
2010146414.tif 000009
【図８】
2010146414.tif 000010
【図９】
2010146414.tif 000011
【図１０】
2010146414.tif 000012
【図１１】
2010146414.tif 000013
【図１２】
2010146414.tif 000014
【図１３】
2010146414.tif 000015
【図１４】
2010146414.tif 000016