(57)【特許請求の範囲】
【請求項１】
複数回のラウンド演算の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であり、
ラウンド演算を実行するラウンド演算部と、
各ラウンドのラウンド演算結果を格納するレジスタと、
前記レジスタに対するデータ格納タイミングの制御を行なうクロック信号を生成し、前記レジスタに出力するクロック信号生成部とを有し、
前記クロック信号生成部は、
異なるタイミングを持つ複数の異なるクロック信号を生成し、該生成した複数の異なるクロック信号を、前記レジスタを構成する複数のビットデータ格納レジスタ回路に選択的に入力する構成を有することを特徴とする暗号処理装置。
【請求項２】
前記レジスタは、
マスタとスレーブの２つのラッチを有する構成であり、
前記クロック信号生成部は、
前記レジスタのマスタとスレーブの制御用クロックの組として、
（ＣＬＫ１−１，ＣＬＫ２−１）〜（ＣＬＫ１−ｎ，ＣＬＫ２−ｎ）
のｎ個のクロックの組を生成し、前記レジスタを構成する複数のビットデータ格納レジスタ回路のマスタおよびスレーブの制御用クロックとして選択的に入力する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記クロック信号生成部は、
前記レジスタのマスタとスレーブの制御用クロックの組として、
前記マスタから前記スレーブに対するデータ入力タイミングが前記マスタにおけるデータ保持開始タイミングより遅延させる設定としたクロックの組を生成し前記レジスタのマスタおよびスレーブに入力する構成であることを特徴とする請求項２に記載の暗号処理装置。
【請求項４】
前記クロック信号生成部は、
前記レジスタのマスタとスレーブの制御用クロックの組として、
前記ラウンド演算部に含まれるＳボックスの非線形変換部としての構成要素（Ｓ１〜Ｓ８）各々の出力４ビットに対応する４種類のクロックの組を生成して、前記レジスタを構成する複数のビットデータ格納レジスタ回路のマスタおよびスレーブに入力する構成であることを特徴とする請求項２に記載の暗号処理装置。
【請求項５】
前記クロック信号生成部は、
暗号処理装置において適用するシステムクロック、および発振回路の出力に基づいて、複数の異なるタイミングのクロック信号を生成する構成を有することを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記ラウンド演算部は、非線形変換部としてのＳボックスを有し、
前記レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項７】
前記暗号処理装置は、
ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関する。さらに詳細には、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関する。
【背景技術】
【０００２】
昨今、ＩＣカード、ネットワーク通信、電子商取引などの発展に伴い、ＩＣカードを利用したデータ送受信やネットワークを介した通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
【０００４】
ＩＣカードでは、例えばリーダライタやホストコンピュータとデータのやり取りを行なう時、その過程でＩＣカードに格納されている秘密情報が漏れても問題を発生させないために、送受信データは暗号化される。
【０００５】
この暗号化方法として多く用いられている方式の１つとしてＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がある。ＤＥＳは、代表的な共通鍵暗号方式のアルゴリズムであり、例えばデータ送受信者としてのＩＣカードとホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
【０００６】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限り復号化してメッセージを取り出すのは困難である。また、暗号化・復号化の時に使う鍵は、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納され、暗号化・復号化時にはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送される様な制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出す事が不可能な構成を採ってセキュリティを保持している。
【０００７】
しかし、このような共通鍵暗号処理においては、暗号解析による鍵の漏洩が問題となっている。代表的な鍵解析手法として、電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）がある。暗号処理回路を内蔵したデバイスの消費電流は一般に演算内容と演算に用いられている秘密情報に依存して変動する。しかしこれらの内容に依存した消費電流の変化は小さく、測定誤差やノイズなどから見分けることは一般に困難と考えられていた。
【０００８】
しかし、Ｐ．Ｋｏｃｈｅｒらは大量の消費電流波形を取得して、鍵を推定してそれらを統計処理する事により鍵情報を取り出す方法を提案した。これがＤＰＡ（電力差分解析）と呼ばれる手法である。
【０００９】
このＤＰＡ攻撃では、異なる１０００個程度の平文パターンを用いて暗号化演算を行なって各パターンにおける消費電流波形を測定する。そして、推定した仮の鍵を設定し、ＤＥＳ暗号処理部を構成する非線形変換部としてのＳボックスの出力値に基づいてその消費電流波形を統計処理することにより実際に適用されている鍵を解析するものである。
【００１０】
ただし、ＤＥＳ暗号処理部を構成する非線形変換部としてのＳボックスをハードウェア論理回路の構成とした場合、Ｓボックスの出力値の変動を直接計測することは困難となる。この場合、Ｓボックスからの出力値を格納するレジスタに対するデータ格納時の変化ビットの情報を消費電流波形から推測して統計処理を行い鍵の解析を行なう。
【００１１】
一般的なＤＥＳ演算回路の構成例について図を参照して説明する。ＤＥＳ暗号処理は、Ｆ関数と呼ばれる変換関数などを適用した単純な演算の繰り返しにより、平文を暗号文に変換する構造を持つ。図１にＤＥＳ暗号処理の基本構成を示す。ＤＥＳ暗号処理構成は、入力データの変換を実行するラウンド関数部１１０と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部１２０とによって構成される。
【００１２】
ラウンド関数部１１０において、平文（６４ビット）は、まず、初期置換部１１１において、置換後にＬ，Ｒ各３２ビットに分割され、分割されたＬ，Ｒ３２ビットが、第１段ラウンド関数部１１２に入力され、鍵スケジュール部１２０の第１段鍵生成部１２２から入力する鍵Ｋ（１）に基づいて変換処理がなされる。変換処理結果は、次段の第２段ラウンド関数部１１３に入力される。
【００１３】
鍵スケジュール部１２０においては、まず、マスタ鍵（秘密鍵）置換部１２１により入力マスタ鍵（秘密鍵：６４ビット）のパリティ８ビットが取り除かれ、残り５６ビットの入れ替え処理が実行されて第１段ラウンド鍵生成部１２２に入力される。第１段ラウンド鍵生成部１２２では、入力ビット列のシフト処理および８ビットのデータ破棄等が実行され、４８ビットのラウンド鍵Ｋ（１）を生成し、生成したラウンド鍵Ｋ（１）をラウンド関数部１１０の第１段ラウンド関数部１１２に出力する。第１段ラウンド鍵生成部１２２では、シフト処理による上位ビット列（２８ビット）と下位ビット列（２８ビット）とを下段の第２段ラウンド鍵生成部１２３に出力する。
【００１４】
ラウンド関数部は、１６段のラウンド関数部を有し、それぞれ前段のラウンド関数部の出力を入力として鍵スケジュール部１２０から入力する鍵を適用した変換処理を実行し、変換結果を後段のラウンド関数部に出力する。１６段のラウンド関数部で変換された出力が逆置換部１１４に入力され、初期置換部１１１の逆置換処理が実行されて、暗号文として出力される。
【００１５】
１６段のラウンド関数部は、ハードウェア的には１つ設定し、この１つのラウンド関数部を繰り返し使用する構成とするのが一般的である。すなわち、上段の出力をレジスタに格納し、レジスタ格納値を次段のラウンド関数部の入力として利用する構成である。ラウンド関数部の構成例を図２に示す。
【００１６】
図２に示すラウンド関数部１５０の構成中、スイッチ（ＳＷ１）は、ＤＥＳ演算開始時には"ａ"側に接続されている。ＤＥＳ演算が開始されると、平文を初期置換部［ＩＰ（Ｉｎｉｔｉａｌ  Ｐｅｒｍｕｔａｔｉｏｎ）］１４１において置換後、２つの３２ｂｉｔデータＬ０，Ｒ０に分けられ、制御クロックに基づく制御タイミングとしてのラッチパルス（Ｌａｔｃｈ  Ｐｕｌｓｅ）の立ち上がりでＬ／Ｒレジスタ１５１，１５２へ取り込まれると同時にＳＷ１を"ｂ"側に切り替える。
【００１７】
このデータ取り込みによってＬ／Ｒレジスタ１５１，１５２の出力がＬ０，Ｒ０に設定され、その後、これらのレジスタ格納値に基づいて、Ｆ関数部１５３と排他論理和演算（ＸＯＲ）部１５４を適用したラウンド（Ｒｏｕｎｄ）演算が実行され、その結果が再度、スイッチ（ＳＷ１）を介してＬ／Ｒレジスタ１５１，１５２に入力される。
【００１８】
さらに、次のクロックサイクルのラッチパルスの立ち上がりでＬ／Ｒレジスタ１５１，１５２へ取り込まれ、その出力が更新されることにより次のラウンドの演算が開始される。この動作を１６クロックサイクル繰り返した後、演算結果を逆置換部（ＩＰ−１）１４２へ出力して逆置換変換を実行し、暗号文として出力する。
【００１９】
Ｆ関数部１５３の詳細構成を図３に示す。Ｆ関数は、非線形処理を実行する複数のＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値、すなわち、Ｒ（ｎ−１）は拡張部１７１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）と排他論理和が実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックス１８１−１〜８に入力される。各Ｓボックスでは、例えば変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
【００２０】
Ｓボックス１８１−１〜８からの出力ビット４×８＝３２ビットは、置換部１７２に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００２１】
図２に示すラウンド関数部１５０のＬ／Ｒレジスタ１５１，１５２では、各ラウンド毎にデータの書き換えが行われることになる。ラウンド関数部１５０のＬ／Ｒレジスタ１５１，１５２には、それぞれ３２ビットデータが格納される。すなわち、３２ビットのレジスタを２つ用いてデータ保持が行なわれる。
【００２２】
一般的にレジスタが変化する時の消費電流は大きい。このレジスタに対するデータ書き換え時の消費電流波形を取得すると、取得電流にはレジスタのデータ更新時の変化ビットと相関のある電流成分が含まれることになる。例えば最初のラウンド演算（Ｒｏｕｎｄ１）を実行した後の演算結果［Ｒｏｕｎｄ１］は、以下のように示すことができる。
［Ｒｏｕｎｄ１］
【数１】
0004765609.tif 000002
【００２３】
上記式において、
Ｌ０：ラウンド１開始前のレジスタＬ１５１の格納値
Ｒ０：ラウンド１開始前のレジスタＲ１５２の格納値
Ｌ１：ラウンド１終了後のレジスタＬ１５１の格納値
Ｒ１：ラウンド１終了後のレジスタＲ１５２の格納値
Ｋ１：ラウンド１に適用されるラウンド鍵
Ｆ（Ｒ０，Ｋ１）：図２に示すＦ関数部１５３の関数であり、入力値Ｒ０とラウンド鍵Ｋ１に基づく関数
である。
【００２４】
すなわち、ラウンド１終了後のレジスタＬ１５１の格納値であるＬ１は、ラウンド１開始前のレジスタＲ１５２の格納値Ｒ０となり、ラウンド１終了後のレジスタＲ１５２の格納値であるＲ１は、入力値Ｒ０とラウンド鍵Ｋ１に基づくＦ関数部１５３での処理結果と、ラウンド１開始前のレジスタＬ１５１の格納値Ｌ０との排他論理和演算（ＸＯＲ）結果となる。
【００２５】
ラウンド１の処理前のＬ／Ｒレジスタ１５１，１５２のデータは各々"Ｌ０"，"Ｒ０"であるため、次のクロックサイクルでのデータ格納時の変化ビットは、ラウンド１の処理後のＬ／Ｒレジスタ１５１，１５２のデータ"Ｌ１"，"Ｒ１"との排他論理和演算（ＸＯＲ）を行なうことによって求められる。すなわち、下式よって示される。
【数２】
0004765609.tif 000003
【００２６】
上記式（式３）、（式４）が、ラウンド１の処理結果の格納時におけるＬ／Ｒレジスタ１５１，１５２の変化ビットを示す式となる。
【００２７】
ＤＰＡ攻撃では、１０００個程度の平文を適用してＤＥＳ演算を実行してその消費電流波形を取得し、上記（式３）において、ラウンド鍵"Ｋ１"のうち８個のＳボックス各々に対応する６ｂｉｔずつの鍵を仮定して、それに基づいて消費電流波形を統計処理する。この処理によって、推定した鍵が正しい場合にピーク電流が観察される。この処理を８個のＳボックス全てに対して行なうと４８ｂｉｔの鍵を求める事ができ、残り８ｂｉｔは２８＝２５６回の全数攻撃で求める事ができる。
【００２８】
この統計処理による鍵解析処理の概要について説明する。まず、着目したＳボックスの構成要素（Ｓ１〜Ｓ８）各々に対応する６ｂｉｔ鍵を推定してシミュレーションを行なって、その出力の着目ノードの値が"０"か"１"かに応じて対応する平文の消費電流波形をグループ分けし、各グループの消費電流波形の平均電流の差分を取って、ピーク波形の発生の有無で推定した６ｂｉｔ鍵の妥当性を判断する。さらに、各グループの消費電流の平均を取得し、ＤＥＳ演算回路に入力されるクロック信号でタイミングを合わせて消費電流波形の加算を行なう。
【００２９】
推定した６ｂｉｔ鍵が正しい場合、一方のグループでのみ着目しているノードの変化に伴う微小電流が流れ、これが積算され、２つのグループの差分を取れば、積算された微小電流がピーク波形となって現れる。
【００３０】
このようなピーク電流の発生を防止するためには、実際にＤＥＳ演算回路でラウンド演算を行なうクロック信号を、ＤＥＳ演算回路に入力されるクロック信号と非同期にしてしまう方法が有効である。このような設定とすれば、着目している微小電流が同じタイミングで積算されないため、ピーク電流は発生しない。具体的には、ＤＥＳ演算回路に供給されるクロックより高い周波数の発振器を搭載して、そのクロックでＤＥＳ演算回路に供給されるクロックをリタイミングしたクロックでＤＥＳ演算を実行することによりピーク電流の発生を防止することが可能となる。
【００３１】
しかし、ＤＥＳ演算のラウンド演算が実行されるとき、ラウンド演算開始直後に演算回路の動作に伴なう大きな電流が流れるがその後流れなくなる。これをラウンド演算毎に繰り返す。従って、平文毎に消費電流波形の微分解析を行なって、消費電流波形の立ち上がりの急峻なタイミングで加算処理を行なえば、着目している微小電流をほぼ同じタイミングで積算することが可能となり、統計処理が可能となってしまう可能性がある。
【００３２】
上述したクロック信号の制御に加えて、例えば、乱数で制御されるノイズ電流を重畳する事によって消費電流波形の微分解析を困難にする対策についても提案されている。しかし、このような対策が施されていたとしても、局所的な領域での変化を取得可能なＤＥＭＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｅｌｅｃｔｒｏ  Ｍａｇｎｅｔｉｃ  Ａｎａｌｙｓｉｓ）攻撃を施せば、乱数で制御されるノイズ電流成分の影響を受けない信号の取得が可能となり、結果として鍵の取得は可能となってしまう。
【００３３】
演算結果の格納を、ＤＥＳ演算器に供給されるクロックと相関のないクロックでビット毎に行なえば、格納電流の発生タイミングもずれるため統計処理は困難になる。例えば、ＤＥＳ演算を構成する１６段のラウンド演算中のラウンド１に適用するラウンド鍵"Ｋ１"のＳボックスの構成要素"Ｓ１"の４ビットの演算結果がランダムなタイミングでレジスタに格納される場合、各ビットの格納に伴なう電流もランダムなタイミングで発生し、正しい推定鍵に基づく統計処理が行なわれても、着目したビットでの微小な格納電流は積算されない。このため、ＤＰＡ攻撃は失敗する。
【００３４】
この方法は、演算時間の要求が厳しくない場合に有効な方法である。しかし、この場合、"Ｓ１"の４ビットの演算結果で最初に格納されたビットによってレジスタの値が変化すると、ラウンド関数ではその変化した値に基づく演算が実行されるため、最初に格納するビットと最後に格納するビットの時間差がラウンド関数での演算時間より長いと、最後に格納するビットの値は変化して誤った値が格納されてしまい、正常なＤＥＳ演算が行なわれなくなるという問題がある。
【発明の開示】
【発明が解決しようとする課題】
【００３５】
本発明は、上記問題点に鑑みてなされたものであり、処理アルゴリズムを複雑化させることなく、また処理回路を非常に大きくすることなく暗号処理シーケンスの持つ規則的な処理に伴う消費電流波形の統計処理に基づく電力解析による暗号解析の困難性を高めることを可能とした暗号処理装置を提供することを目的とする。
【００３６】
具体的には、本発明は、ＤＥＳ暗号処理において実行される１６段のラウンド演算の結果を格納するレジスタに対するデータ格納タイミングの制御により、ＤＰＡ攻撃に対する耐性を高めた暗号処理装置を提供するものであり、演算結果のレジスタ格納タイミングをビット毎にランダムに制御する事によってＤＰＡ攻撃のための統計処理を困難にし、なおかつ、正しい演算結果を出力することを可能とした暗号処理装置を提供することを目的とする。この目的を実現するために、例えば、
レジスタのマスタとスレーブを別のクロックで制御する、
Ｓボックスの個々の構成要素"Ｓ１"〜"Ｓ８"各々の４ビット出力のレジスタへの格納を複数の異なるタイミングのクロックで行なう、
このような処理によって、ＤＰＡ攻撃に対する耐性を高めた暗号処理装置を提供する。
【課題を解決するための手段】
【００３７】
本発明の第１の側面は、
複数回のラウンド演算の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であり、
ラウンド演算を実行するラウンド演算部と、
各ラウンドのラウンド演算結果を格納するレジスタと、
前記レジスタに対するデータ格納タイミングの制御を行なうクロック信号を生成し、前記レジスタに出力するクロック信号生成部とを有し、
前記クロック信号生成部は、
異なるタイミングを持つ複数の異なるクロック信号を生成し、該生成した複数の異なるクロック信号を、前記レジスタを構成する複数のビットデータ格納レジスタ回路に選択的に入力する構成を有することを特徴とする暗号処理装置にある。
【００３８】
さらに、本発明の暗号処理装置の一実施態様において、前記レジスタは、マスタとスレーブの２つのラッチを有する構成であり、前記クロック信号生成部は、前記レジスタのマスタとスレーブの制御用クロックの組として、
（ＣＬＫ１−１，ＣＬＫ２−１）〜（ＣＬＫ１−ｎ，ＣＬＫ２−ｎ）
のｎ個のクロックの組を生成し、前記レジスタを構成する複数のビットデータ格納レジスタ回路のマスタおよびスレーブの制御用クロックとして選択的に入力する構成であることを特徴とする。
【００３９】
さらに、本発明の暗号処理装置の一実施態様において、前記クロック信号生成部は、前記レジスタのマスタとスレーブの制御用クロックの組として、前記マスタから前記スレーブに対するデータ入力タイミングが前記マスタにおけるデータ保持開始タイミングより遅延させる設定としたクロックの組を生成し前記レジスタのマスタおよびスレーブに入力する構成であることを特徴とする。
【００４０】
さらに、本発明の暗号処理装置の一実施態様において、前記クロック信号生成部は、前記レジスタのマスタとスレーブの制御用クロックの組として、前記ラウンド演算部に含まれるＳボックスの非線形変換部としての構成要素（Ｓ１〜Ｓ８）各々の出力４ビットに対応する４種類のクロックの組を生成して、前記レジスタを構成する複数のビットデータ格納レジスタ回路のマスタおよびスレーブに入力する構成であることを特徴とする。
【００４１】
さらに、本発明の暗号処理装置の一実施態様において、前記クロック信号生成部は、暗号処理装置において適用するシステムクロック、および発振回路の出力に基づいて、複数の異なるタイミングのクロック信号を生成する構成を有することを特徴とする。
【００４２】
さらに、本発明の暗号処理装置の一実施態様において、前記ラウンド演算部は、非線形変換部としてのＳボックスを有し、前記レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する構成であることを特徴とする。
【００４３】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする。
【００４４】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４５】
本発明の構成によれば、処理アルゴリズムを複雑化させることなく、暗号処理シーケンスの持つ規則的な処理に伴う消費電流波形の統計処理に基づく電力解析による暗号解析の困難性を高めた暗号処理装置が実現される。
【００４６】
本発明の構成では、例えばＤＥＳなど複数段のラウンド演算の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド演算の結果を格納するレジスタに対するデータ格納タイミングの制御を行なうクロック信号を、レジスタを構成するマスタとスレーブで別なクロック（ＣＬＫ１，ＣＬＫ２）とし、さらに、例えば発振器の出力でリタイミングして複数のタイミングを持つ複数のクロック信号の組（ＣＬＫ１−１，ＣＬＫ１−２）〜（ＣＬＫ２−ｎ，ＣＬＫ２−ｎ）を生成してジスタ構成回路としてのマスタおよびスレーブに選択的に供給して、異なるタイミングでのビットデータ取り込みを実現した。本構成により、消費電流の統計処理によるＤＰＡ攻撃に対する耐性の高い暗号処理装置が実現される。
【発明を実施するための最良の形態】
【００４７】
以下、本発明の暗号処理装置の詳細について説明する。本発明は、例えばＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに代表される複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、暗号処理回路規模の増大を抑えつつ、電力差分解析（ＤＰＡ）耐性を持った回路構成を提供することを目的としてなされたものである。
【００４８】
先に、図１〜３を参照して説明したように、ＤＥＳの演算処理を実行する回路は、複数段（１６段）のラウンド関数を繰り返し実行させる回路を含む。通常、ＤＥＳの演算フローの実行回路を設計する際には、１６段のラウンド関数を実行する関数実行回路を１個作り、それを１６回、繰り返し動作させる構成とする。
【００４９】
従来の一般的なラウンド関数部は、図２を参照して説明した構成を有し、前述したように、ＤＥＳ暗号処理において実行される１６段のラウンド演算の演算結果は２つの３２ビットレジスタ（図２に示すＬレジスタ１５１，Ｒレジスタ１５２）に格納される。各レジスタは、３２ビットを構成する１ビットデータを保持する回路、具体的には、例えばラッチ回路によって構成されるＤ型フリップフロップを有し、３２個のＤ型フリップフロップに３２ビットを保持する構成とされている。
【００５０】
従来のレジスタに適用されている一般的な１ビットデータ保持用Ｄ型フリップフロップからなるレジスタ回路構成を図４に示す。図４（ａ）に示す回路は、従来のレジスタに適用されている一般的な１ビットデータ保持用のマスタスレーブ型Ｄ型フリップフロップからなるレジスタ回路構成であり、ラッチ１（マスタ）とラッチ２（スレーブ）を有する。
【００５１】
図４（ｂ）が図４（ａ）に示すレジスタ回路に入力するクロック信号を生成するクロック信号生成回路、図４（ｃ）が図４（ａ）に示すレジスタ回路に対応する回路記号（Ｄ型フリップフロップ）を示している。図４（ａ）に示すレジスタ回路の動作タイミング図を図５に示す。
【００５２】
図４、図５を参照して、図４（ａ）に示すレジスタ回路の動作を説明する。入力クロック"ＣＬＫ＿ｉｎ"がＬｏｗの期間、クロック信号"ｃｋ"がＬｏｗ，"ｘｃｋ"がＨｉｇｈとなっているため、図４（ａ）に示すレジスタ回路中のトランスファーゲート"ＴＲＮ１"，"ＴＲＮ４"がＯＮ、"ＴＲＮ２"，"ＴＲＮ３"がＯＦＦとされる。このとき、レジスタ入力値"Ｄ＿ｉｎ"の値がラッチ１に入力されると共にラッチ２には直前に取り込まれた値が保持されて出力されている。これは、図５に示す時刻ｔ１までの状態である。
【００５３】
この状態で、図５に示す時刻ｔ１において、入力クロック"ＣＬＫ＿ｉｎ"がＨｉｇｈに切り替わった瞬間、"ｃｋ"がＨｉｇｈ，"ｘｃｋ"がＬｏｗに変化するため、トランスファーゲート"ＴＲＮ１"，"ＴＲＮ４"がＯＦＦし、"ＴＲＮ２"，"ＴＲＮ３"がＯＮするため、入力値"Ｄ＿ｉｎ"の値がラッチ１に保持されると共に、このラッチ１に保持された値は、ラッチ２をスルーして"Ｑ"及び"／Ｑ"に出力される。この時、"Ｄ＿ｉｎ"の値がラッチ２に保持されていた値と異なる場合、ラッチ２及びその先の負荷ノードをドライブする時に電流が流れる。すなわち、レジスタに対するデータ書き換え（１→０）または（０→１）が発生するとき電流が流れ、これがＤＰＡ攻撃で統計処理される微小電流となる。
【００５４】
次に、本発明に従ったレジスタ回路構成および動作について、図６、図７を参照して説明する。本発明の暗号処理装置では、ラウンド演算の結果データのレジスタ取り込みにおいて、取り込みビットのレジスタ格納タイミングを一律とせず、タイミングを分散させて格納する処理を実行する。先に図２を参照して説明したようにＤＥＳ暗号処理においては、１６ラウンドのラウンド演算が繰り返し実行され、各ラウンドの演算結果データが、各ラウンドごとに３２ビットずつ図２に示すＬレジスタ１５１、Ｒレジスタ１５２に格納される。本発明の暗号処理装置では、このラウンド演算の結果データのレジスタ格納処理において、３２ビットを同一タイミングで格納するのではなく、ばらばらのタイミングで格納する。例えば、４つの異なるタイミングを設定し、８ビットずつ４種類のタイミングで格納する。このタイミング制御によりレジスタに対するデータ格納時のビット変更に伴う発生電流を拡散し、ＤＰＡ攻撃に対する耐性を高める。
【００５５】
図６（ａ）に示す回路は、上述した処理を実行する本発明に従ったレジスタ回路構成であり、図４（ａ）示したと同様の１ビットデータの格納を実行するレジスタ回路である。前述したように、ＤＥＳ暗号処理において実行される１６段のラウンド演算の演算結果は２つの３２ビットレジスタ（図２に示すＬレジスタ１５１，Ｒレジスタ１５２）に格納される。各レジスタは、３２ビットデータを保持する回路を有し、図６（ａ）に示す回路を３２個、備えた構成となる。
【００５６】
図６（ａ）に示すレジスタ回路は、先に図４（ａ）を参照して説明した回路構成と同様、マスタスレーブ型Ｄ型フリップフロップを基本構成としており、ラッチ１（マスタ）とラッチ２（スレーブ）を有する構成であるが、入力するクロック信号をマスタとスレーブで異なる設定としている。
【００５７】
図６（ｂ）が図４（ａ）に示すレジスタ回路に入力するクロック信号を生成するクロック信号生成回路、図６（ｃ）が図６（ａ），（ｂ）に示すレジスタ回路に対応する回路記号を示している。図６（ａ）に示すレジスタ回路の動作タイミング図を図７に示す。
【００５８】
図６、図７を参照して、図６（ａ）に示すレジスタ回路の動作を説明する。上述したように、図６（ａ）に示すレジスタ回路は、図４を参照して説明した構成と異なり、２系統のクロック"ＣＬＫ１＿ｉｎ"，"ＣＬＫ２＿ｉｎ"を用いている。
【００５９】
クロック"ＣＬＫ１＿ｉｎ"は、マスタ（ラッチ１）に入力され、クロック"ＣＬＫ２＿ｉｎ"は、スレーブ（ラッチ２）に対して入力され、各ラッチ回路（ラッチ１，ラッチ２）は、それぞれのクロックによって回路制御がなされる。
【００６０】
２つのクロック"ＣＬＫ１＿ｉｎ"，"ＣＬＫ２＿ｉｎ"のタイミングは、図７に示すように、"ＣＬＫ１_ｉｎ"，が先に立ち上がり、その後、所定時間遅延して"ＣＬＫ２＿ｉｎ"が立ち上がる。立下りは、図７に示す例では、同じタイミングとしているが、同じタイミングである必要はない。
【００６１】
本実施例でのクロック設定条件は、マスタ（ラッチ１）に入力するクロック"ＣＬＫ１＿ｉｎ"の立ち上がりより、スレーブ（ラッチ２）に入力する"ＣＬＫ２＿ｉｎ"の立ち上がりが遅いか同じタイミングであり、かつ、"ＣＬＫ１＿ｉｎ"の立下りより"ＣＬＫ２＿ｉｎ"の立下りが早いか同じタイミングであることである。すなわち、本発明の暗号処理装置におけるクロック信号生成部は、レジスタのマスタとスレーブの制御用クロックの組として、マスタからスレーブに対するデータ入力タイミングが前記マスタにおけるデータ保持開始タイミングより遅延させる設定としたクロックの組を生成しレジスタのマスタおよびスレーブに入力する。
【００６２】
入力クロック"ＣＬＫ１＿ｉｎ""ＣＬＫ２＿ｉｎ"が共にＬｏｗの期間、例えば、図７に示すｔ０〜ｔ１、ｔ３〜ｔ４などでは、"ｃｋ１"，"ｃｋ２"がＬｏｗ，"ｘｃｋ１"，"ｘｃｋ２"がＨｉｇｈとなるため、図６（ａ）に示すトランスファーゲート"ＴＲＮ１"，"ＴＲＮ４"がＯＮ、"ＴＲＮ２"，"ＴＲＮ３"がＯＦＦとなり、入力値"Ｄ＿ｉｎ"の値がラッチ１に入力されると共にラッチ２には直前に取り込まれた値が保持されて出力されている状態に設定される。
【００６３】
例えば、図７に示す時刻ｔ４の前の時間がこの状態に相当し、入力値"Ｄ＿ｉｎ"の値［Ｄ１］がラッチ１に入力され、ラッチ１の入力値は［Ｄ１］になり、ラッチ２には直前に取り込まれた値［／Ｄ０］が保持されて出力されている状態［Ｑ＝Ｄ０］に設定される。
【００６４】
この状態で、入力クロック"ＣＬＫ１＿ｉｎ"がＨｉｇｈに切り替わった瞬間、"ｃｋ１"がＨｉｇｈ，"ｘｃｋ１"がＬｏｗに変化するため、トランスファーゲート"ＴＲＮ１"がＯＦＦ、"ＴＲＮ２"がＯＮし、入力値"Ｄ＿ｉｎ"の値がラッチ１に保持される。
【００６５】
例えば、図７に示す時刻ｔ４がこの状態に相当し、入力値"Ｄ＿ｉｎ"の値［Ｄ１］がラッチ１に保持値として設定される。入力クロック"ＣＬＫ１＿ｉｎ"がＨｉｇｈとされている期間（ｔ４〜ｔ６）において、ラッチ１の保持値は固定される。
【００６６】
次に、入力クロック"ＣＬＫ２＿ｉｎ"がＨｉｇｈに切り替わった瞬間、"ｃｋ２"がＨｉｇｈ，"ｘｃｋ２"がＬｏｗに変化するため、トランスファーゲート"ＴＲＮ４"がＯＦＦ、"ＴＲＮ３"がＯＮし、ラッチ１に保持されている"Ｄ＿ｉｎ"の値がラッチ２に供給されてラッチ２の値が"Ｄ＿ｉｎ"に変化し、"Ｑ"，"／Ｑ"及びその負荷に出力される。
【００６７】
例えば、図７に示す時刻ｔ５がこの状態に相当し、ラッチ１に保持されている"Ｄ＿ｉｎ"の値［Ｄ１］がラッチ２に供給されてラッチ２の値が"Ｄ＿ｉｎ"に変化し、この保持値が、"Ｑ"，"／Ｑ"及びその負荷に出力される（Ｑ＝Ｄ１、／Ｑ＝／Ｄ１）。
【００６８】
この時、入力値"Ｄ＿ｉｎ"の値がラッチ２に保持されていた値と異なる場合、すなわち、格納ビット値が（０→１）または（１→０）となるときに、ＤＰＡ攻撃で統計処理される微小電流が発生し、また、このタイミングでＦ関数の演算が開始される。
【００６９】
次に、図８および図９を参照して、本発明のマスタスレーブ型フリップフロップ構成を持つレジスタ回路のマスタおよびスレーブのラッチに入力する２つの異なるタイミングパルスからなるクロック信号"ＣＬＫ１"，"ＣＬＫ２"の発生回路の構成例について説明する。図８はクロック信号生成回路であり、図９は、図８に示すクロック信号生成回路に対応するタイミングチャートを示している。
【００７０】
この例では、ＤＥＳ暗号処理装置に供給されるシステムクロック"ＳＹＳ＿ＣＬＫ"に対して、ＤＥＳ内部のクロックの周波数は半分程度になっている。この回路に供給される他の発振信号"ＯＳＣ"は、図９に示すように内部発振回路から供給される"ＳＹＳ＿ＣＬＫ"と非同期で、周波数が数倍のクロック信号である。
【００７１】
この発振信号"ＯＳＣ"によって、"ＳＹＳ＿ＣＬＫ"は、第１Ｄ型フリップフロップ（ＤＦＦ１）でタイミングの変更処理がなされ、リタイミングされたクロック信号"ＣＬＫ"を出力する。図９に示すクロック（ＣＬＫ）である。
【００７２】
さらに、分周回路としての第２Ｄ型フリップフロップ（ＤＦＦ２）において、２分周された信号が生成される。この分周回路（ＤＦＦ２）の"／Ｑ"出力が図９に示す
"ＣＬＫ１"となり、分周回路の"Ｑ"出力（図９に示すＤＦＦ２：Ｑ）とリタイミングしたクロック信号"ＣＬＫ"のＮＯＲ信号が図９に示す"ＣＬＫ２"となる。
【００７３】
図９に示すように、これらの２つのクロック信号（ＣＬＫ１，ＣＬＫ２）は、先に図７を参照して説明した本実施例でのクロック設定条件を満足するクロック信号となる。すなわち、クロック"ＣＬＫ１"の立ち上がりより、"ＣＬＫ２"の立ち上がりが遅いか同じタイミングであり、かつ、"ＣＬＫ１"の立下りより"ＣＬＫ２"の立下りが早いか同じタイミングである２つのクロック信号となる。これらの２つのクロック信号が、図６（ａ）に示すレジスタ回路のマスタラッチおよびスレーブラッチにそれぞれ入力されるクロック信号とされる。
【００７４】
本発明の暗号処理装置では、前述したようにラウンド演算の結果データのレジスタ格納処理において、３２ビットを同一タイミングで格納するのではなく、ばらばらのタイミングで格納する。例えば、４つの異なるタイミングを設定し、８ビットずつ４種類のタイミングで格納する。以下、具体的な実施例として、ＤＥＳ演算回路のＦ関数内のＳボックスの各構成要素（"Ｓ１"〜"Ｓ８"）の出力の４ビットを全て異なるタイミングでレジスタに取り込む処理を行なう構成例について説明する。このタイミング制御によりレジスタに対するデータ格納時のビット変更に伴う発生電流を拡散し、ＤＰＡ攻撃に対する耐性を高める。
【００７５】
ＤＥＳ演算回路のＦ関数内のＳボックスの各構成要素（"Ｓ１"〜"Ｓ８"）の出力の４ビットを全て異なるタイミングでレジスタに取り込む処理を行なうための構成について、以下説明する。図１０に示す様に、４つの異なる周波数の発振回路からの信号"ＯＳＣ１"〜"ＯＳＣ４"を４つの同じ回路に供給することにより、異なるタイミングのクロック信号の組み合わせを生成する。すなわち、
（ａ）ＣＬＫ１−１，ＣＬＫ１−２
（ｂ）ＣＬＫ２−１，ＣＬＫ２−２
（ｃ）ＣＬＫ３−１，ＣＬＫ３−２
（ｄ）ＣＬＫ４−１，ＣＬＫ４−２
これら４つの異なるクロック信号の組み合わせを生成し、これらの４つのクロック信号の組（ａ）〜（ｄ）をＳボックスの各構成要素（"Ｓ１"〜"Ｓ８"）の出力の４ビットを格納するレジスタ回路、すなわち図６（ａ），（ｂ）に示すマスタスレーブ型のフリップフロップ構成を持つレジスタ回路に供給する設定とする。例えば、図１１に示す（ａ）〜（ｄ）のクロック信号のように、異なる立ち上がり、立ち下がりタイミングを持つクロック信号の組み合わせを生成する。
【００７６】
先に、図２、図３を参照して説明したように、図２に示すＤＥＳ演算回路内のＦ関数１５３では、Ｓボックスによる非線形置換が行なわれた後、置換回路（図３に示す置換部１７２）によってテーブルに基づく置換が実行され、これをＦ関数出力とし、さらに、その後、図２を参照して説明したように、このＦ関数出力と、Ｌレジスタ１５１との排他論理和演算（ＸＯＲ）が排他論理和演算部１５４において実行され、この演算結果が、Ｒレジスタ１５２に格納される。
【００７７】
図３に示す置換部１７２におけるテーブルに基づく置換処理に適用されるテーブルとしては、図１２に示すテーブルが適用される。図１２に示すテーブルは、各４ビットを出力するＳ１〜Ｓ８の出力３２ビットのビット列順番の入れ替えを行なうテーブルである。例えば、ＳボックスのＳ１の第１ビットは、Ｆ関数出力３２ビット中の第９番目のビットに設定され、ＳボックスのＳ１の第２ビットは、Ｆ関数出力３２ビット中の第１７番目のビットに設定され、ＳボックスのＳ２の第１ビットは、Ｆ関数出力３２ビット中の第１３番目のビットに設定される。Ｓボックス出力３２ビットの位置がこのテーブルによって入れ替えられた後、Ｌレジスタ１５１との排他論理和演算（ＸＯＲ）が排他論理和演算部１５４において実行され、この演算結果が、Ｒレジスタ１５２に格納される。
【００７８】
本発明の構成では、Ｒレジスタに対する３２ビットデータを４つに区分して、それぞれの格納タイミングを上述した４つの異なるクロック信号の組みによって制御する。この組み合わせの設定は様々な組み合わせが適用できるが、その一例を以下に説明する。例えば図１２に示すテーブルのＳボックス出力はＳ１〜Ｓ８の各４ビットの出力であり、
（ａ）Ｓ１〜Ｓ８の第１ビット
（ｂ）Ｓ１〜Ｓ８の第２ビット
（ｃ）Ｓ１〜Ｓ８の第３ビット
（ｄ）Ｓ１〜Ｓ８の第４ビット
この４種類に区分し、これらを、先に、図１０、図１１を参照して説明した４つのクロック信号の組（ａ）〜（ｄ）に対応させて、これらの排他論理和演算結果のＲレジスタに対する格納および出力タイミングの制御に適用する。
【００７９】
この４つのタイミング区分を設定する場合の、適用するクロック信号と、Ｒレジスタに対する入力ビット位置の対応テーブルを図１３に示す。図１３に示すテーブルは、
（ａ）ＣＬＫ１−１，ＣＬＫ１−２
を、Ｒレジスタに格納する９，１３，２４，２６，８，４，３２，５番目のビット取り込みタイミングに適用し、
（ｂ）ＣＬＫ２−１，ＣＬＫ２−２
を、Ｒレジスタに格納する１７，２８，１６，２０，１４，２９，１２，２７番目のビット格納タイミングに適用し、
（ｃ）ＣＬＫ３−１，ＣＬＫ３−２
を、Ｒレジスタに格納する２３，２，３０，１０，２５，１１，２２，１５番目のビット格納タイミングに適用し、
（ｄ）ＣＬＫ４−１，ＣＬＫ４−２
を、Ｒレジスタに格納する３１，１８，６，１，３，１９，７，２１番目のビット格納タイミングに適用することを示している。
【００８０】
これは、すなわち、図１２に示すＳボックス出力のＳ１〜Ｓ８の
第１番目のビットである８ビットの格納タイミングを（ａ）ＣＬＫ１−１，ＣＬＫ１−２とし、
第２番目のビットである８ビットの格納タイミングを（ｂ）ＣＬＫ２−１，ＣＬＫ２−２とし、
第３番目のビットである８ビットの格納タイミングを（ｃ）ＣＬＫ３−１，ＣＬＫ３−２とし、
第４番目のビットである８ビットの格納タイミングを（ｄ）ＣＬＫ４−１，ＣＬＫ４−２とする設定である。
【００８１】
このような４種類のクロックタイミングでのＲレジスタ格納処理を実行する処理回路構成例を図１４に示す。図１４で、（ａ）は、Ｆ関数部出力と、Ｌレジスタ格納データとの排他論理和（ＸＯＲ）演算を示している。すなわち、図２の回路構成におけるＦ関数部１５３の出力と、Ｌレジスタ１５１の出力との排他論理和演算部１５４での演算処理を示している。例えば、図１４に示す（ａ）ＸＯＲ演算の左端の演算は、Ｆ関数部内のＦ関数の出力中の第１ビットと、Ｌレジスタの第１ビットの排他論理和演算である。Ｆ関数からの出力は、先に説明した図１２に示すテーブルによって順番が入れ替えられており、Ｓボックス出力の第１ビットは、図１２に示すテーブルから理解されるようにＳ４の第４ビットである。
【００８２】
図１４（ｂ）は、前述した４種類のクロック信号の組の第１のクロック信号、すなわち図６（ａ）を参照して説明したマスタラッチに入力される４種類のクロック信号を示している。図１４（ｃ）は、Ｒレジスタを示しており、先に図６（ａ）を参照して説明したマスタスレーブ型のフリップフロップを３２個並べた構成であり、３２ビットデータを格納可能な３２ビットレジスタである。
【００８３】
図１４（ａ）において算出された排他論理和演算結果の各々が、図６、図７を参照して説明した入力値［Ｄ＿ｉｎ］になり、この入力値が、３２ビットレジスタに取り込まれる。レジスタは、先に図６を参照して説明したようにマスタスレーブ型のフリップフロップ構成であり、図７を参照して説明したように、マスタ側におけるデータ格納、保持タイミングがクロック１によって制御され、スレーブ側におけるデータ格納、保持タイミングがクロック２によって制御される。
【００８４】
まず、図１４（ａ）に示す排他論理和演算結果に相当する入力値［Ｄ＿ｉｎ］は、図１４（ｂ）に示すＣＬＫ１−１〜ＣＬＫ４−１の４種類の異なるタイミングが適用され、図１３を参照して説明したように、８ビットずつの組に分離されて４種類の異なるタイミングでＲレジスタに格納される。
【００８５】
すなわち、ＣＬＫ１−１の規定する制御タイミングに従って、第９，１３，２４，２６，８，４，３２，５番目のビットが格納され、ＣＬＫ２−１の規定する制御タイミングに従って、第１７，２８，１６，２０，１４，２９，１２，２７番目のビットが格納され、ＣＬＫ３−１の規定する制御タイミングに従って、第２３，２，３０，１０，２５，１１，２２，１５番目のビットが格納され、ＣＬＫ４−１の規定する制御タイミングに従って、第３１，１８，６，１，３，１９，７，２１番目のビットが格納される。
【００８６】
なお、この取り込みタイミングは、図７に示す時刻ｔ１，ｔ４などのＣＬＫ１の立ち上がりタイミングに相当する。このとき、ＣＬＫ１−２〜ＣＬＫ４−２は変化していないので、レジスタの各スレーブ（ラッチ２）のラッチの値およびその出力は変化しない。従って、この間にラウンド演算の結果は変化しない。その後、ＣＬＫ１−２〜ＣＬＫ４−２の立ち上がりで、Ｒレジスタの対応するビットでマスタ（ラッチ１）の値がスレーブ（ラッチ２）へ取り込まれ、負荷の出力が変化する。
【００８７】
すなわち、スレーブラッチの値の変化も、図１４（ｄ）に示すＣＬＫ１−２〜ＣＬＫ４−２の４種類の異なるタイミングが適用されて異なるタイミングで発生する。
【００８８】
そして、これに伴って、スレーブラッチのビットデータの変更が発生すると、ビット変化に対応する電流が流れる。この時、Ｓボックスの各構成要素（"Ｓ１"〜"Ｓ８"）の出力ビットは、ＣＬＫ１−２〜ＣＬＫ４−２の立ち上がりで各々１ビットずつ変化する。そして、変化の順番も先に図１０を参照して説明した"ＯＳＣ１"〜"ＯＳＣ４"でのリタイミングによって決まるため、一定ではない。このため、入力クロックと非同期でしかもＳボックスの各構成要素で１ビットずつ任意の順番で変化するため、着目したＳボックスの構成要素の特定のビットの変化電流のタイミングを揃えることは困難であり、Ｒレジスタに対するビット取り込み時の電流解析に基づくＤＰＡ攻撃は困難となる。これらのタイミング制御によりレジスタに対するデータ格納時のビット変更に伴う発生電流を拡散し、ＤＰＡ攻撃に対する耐性が高められる。Ｒレジスタのスレーブの出力が更新されると、更新した値で次のラウンドのＦ関数の演算が実行される。
【００８９】
なお、Ｌレジスタに対するデータ取り込みに際しても、同様の処理を適用する。図２に示す回路構成から理解されるように、Ｌレジスタは、前段のラウンド演算においてＲレジスタに格納された値（３２ビットデータ）がそのまま格納される。
【００９０】
これらの３２ビットデータの取り込みタイミングも、Ｒレジスタに対する取り込みタイミングと同様の制御が実行される。図１５に、Ｌレジスタに対するデータ格納タイミング区分を設定する場合の、適用するクロック信号と、Ｌレジスタに対する入力ビット位置の対応テーブルを示す。図１５に示すテーブルは、先に説明した図１３に示すテーブルと同様の構成であり、
（ａ）ＣＬＫ１−１，ＣＬＫ１−２
を、Ｌレジスタに格納する９，１３，２４，２６，８，４，３２，５番目のビット取り込みタイミングに適用し、
（ｂ）ＣＬＫ２−１，ＣＬＫ２−２
を、Ｌレジスタに格納する１７，２８，１６，２０，１４，２９，１２，２７番目のビット取り込みタイミングに適用し、
（ｃ）ＣＬＫ３−１，ＣＬＫ３−２
を、Ｌレジスタに格納する２３，２，３０，１０，２５，１１，２２，１５番目のビット取り込みタイミングに適用し、
（ｄ）ＣＬＫ４−１，ＣＬＫ４−２
を、Ｌレジスタに格納する３１，１８，６，１，３，１９，７，２１番目のビット取り込みタイミングに適用することを示している。
【００９１】
このような４種類のクロックタイミングでのＬレジスタ取り込み処理を実行する処理回路構成例を図１６に示す。（ａ）は、Ｒレジスタからの出力３２ビットデータ、（ｂ）はＬレジスタのマスタラッチに入力される４種類の制御クロックＣＬＫ１−１〜ＣＬＫ１−４、（ｃ）はＬレジスタ、（ｄ）は、Ｌレジスタのスレーブラッチに入力される４種類の制御クロックＣＬＫ２−１〜ＣＬＫ２−４、（ｅ）はレジスタの出力ビットを示している。
【００９２】
このＬレジスタに対するデータ格納処理も、Ｒレジスタに対するデータ格納処理と同様、異なる複数のクロックタイミングでばらばらに実行されることになり、レジスタに対するデータ格納時のビット変更に伴う発生電流が拡散され、ＤＰＡ攻撃に対する耐性が高められる。
【００９３】
以上、説明した様に、本発明の暗号処理装置構成では、ラウンド演算結果を格納するレジスタに入力するクロックをマスタとスレーブで別なクロック（ＣＬＫ１，ＣＬＫ２）として設定し、さらに、これらのクロックを、システムクロックを発振器の出力クロックでリタイミングして複数のタイミングを持つ複数のクロック信号の組、すなわち、例えば、
（ａ）ＣＬＫ１−１，ＣＬＫ１−２
（ｂ）ＣＬＫ２−１，ＣＬＫ２−２
（ｃ）ＣＬＫ３−１，ＣＬＫ３−２
（ｄ）ＣＬＫ４−１，ＣＬＫ４−２
を生成して、これらをレジスタ構成回路としてのラッチに選択的に供給して、異なるタイミングでのビットデータ取り込みを実現している。この構成は、上述したように、簡単なロジックを加えることで実現可能で、これにより、ＤＰＡ攻撃を事実上不可能とする構成が実現できる。
【００９４】
なお、暗号処理装置に乱数発生用の発振回路を備えている構成の場合、その発振回路の出力を、先に図１０を参照して説明したＯＳＣ信号として適用することも可能であり、このような設定とすれば、ほとんど回路規模の増大なく、ＤＰＡ攻撃を不可能とする構成が実現できる。
【００９５】
最後に、上述の暗号処理を実行するデバイスとしてのＩＣモジュール６００の構成例を図６を参照して説明する。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図６に示すＩＣモジュール６００は、これら様々な機器に構成することが可能である。
【００９６】
図６に示すＣＰＵ(Central processing Unit)６０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述した各スイッチの切り替え制御、その他の各種プログラムを実行するプロセッサである。メモリ６０２は、ＣＰＵ６０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ６０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ６０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【００９７】
暗号処理部６０３は、例えば上述したＤＥＳアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理部である。発振回路６０４は、先に図９、図１０を参照して説明した複数の異なる周波数の信号を生成する発振回路である。なお、乱数発生器に含まれる発振回路を適用してもよい。
【００９８】
送受信部６０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【００９９】
クロック信号生成部６０７は、暗号処理部６０３におけるレジスタ格納処理において適用する複数のクロック信号を生成し、暗号処理部６０３内のラウンド演算結果格納レジスタに供給する。
【０１００】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１０１】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１０２】
本発明の構成によれば、処理アルゴリズムを複雑化させることなく、暗号処理シーケンスの持つ規則的な処理に伴う消費電流変動の検出等に基づく電力解析による暗号解析の困難性を高めた暗号処理装置が実現される。
【０１０３】
本発明の構成では、例えばＤＥＳなど複数段のラウンド演算の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド演算の結果を格納するレジスタに対するデータ格納タイミングの制御を行なうクロック信号を、レジスタを構成するマスタとスレーブで別なクロック（ＣＬＫ１，ＣＬＫ２）とし、さらに、例えば発振器の出力でリタイミングして複数のタイミングを持つ複数のクロック信号の組（ＣＬＫ１−１，ＣＬＫ１−２）〜（ＣＬＫ２−ｎ，ＣＬＫ２−ｎ）を生成してレジスタ構成回路としてのマスタおよびスレーブに選択的に供給して、異なるタイミングでのビットデータ取り込みを実現した。本構成により、消費電流の統計処理によるＤＰＡ攻撃に対する耐性の高い暗号処理装置が実現される。
【図面の簡単な説明】
【０１０４】
【図１】ＤＥＳ暗号処理の基本構成を示す図である。
【図２】ラウンド関数部の各ラウンドを構成するラウンド関数部の構成を示す図である。
【図３】Ｆ関数の構成を示す図である。
【図４】暗号処理装置における一般的なレジスタ回路構成を示す図である。
【図５】図４に示すレジスタ回路におけるタイミングチャートを示す図である。
【図６】本発明の暗号処理装置の一実施例に係るレジスタ回路構成を示す図である。
【図７】図６に示すレジスタ回路に対応するタイミングチャートを示す図である。
【図８】本発明の暗号処理装置の一実施例に係るクロック信号発生回路の構成例について説明する図である。
【図９】図８に示すクロック信号発生回路に対応するタイミングチャートを示す図である。
【図１０】本発明の暗号処理装置の一実施例に係るクロック信号発生回路の構成例について説明する図である。
【図１１】図１０に示すクロック信号発生回路に対応するタイミングチャートを示す図である。
【図１２】Ｆ関数部における置換処理に適用する置換テーブルを示す図である。
【図１３】Ｒレジスタに対するデータ格納タイミング区分を設定するテーブルであり、クロック信号と、レジスタに対する入力ビット位置の対応テーブルを示す図である。
【図１４】４種類のクロックタイミングでのＲレジスタ格納処理を実行する処理回路構成例を示す図である。
【図１５】Ｌレジスタに対するデータ格納タイミング区分を設定するテーブルであり、クロック信号と、レジスタに対する入力ビット位置の対応テーブルを示す図である。
【図１６】４種類のクロックタイミングでのＬレジスタ格納処理を実行する処理回路構成例を示す図である。
【図１７】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１０５】
１１０  ラウンド関数部
１１１  初期置換部
１１２，１１３  変換部
１１４  逆置換部
１２０  鍵スケジュール部
１２１  マスタ鍵（秘密鍵）置換部
１２２，１２３  鍵生成部
１４１  初期置換部
１４２  逆置換部
１５０  ラウンド関数部
１５１  Ｌレジスタ
１５２  Ｒレジスタ
１５３  Ｆ関数部
１５４  排他論理和演算（ＸＯＲ）部
１７１  拡張部
１７２  置換部
１８１  Ｓボックス
６００  ＩＣモジュール
６０１  ＣＰＵ(Central processing Unit)
６０２  メモリ
６０３  暗号処理部
６０４  発振回路
６０５  送受信部
６０６  クロック
６０７  クロック信号生成部
【図１】
0004765609.tif 000004
【図２】
0004765609.tif 000005
【図３】
0004765609.tif 000006
【図４】
0004765609.tif 000007
【図５】
0004765609.tif 000008
【図６】
0004765609.tif 000009
【図７】
0004765609.tif 000010
【図８】
0004765609.tif 000011
【図９】
0004765609.tif 000012
【図１０】
0004765609.tif 000013
【図１１】
0004765609.tif 000014
【図１２】
0004765609.tif 000015
【図１３】
0004765609.tif 000016
【図１４】
0004765609.tif 000017
【図１５】
0004765609.tif 000018
【図１６】
0004765609.tif 000019
【図１７】
0004765609.tif 000020