(57)【要約】【課題】  ＤＰＡに対して耐タンパー性をもたせることのできるＩＣカードを提供する。【解決手段】  ＩＣカードには、平文を暗号化するプログラムである暗号モジュール１００が備えられている。暗号モジュール１００は、平文を暗号化する暗号鍵として、正規な暗号鍵である正規暗号鍵１３１と、ダミーの暗号鍵であるダミー鍵１３２（２つ）とを、暗号鍵テーブル１３０に記憶している。暗号モジュール１００が平文を暗号化するときは、暗号鍵テーブル１３０に備えられたすべての暗号鍵をランダムの順で使用して平文を暗号化し、正規暗号鍵１３１で暗号化した暗号文を出力する。正規暗号鍵１３１が使用されるタイミングをランダムにすることで、ＩＣカードの消費電流の波形と暗号鍵との相関は弱まり、ＩＣカードに耐タンパー性をもたせることのできる。【選択図】      図３
2007067942.tif 000002
【特許請求の範囲】
【請求項１】
データを暗号化／復号する機能を備えたＩＣカードであって、前記ＩＣカードは、複数の暗号鍵を記憶する暗号鍵記憶手段と、前記暗号鍵記憶手段に記憶した暗号鍵を用いてデータを暗号化／復号する暗号処理手段を備え、前記暗号処理手段は、前記暗号鍵記憶手段に記憶されたそれぞれの暗号鍵をランダムの順番で用いてデータを暗号化／復号することを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、前記暗号鍵記憶手段に記憶される暗号鍵の一つは、前記ＩＣカードを利用したトランザクションで使用される暗号鍵である正規暗号鍵で、残りの暗号鍵は、前記ＩＣカードを利用したトランザクションで使用されない暗号鍵であるダミー鍵であって、前記暗号処理手段は、前記正規暗号鍵を用いて暗号化／復号したデータを、前記ＩＣカードを利用したトランザクションに使用することを特徴とするＩＣカード。
【請求項３】
ＩＣカードに実装されるＩＣチップを、請求項１または請求項２に記載の前記暗号処理手段として動作させるためのＩＣカード用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードに関する技術であり、更に詳しくは、ＩＣカードに記憶された暗号鍵の不正な解読を防止する技術に関する。
【背景技術】
【０００２】
データを秘匿に記憶できるＩＣカードには、ユーザ認証の用途やデータ通信の機密性を保持するために、ＤＥＳ（Data Encryption Standard）の暗号演算機能を備えていることが一般的である。ＤＥＳの暗号演算では、ビット位置転置演算とＸＯＲ演算を組み合わせることでデータを暗号化／複合するため、ＤＥＳの暗号演算はハードウェアで実現しやすく、ＩＣカードの暗号演算機能は、ＤＥＳ用の専用演算回路で実現されることが多い。
【０００３】
ＩＣカードがＤＥＳ用の暗号演算回路を備えることで、ＤＥＳの暗号演算機能を実現するソフトウェアを開発する手間が省けると同時に、ソフトウェアで実現するときよりも、暗号演算の高速化が図れるメリットがあるが、その一方で、ハードウェアの特性を用いてＤＥＳの暗号鍵が解読できてしまう場合がある。
【０００４】
ＤＰＡ（Differential Power Analysis ）は、ハードウェアの特性を用いてＤＥＳの暗号鍵を解読する手法の一つで、ＤＥＳの暗号演算中にＩＣチップに流れる込む消費電流が、ＩＣカードに記憶された暗号鍵と相関を有する点に着目した手法で、ＤＰＡにおいては、暗号化される平文を変化させながら、ＤＥＳの暗号演算中の消費電流を幾つも測定し、測定したデータを統計処理することで、ＩＣカードに記憶されたＤＥＳの暗号鍵を解読する。
【０００５】
ＤＰＡに対する耐タンパー性を実現する技術としては、既に様々な技術が開示され、例えば、特許文献１で開示されている暗号化装置は、あるマスクパターンとそのビット反転したマスクパターンが設けられたデータ攪拌部を備え、平文に依存したビットをマスクするマスクパターンをランダムに選択することで、ＤＰＡに対する耐タンパー性を実現する技術が開示されている。また、特許文献２においては、暗号化処理実行中に必要な中間データを乱数に依存して変化させることで、ＤＰＡに対する耐タンパー性を実現する暗号化装置が開示されている。
【特許文献１】特開２０００−６６５８５号公報
【特許文献２】特開２０００−３０５４５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述した技術も含め、ＤＰＡに対する耐タンパー性を実現する様々な技術が公知になっているが、本発明の目的は、データを暗号化／復号するタイミングを毎回変更し、ＩＣチップの消費電流とＩＣカードに記憶された暗号鍵と相関を無くすことで、ＤＰＡに対して耐タンパー性をもたせることのできるＩＣカード、および、ＩＣカード用プログラムを提供することである。
【課題を解決するための手段】
【０００７】
上述した課題を解決する第１の発明は、データを暗号化／復号する機能を備えたＩＣカードであって、前記ＩＣカードは、複数の暗号鍵を記憶する暗号鍵記憶手段と、前記暗号鍵記憶手段に記憶した暗号鍵を用いてデータを暗号化／復号する暗号処理手段を備え、前記暗号処理手段は、前記暗号鍵記憶手段に記憶されたそれぞれの暗号鍵をランダムの順番で用いてデータを暗号化／復号することを特徴とするＩＣカードである。
【０００８】
更に、第２の発明は、第１の発明に記載のＩＣカードにおいて、前記暗号鍵記憶手段に記憶される暗号鍵の一つは、前記ＩＣカードを利用したトランザクションで使用される暗号鍵である正規暗号鍵で、残りの暗号鍵は、前記ＩＣカードを利用したトランザクションで使用されない暗号鍵であるダミー鍵であって、前記暗号処理手段は、前記正規暗号鍵を用いて暗号化／復号したデータを、前記ＩＣカードを利用したトランザクションに使用することを特徴とするＩＣカードである。
【０００９】
更に、第３の発明は、ＩＣカードに実装されるＩＣチップを、第１の発明または第２の発明に記載の前記暗号処理手段として動作させるためのＩＣカード用プログラムである。
【発明の効果】
【００１０】
上述した発明によれば、ＩＣカードが複数の暗号鍵を記憶し、それぞれの暗号鍵をランダムの順番で用いてデータを暗号化処理することで、それぞれの暗号鍵が使用される順番、すなわち、暗号鍵が使用されるタイミングはランダムになるため、消費電流の波形と暗号鍵との相関は弱まり、測定した消費電流のデータを統計処理しても、暗号鍵の解読をすることは困難になる。
【００１１】
また、ＩＣカードが記憶する複数の暗号鍵を、ＩＣカードを利用したトランザクションで使用される暗号鍵である正規暗号鍵と、ＩＣカードを利用したトランザクションで使用されない暗号鍵であるダミー鍵とし、ＩＣカードに備えられた暗号処理手段は、正規暗号鍵を用いて暗号化したデータを、ＩＣカードを利用したトランザクションに使用することで、ＩＣカードを利用する端末装置は、複数の暗号鍵を記憶する必要はなく、また、暗号化されたデータを復号する際に、暗号鍵を使用した順番を取得する必要はなくなる。
【発明を実施するための最良の形態】
【００１２】
ここから、本発明に係るＩＣカードについて、図を参照しながら詳細に説明する。
【００１３】
図１は、本発明に係るＩＣカード１の外観図である。図１で示したように、ＩＣカード１はキャッシュカードやクレジットカードと同じ大きさのプラスチック製カードで、ＩＣカード１には、ＩＣチップ２０がモールドされたＩＣモジュール１ａが実装されている。
【００１４】
図１においては、ＩＣカード１を接触ＩＣカードとして図示しているが、本発明は何らＩＣカード１の通信方式に依存するものではなく、無線でデータ通信する非接触ＩＣカード、または、接触データ通信と非接触データ通信の２つの通信機能を備えたデュアルインターフェースＩＣカードであってもよい。加えて、ＩＣカード１は、ＩＣモジュール１ａの近辺を短冊状に切り取った形状をしているＳＩＭ（Subscriber Identity Module）であってもよい。
【００１５】
図２は、ＩＣカード１に埋め込まれるＩＣチップ２０のハードウェア構成図である。ＩＣチップ２０には、演算機能およびＩＣチップ２０が具備するデバイスを制御する機能を備えた中央演算装置２１（CPU：Central Processing Unit）、読み出し専用の不揮発性メモリ２３（ROＭ：Read Only Memory、）、電気的に書換え可能な不揮発性メモリとしてＥＥＰＲＯＭ２４（EEPROM：Electrically Erasable Programmable Read-Only Memoryの略）、揮発性メモリとしてランダムアクセスメモリ２２（RAM：Random Access Memory）、乱数を生成する乱数生成回路２５、ＤＥＳ(DES :Data Encryption Standard)専用の演算回路であるＤＥＳ演算回路２６、および、外部の端末装置とデータ通信するためのＩ／Ｏ回路２７を備なえている。
【００１６】
本発明は、ＩＣカード１に実装されるＩＣチップ２０の仕様をなんら限定するものではなく、ＩＣカード１の用途に適した仕様のＩＣチップ２０を選択することができる。例えばＲＯＭ２３およびＥＥＰＲＯＭ２４の容量については限定しないし、書換え可能な不揮発性メモリはフラッシュメモリ等のＥＥＰＲＯＭ以外のメモリであっても構わない。またＩＣチップ２０は図示していない他のデバイスを備えていても構わない。
【００１７】
ＩＣカード１が有する本発明に係る機能は、ＩＣカード１に実装されたＩＣカード用プログラムで実現され、このＩＣカード用プログラムは、図２に示したハードウェア資源を利用し、ＣＰＵ２１を動作させるプログラムで、このプログラムコードはＲＯＭ２３またはＥＥＰＲＯＭ２４に記憶される。
【００１８】
図３は、ＩＣカードに実装され、本発明に係る機能を実現するＩＣカード用プログラムである暗号モジュール１００のブロック図である。暗号モジュール１００は、ＤＥＳ演算回路２６を制御し平文を暗号化／復号するプログラムである暗号演算ルーチン１１０と、乱数生成回路２５を制御し、乱数を生成させる乱数生成ルーチン１２０とを備え、ＩＣカード１を利用したトランザクションで使用される暗号鍵である正規暗号鍵１３１と、ＩＣカード１を利用したトランザクションで使用されない暗号鍵である複数のダミー鍵１３２が記憶された暗号鍵テーブル１３０を有している。
【００１９】
図４は、暗号モジュール１００が有する暗号鍵テーブル１３０を説明する図である。暗号鍵テーブル１３０には、正規暗号鍵１３１と、１つ以上のダミー暗号鍵１３２（ここでは、２つ）が記憶され、暗号鍵テーブル１３０に記憶されたそれぞれの暗号鍵には、暗号鍵を識別するための情報である鍵識別番号１３３が付加されている。図４では、正規暗号鍵１３１の鍵識別番号１３３は「０」で、一つのダミー暗号鍵１３２の鍵識別番号１３３は「１」で、もう一つのダミー暗号鍵１３２の鍵識別番号１３３は「２」である。
【００２０】
暗号モジュール１００がデータを暗号化／復号するときは、暗号鍵テーブル１３０に記憶されたすべての暗号鍵それぞれでデータは暗号化／復号され、データを暗号化／復号する暗号鍵の順番は、乱数生成ルーチン１２０が生成した乱数で決定される。データを暗号化／復号する暗号鍵の順番を乱数で決定することで、データを暗号化／復号するごとに、正規暗号鍵１３１を使用する正規暗号処理が実行されるタイミングが異なり、かつ、ダミー暗号鍵を使用するダミー暗号処理に伴う消費電流が発生するため、消費電流の波形と暗号鍵との相関は弱まり、測定した消費電流のデータを統計処理しても、正規暗号鍵１３１を解読することは困難になる。
【００２１】
ここからは、暗号モジュール１００がデータを暗号化する処理の内容についてのみ、手順を追いながら詳細に説明する。暗号モジュール１００がデータを暗号化する処理では、暗号モジュール１００への入力は平文となり、暗号モジュール１００の出力は、平文を正規暗号鍵１３１で暗号化した暗号文となる。図５は、暗号モジュール１００が平文を暗号化する手順を示したフロー図である。
【００２２】
この手順の最初のステップ１０は、暗号モジュール１００がＩＣカード１の他のモジュールから呼出され、暗号モジュール１００に平文が入力されるステップである。このステップにおいては、図外リーダライタから送信されたデータ、もしくは、ＲＯＭ２３またはＥＥＲＰＯＭ２４に記憶されたデータが平文として、暗号モジュール１００に入力される。
【００２３】
次のステップＳ１１は、暗号モジュール１００が平文を暗号化する暗号鍵（以下、ＷｏｒｋＫｅｙ）を、暗号鍵テーブル１３０の中からランダムに選択するステップである。このステップでは、暗号モジュール１００は乱数生成ルーチン１２０を動作させ、「０」から「暗号鍵テーブル１３０に記憶している暗号鍵の数―１」（ここでは、２）までの範囲の乱数を一つ生成する。
【００２４】
そして、暗号モジュール１００は、暗号鍵テーブル１３０に記憶している暗号鍵の中から、生成した乱数と鍵識別番号１３３が等しい暗号鍵をＷｏｒｋＫｅｙとして選択し、選択した暗号鍵の鍵識別番号１３３（または、生成した乱数）の履歴をＲＡＭ２２に記憶する。例えば、生成した乱数が「０」ならば、鍵識別番号１３３が「０」である正規暗号鍵１３１が選択され、生成した乱数が「１」ならば、鍵識別番号１３３が「１」であるダミー暗号鍵１３２が選択される。
【００２５】
次のステップＳ１２は、平文をＷｏｒｋＫｅｙで暗号化するステップである。このステップでは、暗号モジュール１００は、暗号演算ルーチン１１０を動作させ、ＤＥＳ演算回路２６を用いて、平文をＷｏｒｋＫｅｙで暗号化した暗号文を生成する。
【００２６】
次のステップＳ１３は、ＷｏｒｋＫｅｙが正規暗号鍵１３１であるか確認するステップである。ＷｏｒｋＫｅｙが正規暗号鍵１３１であるときはステップＳ１４ａに進み、ＷｏｒｋＫｅｙが正規暗号鍵１３１でないときはステップＳ１４ｂに進む。
【００２７】
ステップＳ１４ａでは、正規暗号処理の暗号文を格納するメモリバッファ（例えば、ＲＡＭの所定領域）に、ステップＳ１２で生成した暗号文を書込み、ステップＳ１５に進む。また、ステップＳ１４ｂでは、ダミー暗号処理の暗号文を格納するメモリバッファ（例えば、ＲＡＭの所定領域）に、ステップＳ１２で生成した暗号文を書込み、ステップＳ１５に進む。
【００２８】
ステップＳ１５は、暗号鍵テーブル１３０に記憶したすべての暗号鍵を使用したか確認するステップである。暗号鍵テーブル１３０に記憶したすべての暗号鍵を使用していないときは、ステップＳ１１に戻り、すべての暗号鍵を使用したときはステップＳ１６に進む。
【００２９】
なお、ステップＳ１５を経由してステップＳ１１に戻り、ランダムに選択した暗号鍵の鍵識別番号１３３がＲＡＭ２２の履歴に記憶されていた場合は、選択した暗号鍵を用いずに、ＲＡＭ２２の履歴に記憶されていない鍵識別番号１３３が選択されるまで、暗号モジュール１００は乱数を生成する。
【００３０】
すべての暗号鍵を使用したときはステップＳ１６では、暗号モジュール１００から他のモジュールに戻り、平文を正規暗号鍵で暗号化した暗号文が他のモジュールに受け渡されるステップである。このステップをもって、暗号モジュール１００が平文を暗号化する手順は終了する。
【００３１】
なお、暗号モジュール１００がデータを復号するときは、暗号モジュール１００への入力は暗号文となり、暗号モジュールからの出力は暗号文を復号した平文となることを考慮すれば、上述した内容から、暗号モジュール１００がデータを復号するときの処理内容は明らかであるため、本明細書では説明を省く。
【図面の簡単な説明】
【００３２】
【図１】ＩＣカードの外観図。
【図２】ＩＣチップのハードウェア構成図。
【図３】暗号モジュールのブロック図。
【図４】暗号鍵テーブルを説明する図。
【図５】暗号モジュールが平文を暗号化する手順を示したフロー図。
【符号の説明】
【００３３】
１  ＩＣカード
１００  暗号モジュール
１１０  暗号演算ルーチン
１２０  乱数生成ルーチン
１３０  暗号鍵テーブル
１３１  正規鍵、１３２  ダミー鍵、１３３  鍵識別番号
２０  ＩＣチップ
【図１】
2007067942.tif 000003
【図２】
2007067942.tif 000004
【図３】
2007067942.tif 000005
【図４】
2007067942.tif 000006
【図５】
2007067942.tif 000007