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