(57)【要約】【課題】  ＩＣカードや情報処理装置の消費電力波形内の暗号処理部を特定することを困難にすること。【解決手段】所定ビット数の第１のデータブロックと鍵情報とを非線形関数Ｆへ作用させて得られた結果値と第１のデータブロックと同じビット数の第２のデータブロックとを論理演算し、第２のデータブロックを第１のデータブロックに置き換えるとともに、第１のデータブロックを論理演算の結果値に置き換えるステップを所定回数繰り返し実行することにより、暗号化処理を行う暗号演算回路において、第１及び第２のデータブロックを保持する手段(504,506)と、第１及び第２のデータブロックとビット数が同じである第１及び第２のダミーデータブロックを保持する手段(505,507)と、第１及び第２のデータブロックを使った暗号化処理を所定回数実行する間に、第１及び第２のダミーデータブロックを使ったダミー暗号化処理の実行を適宜挿入するような制御をする手段と(502,503,508,509)を備えた。【選択図】      図１
2006174274.tif 000002
【特許請求の範囲】
【請求項１】
所定ビット数の第１のデータブロックと鍵情報とを所定の非線形関数Ｆへ作用させて得られた結果値と前記第１のデータブロックと同じビット数の第２のデータブロックとを論理演算し、前記第２のデータブロックを第１のデータブロックに置き換えるとともに、前記第１のデータブロックを前記論理演算の結果値に置き換えるステップを所定回数繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号化処理を実行する暗号演算回路において、
前記第１及び第２のデータブロックを保持する手段と、
前記第１及び第２のデータブロックとビット数が同じである第１及び第２のダミーデータブロックを保持する手段と、
前記第１及び前記第２のデータブロックを使った暗号化処理を所定回数実行する間に、前記第１及び前記第２のダミーデータブロックを使ったダミー暗号化処理の実行を、所定の条件に基づいて適宜挿入するような制御をする手段を具備することを特徴とする暗号演算回路。
【請求項２】
請求項１に記載の暗号演算回路において、演算中の中間データをビット単位又はバイト単位でデータ入れ替えを行うデータ処理手段をさらに具備することを特徴とする暗号演算回路。
【請求項３】
請求項１または請求項２に記載の暗号演算回路において、前記制御手段は、前記ダミー暗号処理の挿入回数を、前記暗号処理の回数よりも多くすることを特徴とする暗号演算回路。
【請求項４】
所定ビット数の第１のデータブロックと鍵情報とを所定の非線形関数Ｆへ作用させて得られた結果値と前記第１のデータブロックと同じビット数の第２のデータブロックとを論理演算し、前記第２のデータブロックを第１のデータブロックに置き換えるとともに、前記第１のデータブロックを前記論理演算の結果値に置き換えるステップを所定回数繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号化処理を実行する暗号演算回路を有するＩＣチップと、
前記ＩＣチップが搭載されたカードと、を備えたＩＣカードにおいて、
前記暗号演算回路は、
前記第１及び第２のデータブロックを保持する手段と、
前記第１及び第２のデータブロックとビット数が同じである第１及び第２のダミーデータブロックを保持する手段と、
前記第１及び前記第２のデータブロックを使った暗号化処理を所定回数実行する間に、前記第１及び前記第２のダミーデータブロックを使ったダミー暗号化処理の実行を、所定の条件に基づいて適宜挿入するような制御をする手段を具備することを特徴とするＩＣカード。
【請求項５】
所定ビット数の第１のデータブロックと鍵情報とを所定の非線形関数Ｆへ作用させて得られた結果値と前記第１のデータブロックと同じビット数の第２のデータブロックとを論理演算し、前記第２のデータブロックを第１のデータブロックに置き換えるとともに、前記第１のデータブロックを前記論理演算の結果値に置き換えるステップを所定回数繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号化処理を実行する暗号演算回路を有する情報処理装置において、
前記暗号演算回路は、
前記第１及び第２のデータブロックを保持する手段と、
前記第１及び第２のデータブロックとビット数が同じである第１及び第２のダミーデータブロックを保持する手段と、
前記第１及び前記第２のデータブロックを使った暗号化処理を所定回数実行する間に、前記第１及び前記第２のダミーデータブロックを使ったダミー暗号化処理の実行を、所定の条件に基づいて適宜挿入するような制御をする手段を具備することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号演算回路と、該暗号演算回路を有する情報処理装置及びＩＣカードに関する。
【背景技術】
【０００２】
ＩＣ（Integrated Circuit）カードは、クレジットカード、定期券、その他の商取引の決済に使われるだけでなく、社員証、会員証、保険証などのＩＤカードとしても様々な分野で使われるようになってきている。これは、従来の磁気カードに比べ、ＩＣとしてＣＰＵ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭなどを持つため様々な機能が行えるようになっただけでなく、偽造が難しいためセキュリティの面でも大きく向上したことが要因である。なお、ＩＣカードの詳細は、非特許文献１に規定されている。
【０００３】
ＩＣカードでは、個人情報など重要な情報を格納しているため、暗号を用いてそのデータを暗号化したり、カードユーザの認証を行ったりしている。そのため通常の使用においては十分なセキュリティが保たれている。しかし、ＩＣカードが暗号処理を行っている瞬間の消費電力波形を取得し解析すると、暗号に使われている秘密鍵が導出できるという電力解析攻撃手法と呼ばれる理論が１９９６年にＰａｕｌ  Ｋｏｃｈｅｒらにより発表された。この理論に係る解析方法として、大きく分けて３つの方法がある。
【０００４】
第１の方法は、暗号に使われる秘密鍵の各ビットにより処理時間に違いがある場合に、処理時間もしくは消費電力波形からそのビットが判明し、同様にして全ての秘密鍵が判明してしまうというものである。この詳細は、非特許文献２に記載されている。
【０００５】
第２の方法は、暗号に使われる秘密鍵の各ビットに依存したデータを処理している部分の消費電力波形に違いが見られる場合、そのビットが判明し、同様にして全ての秘密鍵が判明してしまうというものである。一般に、ＩＣチップを構成しているＣＭＯＳは、０→１もしくは１→０に変化したときに電力を消費するため、上記のように消費電力波形上でも違いが多少なりとも存在している。
【０００６】
第３の方法は、暗号処理中の消費電力波形を多数取得し、統計処理をすることで秘密鍵を導出するというものである。この方法は、第２の方法をさらに強力にしたものであり、暗号処理の一部の消費電力波形を多数取得できれば、比較的容易に攻撃できるというものである。第２と第３の方法に関する詳細は、非特許文献３に記載されている。
【０００７】
上記の３つの攻撃方法に対する対策法は、いろいろと議論され考えだされている。しかし、ソフトウェアで共通鍵暗号を実装しＣＰＵで実行している場合や、共通鍵暗号よりも非常に処理時間のかかる公開鍵暗号をコプロセッサを利用して処理している場合は、消費電力波形にその処理の挙動が如実に表れてしまうことが多い。つまり攻撃の前提条件である消費電力波形内の暗号処理部の特定とその波形の取得が容易である場合が多い。攻撃に対する対策がなされていても、攻撃対象となる暗号処理部の消費電力波形が取得されてしまうと、様々な攻撃を受ける可能性があり、場合によっては対策が無効化され、秘密鍵の導出につながる可能性もある。
【０００８】
一方、専用の暗号処理回路を用いて共通鍵暗号の処理を行った場合は、ソフトウェアで実装した場合に比べて極端に処理時間が短くなり、消費電力波形にその処理の挙動が表れにくくなる。しかしこの場合もＣＰＵの処理とは別に暗号処理回路が動作するため、多少なりともこの回路が動作した瞬間の消費電力波形は大きくなってしまい、暗号処理部が判別できてしまうことがある。この場合、どの程度消費電力が増えるかはハードウェアの性能に依存してくる。また共通鍵暗号はある一定の処理を繰り返し決まった回数だけ行う性質があるため、消費電力波形から決まった回数分繰り返して同じような特徴を持つ部分を特定することにより、暗号処理部を特定されることがある。
【０００９】
このように、電力解析攻撃は非常に強力な攻撃手法であるため、攻撃に耐えうる対策手法の確立と同時に、攻撃の前提条件となる消費電力波形内の暗号処理部の特定を困難にすることが非常に重要となってくる。
【非特許文献１】ISO/IEC 7816-1part1,2
【非特許文献２】P. Kocher, “Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS and Other Systems”, Advances in Cryptology: Proceedings of CRYPTO’96, Springer-Verlag, 1996, pp.104-113
【非特許文献３】P. Kocher, J. Jaffe, B. Jun, “Differential Power Analysis”, Advances in Cryptology: Proceedings of CRYPTO’99, Springer-Verlag, 1999, pp.388-397
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、ＩＣカードや情報処理装置の消費電力波形内の暗号処理部を特定することを困難にすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の局面に係る発明は、ＩＣカードの消費電力波形内の暗号処理部を特定することを困難にするために、暗号処理に使用されるデータブロックの処理の間にダミーデータブロックの処理を適宜挿入した。具体的には、以下のとおりである。
【００１２】
本発明の局面に係る発明は、所定ビット数の第１のデータブロックと鍵情報とを所定の非線形関数Ｆへ作用させて得られた結果値と前記第１のデータブロックと同じビット数の第２のデータブロックとを論理演算し、前記第２のデータブロックを第１のデータブロックに置き換えるとともに、前記第１のデータブロックを前記論理演算の結果値に置き換えるステップを所定回数繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号化処理を実行する暗号演算回路において、前記第１及び第２のデータブロックを保持する手段と、前記第１及び第２のデータブロックとビット数が同じである第１及び第２のダミーデータブロックを保持する手段と、前記第１及び前記第２のデータブロックを使った暗号化処理を所定回数実行する間に、前記第１及び前記第２のダミーデータブロックを使ったダミー暗号化処理の実行を、所定の条件に基づいて適宜挿入するような制御をする手段を具備することを特徴とする。
【発明の効果】
【００１３】
これにより電力解析攻撃を行うことが困難になり、秘密鍵が外部に漏れることを抑えることができる。このように、本発明によれば、ＩＣカードの消費電力波形から動作部分を特定するのが困難である専用ハードウェアで実装されている共通鍵暗号の処理部分を、公知であるアルゴリズムの繰り返し回数などの情報から特定することが更に困難になることより、該暗号処理回路を備えたＩＣカードや情報処理装置などへの電力解析攻撃適用を難しくし、秘密鍵が外部に漏れることを抑えることができる。
【発明を実施するための最良の形態】
【００１４】
図面を参照して本発明の実施の形態を説明する。  
図１は、本発明に係る暗号演算回路を備えたＩＣカードの概略構成を示す図である。ＩＣカードの詳細は、前述したように、非特許文献１に規定されている。図１に示すように、カード１０１内にＩＣチップ１０２が搭載されている。図２は、一般的なＩＣチップの内部構成を示す図である。
【００１５】
図２に示すように、本発明に係るＩＣチップ１０２は、ＣＰＵ２０１と、ＲＡＭ２０２と、ＲＯＭ２０３と、ＥＥＰＲＯＭ２０４と、Ｉ／Ｏポート２０５と、コプロセッサ２０６と、暗号処理回路２０７を備えている。
【００１６】
上記の構成において、ＣＰＵ２０１は、ＲＯＭ２０３に格納されているＩＣカードのプログラムを実行し、ＲＡＭ２０２やＥＥＰＲＯＭ２０４には処理に必要なデータが格納されている。Ｉ／Ｏポート２０５は、外部機器（例えば、リーダライタ）からコマンドを受け取り、ＣＰＵ２０１の処理結果をレスポンスとして出力する。データバス２０８は各装置間のデータ転送を行うバスである。コプロセッサ２０６はべき乗剰余演算を行うための専用装置であり、ＲＳＡ暗号などの公開鍵暗号の処理に用いられる。そのためＩＣカードによっては搭載していないものもある。暗号処理回路２０７は主に共通鍵暗号の処理に用いられ、共通鍵暗号処理全体を行ったり、ＣＰＵ２０１で共通鍵暗号処理を行う場合に、その処理の一部を手助けする役割を果たしたりする。そのためＩＣカードによっては搭載していないものもある。上記のように、コプロセッサ２０６や暗号処理回路２０７などは用途によってない場合もある。ここでは、暗号処理回路２０７に実装されている共通鍵暗号アルゴリズムの例としてＤＥＳ(Data Encryption Standard)を用いて説明する。なお、本発明では、暗号処理回路２０７を搭載していることを前提条件とする。専用の暗号処理装置を備えることで、ＣＰＵやコプロセッサによって、暗号をソフトウェア処理するよりもはるかに、攻撃が困難になるからである。
【００１７】
上記のように構成されたＩＣカードにおいて、ＤＥＳの処理の流れを図３のフローチャートを用いて簡単に説明する。図３は、ＤＥＳの流れを示すフローチャートである。  
まず入力平文６４ビットに対して初期転置（ＩＰ：Initial Permutation）と呼ばれるビット転置の処理が施される（ステップ３０１）。次に初期転置後のデータを３２ビットずつに分割し（ステップ３０２）、これら２つを初期値として以下の処理を繰り返す（ステップ３０３及びステップ３０４）。  
Ｌ＿｛ｉ｝←Ｒ＿｛ｉ−１｝  
Ｒ＿｛ｉ｝←Ｌ＿｛ｉ−１｝  ｘｏｒ  Ｆ（Ｋ＿｛ｉ｝，Ｒ＿｛ｉ−１｝）  
上式において、←は代入を示す。  
ここで、演算回数をｉ（１≦ｉ≦１６）、ｉ回目の演算時の一方の分割された３２ビット（右側）をＲ＿｛ｉ｝とし、他方の３２ビット（左側）をＬ＿｛ｉ｝、ｉ回目の部分鍵をＫ＿｛ｉ｝とする。この部分鍵は、６４ビットの秘密鍵を元に鍵スケジューリング処理することにより演算回数分（１６個）生成される。またＳＢＯＸと呼ばれる変換テーブルを用いた非線形変換や転置、部分鍵とデータの排他的論理和を含んだ処理はＦ関数と呼ばれ、Ｆ（Ｋ，Ｒ）で表す。
【００１８】
この繰り返し処理（ステップ３０３及びステップ３０４）を１６回繰り返した後の結果であるＬ＿｛１６｝を上位３２ビット、Ｒ＿｛１６｝を下位３２ビットとして合成する（ステップ３０５）。最後にこの合成した６４ビットを最終転置（ＦＰ：Final Permutation）と呼ばれる初期転置の逆変換処理を施し（ステップ３０６）、出力暗号文６４ビットを得る。
【００１９】
次に、ＤＥＳを実装した暗号処理回路２０７の内部構成の概要を図４に示す。暗号処理回路２０７は、暗号処理部４０１と、乱数生成部４０２と、制御回路部４０３と、鍵生成部４０４と、Ｉ／Ｆ部４０５とを備えている。  
暗号処理部４０１はＩ／Ｆ部から受け取った入力をＤＥＳを使って暗号化する。乱数生成部４０２はＤＥＳの処理に用いる乱数を生成する。制御回路部４０３は、ＤＥＳの処理を制御するための情報を格納する制御情報レジスタ（詳細は後述）を有する。鍵生成部４０４は、制御情報レジスタの情報とＤＥＳの秘密鍵６４ビットから鍵スケジューリングにより各処理中の部分鍵を作成する。Ｉ／Ｆ部４０５はＣＰＵ２０１などとデータの入出力を行う。
【００２０】
図５を参照して、暗号処理回路２０７の主要部分となる暗号処理部４０１の内部詳細を説明する。  
ＩＰ５０１は、予め定められた規則に基づいて初期転置の演算を行う。３入力２出力のセレクタ５０２は、ＩＰ５０１の出力上位３２ビットのデータ、乱数生成部４０２からの入力ＲＮＤの上位３２ビットのデータ、及びセレクタ５０９の出力３２ビットの３つの入力（以下、「３入力」と称する）を入力し、制御回路部４０３からの信号ＣＴＬに応じて、レジスタＬ５０４もしくはレジスタＬ＿ｄｕｍｍｙ５０５のいずれかに３入力のいずれかを出力する。同様に、３入力２出力のセレクタ５０３は、ＩＰ５０１の出力下位３２ビットのデータ、乱数生成部４０２からの入力ＲＮＤの下位３２ビットのデータ、及び、セレクタ５０８の出力３２ビットとＦ関数５１０の出力３２ビットの（論理演算回路５１２による）排他的論理和後の３２ビットの３入力を入力し、制御回路部４０３からの信号ＣＴＬに応じて、レジスタＲ５０６もしくはレジスタＲ＿ｄｕｍｍｙ５０７に３入力のいずれかを出力する。レジスタＬ５０４、レジスタＬ＿ｄｕｍｍｙ５０５、レジスタＲ５０６、レジスタＲ＿ｄｕｍｍｙ５０７はそれぞれ３２ビット幅を有するレジスタである。２入力１出力のセレクタ５０８は、制御回路部４０３からの信号ＣＴＬに応じて、レジスタＬ５０４もしくはレジスタＬ＿ｄｕｍｍｙ５０５の出力３２ビットのどちらかを出力する。同様に２入力１出力のセレクタ５０９は、制御回路部４０３からの信号ＣＴＬに応じて、レジスタＲ５０６もしくはレジスタＲ＿ｄｕｍｍｙ５０７の出力３２ビットのどちらかを出力する。Ｆ関数５１０は、セレクタ５０９の出力３２ビットを入力として、拡大転置処理、部分鍵との排他的論理和、ＳＢＯＸによる非線形処理、転置処理の演算を行う。ＦＰ５１１は、予め定められた規則に基づいて初期転置の逆変換の演算を行う回路モジュールである。入力は６４ビットであり、その上位３２ビットはＦ関数５１０の出力とセレクタ５０８の出力とを排他的論理和した結果の３２ビットであり、下位３２ビットはセレクタ５０９の出力３２ビットである。
【００２１】
上記のように構成された暗号処理回路２０７を用いたＤＥＳの処理の流れを図６のフローチャートを用いて説明する。なお、セレクタ制御に関しては、制御回路部４０３の動作のところで説明する。
【００２２】
まず、乱数生成部４０２からの乱数ＲＮＤの上位３２ビットをレジスタＬ＿ｄｕｍｍｙ５０５に、下位３２ビットをレジスタＲ＿ｄｕｍｍｙ５０７に初期値として格納する（ステップ６０１）。入力平文６４ビットをＩＰ５０１により転置し、上位３２ビットをレジスタＬ５０４に、下位３２ビットをレジスタＲ５０６に初期値として格納する（ステップ６０２）。制御回路部４０３からの信号ＣＴＬのＭＳＢが１の時は（ステップ６０３）、レジスタＲ５０６の出力３２ビットを入力としてＦ関数５１０の処理を行い（ステップ６０４）、Ｆ関数５１０の出力３２ビットとレジスタＬ５０４の出力３２ビットとの排他的論理和をとる（ステップ６０６）。このとき制御回路部４０３からの信号ＣＴＬの下位ニブルが１５でない場合は（ステップ６０８）、レジスタＲ５０６の出力３２ビットをレジスタＬ５０４へ格納し、排他的論理和結果をレジスタＲ５０６へ格納する（ステップ６０９）。
【００２３】
ステップ６０３において、制御回路部４０３からの信号ＣＴＬのＭＳＢが１ではない（例えば、０）の時は（ステップ６０３）、レジスタＲ＿ｄｕｍｍｙ５０７の出力３２ビットを入力としてＦ関数５１０の処理を行い（ステップ６０５）、Ｆ関数５１０の出力３２ビットとレジスタＬ＿ｄｕｍｍｙ５０５の出力３２ビットとの排他的論理和をとる（ステップ６０７）。この場合、制御回路部４０３からの信号ＣＴＬは参照せずに、レジスタＲ＿ｄｕｍｍｙ５０７の出力３２ビットをレジスタＬ＿ｄｕｍｍｙ５０５へ格納し、排他的論理和結果をレジスタＲ＿ｄｕｍｍｙ５０７へ格納する（ステップ６１０）。このように信号ＣＴＬのＭＳＢが１か０かで処理データや格納先が異なり、ＭＳＢが１の処理をＤＥＳの処理段数１６回分終了すると（ステップ６０８）、排他的論理和結果を上位３２ビット、レジスタＲ５０６の出力を下位３２ビットとして合成して、ＦＰ処理を行う。そして、ＦＰ処理後のデータをＩ／Ｆ部４０５に渡す（ステップ６１１）。
【００２４】
制御回路部４０３の処理の流れを説明する前に、暗号処理部４０１内のセレクタを制御する信号ＣＴＬの情報を格納する制御情報レジスタについて説明する。なお、このレジスタは制御回路部４０３内にあり、０から７の８ビット（１ビット目から８ビット目まで）で構成されているものとする。このレジスタのビット割り当ては以下のようになっている。  
４ビット目から１ビット目までは暗号処理部４０１ですでに終了したＤＥＳの処理段数を表している。  
５ビット目に１がセットされると、セレクタ５０２の入力をＲＮＤ、出力をレジスタＬ＿ｄｕｍｍｙ５０５にし、セレクタ５０３の入力をＲＮＤ、出力をレジスタＲ＿ｄｕｍｍｙ５０７にする。このように５ビット目の情報により、暗号処理回路内２０７のレジスタＬ＿ｄｕｍｍｙ５０５とＲ＿ｄｕｍｍｙ５０７に乱数初期値をセットする制御が行われる。  
６ビット目に１がセットされると、セレクタ５０２の入力をＩＰ出力、出力をレジスタＬ５０４にし、セレクタ５０３の入力をＩＰ出力、出力をレジスタＲ５０６にする。このように６ビット目の情報により、暗号処理回路２０７内のレジスタＬ５０４とＲ５０６にＩＰ出力後の値をセットする制御が行われる。  
７ビット目に１がセットされると、セレクタ５０２の入力をセレクタ５０９の出力、セレクタ５０３の入力をＦ関数５１０の出力とセレクタ５０８の出力との排他的論理和結果にする。このように７ビット目の情報により、各レジスタに初期値がセットされた後のＤＥＳ本体の処理を行う制御が行われる。  
８ビット目に１がセットされると、セレクタ５０２の出力をレジスタＬ５０４もしくはレジスタＬ＿ｄｕｍｍｙ５０５にし、セレクタ５０３の出力をレジスタＲ５０６もしくはレジスタＲ＿ｄｕｍｍｙ５０７にし、セレクタ５０８の入力をレジスタＬ５０４もしくはレジスタＬ＿ｄｕｍｍｙ５０５にし、セレクタ５０９の入力をレジスタＲ５０６もしくはレジスタＲ＿ｄｕｍｍｙ５０７にする。このように８ビット目の情報により、ＤＥＳの本来の処理とダミーの処理とを判別する制御が行われる。すなわち、８ビット目に１がセットされると本来の処理、０がセットされるとダミー処理を行うように制御される。
【００２５】
暗号処理部４０１内のセレクタを制御する信号ＣＴＬを生成、出力する制御回路部４０３の処理について、図７のフローチャートを参照して説明する。  
まず、乱数生成部４０２から６４ビットの乱数を受け取る（ステップ７０１）。そして、制御情報レジスタの値を確認する（ステップ７０２）。レジスタの値が０Ｈの場合（ステップ７０３）は、暗号処理部４０１に乱数がセットされていないので制御情報レジスタの値ＣＴＬの５ビット目に１をセットし、当該値を出力する（ステップ７０４、ステップ７１３）。レジスタの値が１０Ｈの場合（ステップ７０５）は、暗号処理部４０１のＩＰ処理が終了していないということなので制御情報レジスタの値ＣＴＬの５ビット目に０をセットし、６ビット目に１をセットし、当該値を出力する（ステップ７０６、ステップ７１３）。レジスタの値が２０Ｈの場合（ステップ７０７）は、暗号処理部４０１でＤＥＳの繰り返し処理を行う準備ができているということなので制御情報レジスタの値ＣＴＬの６ビット目に０をセットし、７ビット目に１をセットする（ステップ７０８）。次に、乱数生成部４０２から取り込んだ６４ビット乱数のパリティを計算し（ステップ７０９）。パリティが１のときは（ステップ７１０）、制御情報レジスタの値ＣＴＬの８ビット目を１にセットし、下位ニブルをインクリメントし（ステップ７１２）、当該値を出力する（ステップ７１３）。ステップ７１０において、パリティが０のときは、８ビット目を０にセットし、下位ニブルはインクリメントせず（ステップ７１１）、当該値を出力する（ステップ７１３）。
【００２６】
鍵生成部４０４は、制御情報レジスタの値ＣＴＬの下位ニブルの情報より、対応するＤＥＳの処理段の部分鍵を作成し、暗号処理部４０１に渡す。すなわち制御情報レジスタの下位ニブルの値が変わらない限り、鍵生成部４０４は、同じ部分鍵を出力することになる。
【００２７】
上記の説明では、ＤＥＳの本当の処理とダミーの処理を切り分ける制御情報レジスタの８ビット目の値を６４ビット乱数のパリティに基づいて決めたが、８ビット目の値の決め方は上記の実施の形態に限らない。例えば、セキュリティの強度を考慮すれば、８ビット目が１になる確率を０になる確率より低くなるような決め方が好ましい。これは、８ビット目が１の場合と０の場合の処理で消費電力波形に差がでない、もしくは観測できない場合である。この点に関しては、今回対象にしている暗号処理回路２０７は暗号処理専用のハードウェア回路であり、ソフトウェア実装と違い、８ビット目が１か０かで処理時間が異なることはなく、ＤＥＳ１段の処理をほぼ１クロックで処理してしまう。このため、１段の処理中に扱ったデータの差は消費電力の差として非常に現れにくいという点を考慮すると、上記の仮定は妥当である。さらに、乱数による処理中の中間データのマスク処理や消費電力波形にノイズをのせるような電流攪乱回路と本発明を組み合わせることによって、セキュリティ強度を上げる、すなわち電力解析攻撃をさらに困難にすることも可能である。
【００２８】
本発明は、上記各実施の形態に限ることなく、その他、実施段階ではその要旨を逸脱しない範囲で種々の変形を実施し得ることが可能である。例えば、上記の実施の形態では、ＩＣカードについて説明したが、ＩＣカード以外に、外部からの攻撃を防ぐための暗号化回路を有するようなＰＤＡやパーソナルコンピュータや携帯電話などの情報装置に適用可能であることはもちろんである。さらに、上記各実施形態には、種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組合せにより種々の発明が抽出され得る。
【００２９】
また、例えば各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【００３０】
【図１】本発明に係る暗号演算回路を備えたＩＣカードの概略構成を示す図。
【図２】ＩＣチップの一般的な内部構成を示す図。
【図３】ＤＥＳの処理を示すフローチャート。
【図４】ＤＥＳを実装した暗号処理回路の内部構成の概要を示す図。
【図５】暗号処理部の内部構成を示す図。
【図６】暗号処理部の処理を示すフローチャート。
【図７】制御回路部の処理を示すフローチャート。
【符号の説明】
【００３１】
１０１…カード、１０２…ＩＣチップ、２０１…ＣＰＵ、２０２…ＲＡＭ、２０３…ＲＯＭ、２０４…ＥＥＰＲＯＭ、２０５…Ｉ／Ｏポート、２０６…コプロセッサ、２０７…暗号処理回路、２０８…データバス、４０１…暗号処理部、４０２…乱数生成部、４０３…制御回路部、４０４…鍵生成部、４０５…Ｆ部、５０１…ＩＰ、５０２…セレクタ、５０３…セレクタ、５０８…セレクタ、５０９…セレクタ、５１１…ＦＰ。
【図１】
2006174274.tif 000003
【図２】
2006174274.tif 000004
【図３】
2006174274.tif 000005
【図４】
2006174274.tif 000006
【図５】
2006174274.tif 000007
【図６】
2006174274.tif 000008
【図７】
2006174274.tif 000009