(57)【要約】【課題】  ＤＰＡ攻撃に対する耐性の高い暗号処理装置および方法を実現する。【解決手段】  例えばＤＥＳなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、Ｆ関数部に対してラウンド遷移時に乱数を入力し、その後、レジスタに格納された中間データを出力して演算処理を実行する構成とした。本構成により、ラウンド遷移時には乱数に基づくＳボックス出力が発生し、また、レジスタ接続パスにおける電流または電位変動が発生し、これらは各ラウンドにおいて適用される秘密情報としてのセッション鍵（ラウンド鍵）の構成ビット情報と無関係な電流または電位変動となり、ＤＰＡ攻撃による秘密情報の解析が不可能なセキュリティレベルの高い暗号処理装置が実現される。【選択図】  図８
2006019872.tif 000002
【特許請求の範囲】
【請求項１】
ラウンド関数の繰り返し処理を含む暗号演算処理を実行する暗号処理装置であり、
各ラウンド毎にラウンド関数対応のデータ処理を実行する関数演算部と、
前記関数演算部における各ラウンドの演算結果としての中間データを格納するデータ格納レジスタと、
乱数を格納する乱数レジスタと、
前記データ格納レジスタと前記乱数レジスタとを前記関数演算部に対して選択的に接続するスイッチ部と、
前記スイッチ部の切り替え制御を実行する制御部とを有し、
前記制御部は、
前記スイッチ部を、ラウンド遷移時において前記乱数レジスタの格納乱数を前記関数演算部に出力し、その後、前記データ格納レジスタに格納された中間データを出力するように接続切り替え制御を行なう構成であることを特徴とする暗号処理装置。
【請求項２】
前記制御部は、
前記スイッチ部の接続切り替え処理を各ラウンド毎に繰り返し実行し、各ラウンドの開始時点において前記乱数レジスタの格納乱数を前記関数演算部に出力し、同一ラウンドの所定時間後に前記データ格納レジスタに格納された中間データを前記関数演算部に出力する接続切り替え制御を実行する構成であり、前記データ格納レジスタには、ラウンドの終了時において、中間データに基づく前記関数演算部の演算結果としての新たな中間データが格納されるようにスイッチ制御を行なう構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記スイッチ部は、前記データ格納レジスタに接続された配線パス上に構成されていることを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記暗号処理装置は、さらに、乱数生成手段を有し、
前記乱数生成手段は、各ラウンド毎に異なる乱数を生成し、各ラウンドの遷移時において、ラウンド毎に異なる乱数を前記関数演算部に出力する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記関数演算部は、非線形変換部としてのＳボックスを有し、
前記データ格納レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド関数演算処理の結果データを格納する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記暗号処理装置は、
ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関する。さらに詳細には、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関する。
【背景技術】
【０００２】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
【０００４】
ＩＣカードでは、例えばリーダライタやホストコンピュータとデータのやり取りを行なう時、その過程でＩＣカードに格納されている秘密情報が漏れても問題を発生させないために、やり取りするデータには暗号化したデータを用いる。
【０００５】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号化鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号化鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【０００６】
共通鍵暗号方式にも様々なアルゴリズムがあるが、その１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いてブロック単位（６４ビット，１２８ビットなど）のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【０００７】
代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば米国標準暗号としてのＤＥＳ（Data Encryption Standard）アルゴリズムがあり、様々な分野において広く用いられている。
【０００８】
ＩＣカードとホストコンピュータ間において、ＤＥＳに基づく暗号処理を施した通信を行なう場合、ＩＣカードの所有者とホストコンピュータが同じ鍵（共通鍵）を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。通信の過程で悪意の第三者が盗聴しても、鍵を有していない限りは復号化してメッセージを取り出すのは困難である。また、暗号化・復号化の時に使う鍵は、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納され、暗号化・復号化時にはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送される様な制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出す事が不可能な構成を採ってセキュリティを保持している。
【０００９】
ＤＥＳに代表される共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ラウンドで適用するラウンド鍵（副鍵）は、１つのマスター鍵（主鍵）に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。
【００１０】
しかし、このような共通鍵暗号処理においては、暗号解析による鍵の漏洩が問題となっている。暗号解析手法には複数の種類がある。その１つが単純電力解析（ＳＰＡ：Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）である。
【００１１】
スマートカードなどの耐タンパデバイスのほとんどはトランジスタで構成された論理回路からなり、ゲートに電圧が加えられたときに電流が流れ、電力が消費される。一般に回路の消費電力は、実行している演算と用いられているデータの値に関係する。
【００１２】
演算やデータ値に応じて電力消費量が変動することから、秘密情報を用いた演算を行っているデバイスの消費電力の変化を観察することで、秘密情報に関してハミングウェイトなどの情報を得ることが可能となり、エントロピーを小さくすることができる。消費電力の変化を直接解析に用いる方法を単純電力解析と呼ぶ。
【００１３】
デバイスの消費電力は、デバイスと電源または接地との間に抵抗を直列に挿入し、抵抗を流れる電流値から求めることができる。実際に共通鍵暗号の演算を行っているスマートカードに対して消費電力測定を行うと、測定波形より共通鍵暗号の各段の演算がはっきり確かめられる。さらに、消費電力波形を詳しく解析することにより鍵レジスタの交換等の情報を得ることができる。
【００１４】
次に、電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）について説明する。耐タンパデバイスの消費電力は一般に演算内容と演算に用いられている秘密情報に依存する。しかしこれらの内容に依存した消費電力の変化は小さく、測定誤差やノイズなどから見分けることは一般に困難である。
【００１５】
そこでＰ．Ｋｏｃｈｅｒらは大量の測定値の平均をとって測定誤差やノイズなどの影響を小さくし、全データの平均値との差分を取ることで演算プロセスによる電力消費の影響を除いて、用いられる秘密情報による消費電力の変化のみを取り出す方法（電力差分解析）を提案した。
【００１６】
Ｐ．ＫｏｃｈｅｒらはＤＥＳに対する適用例を示している。まず、ラウンド関数部の第１段、または第１６段に入る鍵の一部のビットについて予想し、第１段、または第１６段の最後にレジスタに書きこまれると予想されるデータの１ビットの値に注目して、その値に従って消費電力の観測データを分類する。次にそれぞれのグループについて測定値の平均をとり、それらの差分をとる。予想が正しい場合注目したビットが演算に用いられるとき消費電力の差分が大きくなる。予想が異なる場合目立った差分は確認されない。このような事象確認処理に基づいて、暗号処理に適用した鍵の構成ビットを順次求めるものである。
【００１７】
このＰ．Ｋｏｃｈｅｒらの提案に基づく暗号解析手法によれば、ＤＥＳの第１段及び第１６段のラウンド鍵を推定することが可能となる。
【００１８】
ＤＥＳ暗号処理は、変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。図１にＤＥＳ暗号処理の基本構成を示す。入力データの変換を実行するラウンド関数部１１０と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部１２０とによって構成される。
【００１９】
ラウンド関数部１１０において、平文（６４ビット）は、まず、初期置換部１１１において、置換後にＬ，Ｒ各３２ビットに分割され、分割されたＬ，Ｒ３２ビットが、第１段ラウンド関数部１１２に入力され、鍵スケジュール部１２０の第１段鍵生成部１２２から入力する鍵Ｋ（１）に基づいて変換処理がなされる。変換処理結果は、次段の第２段ラウンド関数部１１３に入力される。
【００２０】
鍵スケジュール部１２０においては、まず、マスター鍵（主鍵）置換部（ＰＣ−１）１２１により入力マスター鍵（主鍵：６４ビット）のパリティ８ビットが取り除かれ、残り５６ビットの入れ替え処理が実行されて第１段ラウンド鍵生成部１２２に入力される。第１段ラウンド鍵生成部１２２では、入力ビット列のシフト処理および８ビットのデータ破棄等が実行され、４８ビットのラウンド鍵Ｋ（１）を生成し、生成したラウンド鍵Ｋ（１）をラウンド関数部１１０の第１段ラウンド関数部１１２に出力する。第１段ラウンド鍵生成部１２２では、シフト処理による上位ビット列（２８ビット）と下位ビット列（２８ビット）とを下段の第２段ラウンド鍵生成部１２３に出力する。
【００２１】
ラウンド関数部は、１６段のラウンド関数部を有し、それぞれ前段のラウンド関数部の出力を入力として鍵スケジュール部１２０から入力する鍵を適用した変換処理を実行し、変換結果を後段のラウンド関数部に出力する。１６段のラウンド関数部で変換された出力が逆置換部１１４に入力され、初期置換部１１１の逆置換処理が実行されて、暗号文として出力される。
【００２２】
ラウンド関数部１１０の各ラウンドを構成する各段のラウンド関数部の構成を図２に示す。図２に示すように、ラウンド関数部は、前段（ｎ−１段）のラウンド関数部から２つの入力、Ｌ（ｎ−１）、Ｒ（ｎ−１）を入力し、鍵スケジュール部から鍵（ｋ（ｎ））を入力する。Ｆ関数部１５１において、鍵スケジュール部から入力する鍵（ｋ（ｎ））を用いて、前段ラウンド関数部から入力するビット列（Ｒ（ｎ−１））の変換処理がなされ、変換結果が、前段ラウンド関数部から入力する残りのビット列（Ｌ（ｎ−１））と排他論理和が実行されて、次段のラウンド関数部の出力Ｒ（ｎ）が生成される。次段のラウンド関数部には、Ｒ（ｎ−１）をＬ（ｎ）としたビット列と、上述のＦ関数および排他論理和演算により生成されたＲ（ｎ）が入力され同様の処理が繰り返される。
【００２３】
Ｆ関数の構成を図３に示す。Ｆ関数は、非線形処理を実行する複数のＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は置換部１７１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）と排他論理和が実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックス１８１−１〜８に入力される。各Ｓボックスでは、例えば変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
【００２４】
Ｓボックス１８１−１〜８からの出力ビット４×８＝３２ビットは、置換部１７２に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００２５】
図１〜３を参照して説明したように複数段（１６段）の変換処理によってＤＥＳ暗号処理が実行される。
【００２６】
上述した暗号処理演算の過程で様々なデータが信号線を介して伝達され、関数実行部で演算が実行される。演算器は通常ＭＯＳトランジスタで構成された回路であるが、この回路はその入力ビットが"０"であるか"１"であるかによりその演算回路で消費される電流は微妙に異なる。しかし、演算は複数ビット並列に実行されるため、特定のビットの消費電流のみに着目してその消費電流から着目したビットが"０"か"１"かについて特定することは困難である。
【００２７】
これに対して、ＤＰＡ攻撃では、乱数で発生させた１０００個程度の平文をＩＣカードに搭載されたＤＥＳの暗号エンジンで暗号化し、その時の消費電流を統計処理する事により、ＩＣカード内に格納されている鍵の取り出しが可能である事を示した。この攻撃は、ＤＥＳの演算フロー内で鍵情報に関連したノードであればどこでも攻撃可能である。例えばＳボックスは、Ｆ関数の入力値（３２ビット）を４８ビットに拡張後、鍵スケジュール部で生成した各ラウンド鍵と排他論理和値が入力となる。このラウンド鍵（４８ビット）は、６４ビットの暗号鍵のパリティを除く５６ビットに対してビット並べ替えを行ない、その結果のうちの８ビット破棄したものであるため、４８ビットの鍵データはそのまま残っている。従って、ＳボックスのＤＰＡ攻撃により４８ビットの鍵データが得られれば、残り８ビットは２８＝２５６回の全数攻撃で容易に求める事ができる。以下に、Ｓボックスの出力ノードに対して攻撃するときの手順を示す。
【００２８】
（処理１）乱数で１０００個程度の平文（Ｍ１〜Ｍ１０００）を発生させ、これをＩＣカードに入れてＤＥＳで暗号化する。その時の消費電流波形を測定して平文毎に保持する。
（処理２）ＤＥＳのシミュレータで鍵を仮定して平文（Ｍ１〜Ｍ１０００）を暗号化する。そして、着目ノード（例えばＳボックスの１つ「Ｓ１」の最下位の出力ビット）が"０"か"１"かにより、各平文に対応する消費電力波形を分類し、各グループの平均消費電流波形を求める。
Ｇ０＝Σ｛着目ノードの出力ビットが"０"の消費電力波形｝／ｍ
ただし、ｍは、該当する平文の数
Ｇ１＝Σ｛着目ノードの出力ビットが"１"の消費電力波形｝／ｎ
ただし、ｎは、該当する平文の数
（処理３）消費電流波形の差分（Ｇ０−Ｇ１）を計算。
この差分波形に、ピークが発生した場合は、
着目ノードの推定した部分の鍵は正しいと判定し、次のＳボックス（例えば「Ｓ２」）の鍵を（処理２）で求める。
ピークが発生しない場合は、
着目ノードの推定した部分の鍵は間違いと判定し、仮定した鍵（「Ｓ１」部分）を変えて（処理２）で再び統計処理を行なう。
【００２９】
この手順により、各Ｓボックス（Ｓ１〜Ｓ８）から６ビットずつ、計４８ビットの鍵を求め、残り８ビットは２５６回の全数検索により求める。ここで、（処理３）で、想定鍵が実際の鍵と一致した場合に、統計処理した消費電流波形の差分にピークが現われる理由について説明する。
【００３０】
鍵が分かっている場合、複数の平文をその鍵で暗号化し、ＤＥＳのアルゴリズム中のあるラウンドでの着目ノード（例えば「Ｓ１」の最下位出力ビット）が"０"か"１"かにより２つのグループに分類した場合、各グループで着目ノードには同じデータが出力されるため、これに起因する電流がほぼ同じタイミングで流れている。このデータ出力の電流は微量だが、着目ノードで同じ出力を出すもの同士を集めるとその個数分だけ電流値が積算される。
【００３１】
この分類を行なう時、Ｓ１の出力データを元に分類するため、同時に動作している他のＳボックス（Ｓ２〜Ｓ８）の入力はランダムな値となり、その出力にはランダムなデータが現われ、その電流の流れるタイミングは様々である。そして、これら全ての電流の総和がＳボックス動作時の消費電流となる。したがって、データ数を十分大きく（例えば１０００個のデータ）取り、「Ｓ１」の最下位ビットのデータに応じて２つのグループに分類した場合、両グループには、「Ｓ１」の最下位ビット以外のビット及び「Ｓ２」〜「Ｓ８」の各ビットにはほぼ同じ数の"０"と"１"が現われている。一方、「Ｓ１」の最下位ビットの出力電流だけは、一方のグループには"０"の出力電流だけが、他方のグループには"１"の出力電流だけが現われているため、両グループの消費電流の平均の差分を採ると、「Ｓ１」の最下位ビット以外のビット及び「Ｓ２」〜「Ｓ８」の出力電流は相殺され、「Ｓ１」の最下位ビットの出力電流に起因する電流だけがピークとして現われる。
【００３２】
以上は、鍵が分かっている場合の説明であり、鍵が分かっていれば、その鍵と平文をシミュレータに入力すれば着目するノードの出力値が求まるため、着目ノードの値に応じて２つのグループに分ける事は可能であり、両グループの平均を採ってその差分を求めれば、ピーク電流波形がえられる。しかし、鍵が分かっていない場合、鍵を推定して、その鍵と平文をシミュレータに入力して着目ノード（例えば「Ｓ１」の最下位ビットの出力）のシミュレーション結果に応じて、対応する平文での実測定の電流値を分類して各グループで平均を採って両者の差分を採った時、
（ａ）ピーク電流が現われる→推定した鍵データの中の「Ｓ１」の入力ビットは正しい
（ｂ）ピーク電流が現われない→推定した鍵データの中の「Ｓ１」の入力ビットは間違い
と判定できる。「Ｓ１」の入力ビットが間違いと判定された場合、別の「Ｓ１」を設定して同じ評価を行なう。
【００３３】
「Ｓ１」の入力ビットは６ビットであるため、最大２６＝６４回繰り返せば「Ｓ１」の正しい鍵は得られる。この操作を他のＳボックスについて求めていった場合、この攻撃でＳ−ｂｏｘ  の入力ビットに関係する４８ビットの鍵は全て求める事が出来る。残り８ビットは全数検索しても２８＝２５６回の攻撃で求める事ができる。この様に、ＤＥＳの攻撃は、２５６＝７．２×１０１６回の攻撃を行なわなくても、２６×８＝５１２回の統計処理と２８＝２５６回の全数検索で秘密鍵を求める事が可能となる。
【００３４】
これに対抗する手段としては、通常のＤＥＳのフローと異なるフローでＤＥＳ演算を実行する回路を搭載すれば良い。ＤＰＡ攻撃は、ＤＥＳのシミュレータと実際のＩＣが同じ演算フローで動作する事を前提にしているため、ＩＣを異なる演算フローで設計すれば、仮に正しい鍵でシミュレータで演算して、着目ノードの値に基づいて実デバイスで測定した電流波形をグループ分けしても、演算フローが異なるため、実際の着目ノードの値は各グループで同じ値とならず、結果的にグループ間の平均電流の差分を取ってもピークが現われず、ＤＰＡ攻撃に対して耐性を持つ。
【００３５】
この構成を開示した従来技術として、特許文献１がある。この特許文献１では、Ｆ関数の入力そのままの値（ポジ）と反転値（ネガ）を生成し、拡張関数に入力する値をどちらにするかを乱数で選択する。この構成では、Ｓボックスも通常のもの（ポジ）と反転データに対応したもの（ネガ）の２種類を準備する必要があり、回路規模の増大につながる。
【００３６】
また、特許文献２では、初期置換（ＩＰ）されたデータを乱数で選択された固定値とＥＯＲ演算した値をＬとＲに分けて演算を行ない、Ｆ関数内ではセッション鍵の他に、別の乱数で選択された固定値との排他論理和演算した値をＳボックスに入力している。なお、Ｓボックスは、Ｆ関数内で乱数により選択する固定値の個数に対応したセット数だけ準備し、乱数で選択された固定値に対応するＳボックスが選択される。この構成をとると、ＤＰＡに対する耐性は格段に向上するが、複数セットのＳボックスを準備する必要があり、通常のＤＥＳに比べて回路規模が数倍大きくなる。
【００３７】
暗号処理を実行する例えばＩＣモジュールは、例えば駅の改札などの様々なゲート、あるいはショッピングセンターなどで盛んに利用されるようになっており、小型化および処理の迅速化の要求が厳しくなってきている。従って、処理アルゴリズムを複雑化させることなく、かつ、電力解析に対する耐性のある構成が必要とされている。
【特許文献１】特開２００２−３１１８２６号公報
【特許文献２】特開２００２−３６６０２９号公報
【発明の開示】
【発明が解決しようとする課題】
【００３８】
本発明は、上記問題点に鑑みてなされたものであり、処理アルゴリズムを複雑化させることなく、暗号処理シーケンスの持つ規則的な処理に伴う消費電力変動の検出等に基づく電力解析による暗号解析の困難性を高めることを可能とした暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【００３９】
本発明の第１の側面は、
ラウンド関数の繰り返し処理を含む暗号演算処理を実行する暗号処理装置であり、
各ラウンド毎にラウンド関数対応のデータ処理を実行する関数演算部と、
前記関数演算部における各ラウンドの演算結果としての中間データを格納するデータ格納レジスタと、
乱数を格納する乱数レジスタと、
前記データ格納レジスタと前記乱数レジスタとを前記関数演算部に対して選択的に接続するスイッチ部と、
前記スイッチ部の切り替え制御を実行する制御部とを有し、
前記制御部は、
前記スイッチ部を、ラウンド遷移時において前記乱数レジスタの格納乱数を前記関数演算部に出力し、その後、前記データ格納レジスタに格納された中間データを出力するように接続切り替え制御を行なう構成であることを特徴とする暗号処理装置にある。
【００４０】
さらに、本発明の暗号処理装置の一実施態様において、前記制御部は、前記スイッチ部の接続切り替え処理を各ラウンド毎に繰り返し実行し、各ラウンドの開始時点において前記乱数レジスタの格納乱数を前記関数演算部に出力し、同一ラウンドの所定時間後に前記データ格納レジスタに格納された中間データを前記関数演算部に出力する接続切り替え制御を実行する構成であり、前記データ格納レジスタには、ラウンドの終了時において、中間データに基づく前記関数演算部の演算結果としての新たな中間データが格納されるようにスイッチ制御を行なう構成であることを特徴とする。
【００４１】
さらに、本発明の暗号処理装置の一実施態様において、前記スイッチ部は、前記データ格納レジスタに接続された配線パス上に構成されていることを特徴とする。
【００４２】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、さらに、乱数生成手段を有し、前記乱数生成手段は、各ラウンド毎に異なる乱数を生成し、各ラウンドの遷移時において、ラウンド毎に異なる乱数を前記関数演算部に出力する構成であることを特徴とする。
【００４３】
さらに、本発明の暗号処理装置の一実施態様において、前記関数演算部は、非線形変換部としてのＳボックスを有し、前記データ格納レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド関数演算処理の結果データを格納する構成であることを特徴とする。
【００４４】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする。
【００４５】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４６】
本発明の構成によれば、処理アルゴリズムを複雑化させることなく、暗号処理シーケンスの持つ規則的な処理に伴う消費電力変動の検出等に基づく電力解析による暗号解析の困難性を高めた暗号処理装置が実現される。
【００４７】
本発明の構成では、例えばＤＥＳなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド関数処理を実行する、いわゆるＦ関数部に対してラウンド遷移時に乱数を入力し、その後、レジスタに格納された中間データを出力して演算処理を実行する構成とした。本構成により、ラウンド遷移時には乱数に基づくＳボックス出力が発生し、また、レジスタ接続パスにおける電流または電位変動が発生する。従って、これらは各ラウンドにおいて適用される秘密情報としてのセッション鍵（ラウンド鍵）の構成ビット情報と無関係な電流または電位変動となり、Ｓボックスの出力やレジスタ接続パスの電流または電位変動に基づく電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）による秘密情報の解析が不可能となり、セキュリティレベルの高い暗号処理装置が実現される。
【００４８】
本発明の構成によれば、スイッチ制御による乱数入力構成を加えるといった簡易な構成によって、電力差分解析（ＤＰＡ）に基づく攻撃に対する耐性の高い暗号処理装置が実現される。乱数入力を各ラウンドにおいて実行することにより、Ｓボックスの出力やレジスタ接続パスの電流または電位変動は秘密情報（ラウンド鍵構成ビット情報）と無関係となり、ＤＰＡ耐性のある暗号処理装置が実現される。
【発明を実施するための最良の形態】
【００４９】
以下、本発明の暗号処理装置の詳細について説明する。本発明は、例えばＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに代表される複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、暗号処理回路規模の増大を抑えつつ、電力差分解析（ＤＰＡ）耐性を持った回路構成を提供することを目的としてなされたものである。
【００５０】
先に、図１〜３を参照して説明したように、ＤＥＳの演算処理を実行する回路は、複数段（１６段）のかき混ぜ関数を繰り返し実行させる回路を含む。通常、ＤＥＳの演算フローの実行回路を設計する際には、１６回繰り返すかき混ぜ関数の部分を１個作り、それを１６回動作させる構成を採る。
【００５１】
具体的なかきまぜ関数の回路構成について、図４を参照して説明する。図４は、Ｓボックス（Ｓｂｏｘ）２０４を持つＦ関数部２００の構成および中間データ記憶部としてのＬレジスタ２１１、Ｒレジスタ２１２を持つ暗号処理デバイスの構成例である。
【００５２】
図１〜図３を参照して説明した複数段（１６段）の変換処理を実行する場合、各処理段毎に生成する中間データがＬレジスタ２１１、Ｒレジスタ２１２に格納され、次の処理段では、Ｌレジスタ２１１、Ｒレジスタ２１２から中間データが取り出されて処理が実行される。
【００５３】
スイッチ１［ＳＷ１］２１５、およびスイッチ２［ＳＷ２］２１６は、初期的には、"ａ"側に倒されていて、入力メッセージ２３１に対する初期置換部２２１における置換データが、Ｌレジスタ２１１、Ｒレジスタ２１２に格納され、その後、スイッチ１［ＳＷ１］２１５、およびスイッチ２［ＳＷ２］２１６は、"ｂ"側に倒されて、１６回のラウンド演算が実行される。そして、１６回のラウンド演算の終了後、逆置換部２２２において、最後の置換を行なって暗号文２３２が出力される。
【００５４】
図４（ａ）は図２に示す構成に相当し、その詳細および中間データ記憶部としてのレジスタとの接続構成の詳細を示したのが図４（ｂ）である。各ラウンドにおいて、前ラウンド段（ｎ−１段）の処理結果、すなわち、Ｌ（ｎ−１）、Ｒ（ｎ−１）は、それぞれＬレジスタ２１１、Ｒレジスタ２１２に格納され、Ｒレジスタ２１２の３２ビットデータがＦ関数部２００に入力され、置換部２０１において、３２ビットから４８ビットに拡大置換される。置換部２０１は、図３の置換部１７１に相当する。
【００５５】
さらに置換部２０１の出力に対して、鍵スケジュール部からラウンド鍵（セッション鍵ともよばれる）（ｋ（ｎ））２０２が適用されて、排他論理和（ＸＯＲ）部２０３において排他論理和演算処理がなされ、処理結果がＳボックス２０４に入力される。Ｓボックスにおいて非線形変換が実行され、Ｓボックス２０４出力が置換部２０５でビット入れ替え等の置換処理が実行された後、置換結果が、排他論理和（ＸＯＲ）部２０６においてＬレジスタ２１１の格納値と排他論理和演算処理がなされ、その結果が、Ｒレジスタ２１２の入力に現われる。Ｌレジスタ２１１の入力には、Ｒレジスタ２１２の出力が現われている。そして、Ｌレジスタ２１１,Ｒレジスタ２１２のクロック入力の立ち上がりで取り込まれる。これらの格納データがさらに次の段の処理において取り出されて同様の処理が繰り返されることになる。
【００５６】
図４に示すような実装では、Ｆ関数部２００の出力が直接レジスタに蓄えられ、後段の処理には、レジスタからのデータ取り出しを実行して取り出したデータに基づく処理が実行される。
【００５７】
これらの処理を実行するデバイスは、トランジスタで構成された論理回路であり、前述したように、実行している演算と用いられているデータの値に関係する消費電力が発生することになる。例えば、レジスタに対する中間データの書き込みを繰り返し実行する演算を行っているデバイスの消費電力の変化を観察することで、レジスタ格納値の変化、Ｓ−ｂｏｘ出力値の変化等の推定処理が実行され、秘密情報、具体的には、各ラウンドにおいて適用されているセッション鍵（ラウンド鍵）の解析を行うことが可能となる。
【００５８】
具体的な秘密情報の解析処理例について、図４の回路図および図５のタイミングチャートを参照して説明する。なお、図５は、図４に示す回路を動作させた時の最初の数ＣＬＫのタイミング及び主要ノードの出力値である。
【００５９】
図５に示すタイミングチャートにおいて、上段から、それぞれ
［ＣＬＫ］：クロックタイミング
［ＤＥＳ］：ＤＥＳ暗号処理の実行タイミング
［Ｓ Ｋｅｙ］：Ｆ関数部２００において域用されるセッション鍵（ラウンド鍵）の推移
［Ｌ  Ｒｅｇ］：Ｌレジスタ２１１の格納データ推移
［Ｒ  Ｒｅｇ］：Ｒレジスタ２１２の格納データ推移
［Ｓ−ｂｏｘ］：Ｓボックス（Ｓ−ｂｏｘ）２０４の出力推移
を示している。
【００６０】
図４の回路構成において、暗号化処理を実行する場合、入力された平文メッセージ２３１は最初の初期置換部２２１の置換関数（ＩＰ）によりデータの置換が行なわれ、その後、３２ビットずつに分けられて、Ｌレジスタ２１１、Ｒレジスタ２１２に入力される。
【００６１】
図５に示すタイミングチャートに示すように、クロックの立ち上りで、初期置換部２２１から出力されたデータは、各レジスタ２１１，２１２に取込まれる。
【００６２】
この時、各レジスタ２１１，２１２に格納されている値は各々"Ｌ＿ｉｎｉｔ"から"Ｌ０"、"Ｒ＿ｉｎｉｔ"から"Ｒ０"に変化する。Ｒレジスタ２１２の出力値は、スイッチ１（ＳＷ１）２１５の切換（ａ→ｂ）によってＬレジスタ２１１の入力に接続されると共に、Ｆ関数部２００にも入力される。
【００６３】
Ｌレジスタ２１１の出力値は、Ｆ関数部２００の出力値と排他論理和（ＸＯＲ）部２０６においてにおいて排他論理和（Ｅ−ＯＲ）演算が実行された後に、スイッチ２（ＳＷ２）２１６の切換（ａ→ｂ）によってＲレジスタ２１２の入力に接続される。
【００６４】
そして、次のクロックの立ち上り（図５のＲｏｕｎｄ１→Ｒｏｕｎｄ２）で、Ｌレジスタ２１１及びＲレジスタ２１２の値は各々"Ｌ０"及び"Ｒ０"から"Ｌ１"及び"Ｒ１"に更新される。この時、各レジスタの格納値"Ｌ１"及び"Ｒ１"と"Ｌ０"及び"Ｒ０"の関係は、ラウンド１におけるセッション鍵（ラウンド鍵）"Ｋ１"を用いて以下の式（数式１，２）で表わされる。
【数１】
2006019872.tif 000003
【００６５】
一般的に、ラウンドｎ（Ｒｏｕｎｄｎ）での関係式は、セッション鍵（ラウンド鍵）"Ｋｎ"を用いて以下の式（数式３，４）で表わされる。
【数２】
2006019872.tif 000004
【００６６】
この動作が１６回繰り返えされる。そして、各ラウンドｎでのＳ−ｂｏｘの出力［Ｓｏｕｔ＿ｎ］は、下式（数式５）で表される。
【数３】
2006019872.tif 000005
【００６７】
この式（数式５）でＥＸ（Ａ）は、入力Ａに対する置換部（拡張関数）２０１の出力を示し、Ｓ［Ｂ］は、入力Ｂに対するＳボックス（Ｓ−ｂｏｘ）２０４における非線形変換の出力を表わす。
【００６８】
この構成において、電力解析（ＤＰＡ）攻撃のターゲットとなるノードは、以下のノードとなる。
（１）Ｓ−ｂｏｘの出力
（２）Ｌレジスタ及びＲレジスタの出力
である。
以下、上記（１）と（２）の出力解析の詳細について説明する。
【００６９】
（１）Ｓ−ｂｏｘ２０４の出力の解析処理について
Ｓ−ｂｏｘ２０４の出力解析を目的とした攻撃は、ＤＥＳシミュレータ（ｓｉｍｕｌａｔｏｒ）で、鍵を仮定してＤＥＳ演算し、その結果で着目するＳ−ｂｏｘ２０４の出力ビットの値に応じて複数の平文で測定した消費電流波形をグループ分けし、各々のグループの平均電流の差分でピーク電流が発生するか否かで仮定した鍵の妥当性を判断する事により行なう。
【００７０】
図５は、先に述べたように、図４に示す回路を動作させた時の最初の数ＣＬＫのタイミング及び主要ノードの出力値の遷移を示している。Ｓ−ｂｏｘ２０４の出力は、動作がラウンド１（Ｒｏｕｎｄ１）に切り換わった後、拡張関数、セッション鍵とのＥ−ＯＲ演算及びＳ−ｂｏｘでの非線形演算後に出力される。ラウンド１への切換前のＳ−ｂｏｘ２０４の出力は、ラウンド演算開始前のＲレジスタ２１２の値を"Ｒ−ｉｎｉｔ"、セッション鍵の生成回路からＦ関数部２００に出力されている値を"Ｋ＿ｉｎｉｔ"とした場合、下記の式（数式６）に示す値となっている。
【数４】
2006019872.tif 000006
【００７１】
なお、Ｒ＿ｉｎｉｔ，Ｋ＿ｉｎｉｔは、ＤＥＳ演算開始前のＲレジスタ２１２の数値とセッション鍵（ラウンド鍵）の生成回路の出力を示し、電源投入直後のＤＥＳ演算では通常同じ数値、すなわち固定値となっている。従って、上記（数式６）式の値も、電源投入直後は固定値となっている。
【００７２】
そして、ラウンド１のＣＬＫの立ち上りで、Ｒレジスタ２１２には"Ｒ０"が取り込まれてＦ関数部２００に入力されるとともに、セッション鍵の生成回路からはラウンド１の鍵である"Ｋ１"がＦ関数部に入力される。これにより、Ｓ−ｂｏｘ２０４の出力は下記の式（数式７）によって示される値に変化する。
【数５】
2006019872.tif 000007
【００７３】
これより、電源投入直後のＤＥＳ演算でラウンド１へ切り換わった時のＳ−ｂｏｘ２０４の出力変化及びこのＳ−ｂｏｘ２０４の出力変化に伴なう電流は、図６に示すようになる。
【００７４】
図６に示すように、電流が流れるのは、下式（数式８）において"１"の立つビットと一致する。
【数６】
2006019872.tif 000008
【００７５】
上記式（数式８）において"１"の立つビットにおいて、Ｓ−ｂｏｘ２０４の出力変化に伴なう電流が発生する。
【００７６】
次に、（２）Ｌレジスタ及びＲレジスタの出力解析の詳細について説明する。
Ｌレジスタ２１１及びＲレジスタ２１２の出力解析において解析可能な電流は、各レジスタの格納データに起因する電流であり、新たなデータを各レジスタに格納する時、元のデータと異なるビットの存在に起因する電流である。
【００７７】
ＤＰＡ攻撃は（１）Ｓ−ｂｏｘの出力解析と同様に鍵を仮定してシミュレーションを行ない、その結果で着目するレジスタのデータ格納の前後でのビットの変化に応じて消費電流波形をグループ分けし、両グループの消費電流の平均波形の差分でピーク電流が発生するか否かで仮定した鍵の妥当性を判断するという処理として実行される。
【００７８】
ＤＰＡ攻撃は、例えば図５に示すラウンド２（Ｒｏｕｎｄ２）のクロックの立ち上り時のレジスタへのデータ格納時点で行なう。図５に示すタイミングチャートにおいて、ラウンド２（Ｒｏｕｎｄ２）の開始時点で、Ｒレジスタ２１２の出力値は"Ｒ０"から"Ｒ１"に変化する。この時、着目するビットの値の組合せ及び電流の有無との関係は、図７に示す関係となる。
【００７９】
この時、電流が流れるビットは、実デバイスで、下記式（数式９）において、"１"が立つビットである。
【数７】
2006019872.tif 000009
【００８０】
上記式で、"１"が立つビットとは、すなわち、ラウンドの前後でビットの値が置き換わる場合であるが、これは推定した鍵が正しい場合のＤＥＳシミュレータでの演算結果と一致し、なおかつＲ１は式（数式２）で示される様にラウンド鍵の成分"Ｋ１"を含んでいるため、ＤＥＳシミュレータの演算値を基に消費電流を統計処理するとラウンド鍵"Ｋ１"の値、すなわち、秘密鍵のうちの４８ｂｉｔを導き出すことが可能となる。
【００８１】
このような電力解析に対抗する構成としては、以下の構成が有効である。
（１）Ｓ−ｂｏｘの出力解析に対する対抗手段としては、
実際のＤＥＳのＳ−ｂｏｘの出力値の変化が、ＤＥＳシミュレータでの演算値の変化と相関のない値に設定する構成とすればよい。
（２）Ｌレジスタ及びＲレジスタの出力解析に対する対抗手段としては、
Ｌレジスタ及びＲレジスタへのデータ格納時にレジスタの出力電流の流れるビットが、ＤＥＳシミュレータで変化するビットと異なる構成とすればよい。
【００８２】
本発明は、上述の対抗手段を持つ回路構成を提案するものである。
本発明に係る暗号処理装置の持つ回路構成を図８に示し、本発明に係る暗号処理装置における暗号処理時の動作およびレジスタ格納データ、およびレジスタ入出力データ、Ｓ−ｂｏｘ出力データのデータ推移を示すタイミングチャート図を図９に示す。
【００８３】
図８は、先に説明した図４と同様のＳボックス（Ｓｂｏｘ）２０４を持つＦ関数部２００の構成および中間データ記憶部としてのＬレジスタ２１１、Ｒレジスタ２１２を持つ本発明に係る暗号処理装置を構成する回路構成を示している。Ｆ関数部２００は、各ラウンド毎にラウンド関数対応のデータ処理を実行する関数演算部である。
【００８４】
図８に示す構成において、先に説明した図４の回路構成との差異は、Ｌレジスタ２１１とその出力配線であるパスＬ（ｐａｔｈ＿Ｌ）３１１の間にスイッチ３（ＳＷ３）３０１を配置し、また、Ｒレジスタ２１２と、その出力配線であるパスＲ（ｐａｔｈ＿Ｒ）３１２の間にスイッチ４（ＳＷ４）３０２とを挿入した点であり、本構成により、パスＬ（ｐａｔｈ＿Ｌ）３１１、パスＲ（ｐａｔｈ＿Ｒ）３１２以降の入力値を、Ｌ／Ｒレジスタの値と乱数（ＲＮ１，ＲＮ２）と切り換え可能としたものである。
【００８５】
この２つのＳＷ回路、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２は、図示しない制御部の制御により動作する。制御部は例えばＣＰＵであり、制御部は予め定められた制御シーケンスに従ってスイッチの切り替えを制御する。図９に示すタイミングチャートに従って、制御シーケンスについて詳細に説明する。
【００８６】
２つのＳＷ回路、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２は、同じタイミングで動作する。図９に示すタイミングチャートにおいて、［ＳＷ］が、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２の動作状態を示している。
【００８７】
なお、図９に示すタイミングチャートにおいて、上段から、それぞれ
［ＣＬＫ］：クロックタイミング
［ＤＥＳ］：ＤＥＳ暗号処理の実行タイミング
［Ｓ Ｋｅｙ］：Ｆ関数部２００において域用されるセッション鍵（ラウンド鍵）の推移
［ＳＷ］：スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２の切り替え（ｃとｄの切り替え）推移
［Ｌ  Ｒｅｇ］：Ｌレジスタ２１１の格納データ推移
［Ｒ  Ｒｅｇ］：Ｒレジスタ２１２の格納データ推移
［ｐａｔｈ＿Ｌ］：パスＬ（ｐａｔｈ＿Ｌ）３１１のデータ推移
［ｐａｔｈ＿Ｒ］：パスＲ（ｐａｔｈ＿Ｒ）３１２のデータ推移
［Ｓ−ｂｏｘ］：Ｓボックス（Ｓ−ｂｏｘ）２０５の出力推移
を示している。
【００８８】
図９に示すタイミングチャートから理解されるように、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２は、各ラウンドの最初の一定期間は乱数側である"ｄ"側に接続され、乱数値（ＲＮ１またはＲＮ２）がそれぞれパスＬ（ｐａｔｈ＿Ｌ）３１１、パスＲ（ｐａｔｈ＿Ｒ）３１２に出力され、以後の演算が実行される。
【００８９】
各ラウンドの最初の一定期間の経過後は、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２は、各レジスタ、すなわちＬレジスタ２１１、Ｒレジスタ２１２側である"ｃ"側に切り換えられ、Ｌレジスタ２１１、Ｒレジスタ２１２の格納値をパスＬ（ｐａｔｈ＿Ｌ）３１１、パスＲ（ｐａｔｈ＿Ｒ）３１２に出力し、以後の演算を実行する。スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２は、このスイッチ切換を、各ラウンド毎に繰り返し実行する。
【００９０】
本構成においても、Ｌレジスタ２１１、Ｒレジスタ２１２の格納値及びその出力ノードの値は従来構成の場合と変わらないが、Ｌレジスタ２１１、Ｒレジスタ２１２に対する各ラウンド開始時におけるデータ格納時には、Ｌレジスタ２１１、Ｒレジスタ２１２から、パスＬ（ｐａｔｈ＿Ｌ）３１１、パスＲ（ｐａｔｈ＿Ｒ）３１２への配線負荷が、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２によって切り離されているため、各ラウンド開始時におけるＬレジスタ２１１、Ｒレジスタ２１２の格納値の変化に伴なう消費電流は、Ｌレジスタ２１１、Ｒレジスタ２１２回路内の動作に起因する分だけとなり、従来構成に比べて激減し、ＤＰＡ攻撃がかなり困難になる。
【００９１】
一方、充放電電流を発生させる配線パスＬ（ｐａｔｈ＿Ｌ）３１１は、各ラウンドにおけるスイッチ３（ＳＷ３）３０１の切り替え（ｃとｄの切り替え）によって、乱数値を格納したレジスタであるＲＮ１レジスタ３３１とＬレジスタ２１１とに交互に接続され、また、配線パスＲ（ｐａｔｈ＿Ｒ）３１２も、スイッチ４（ＳＷ４）３０２の切り替え（ｃとｄの切り替え）によって、乱数値を格納したレジスタであるＲＮ２レジスタ３３２とＲレジスタ２１２とに交互に接続される。
【００９２】
このため、例えばラウンド１（Ｒｏｕｎｄ１）に切り換わった直後においては、Ｆ関数部２００への入力は、乱数値を格納したレジスタであるＲＮ２レジスタ３３２から、スイッチ４（ＳＷ４）３０２を介して、乱数値"ＲＮ２"が入力され、また、セッション鍵（ラウンド鍵）"Ｋ１"が入力される。
【００９３】
従って、このタイミングにおけるＳ−ｂｏｘ２０４の出力は、図９にも示すように、下記の式（数式１０）によって示される値から、式（数式１１）によって示される値に遷移することになる。
【数８】
2006019872.tif 000010
【００９４】
上記式において、ＥＸ（Ａ）は、入力Ａに対する置換部（拡張関数）２０１の出力を示し、Ｓ［Ｂ］は、入力Ｂに対するＳボックス（Ｓ−ｂｏｘ）２０４における非線形変換の出力を表わす。
【００９５】
ラウンド１（Ｒｏｕｎｄ１）に切り換わった直後においてＳ−ｂｏｘ２０４の出力は、上記式（数式１０）によって示される値から、式（数式１１）によって示される値に遷移する。ここで、上記式（数式１０，１１）において、
乱数［ＲＮ２］は、下記の（ａ）〜（ｄ）のいずれの値とも無関係であり独立な値である。
（ａ）［Ｒ＿ｉｎｉｔ］：ラウンド１開始前のＲレジスタ２１２の初期的な格納値、すなわち初期置換（ＩＰ）実行時の初期格納値、
（ｂ）［Ｋ＿ｉｎｉｔ］：ラウンド１開始前のセッション鍵（ラウンド鍵）、
（ｃ）［Ｒ０］：ラウンド１時点におけるＲレジスタ２１２の格納値、
（ｄ）［Ｋ１］：ラウンド１時点におけるセッション鍵（ラウンド鍵）、
【００９６】
Ｓ−ｂｏｘ２０４の出力が、ラウンド１の開始前後において、前述の式（数式１０）に示す値から（数式１１）式に示す値に変化した時の配線負荷の充放電が発生する場合は、下記式（数式１２）においてビット１が立つ場合である。
【数９】
2006019872.tif 000011
【００９７】
上記式において、ビット１が立つ場合とは、ラウンド１の前後においてＳ−ｂｏｘ２０４からの出力ビット値が変化する場合に相当する。
【００９８】
ラウンド１への遷移の後、所定時間経過後に、スイッチ４（ＳＷ４）３０２が、"ｄ"から"ｃ"に切り換わり、Ｒレジスタ２１２に格納された値［Ｒ０］がＦ関数部２００に入力され、Ｆ関数部２００内での演算が実行されて、Ｓ−ｂｏｘ２０４の出力は、上記式（数式１１）の値から、下式（数式１３）の値に変化することになる。
【数１０】
2006019872.tif 000012
【００９９】
この時、Ｓ−ｂｏｘ２０４の出力の変化に基づいて負荷配線の充放電が発生する場合は、下記式（数式１４）においてビット１が立つ場合である。
【数１１】
2006019872.tif 000013
【０１００】
以上のビットの変化を、ＤＰＡ攻撃行なう時のシミュレーションでの演算結果と比較する。図１０に、Ｓ−ｂｏｘ２０４の出力に基づくＤＰＡ攻撃を行なう場合のシミュレータにおけるグループ分けと、図８に示す本発明の暗号処理装置の回路構成におけるＳボックスの出力値との対応を示す。
【０１０１】
図１０は、鍵を仮定したときのシミュレータの算出値のうち、
（ａ１）ラウンド１開始前のＳボックス出力値
（ａ２）ラウンド１開始後のＳボックス出力値
（ａ３）ラウンド１の開始前後における電流の発生有無（１＝電流発生）
（ａ４）グループ分け：（ａ３）の結果に基づいたグループ分けであり、電流発生あり＝グループ１、電流発生なし＝０  を示している。
【０１０２】
一方、実際のＩＣの動作においては、Ｆ関数の入力の乱数［ＲＮ２］はシミュレータの算出値の４つの場合のいずれにおいても"０"と"１"を採りうるから、Ｓボックスの出力も前述の式（数式１１）によって示される様に、０，１いずれの値も発生する可能性がある。
【０１０３】
結果として、実際のＳボックス（Ｓ−ｂｏｘ）２０４の出力の変化は、図１０に示すように、
（ｂ１）ラウンド１開始前のＳボックス出力値の変化
（ｂ２）ラウンド１開始後のＳボックス出力値の変化
は、０，１いずれの値も発生する。
【０１０４】
従って、シミュレータの演算結果に基づいて消費電流波形を２つにグループ分けした場合、仮に仮定した鍵が正しい鍵で合ったとしても実際には両グループはほぼ同数の"０"と"１"を含み、両グループの差分を採ってもピークは現われない。
【０１０５】
次に、Ｒレジスタ２１２の負荷電流に対するＤＰＡ攻撃の場合について説明する。
ラウンド１（Ｒｏｕｎｄ１）からラウンド２（Ｒｏｕｎｄ２）への切り換わり時点では、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２は、それぞれ乱数レジスタ（ＲＮ１レジスタ３３１とＲＮ２レジスタ３３２）側である"ｄ"に設定される。
【０１０６】
従って、パスＬ（ｐａｔｈ＿Ｌ）３１１は、Ｌレジスタ格納値＝Ｌ０から乱数値＝ＲＮ１に変化し、パスＲ（ｐａｔｈ＿Ｒ）３１２は、Ｒレジスタ格納値＝Ｒ０から乱数値＝ＲＮ２に変化する。この時、例えばパスＲ（ｐａｔｈ＿Ｒ）３１２では、Ｒレジスタ格納値＝Ｒ０から乱数値＝ＲＮ２への変化に伴い、下記式（数式１５）において、ビット１が立つ場合に充放電が起こる。
【数１２】
2006019872.tif 000014
【０１０７】
しかし、この式（数式１５）からも理解されるように、上記式（数式１５）は、乱数値＝ＲＮ２に依存しており、乱数［ＲＮ２］は０，１いずれの値も均等に発生する可能性があり、推定ビット値として［０］または［１］を設定したシミュレーションを行なってもピーク検出による情報解析は不可能となる。
【０１０８】
図１１は、Ｒレジスタ２１２の負荷電流に対するＤＰＡ攻撃を行なう場合のシミュレータにおけるグループ分けと、図８に示す本発明の暗号処理装置の回路構成におけるＲレジスタ２１２の負荷電流との対応を示す。
【０１０９】
図１１において、シミュレータの算出値は、
（ａ１）ラウンド２開始前のパスＲ（ｐａｔｈ＿Ｒ）３１２のデータ値
（ａ２）ラウンド２開始後のパスＲ（ｐａｔｈ＿Ｒ）３１２のデータ値
（ａ３）ラウンド２の開始前後における充放電の発生有無（１＝充放電発生）
（ａ４）グループ分け：充放電発生あり＝グループ１、充放電発生なし＝０
を示している。
【０１１０】
しかし、実際のラウンド１からラウンド２への遷移時には、スイッチ４（ＳＷ４）３０２は、ＲＮ２レジスタ３３２側である"ｄ"に設定され、このときのＲＮ２レジスタ３３２からの出力は０，１いずれの値も発生する可能性がある。
【０１１１】
結果として、ラウンド２の開始前後における実際のパスＲ（ｐａｔｈ＿Ｒ）３１２の充放電の発生有無は前述の式（数式１５）において、ビット１がたつ場合であり、図１１（ｂ１）、すなわち、
（ｂ１）ラウンド２の開始前後における充放電の発生有無（１＝充放電発生）
に示すように、０，１いずれの値も発生する。
【０１１２】
従って、シミュレータの演算結果に基づいてパスＲ（ｐａｔｈ＿Ｒ）３１２の充放電の発生有無について、２つにグループ分けした場合、仮に仮定した鍵が正しい鍵であったとしても実際には両グループはほぼ同数の"０"と"１"を含み、両グループの差分を採ってもピークは現われることがなく、パスＲ（ｐａｔｈ＿Ｒ）３１２の充放電の発生有無に基づく解析は不可能となる。
【０１１３】
この状況は、パスＬ（ｐａｔｈ＿Ｌ）３１１においても同様であり、パスＬ（ｐａｔｈ＿Ｌ）３１１の充放電の発生有無状態に基づく情報解析は不可能である。
【０１１４】
ラウンド２への遷移後、予め設定された時間が経過すると、スイッチ３（ＳＷ３）３０１とスイッチ４（ＳＷ４）３０２は、それぞれ乱数レジスタ（ＲＮ１レジスタ３３１とＲＮ２レジスタ３３２）側である"ｄ"から"ｃ"に切り換わり、Ｒレジスタ２１２に格納された値［Ｒ＿０］がＦ関数部２００に入力され、Ｆ関数部２００内での演算が実行される。
【０１１５】
この時、パスＬ（ｐａｔｈ＿Ｌ）３１１と、パスＲ（ｐａｔｈ＿Ｒ）３１２は、各々、ＲＮ１→Ｌ１，ＲＮ２→Ｒ１に変化することになる。
【０１１６】
この中で、"Ｒ１"は、前述した式（数式２）から理解されるように、秘密情報であるセッション鍵（ラウンド鍵）"Ｋ１"の要素を含むデータであるが、パスＲ（ｐａｔｈ＿Ｒ）３１２を介した電流値の変化を発生させる場合は、下式（数式１６）において、［１］のたつ場合となる。
【数１３】
2006019872.tif 000015
【０１１７】
上記式において、ビット１が立つ場合とは、ラウンド２期間中において、ラウンド２遷移後、予め定められた時間経過後にスイッチ４（ＳＷ４）３０２が"ｄ"から"ｃ"へ切り換わり、その前後において、パスＲ（ｐａｔｈ＿Ｒ）３１２を介した電流値の変化が発生した場合に相当する。この変化を観察する場合、上記式（数式１６）から理解されるように、パスＲ（ｐａｔｈ＿Ｒ）３１２を介した電流値の変化は、入力乱数［ＲＮ２］に依存する値となり、入力乱数［ＲＮ２］は０，１いずれの値も均等に発生する可能性があり、結果として、パスＲ（ｐａｔｈ＿Ｒ）３１２を介した電流値の変化の発生確率も均等となり、推定ビット値として［０］または［１］を設定したシミュレーションを行なってもピーク検出による情報解析、すなわちＤＰＡ解析は不可能となる。
【０１１８】
なお、上述した実施例の説明において、乱数ＲＮ１，ＲＮ２は、それぞれ各ラウンド毎に発生させ、各ラウンド毎に異なる乱数を適用することが好ましい。すなわち、乱数生成手段を有し、乱数生成手段が各ラウンド毎に異なる乱数を生成して、各ラウンドの遷移時に、ラウンド毎に異なる乱数をＦ関数部に出力する構成とすることで、さらにＤＰＡ耐性の向上した暗号処理装置が実現される。
【０１１９】
具体的な例としては、例えば各ラウンド毎に１ビットの乱数値を発生させ、その値が"１"の場合には前のラウンドで用いた乱数を１ビットずらしてそのラウンドの乱数として適用するなどの構成としてもよい。この構成により、ＤＰＡ耐性がさらに向上した暗号処理装置が実現される。
【０１２０】
最後に、上述の暗号処理を実行するデバイスとしてのＩＣモジュール６００の構成例を図１２を参照して説明する。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図１２に示すＩＣモジュール６００は、これら様々な機器に構成することが可能である。
【０１２１】
図１２に示すＣＰＵ(Central processing Unit)６０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述したスイッチの切り替え制御、その他の各種プログラムを実行するプロセッサである。メモリ６０２は、ＣＰＵ６０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ６０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ６０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１２２】
暗号処理部６０３は、例えば上述したＤＥＳアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理部である。
【０１２３】
乱数発生器６０４は、前述の各ラウンドの遷移時にＦ関数部に入力すべき乱数の発生処理などを実行する。
【０１２４】
送受信部６０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１２５】
なお、暗号処理部６０３において適用される各種の制御信号、例えば前述したスイッチの切り替え制御信号は、クロック６０６からのクロック信号をトリガにして動作するタイミング発生回路６０７において生成し、暗号処理部６０３に供給することが可能である。
【０１２６】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１２７】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１２８】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１２９】
本発明の構成では、例えばＤＥＳなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド関数処理を実行する、いわゆるＦ関数部に対してラウンド遷移時に乱数を入力し、その後、レジスタに格納された中間データを出力して演算処理を実行する構成とした。本構成により、ラウンド遷移時には乱数に基づくＳボックス出力が発生し、また、レジスタ接続パスにおける電流または電位変動が発生する。従って、これらは各ラウンドにおいて適用される秘密情報としてのセッション鍵（ラウンド鍵）の構成ビット情報と無関係な電流または電位変動となり、Ｓボックスの出力やレジスタ接続パスの電流または電位変動に基づく電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）による秘密情報の解析が不可能となり、セキュリティレベルの高い暗号処理装置が実現される。
【０１３０】
本発明の構成によれば、スイッチ制御による乱数入力構成を加えるといった簡易な構成によって、電力差分解析（ＤＰＡ）に基づく攻撃に対する耐性の高い暗号処理装置が実現される。乱数入力を各ラウンドにおいて実行することにより、Ｓボックスの出力やレジスタ接続パスの電流または電位変動は秘密情報（ラウンド鍵構成ビット情報）と無関係となり、ＤＰＡ耐性のある暗号処理装置が実現される。
【図面の簡単な説明】
【０１３１】
【図１】ＤＥＳ暗号処理の基本構成を示す図である。
【図２】ラウンド関数部の各ラウンドを構成する変換部の構成を示す図である。
【図３】Ｆ関数の構成を示す図である。
【図４】レジスタを持つ具体的なＦ関数部の回路構成を示す図である。
【図５】図４に示す回路を動作させた時の最初の数ＣＬＫのタイミング及び主要ノードの出力値を説明するタイミングチャートを示す図である。
【図６】電源投入直後のＤＥＳ演算でラウンド１へ切り換わった時のＳ−ｂｏｘ２０４の出力変化及びこのＳ−ｂｏｘ２０４の出力変化に伴なう電流値を示す図である。
【図７】Ｒレジスタ２１２の出力値の"Ｒ０"から"Ｒ１"への変化に伴うパス上の電流の有無との関係について説明する図である。
【図８】本発明に係る暗号処理装置の持つ回路構成を説明する図である。
【図９】本発明に係る暗号処理装置におけるレジスタ入出力データ、Ｓ−ｂｏｘ出力データのデータ推移を示すタイミングチャートを示す図である。
【図１０】Ｓ−ｂｏｘの出力に基づくＤＰＡ攻撃を行なう場合のシミュレータにおけるグループ分けと、図８に示す本発明の暗号処理装置の回路構成におけるＳボックスの出力値との対応を示す図である。
【図１１】Ｒレジスタの負荷電流に対するＤＰＡ攻撃を行なう場合のシミュレータにおけるグループ分けと、図８に示す本発明の暗号処理装置の回路構成におけるＲレジスタ２１２の負荷電流との対応を示す図である。
【図１２】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１３２】
１１０  ラウンド関数部
１１１  初期置換部
１１２，１１３  変換部
１１４  逆置換部
１２０  鍵スケジュール部
１２１  選択置換部
１２２，１２３  鍵生成部
１５１  Ｆ関数部
１７１，１７２  置換部
１８１  Ｓボックス
２００  Ｆ関数部
２０１  置換部
２０２  セッション鍵（ラウンド鍵）
２０３  排他論理和部
２０４  Ｓボックス（Ｓ−ｂｏｘ）
２０５  置換部
２０６  排他論理和部
２１１  Ｌレジスタ
２１２  Ｒレジスタ
２１５，２１６  スイッチ
２２１  初期置換部
２２２  逆置換部
２３１  メッセージ
２３２  暗号文
３０１，３０２  スイッチ
３１１  配線パスＬ
３１２  配線パスＲ
３３１  乱数（ＲＮ１）レジスタ
３３２  乱数（ＲＮ２）レジスタ
６００  ＩＣモジュール
６０１  ＣＰＵ(Central processing Unit)
６０２  メモリ
６０３  暗号処理部
６０４  乱数発生器
６０５  送受信部
６０６  クロック
６０７  タイミング発生回路
【図１】
2006019872.tif 000016
【図２】
2006019872.tif 000017
【図３】
2006019872.tif 000018
【図４】
2006019872.tif 000019
【図５】
2006019872.tif 000020
【図６】
2006019872.tif 000021
【図７】
2006019872.tif 000022
【図８】
2006019872.tif 000023
【図９】
2006019872.tif 000024
【図１０】
2006019872.tif 000025
【図１１】
2006019872.tif 000026
【図１２】
2006019872.tif 000027