(57)【要約】【課題】このような状況を鑑み、本発明は、処理速度が要求される場合でも対タンパ性を強めたデータ処理装置及びデータ処理方法を提供する。【解決手段】ＣＰＵ４は、暗号化データ１６を読み出し、暗号回路６に復号化させて平文データ１７を生成し、スクランブル回路１４によりスクランブルキーを使用したスクランブル処理を行わせ、セキュアＲＡＭ１３に一時記憶する。セキュアＲＡＭ１３に記憶されたデータをスクランブル回路１４にデスクランブルさせて平文データ１７を取得し、これを使用して所定の処理を実行し、終了したら、処理済みのデータを暗号回路６に暗号化させる。そして、ＣＰＵ４は所定の処理が終了したことをスクランブル回路１４に通知し、スクランブル回路１４はこれに応じてＲＮＧ８が生成した乱数によりスクランブルキーを更新する。【選択図】図４
2010092117.tif 000002
【特許請求の範囲】
【請求項１】
暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、
暗号化データを記憶するメモリと、
平文データをスクランブルキーによりスクランブルするスクランブル回路と、
前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、
乱数生成回路と、
前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、
を有し、
前記制御部は、前記メモリから前記暗号化データを読み出し、前記暗号回路に当該暗号化データを復号させ、平文データを前記スクランブル回路によりスクランブルさせて前記一時メモリに記憶した後、当該スクランブルされた平文データを前記スクランブル回路によりデスクランブルさせた平文データを使用して前記所定の処理を実行し、
前記スクランブル回路は、前記制御部の前記所定の処理の実行終了を条件に、前記乱数生成回路により生成された乱数を新しいスクランブルキーとして更新する
データ処理装置。
【請求項２】
前記スクランブル回路は、前記スクランブルキーと前記平文データとの排他的論理和演算により前記平文データをスクランブルする
請求項１に記載のデータ処理装置。
【請求項３】
前記スクランブル回路は、前記制御部から処理終了を通知する処理終了信号に応じて前記乱数生成回路により生成された乱数を新しいスクランブルキーとして更新する
請求項２に記載のデータ処理装置。
【請求項４】
前記スクランブル回路は、前記スクランブルキーを記憶するキーレジスタを有する
請求項３に記載のデータ処理装置。
【請求項５】
データ処理装置が有するデータを使用して所定の処理を実行する場合に、
前記データ処理装置は、
暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、
暗号化データを記憶するメモリと、
平文データをスクランブルキーによりスクランブルするスクランブル回路と、
前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、
乱数生成回路と、
前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、
を有し、
前記制御部が、前記メモリから前記暗号化データを読み出す第１の工程と、
前記暗号回路が、前記第１の工程において読み出された暗号化データを復号する第２の工程と、
前記第２の工程において復号された平文データを前記スクランブル回路がスクランブルする第３の工程と、
前記第３の工程においてスクランブルされた前記平文データを前記一時メモリが記憶する第４の工程と、
前記第４の工程において一時メモリに記憶された、前記スクランブルされた平文データを前記スクランブル回路がデスクランブルする第５の工程と、
前記第５の工程においてデスクランブルされた前記平文データを使用して、前記制御部が所定の処理を実行する第６の工程と、
前記第６の工程における所定の処理の実行が終了したことを条件に、前記スクランブル回路は、前記乱数生成回路が生成した乱数を新しいスクランブルキーとして更新する第７の工程と、
を有するデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化されたデータを扱うデータ処理装置及びデータ処理方法に関する。
【背景技術】
【０００２】
ＩＣ（Integrated Circuit）チップを埋め込んだＩＣカードが広く普及している。
不揮発性メモリに記憶されるデータは、例えばＤＥＳ（Data Encryption Standard）などの暗号アルゴリズムにより暗号化されており、正当な復号化方法による復号化処理を行わないと暗号化されたデータを読み出し利用することができないように構成される。
すなわち、ＩＣカードに記憶された暗号化データを使用して各種処理を実行するためには、ＩＣカードと接触或いは非接触により通信を行う外部ホストなどの通信装置により暗号化されたデータを復号する必要がある。
【０００３】
しかし、単なるデータの暗号化だけでは、暗号の鍵データが流出してしまうだけで、データの不正入手を目的とする第三者によりＩＣカード内の暗号化データを読み出し利用されてしまう恐れがある。
【０００４】
例えば、ＩＣカードの電源端子に抵抗を直列につなぎ、抵抗端子間の電圧差によって電源電圧の電流値換算を行い、この電流値の変動を統計的に観測するＤＰＡ（Differential Power Analysis）法という方法がある。
特許文献１には、ＤＰＡ法に対する対タンパ性を備えたＩＣカードのセキュリティ保護方法が開示されている。
【０００５】
【特許文献１】特開２００２−３２８８４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された方法以外にも、例えば保存時にデータ及びデータアドレスをスクランブル処理する回路を実装し、不揮発性メモリ上のデータの物理的な配置を無作為に攪拌するようにする防御方法がある。
このような技術を利用すれば、不揮発性メモリ上に保存されているデータを第三者が読み出そうとしても、データがばらばらに攪拌されてメモリ上に記憶されているため、意味のあるデータとしてデータを取り出すことは困難となる。
【０００７】
ＩＣカードのセキュリティを司るＬＳＩ（Large Scale Integration）は、暗号化を行うための暗号鍵の生成プロセスや、暗号化され不揮発性メモリに記憶された暗号化データの内容を更新する。このとき、ＬＳＩは暗号化データを一時的に一時メモリ（揮発性メモリ或いはレジスタ）に平文に展開して使用する。
データの不正入手を目的とする第三者の攻撃方法として、一時メモリに一時的に展開された平文データを取り出そうとする方法がある。例えば、レーザ照射等によりＬＳＩのＣＰＵ（Central Processing Unit）に誤動作を起こさせ、本来アクセスすべきでないエリアにアクセスさせたり、平文化されたデータを外部に流出させたりするＦＩＡという方法である。
【０００８】
このような攻撃方法に対しては、特許文献１に開示された技術や、上述したデータをスクランブルする防御方法は全く効果が無い。
このような攻撃方法に対する対処として、データが平文化され使用された後、平文のままＩＣカード内に長期間残留しないように、平文データを乱数などにより上書きして外部に流出できないようにする対処方法がある。
しかし、このような対処方法はＣＰＵに多大な処理負荷をかけるため、処理速度が要求される場合にはとることが難しい。特に、消費電力の問題からＣＰＵの処理能力を高くしにくいＩＣカードなどでは、暗号鍵のビット長の増加や、扱うデータ量の増大につれて十分な処理速度を確保することが難しくなっている。
【０００９】
このような状況に鑑み、本発明は、処理速度が要求される場合でも対タンパ性を強めたデータ処理装置及びデータ処理方法を提供する。
【課題を解決するための手段】
【００１０】
第１の発明のデータ処理装置は、暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、暗号化データを記憶するメモリと、平文データをスクランブルキーによりスクランブルするスクランブル回路と、前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、乱数生成回路と、前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、を有し、前記制御部は、前記メモリから前記暗号化データを読み出し、前記暗号回路に当該暗号化データを復号させ、平文データを前記スクランブル回路によりスクランブルさせて前記一時メモリに記憶した後、当該スクランブルされた平文データを前記スクランブル回路によりデスクランブルさせた平文データを使用して前記所定の処理を実行し、前記スクランブル回路は、前記制御部の前記所定の処理の実行終了を条件に、前記乱数生成回路により生成された乱数を新しいスクランブルキーとして更新する。
【００１１】
第２の発明のデータ処理方法は、データ処理装置が有するデータを使用して所定の処理を実行する場合に、前記データ処理装置は、暗号化データを平文データに復号する復号化処理、或いは平文データを暗号化データに暗号化する暗号化処理を実行する暗号回路と、暗号化データを記憶するメモリと、平文データをスクランブルキーによりスクランブルするスクランブル回路と、前記スクランブル回路によりスクランブルされた平文データを記憶する一時メモリと、乱数生成回路と、前記一時メモリに記憶された平文データを使用し所定の処理を実行する制御部と、を有し、前記制御部が、前記メモリから前記暗号化データを読み出す第１の工程と、前記暗号回路が、前記第１の工程において読み出された暗号化データを復号する第２の工程と、前記第２の工程において復号された平文データを前記スクランブル回路がスクランブルする第３の工程と、前記第３の工程においてスクランブルされた前記平文データを前記一時メモリが記憶する第４の工程と、前記第４の工程において一時メモリに記憶された、前記スクランブルされた平文データを前記スクランブル回路がデスクランブルする第５の工程と、前記第５の工程においてデスクランブルされた前記平文データを使用して、前記制御部が所定の処理を実行する第６の工程と、前記第６の工程における所定の処理の実行が終了したことを条件に、前記スクランブル回路は、前記乱数生成回路が生成した乱数を新しいスクランブルキーとして更新する第７の工程と、を有する。
【発明の効果】
【００１２】
本発明は、処理速度が要求される場合でも対タンパ性を強めることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明のデータ処理装置を実装した実施形態のＩＣカード１００について説明する。
図１は、本実施形態のＩＣカード１００の使用例としてのＩＣカードシステム１０００の構成の一例を示す図である。
図１に示すように、ＩＣカードシステム１０００は、外部ホスト１と、ＩＣカード１００とを有する。
外部ホスト１は、例えば、カードリーダなどのカード読取装置であり、ＩＣカード１００に記憶されているデータを読み出したり、ＩＣカード１００に所定の処理を実行させたりする指示を出す。
【００１４】
外部ホスト１とＩＣカード１００とは、接触型或いは非接触型の通信を行う。
接触型と非接触型のいずれの通信を行うかは、ＩＣカード１００のタイプによって異なる。
接触型のＩＣカード１００は、外部ホスト１のリーダ／ライタ端子と接触するモジュール端子を持ち、ＩＣカード１００とリーダ／ライタ端子が直接接触して有線通信を行う。確実な通信を行うことができる接触型のＩＣカードは主に、より堅牢なセキュリティが求められる決済や認証の分野で使われる。
一方、非接触型のＩＣカード１００は、カード内部にアンテナの役目を果たすコイルが内蔵され、端末のリーダ／ライタから発生している磁界にコイルが触れることにより電流が生じ、これによって無線通信を行う。
非接触型のＩＣカードは、鉄道改札や入退室管理など、より利便性を求められる場面において活用される。
【００１５】
ＩＣカード１００は、その内部にＩＣチップ３を有する。
ＩＣチップ３は、ＩＣカード１００の機能を実現するデータ処理モジュールである。
ＩＣチップ３は、本発明のデータ処理装置に対応している。
【００１６】
次に、ＩＣチップ３の各構成について詳細に説明する。
図２は、ＩＣチップ３の構成の一例について説明するためのブロック図である。
図２に示すように、ＩＣチップ３はＣＰＵ４、ＲＡＭ５、暗号回路６、通信Ｉ／Ｆ７、ＲＮＧ８、ＥＥＰＲＯＭ１０、セキュアＲＡＭ１３、スクランブル回路１４を有する。
なお、ＣＰＵ４が本発明の制御部に対応する。
また、暗号回路６が本発明の暗号回路に対応する。
また、ＲＮＧ８が本発明の乱数生成回路に対応する。
また、ＥＥＰＲＯＭ１０が本発明のメモリに対応する。
また、セキュアＲＡＭ１３が本発明の一時記憶回路に対応する。
また、スクランブル回路１４が本発明のスクランブル回路に対応する。
ＩＣチップ３は、所定の処理の実行に使用されるセキュリティ性が高いデータ（以下秘密データと称する）を記憶している。
【００１７】
以下、ＩＣチップ３の各構成の詳細について説明する。
ＣＰＵ４は、ＩＣチップ３の各構成の動作を統括的に制御する制御ユニットである。
ＣＰＵ４の詳細な動作については後述する。
ＲＡＭ（Random Access Memory）５は、例えば揮発性メモリにより構成された一時メモリである。
【００１８】
暗号回路６は、データの暗号化或いは復号化を行う回路である。
暗号化の方式としては、例えばＤＥＳ（Data Encryption Standard）、ＡＥＳ（Advanced Encryption Standard）、ＦＥＡＬ（the Fast Data Encipherment Algorithm）などさまざまな方式が考案されている。
本発明の暗号回路が使用する暗号化方式は、特に限定しない。上記のような暗号化方式の他、既存の暗号化方式のいずれを採用してもよい。
【００１９】
通信Ｉ／Ｆ（Interface）７は、外部ホスト１と接触式或いは非接触式の通信を行うための通信モジュールである。
通信Ｉ／Ｆ７は、ＩＣカード１００が接触式のＩＣカードである場合には、外部ホスト１のリーダ／ライタ端子と直接接触する端子モジュールである。また、ＩＣカード１００が非接触式のＩＣカードである場合には、アンテナの役割を果たすコイルを含む通信モジュールである。
【００２０】
ＲＮＧ（Random Number Generator）８は、乱数を生成する回路である。
ＲＮＧ８の乱数生成の方法は、本実施形態では特に限定しない。既存の技術を利用することができる。
ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）１０は、ＣＰＵ４がＩＣカード１００の各処理に必要なデータを記憶するためのメモリ装置である。ＥＥＰＲＯＭ１０は、ＩＣカードの用途に応じて、ＩＣカード１００の使用者の個人情報、ユーザに関する様々な情報（交通機関の利用履歴、金額やクレジットカードの利用履歴、金額など）などを記憶する。
ＥＥＰＲＯＭ１０に記憶されるデータは、ユーザとＩＣカードシステム１０００の管理者以外の第三者には知られてはならないデータが殆どとなる。以後、ＥＥＰＲＯＭ１０に記憶されるデータを秘密データと称する。
ＥＥＰＲＯＭ１０において、秘密データは暗号化され、暗号化データ１６として記憶される。
【００２１】
セキュアＲＡＭ１３は、ＩＣチップ３においてＣＰＵ４が処理を実行する上で使用されるデータ類を格納するための一時メモリである。すなわち、セキュアＲＡＭ１３は、ＣＰＵ４の処理のためのメモリエリアである。
セキュアＲＡＭ１３としては、一般に揮発性メモリが使用される。
セキュアＲＡＭ１３は、ＣＰＵ４から直接アクセスでき、動作が高速であるように設計されている。ＣＰＵ４は、ＥＥＰＲＯＭ１０に記憶された暗号化データ１６に対して所定の処理を行なう際には、必要なものだけを復号してセキュアＲＡＭ１３に読み出し、使用する。
【００２２】
スクランブル回路１４は、ＣＰＵ４がＥＥＰＲＯＭ１０から読み出した暗号化データ１６を暗号回路６により復号化して平文データ１７を生成させ、セキュアＲＡＭ１３に一時記憶させるときに、スクランブルキーを用いてスクランブルをかける回路である。
スクランブル回路１４が平文データ１７にスクランブルをかけることにより、セキュアＲＡＭ１３にはスクランブルをかけられたデータが一時記憶されることになる。
したがって、第三者がＩＣカード１００から強制的に秘密データを読み出す攻撃を仕掛けたとしても、セキュアＲＡＭ１３に記憶されているのはスクランブルされたデータである。すなわち、そのまま読み出されたところでスクランブルキーがないと意味のあるデータとはならない。このため、スクランブル回路１４により、第三者からの攻撃に強く、対タンパ性の高いＩＣカード１００を構成することができる。
【００２３】
スクランブル回路１４が平文データ１７に対してスクランブルをかける方法としては、本実施形態では、平文データ１７とスクランブルキーとのビットごとの排他的論理和をとる方法を採用する。
排他的論理和とは、共に真或いは共に偽のときに、偽を返す論理演算である。
ビットごとの排他的論理和では、すなわち、２つのデータを比較し、ビットごとに、どちらかのデータが１、片方のデータが０であれば１を返し、共に１或いは０であった場合には０を返す。
このような演算により、平文データ１７とスクランブルキーの両方がないと解読できないスクランブルデータを生成することができる。
なお、平文データ７は、データそのものと、データの位置を示す情報（アドレス情報）の両方を含むものとする。
【００２４】
スクランブル回路１４は、スクランブルキーを記憶するためのキーレジスタ１５を有する。
キーレジスタ１５に記憶されるスクランブルキーは、ＲＮＧ８により生成された乱数である。排他的論理和を使用したスクランブルでは、スクランブルキーの情報量が少ないと、データ１７の情報が漏洩してしまう恐れがある。このためスクランブルされたデータの安全のためには、スクランブルキーの長さは必要十分に確保する必要がある。例えば、ＣＰＵ４のデータ処理単位が３２ｂｉｔであった場合は、少なくとも６４ｂｉｔ程度は確保することが望ましい。
従ってＲＮＧ８は、例えば６４ｂｉｔの乱数を生成し、予めキーレジスタ１５に記憶しておく。ＲＮＧ８の乱数を生成しキーレジスタ１５に記憶させるタイミングは、例えばＩＣカード１００の起動時でよい。
【００２５】
ここで、上述したように、スクランブル回路１４によりスクランブルされたデータがセキュアＲＡＭ１３に記憶され、このデータが第三者により読み出されたとしてもこのデータだけでは平文データ１７を得ることができず、安全である。しかし、スクランブルキーを一緒に読み出されてしまえば第三者にも容易に平文データ１７が得られてしまう。
このため、本実施形態のＩＣカード１００では、ＣＰＵ４がセキュアＲＡＭ１３からスクランブルされたデータを読み出し、デスクランブルして所定の処理を終了したことを条件に、スクランブルキーを他の乱数で上書きしてしまう処理を行う。
【００２６】
詳細に説明すると、ＣＰＵ４は、セキュアＲＡＭ１３からスクランブルされたデータを使用して所定の処理を行う場合、まずこのデータをセキュアＲＡＭ１３から読み出してスクランブル回路１４にデスクランブルさせる。
そして、デスクランブルされた平文データ１７を使用して、所定の処理を行う。所定の処理とは、例えば外部ホスト１の要求に応じた、秘密データの編集などの処理である。
ＣＰＵ４による所定の処理の終了後、使用された平文データ１７は暗号回路６により再度暗号化されて一旦ＲＡＭ５に記憶される。
この時点で、ＣＰＵ４による所定の処理が終了しているため、スクランブル回路１４は、ＲＮＧ８により生成された乱数をキーレジスタ１５に上書きする。上書きされた新たな乱数は、新たなスクランブルキーとして使用される。
したがって、ＣＰＵ４による所定の処理終了後は、所定の処理の際に使用されたスクランブルキーが新しいスクランブルキーの上書きにより消去されてしまうことになる。
このため、第三者によりスクランブルされたデータとスクランブルキーの両方が攻撃により読み出され、秘密データが漏れてしまう可能性を最大限に低下させることができる。
また、レーザ等によるＦＩＡにより、ＣＰＵ４が誤ってセキュアＲＡＭ１３からスクランブルされたデータを読み出してしまった場合でも、スクランブルキーの更新以降は、すでに秘密データは意味のない乱数データとしてしか読み出せない。このため、秘密データの漏洩が完全に防止されることになる。
なお、ＣＰＵ４による所定の処理が終了したことは、ＣＰＵ４によりスクランブル回路１４に通知され、これにしたがってスクランブル回路１４はスクランブルキーを更新する。
【００２７】
なお、スクランブル回路１４がスクランブルキーを更新する契機としては、ＣＰＵ４からの所定の処理終了通知の他に、例えば暗号回路６の暗号化終了の通知や、通信Ｉ／Ｆ７を介した外部ホスト１からの要求であってもよい。
【００２８】
以下、スクランブル回路１４の回路構成例について説明する。
図３は、スクランブル回路１４の回路構成の一例を示した図である。
図３に示すように、スクランブル回路１４は２つのＸＯＲ回路（排他的論理和を実現する回路）１４１及び１４２を有する。
ＸＯＲ回路１４１はセキュアＲＡＭ１３に対する書き込み用の回路であり、ＸＯＲ回路１４２はセキュアＲＡＭ１３からの読み出し用の回路である。
ＸＯＲ回路１４１は、ＣＰＵ４から供給される平文データ１７と、キーレジスタから読み出したスクランブルキーとを基に、ビットごとの排他的論理和をとり、結果をセキュアＲＡＭ１３に書き込む。
ＸＯＲ回路１４２は、反対に、セキュアＲＡＭ１３から読み出されたスクランブルされたデータと、キーレジスタから読み出したスクランブルキーとを基に、ビットごとの排他的論理和をとり、結果をＣＰＵ４に出力する。
このような構成により、スクランブル回路１４が実現できる。
【００２９】
次に、ＣＰＵ４が所定の処理を実行する際のＩＣカード１００の動作例について説明する。
図４は、ＣＰＵ４が所定の処理を実行する際のＩＣカード１００の動作例について説明するためのフローチャートである。
【００３０】
ステップＳＴ１：
通信Ｉ／Ｆ７は、外部ホスト１から所定の処理実行の要求を取得する。この時点でＩＣチップ３に電源が供給され、ＩＣチップ３の各機能が動作を開始する。
ステップＳＴ２：
スクランブル回路１４は、ＲＮＧ８が生成した乱数を、キーレジスタ１５にスクランブルキーとして記憶する。
本ステップにおいては、ＩＣチップ３の電源投入直後であるため、揮発性メモリであるキーレジスタ１５には何も記憶されていない。このため、本ステップにおいてＲＮＧ８により生成された乱数が記憶されないと、スクランブル回路１４がスクランブルをかけることができない。
【００３１】
ステップＳＴ３：
ＣＰＵ４は、ＥＥＰＲＯＭ１０から暗号化データ１６を読み出す。
ステップＳＴ４：
ステップＳＴ３においてＥＥＰＲＯＭ１０から読み出された暗号化データを暗号回路６が復号化する。
これにより、暗号化データ１６は平文データ１７となり、ＣＰＵ４による所定の処理に使用できる状態となる。
【００３２】
ステップＳＴ５：
スクランブル回路１４は、キーレジスタ１５に記憶されたスクランブルキーを用いて、ステップＳＴ４において復号された平文データ１７にスクランブルをかける処理を行う。
スクランブル回路１４がスクランブルをかける処理は、例えば平文データ１７とスクランブルキーとのビットごとの排他的論理和演算を行うことにより実現される。
ステップＳＴ６：
ＣＰＵ４は、ステップＳＴ５においてスクランブルされたデータを、セキュアＲＡＭ１３に一時記憶する。
これは、ＣＰＵ４が所定の外部ホスト１に要求された所定の処理を実行する際のメモリエリアを確保するためである。
【００３３】
ステップＳＴ７：
ＣＰＵ４は、外部ホスト１に要求された所定の処理を開始する。
所定の処理とは、例えば、秘密データの編集である。
ステップＳＴ８：
ＣＰＵ４は、セキュアＲＡＭ１３からスクランブルされたデータを読み出し、スクランブル回路１４にデスクランブルさせる。
スクランブル回路１４は、スクランブルされたデータと、スクランブルキーとのビットごとの排他的論理和演算を行うことによりデスクランブルを行う。
【００３４】
ステップＳＴ９：
ＣＰＵ４は、ステップＳＴ８においてデスクランブルされたデータ（平文データ１７）を使用して、所定の処理を実行する。
ステップＳＴ１０：
暗号回路６は、ステップＳＴ９におけるＣＰＵ４による所定の処理が終了した平文データ１７を暗号化して、暗号化データ１６を生成する。
【００３５】
ステップＳＴ１１：
ＣＰＵ４は、ステップＳＴ１０において生成された暗号化データ１６をＲＡＭ５に一時格納する。
本ステップＳＴ１１まででＣＰＵ４による予定の処理が終了する。
ステップＳＴ１２：
ＣＰＵ４は、所定の処理が終了したことをスクランブル回路１４に通知する。
【００３６】
ステップＳＴ１３：
スクランブル回路１４は、ステップＳＴ１２において通知された所定の処理の終了に応じて、ＲＮＧ８が生成した乱数によりキーレジスタ１５のスクランブルキーを更新する。
ステップＳＴ１４：
ＣＰＵ４は、ステップＳＴ１１においてＲＡＭ５に一時記憶した所定の処理終了後の暗号化データ１６をＥＥＰＲＯＭ１０に上書きする。
【００３７】
ステップＳＴ１５：
ＣＰＵ４は、通信Ｉ／Ｆ７を介して外部ホスト１に要求された所定の処理が終了したことを通知する。
【００３８】
以上説明したように、本実施形態のＩＣカードシステム１０００は、外部ホスト１と、外部ホスト１による所定の処理の要求を通信Ｉ／Ｆ７を介して取得し、予め記憶された秘密データを使用して所定の処理を実行するＩＣカード１００を有する。
ＩＣカード１００は、ＣＰＵ４と、暗号回路６と、ＲＮＧ８と、ＥＥＰＲＯＭ１０と、セキュアＲＡＭ１３と、スクランブル回路１４とを有する。
ＣＰＵ４は、所定の処理の実行時には、ＥＥＰＲＯＭ１０に記憶された暗号化データ１６を読み出し、暗号回路６に復号化させて平文データ１７を生成する。次に、平文データ１７をスクランブル回路１４によりスクランブルキーを使用したスクランブル処理を行わせる。スクランブル回路１４によりスクランブルされたデータはセキュアＲＡＭ１３に一時記憶される。
そして、ＣＰＵ４はセキュアＲＡＭ１３に記憶されたデータをスクランブル回路１４にデスクランブルさせて平文データ１７を取得し、これを使用して所定の処理を実行する。
ＣＰＵ４は、所定の処理が終了したら、処理済みのデータを暗号回路６に暗号化させる。そして、ＣＰＵ４は所定の処理が終了したことをスクランブル回路１４に通知し、スクランブル回路１４はこれに応じてＲＮＧ８が生成した乱数によりスクランブルキーを更新する。
【００３９】
以上のような構成により、本実施形態のＩＣカードシステム１０００は、平文データ１７が所定の処理実行中のＣＰＵ４内以外では、スクランブルされた状態でセキュアＲＡＭ１３に一時記憶されているだけに過ぎない。
このため、たとえ第三者によりセキュアＲＡＭ１３に記憶されたデータが読み出されたとしても、このデータはスクランブルされているため、第三者には意味のあるデータとして見えない。これにより、ＩＣカード１００の第三者の攻撃に対する耐性（対タンパ性）を向上させることができる。
【００４０】
なお、第三者にセキュアＲＡＭ１３に記憶されたスクランブルされたデータと、スクランブル回路１４のキーレジスタ１５に記憶されたスクランブルキーの両方が読み出された場合には、第三者でも秘密データを復元可能となってしまう。
しかし、本実施形態のＩＣカードシステム１０００では、ＣＰＵ４による所定の処理がスクランブル回路１４に通知され、これに応じてスクランブルキーが更新される。このため、所定の処理終了後は非常に短い時間しかスクランブルキーが存在しない。具体的には、例えばＣＰＵ４の命令実行サイクルにして数サイクル程度と考えられる。すなわち、従来の平文データに乱数を上書きして平文データの読み出しに対抗していた技術よりも、非常に高速で所定の処理に使用したスクランブルキーの消去を行うことができる。
このため、スクランブルされたデータとスクランブルキーの両方が読み出され第三者によりスクランブルが解かれてしまう事態を最大限に回避することができ、対タンパ性を大幅に向上させることが可能となっている。
【００４１】
本発明は上述した実施形態には限定されない。
すなわち、本発明の実施に際しては、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し様々な変更並びに代替を行ってもよい。
上述した実施形態においては、スクランブル回路１４のスクランブル処理をビットごとの排他的論理和演算により行っていたが、本発明はこれには限定されない。
本発明では、スクランブル回路は対称暗号アルゴリズム（共通鍵を使用した暗号化方法）であれば、どのような方法を使用してもよい。
【００４２】
また、上述した実施形態では、ＩＣカード１００は接触型のＩＣカード或いは非接触型のＩＣカードであるとしたが、近年では両方に対応したＩＣカードも普及している。
本発明のＩＣカードが接触型と非接触型の両方に対応していた場合には、片方の通信における処理が終了した場合に、対応したスクランブルキーをその都度更新するようにすればよい。
また、本発明には、上述した構成のＩＣカードシステム１０００のＩＣチップ３にウォッチドッグタイマを加えた構成も含まれる。ＩＣチップ３全体がシステムエラーなどにより動作不能に陥った場合でも所定の時間ごとにＣＰＵ４に対してスクランブルキーの更新などを行わせるようにウォッチドッグタイマを予めセットしておく。これにより、ＩＣチップ３が動作不能状態であっても所定時間経過後にはスクランブルキーの更新が行われるため、動作不能状態中に第三者にスクランブルデータとスクランブルキーの両方を同時に読み出されてしまう事態を防止することができる。
【図面の簡単な説明】
【００４３】
【図１】図１は、ＩＣカードシステムの構成の一例を示す図である。
【図２】図２は、ＩＣチップの構成の一例について説明するためのブロック図である。
【図３】図３は、スクランブル回路の回路構成の一例を示した図である。
【図４】図４は、ＣＰＵが所定の処理を実行する際のＩＣカードの動作例について説明するためのフローチャートである。
【符号の説明】
【００４４】
１０００…ＩＣカードシステム、１００…ＩＣカード、１…外部ホスト、３…ＩＣチップ、４…ＣＰＵ、５…ＲＡＭ、６…暗号回路、７…平文データ、８…暗号回路、１０…ＥＥＰＲＯＭ、１３…セキュアＲＡＭ、１４…スクランブル回路、１４１…ＸＯＲ回路、１４２…ＸＯＲ回路、１５…キーレジスタ、１６…暗号化データ、１７…平文データ
【図１】
2010092117.tif 000003
【図２】
2010092117.tif 000004
【図３】
2010092117.tif 000005
【図４】
2010092117.tif 000006