(57)【特許請求の範囲】
【請求項１】
ＩＣカードが、電気的に書換え可能な不揮発性メモリに記憶された第１のデータを利用して揮発性メモリに第２のデータを生成するデータ処理において、前記第１のデータの正当性を検証するために前記第１のデータに付与されている第１のエラー検出コード（ＥＤＣ）を検証しながら前記データ処理を実行し、前記第２のデータを前記揮発性メモリに生成するときは、乱数を初期値として前記第２のデータから演算される第２のＥＤＣを前記第２のデータに付与することを特徴とするデータ処理方法。
【請求項２】
請求項１に記載のデータ処理方法において、前記データ処理は、前記第１のデータを前記揮発性メモリに複製し、前記揮発性メモリに前記第２のデータを生成する処理であって、前記第１のＥＤＣを検証するときは、前記第１のデータの代わりに、前記揮発性メモリに生成された前記第２のデータを利用して、前記第１のＥＤＣを検証することを特徴とするデータ処理方法。
【請求項３】
請求項２に記載のデータ処理方法において、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記第１のデータを前記揮発性メモリに複製するときは、前記第１のデータの暗号文を復号して複製することを特徴とするデータ処理方法。
【請求項４】
請求項１に記載のデータ処理方法において、前記データ処理は、前記第１のデータと前記揮発性メモリに記憶された第３のデータとを比較する処理であって、前記揮発性メモリに生成される前記第２のデータは、前記第１のデータと前記第３のデータとの比較結果であることを特徴とするデータ処理方法。
【請求項５】
請求項４に記載のデータ処理方法において、前記データ処理は、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記第１のデータと前記第３のデータを比較処理するとき、前記第１のデータと同じ暗号鍵を用いて前記第３のデータを暗号化し、前記第１のデータの暗号文と前記第３のデータの暗号文を比較することを特徴とするデータ処理方法。
【請求項６】
電気的に書換え可能な不揮発性メモリと揮発性メモリを備えたＩＣカードにおいて、前記ＩＣカードは、前記不揮発性メモリに記憶された第１のデータを利用して揮発性メモリに第２のデータを生成するデータ処理を実行するデータ処理手段を備え、前記データ処理手段は、前記第１のデータの正当性を検証するために前記第１のデータに付与されている第１のエラー検出コード（ＥＤＣ）を検証しながら前記データ処理を実行し、前記第２のデータを前記揮発性メモリに生成するときは、乱数を初期値として前記第２のデータから演算される第２のＥＤＣを前記第２のデータに付与する手段であることを特徴とするＩＣカード。
【請求項７】
請求項６に記載のＩＣカードにおいて、前記データ処理手段は、前記第１のデータを前記揮発性メモリに複製し、前記揮発性メモリに前記第２のデータを生成する処理であって、前記第１のＥＤＣを検証するときは、前記第１のデータの代わりに、前記揮発性メモリに生成された前記第２のデータを利用して、前記第１のＥＤＣを検証する手段であることを特徴とするＩＣカード。
【請求項８】
請求項７に記載のＩＣカードにおいて、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記データ処理手段が、前記第１のデータを前記揮発性メモリに複製するときは、前記第１のデータの暗号文を復号して複製する手段であることを特徴とするＩＣカード。
【請求項９】
請求項６に記載のＩＣカードにおいて、前記データ処理手段は、前記第１のデータと前記揮発性メモリに記憶された第３のデータとを比較する処理であって、前記第１のデータと前記第３のデータとの比較結果を前記第２のデータとして前記揮発性メモリに生成する手段であることを特徴とするＩＣカード。
【請求項１０】
請求項９に記載のＩＣカードにおいて、前記データ処理手段は、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記第１のデータと前記第３のデータを比較処理するとき、前記第１のデータと同じ暗号鍵を用いて前記第３のデータを暗号化し、前記第１のデータの暗号文と前記第３のデータの暗号文を比較する手段であることを特徴とするＩＣカード。
【請求項１１】
請求項６から請求項１０のいずれか一つに記載のデータ処理手段として、ＩＣカードに実装されるＩＣチップのＣＰＵを機能させるためのＩＣカードプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路（ＩＣチップ）が実装されたＩＣカードに関し、更に詳しくは、ＩＣチップに記憶された機密データに対する攻撃方法に対処するためのデータ処理技術に関する。
【背景技術】
【０００２】
近年、半導体集積回路（ＩＣチップ）が実装されたＩＣカードに対する様々な攻撃方法が公開され、この攻撃方法の一つにＤＦＡ攻撃（DFA: Differential Fault Analysis）がある。
【０００３】
ＤＦＡ攻撃は、ＩＣチップが動作するときに発生する電磁波やＩＣチップの消費電流などのサイドチャネルを観察することで、ＩＣカードに記憶された機密データ（例えば、暗号鍵）を解読するサイドチャネル攻撃（例えば、ＤＰＡ: Dynamic Power Analysis）とは異なり、ＤＦＡ攻撃では、ＩＣチップにレーザや放射線を照射するなどして、故意的にＩＣカードに誤動作を生じさせ、正常時と誤動作時の出力の違いから、ＩＣカードに記憶された機密データを解読する攻撃方法である。
【０００４】
故意的にＩＣカードに誤動作を生じさせるＤＦＡ攻撃への対策として、特許文献１では、データ変換処理（例えば、暗号処理）の誤動作を検出する誤動作検出部を備え、誤動作検出部の検出結果に応じて所定の制御信号を出力するタンパーフリー装置（例えば、ＩＣカード）が開示されている。
【０００５】
【特許文献１】特開平１０−１５４９７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＤＦＡ攻撃は、その名の通り、ＩＣカードに誤動作を故意的に発生させて解析する方法であるため、ＤＦＡ攻撃にソフトウェア的に対処するためには、特許文献１で開示されているように、ＤＦＡ攻撃を検知する手段を備え、ＤＦＡ攻撃の検知結果に応じて処理を変更することが必要になる。
【０００７】
特許文献１では、特許文献１のタンパーフリー装置に備えられた誤動作検出部の具体例として、（１）データ処理部と同一の処理を同一入力データに対して施し、得られた２つの処理結果が一致するか否か比較する２重化法と、（２）データ処理部の処理結果に対して逆変換処理を施し、この結果と元の入力データが一致するか否か比較する検算法の２つの方法で記され、更に、データ処理部を暗号処理としたときの検査法の詳しい内容が記されている。
【０００８】
確かに、同一の平文を暗号化する処理中に誤動作を故意的に発生させ、誤動作が発生したときの暗号文と正しい暗号文の差分から、暗号鍵を解析するＤＦＡ攻撃に対しては、特許文献１の発明は有効であるものの、レーザ光などによりＩＣチップのシリコン上の回路に操作を加えることで誤動作させるＮＤＦＡ攻撃（Non-Differential Fault Analysis）は、誤動作が発生したときの暗号文と正しい暗号文の差分を利用しないため、ＮＤＦＡ攻撃に対しては、特許文献１の発明は有効ではないと考えられる。
【０００９】
そこで、本発明は、レーザ光などによりＩＣチップのシリコン上の回路に操作を加えることで誤動作させるＮＤＦＡ攻撃に対して耐タンパー性を有するデータ処理方法、ＩＣカードおよびＩＣカードプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決する第１の発明は、ＩＣカードが、電気的に書換え可能な不揮発性メモリに記憶された第１のデータを利用して揮発性メモリに第２のデータを生成するデータ処理において、前記第１のデータの正当性を検証するために前記第１のデータに付与されている第１のエラー検出コード（ＥＤＣ）を検証しながら前記データ処理を実行し、前記第２のデータを前記揮発性メモリに生成するときは、乱数を初期値として前記第２のデータから演算される第２のＥＤＣを前記第２のデータに付与することを特徴とするデータ処理方法である。
【００１１】
上述した第１の発明によれば、前記第１のデータに付与されている前記第１のＥＤＣを検証しながら前記データ処理を実行することで、前記揮発性メモリに生成される前記第２のデータに利用された前記第１のデータの正当性が検証されるため、前記第１のデータと前記第２のデータの正当性を同時に検証でき、前記データ処理を実行中に、前記第１のデータおよび／または前記第２のデータが、ＮＤＦＡ攻撃によって破損していることを検知できるようになる。
【００１２】
更に、前記第２のデータに前記第２のＥＤＣを付与することで、前記データ処理によって生成された前記第２のデータを利用するとき、前記第２のＥＤＣを検証することで、ＮＤＦＡ攻撃によって破損していることを検知できるようになる。
【００１３】
このように、前記第１のデータや前記第２のデータの破損が検知できることは、条件分岐命令などで使用するメモリ上のデータを改ざんすることで本来と異なる分岐をさせる攻撃を防いだり、条件分岐命令などのコードの読み出し時に命令バイトを改ざんすることで本来と異なる動作をさせる攻撃を防いだり、更に、コードをスキップさせることでセキュリティ機能を実行させない攻撃を防ぐことができるようになることを意味する。
【００１５】
また、乱数を初期値として前記第２のＥＤＣを生成すれば、前記第２のＥＤＣは生成されるごとに毎回異なる値になるので、攻撃のタイミングや場所を少しずつ変化させて解析する攻撃を回避できるようになる。
【００１６】
更に、第２の発明は、第１の発明に記載のデータ処理方法において、前記データ処理は、前記第１のデータを前記揮発性メモリに複製し、前記揮発性メモリに前記第２のデータを生成する処理であって、前記第１のＥＤＣを検証するときは、前記第１のデータの代わりに、前記揮発性メモリに生成された前記第２のデータを利用して、前記第１のＥＤＣを検証することを特徴とするデータ処理方法である。
【００１７】
更に、第３の発明は、第２の発明に記載のデータ処理方法において、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記第１のデータを前記揮発性メモリに複製するときは、前記第１のデータの暗号文を復号して複製することを特徴とするデータ処理方法である。
【００１８】
更に、第４の発明は、第１の発明に記載のデータ処理方法において、前記データ処理は、前記第１のデータと前記揮発性メモリに記憶された第３のデータとを比較する処理であって、前記揮発性メモリに生成される前記第２のデータは、前記第１のデータと前記第３のデータとの比較結果であることを特徴とするデータ処理方法である。
【００１９】
更に、第５の発明は、第４の発明に記載のデータ処理方法において、前記データ処理は、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記第１のデータと前記第３のデータを比較処理するとき、前記第１のデータと同じ暗号鍵を用いて前記第３のデータを暗号化し、前記第１のデータの暗号文と前記第３のデータの暗号文を比較することを特徴とするデータ処理方法である。
【００２０】
第４の発明によれば、前記第１のデータを前記第２のデータに複製する処理に本発明を適用でき、更に、第５の発明によれば、前記第１のデータと前記３のデータを比較する処理に本発明を適用できるようになる。また、前記第１のデータを暗号化しておくことで、何らかの方法で前記第１のデータが漏洩した場合でも、前記第１のデータが判読できないようになる。
【００２１】
更に、第６の発明は、電気的に書換え可能な不揮発性メモリと揮発性メモリを備えたＩＣカードにおいて、前記ＩＣカードは、前記不揮発性メモリに記憶された第１のデータを利用して揮発性メモリに第２のデータを生成するデータ処理を実行するデータ処理手段を備え、前記データ処理手段は、前記第１のデータの正当性を検証するために前記第１のデータに付与されている第１のエラー検出コード（ＥＤＣ）を検証しながら前記データ処理を実行し、前記第２のデータを前記揮発性メモリに生成するときは、乱数を初期値として前記第２のデータから演算される第２のＥＤＣを前記第２のデータに付与する手段であることを特徴とするＩＣカードである。
【００２３】
更に、第７の発明は、第６の発明に記載のＩＣカードにおいて、前記データ処理手段は、前記第１のデータを前記揮発性メモリに複製し、前記揮発性メモリに前記第２のデータを生成する処理であって、前記第１のＥＤＣを検証するときは、前記第１のデータの代わりに、前記揮発性メモリに生成された前記第２のデータを利用して、前記第１のＥＤＣを検証する手段であることを特徴とするＩＣカードである。
【００２４】
更に、第８の発明は、第７の発明に記載のＩＣカードにおいて、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記データ処理手段が、前記第１のデータを前記揮発性メモリに複製するときは、前記第１のデータの暗号文を復号して複製する手段であることを特徴とするＩＣカードである。
【００２５】
更に、第９の発明は、第６の発明に記載のＩＣカードにおいて、前記データ処理手段は、前記第１のデータと前記揮発性メモリに記憶された第３のデータとを比較する処理であって、前記第１のデータと前記第３のデータとの比較結果を前記第２のデータとして前記揮発性メモリに生成する手段であることを特徴とするＩＣカードである。
【００２６】
更に、第１０の発明は、第９の発明に記載のＩＣカードにおいて、前記データ処理手段は、前記不揮発性メモリには前記第１のデータの暗号文が記憶され、前記第１のデータと前記第３のデータを比較処理するとき、前記第１のデータと同じ暗号鍵を用いて前記第３のデータを暗号化し、前記第１のデータの暗号文と前記第３のデータの暗号文を比較する手段であることを特徴とするＩＣカードである。
【００２７】
第６の発明から第１０の発明によれば、上述した第１の発明から第５の発明と同様の効果が得られる。
【００２８】
更に、第１１の発明は、第６の発明から第１０の発明のいずれか一つに記載のデータ処理手段として、ＩＣカードに実装されるＩＣチップのＣＰＵを機能させるためのＩＣカードプログラムである。
【００２９】
更に、第１１の発明は、本発明を実現するためにＩＣカードに組込まれるＩＣカードプログラムである。
【発明の効果】
【００３０】
上述した本発明によれば、レーザ光などによりＩＣチップのシリコン上の回路に操作を加えることで誤動作させるＮＤＦＡ攻撃に対して耐タンパー性を有するデータ処理方法、ＩＣカードおよびＩＣカードプログラムを提供できる。
【発明を実施するための最良の形態】
【００３１】
ここから、本発明に係る方法、ＩＣカードおよびＩＣカードに実装されるＩＣカードプログラムであるＩＣカードプログラムについて、図を参照しながら詳細に説明する。
【００３２】
図１は、本実施形態に係るＩＣカード１の外観を示した図で、図１に示したように、ＩＣカード１は、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードで、ＩＣカード１には、ＩＣチップ２がモールドされたＩＣモジュール２ａが実装されている。
【００３３】
図１においては、ＩＣカード１を接触ＩＣカードとして図示しているが、ＩＣカード１は、無線でデータ通信する非接触ＩＣカード、または、接触データ通信と非接触データ通信の２つの通信機能を備えたデュアルインターフェースＩＣカードであってもよい。
【００３４】
加えて、ＩＣカード１の形状は問わず、ＩＣカード１はキャッシュカードと同じ形状でなく、ＩＣモジュール２ａの近辺を短冊状に切り取った形状をしているＳＩＭ（Subscriber Identity Module）或いはＵＩＭ(Universal Subscriber Identity Module)であってもよい。
【００３５】
図２は、ＩＣカード１に実装されるＩＣチップ２のブロック図である。図２に図示したように、ＩＣチップ２には、演算機能およびＩＣチップが具備するデバイスを制御する機能を備えた中央演算装置２０（CPU：Central Processing Unit）、揮発性メモリとしてランダムアクセスメモリ２１（RAM：Random Access Memory）、読み出し専用の不揮発性メモリ２３（ROＭ：Read Only Memory、）、電気的に書換え可能な不揮発性メモリとしてＥＥＰＲＯＭ２２（EEPROM：Electrically Erasable Programmable Read-Only Memoryの略）およびターミナル（図示していない）とデータ通信するためのＵＡＲＴ２４に加え、ＤＥＳの暗号化／復号演算する機能を備えたＤＥＳコプロセッサ２５などが、ＢＵＳ２６に接続されている。
【００３６】
ＩＣチップ２のＲＯＭ２３（或いは、ＥＥＰＲＯＭ２２でもよい）には、ＮＤＦＡ攻撃を検知するためのＩＣカードプログラムで、本発明に係るデータ処理手段になるがデータ処理プログラム１０が備えられている。
【００３７】
例えば、ＩＣカード１が、ＪＡＶＡ（登録商標）に代表されるプラットフォーム型オペレーティングシステムが実装されたマルチアプリケーションＩＣカードであるならば、このデータ処理プログラム１０は、プラットフォーム型オペレーティングシステムに対応した中間言語で記述され、ＥＥＰＲＯＭ２２に記憶されたデータを利用してＲＡＭ２１にデータを生成するデータ処理を実行するモジュールに組込まれるか、或いは、このモジュールから呼出されるパブリックな関数としてプラットフォーム型オペレーティングシステムに組込まれる。
【００３８】
本実施の形態において、データ処理プログラム１０によって利用されるＥＥＰＲＯＭ２２のデータ、および、データ処理プログラム１０によってＲＡＭ２１に生成されるデータには、ＮＤＦＡ攻撃によるデータの破壊を検出するためのエラー検出コード（以下、「ＥＤＣ」と記す。EDC: Error-detecting code）が付与され、このＥＤＣを検証することで、ＮＤＦＡ攻撃によって、これらのデータが破壊されていないか確認することができる。
【００３９】
図３は、ＩＣチップ２のメモリ（ここでは、ＲＡＭ２１、ＥＥＰＲＯＭ２２およびＲＯＭ２３）の内容を説明する図である。
【００４０】
上述したように、ＩＣチップ２のＲＯＭ２３には、ＥＥＰＲＯＭ２２に記憶されたＥＥＰＲＯＭデータ２２０を利用してＲＡＭ２１にＲＡＭデータ２１０を生成するＩＣカードプログラムであるデータ処理プログラム１０が実装されている。ＩＣチップ２のＥＥＰＲＯＭ２２は、３２バイト或いは６４バイトのページ２２ａ毎に管理されており、本実施の形態においては、データの正当性の検証を必要とされるＥＥＰＲＯＭデータ２２０がページ２２ａの一部に記憶され、各ページ２２ａの最後には、１つのページ２２ａ全体のデータから演算されたＥＤＣ２２１（以下、「ＥＤＣ＿ＥＥＰ２２１」と記す。）が、ＩＣカード１を発行処理したときや、ＥＥＰＲＯＭ２２にデータが書き込まれたときに付与される。
【００４１】
１ページ２２ａごとにＥＤＣ＿ＥＥＰ２２１を付与することは一般的な手法で、このＥＤＣ＿ＥＥＰ２２１は、１つのページ２２ａ全体の正当性を検証するのに利用されている。１つのページ２２ａに記憶されているデータからＥＤＣ＿ＥＥＰ２２１を演算し、ＥＥＰＲＯＭ２２に記憶されたＥＤＣ＿ＥＥＰ２２１と比較することで、ＥＥＰＲＯＭデータ２２０も含め、１つのページ２２ａの全て或いは一部のデータが破壊されているか否かを判断できる。
【００４２】
なお、本実施の形態では、説明し易いように、ＥＥＰＲＯＭデータ２２０は、複製元データは１つのページ２２ａに収まる大きさにしているが、ＥＥＰＲＯＭデータ２２０は、複数のページ２２ａにまたがって記憶されていてもよい。
【００４３】
ＲＡＭ２１には、データ処理プログラム１０によってＲＡＭデータ２１０が生成され、ＲＡＭ２１にＲＡＭデータ２１０が生成されるときに、ＲＡＭデータ２１０のみから演算されるＥＤＣ２１１（以下、「ＥＤＣ＿ＲＡＭ」と記す。）が、ＲＡＭデータ２１０に付与される。ここで、ＲＡＭデータ２１０とは、ＥＥＰＲＯＭデータ２２０の複製されたデータや、ＥＥＰＲＯＭデータ２２０と他のデータの比較結果など、ＲＡＭ２１に生成された後に利用されるデータを意味している。
【００４４】
データ処理プログラム１０は、ＲＡＭデータ２１０をＲＡＭ２１上に生成するときに、ＲＡＭデータ２１０を生成するときに利用するＥＥＰＲＯＭデータ２２０の正当性を検証することで、ＥＥＰＲＯＭデータ２２０の正当性と同時に、ＲＡＭ２１に生成するＲＡＭデータ２１０の正当性を検証し、更に、ＲＡＭ２１に生成されたＲＡＭデータ２１０に対してＥＤＣ＿ＲＡＭ２１１を付与する。
【００４５】
ここから、ＩＣカード１に実装されたデータ処理プログラム１０が、ＥＥＰＲＯＭ２２に記憶されたＥＥＰＲＯＭデータ２２０をＲＡＭ２１に複製する処理の例を示しながら、データ処理プログラム１０の動作について説明する。
【００４６】
図４は、ＥＥＰＲＯＭ２２に記憶されたＥＥＰＲＯＭデータ２２０をＲＡＭ２１に複製する複製処理を実行するデータ処理プログラム１０の動作を示したフロー図で、図５は、図４のフローを補足説明するための図である。
【００４７】
ＥＥＰＲＯＭ２２に記憶されたＥＥＰＲＯＭデータ２２０をＲＡＭ２１に複製する処理を実行する前に、データ処理プログラム１０は、ＥＥＰＲＯＭデータ２２０が記憶されているＥＥＰＲＯＭ２２のページ２２ａの先頭からＥＥＰＲＯＭデータ２２０前までのＥＤＣ＿ＥＥＰ２２１、すなわち、図５で示せばＰ１までのＥＤＣ＿ＥＥＰ２２１を演算する（Ｓ１）。
【００４８】
次に、データ処理プログラム１０は、ＥＥＰＲＯＭ２２に記憶されているＥＥＰＲＯＭデータ２２０をＲＡＭ２１の所定のアドレスに複製し、ＲＡＭ２１上にＲＡＭデータ２１０を生成する（Ｓ２）。
【００４９】
データ処理プログラム１０は、ＲＡＭ２１上にＲＡＭデータ２１０を生成すると、ＥＥＰＲＯＭデータ２２０までのＥＤＣ＿ＥＥＰ２２１を、すなわち、図５で示せばＰ２までのＥＤＣ＿ＥＥＰ２２１を、ＥＥＰＲＯＭ２２に記憶されたＥＥＰＲＯＭデータ２２０の代わりに、ＲＡＭ２１上に生成したＲＡＭデータ２１０を用いて演算する（Ｓ３）。
【００５０】
ＥＥＰＲＯＭデータ２２０までのＥＤＣ＿ＥＥＰ２２１を演算すると、ＲＡＭデータ２１０のみを用いてＥＤＣ＿ＲＡＭ２１１を演算し、ＥＤＣ＿ＲＡＭ２１１をＲＡＭ２１上のＲＡＭデータ２１０に付与する。なお、ＥＤＣ＿ＲＡＭ２１１を演算するアルゴリズムは、ＥＤＣ＿ＥＥＰ２２１と同じアルゴリズムである必要はない（Ｓ４）。
【００５１】
ＥＤＣ＿ＲＡＭ２１１を演算すると、データ処理プログラム１０は、ＥＥＰＲＯＭデータ２２０以降のデータを利用してＥＤＣ＿ＥＥＰ２２１を、すなわち、図５で示せばＰ３までのＥＤＣ＿ＥＥＰ２２１を演算する（Ｓ５）。
【００５２】
上述した手順を実行することで、ＥＥＰＲＯＭデータ２２０が複製されたデータであるＲＡＭデータ２１０を利用して、ＥＥＰＲＯＭデータ２２０が記憶されているページ２２ａのＥＤＣ＿ＥＥＰ２２１を演算すると、ＮＤＦＡ攻撃プログラムは、ＥＥＰＲＯＭデータ２２０が記憶されているページ２２ａのＥＤＣ＿ＥＰＰと演算したＥＤＣ＿ＥＥＰ２２１が一致するか確認することで、ＥＥＰＲＯＭデータ２２０とＲＡＭデータ２１０の正当性を検証する（Ｓ６）。
【００５３】
ＥＥＰＲＯＭデータ２２０が記憶されているページ２２ａのＥＤＣ＿ＥＥＰ２２１と演算したＥＤＣ＿ＥＥＰ２２１が一致している場合は、データ処理プログラム１０はＮＤＦＡ攻撃を受けていないと判断し（Ｓ７）、ＥＥＰＲＯＭデータ２２０が記憶されているページ２２ａのＥＤＣ＿ＥＥＰ２２１と演算したＥＤＣ＿ＥＥＰ２２１が一致していない場合は、データ処理プログラム１０はＮＤＦＡ攻撃を受けた判断し（Ｓ８）、この手順を終了する。
【００５４】
なお、この手順が実行されることで、生成した後にＲＡＭデータ２１０を利用するときは、ＲＡＭデータ２１０に付与されたＥＤＣ＿ＲＡＭ２１１を利用して、ＲＡＭ２１に記憶されているＲＡＭデータ２１０の正当性が検証される。
【００５５】
なお、本発明は、これまで説明した実施の形態に限定されることなく、種々の変形や変更が可能である。例えば、上述した内容は、ＥＥＰＲＯＭデータ２２０をＲＡＭ２１に複製する処理ではなく、ＥＥＰＲＯＭデータ２２０とＲＡＭ２１のデータを比較する処理に対しても適用できる。
【００５６】
ＥＥＰＲＯＭデータ２２０とＲＡＭ２１のデータを比較する処理が実行される前に、照合結果となるＲＡＭデータ２１０とは異なり、ＥＥＰＲＯＭデータ２２０と比較される比較データ（図示していない）がＲＡＭ２１に記憶される。この比較データには、ＲＡＭデータ２１０と同じくＥＤＣが付与されていてもよく、付与されていなくてもよい。
【００５７】
ここで、ＥＥＰＲＯＭデータ２２０とＲＡＭ２１のデータを比較する処理とは、例えば、ＩＣカード１が受信した認証ＰＩＮとＥＥＰＲＯＭ２２に記憶された参照ＰＩＮとを照合する処理で、このとき、比較データは認証ＰＩＮで、ＥＥＰＲＯＭデータ２２０は参照ＰＩＮで、ＲＡＭデータ２１０は、比較データとＥＥＰＲＯＭデータ２２０との照合結果になる。
【００５８】
照合結果が、レーザー光の照射によって書換えられると、参照ＰＩＮと認証ＰＩＮの照合に成功していないにも係らず、参照ＰＩＮと認証ＰＩＮの照合に成功したことになる可能性があるため、本発明を適用し、ＲＡＭ２１上のデータが破壊されていないか検証する。
【００５９】
図６は、ＥＥＰＲＯＭデータ２２０とＲＡＭ２１のデータを比較処理するデータ処理プログラム１０の手順を示したフロー図である。
【００６０】
ＥＥＰＲＯＭデータ２２０とＲＡＭ２１のデータを比較するときのデータ処理プログラム１０の動作は、（Ｓ２ａ）および（Ｓ３ａ）を除き、図４の手順と同じであるため、図６の（Ｓ２ａ）および（Ｓ３ａ）のみを説明する。
【００６１】
図６の（Ｓ２ａ）において、データ処理プログラム１０は、ＥＥＰＲＯＭデータ２２０とＲＡＭ２１の比較データの比較処理を行い、ＥＥＰＲＯＭデータ２２０と比較データの比較結果であるＲＡＭデータ２１０を生成する。
【００６２】
そして、データ処理プログラム１０は、ＲＡＭ２１上にＲＡＭデータ２１０を生成すると、（Ｓ３ａ）において、ＲＡＭ２１の比較データと比較したＥＥＰＲＯＭデータ２２０を利用して、ＥＥＰＲＯＭデータ２２０までのＥＤＣ＿ＥＥＰ２２１を、ＥＥＰＲＯＭ２２に記憶されたＥＥＰＲＯＭデータ２２０を用いて演算し、ＥＤＣ＿ＥＥＰ２２１を検証することで、比較データと比較したＥＥＰＲＯＭデータ２２０の正当性と、ＥＥＰＲＯＭデータ２２０とＲＡＭデータ２１０の比較結果であるＲＡＭデータ２１０の正当性を検証する。
【００６３】
更に、本発明では、ＲＡＭデータ２１０に付与されるＥＤＣ＿ＲＡＭ２１１を生成する処理に特徴を持たせることもできる。ＲＡＭデータ２１０に付与されるＥＤＣ＿ＲＡＭ２１１を生成するとき、ＥＤＣ＿ＲＡＭ２１１の初期値を乱数とし、生成される毎に値が異なるようにＥＤＣ＿ＲＡＭ２１１を生成することで、繰返し攻撃による耐タンパー性を高められる。
【００６４】
更に、本発明において、ＥＥＰＲＯＭデータ２２０を暗号化しておくことで、ＮＤＦＡ攻撃以外の攻撃方法でＥＥＰＲＯＭデータ２２０が漏洩した場合でも、ＥＥＰＲＯＭデータ２２０が判読できないようにすることもできる。
【００６５】
ＥＥＰＲＯＭデータ２２０をＲＡＭ２１に複製するときは、図４の（Ｓ２）において、データ処理プログラム１０は、ＲＯＭなどに記憶された暗号鍵を用いてＥＥＰＲＯＭデータ２２０の暗号文を復号し、復号したＥＥＰＲＯＭデータ２２０をＲＡＭ２１に複製する。
【００６６】
また、ＥＥＰＲＯＭデータ２２０と比較データを比較するときは、図６の（Ｓ２ａ）において、データ処理プログラム１０は、ＲＯＭ２３などに記憶された暗号鍵を用いてＥＥＰＲＯＭデータ２２０の暗号文を復号するか、或いは、比較データを暗号化するなどして、ＥＥＰＲＯＭデータ２２０と比較データを比較し、比較結果であるＲＡＭデータ２１０をＲＡＭ２１に生成する。
【図面の簡単な説明】
【００６７】
【図１】ＩＣカードの外観を示した図。
【図２】ＩＣチップの回路ブロック図。
【図３】ＩＣチップのメモリの内容を説明する図。
【図４】複製処理を実行するデータ処理プログラムの動作を示したフロー図。
【図５】複製処理を実行するデータ処理プログラムの動作の補足図。
【図６】比較処理するデータ処理プログラムの手順を示したフロー図。
【符号の説明】
【００６８】
１  ＩＣカード
１０  データ処理プログラム
２  ＩＣチップ
２１  ＲＡＭ
２２  ＥＥＰＲＯＭ
２２ａ  ページ
２３  ＲＯＭ
２１０  ＲＡＭデータ
２１１  ＥＤＣ＿ＲＡＭ
２２０  ＥＥＰＲＯＭデータ
２２１  ＥＤＣ＿ＥＥＰ
【図１】
0005082782.tif 000002
【図２】
0005082782.tif 000003
【図３】
0005082782.tif 000004
【図４】
0005082782.tif 000005
【図５】
0005082782.tif 000006
【図６】
0005082782.tif 000007