(57)【要約】【課題】回路規模の増大を抑えＤＰＡ攻撃に対する耐性の高い暗号処理装置を提供する。【解決手段】第１レジスタ１０３−１，第２レジスタ１０４−１の他に、第３レジスタ１０３−２，第４レジスタ１０４−２を配置し、各レジスタ１０３−１，１０３−２、１０４−１，１０４−２へのデータの取込みは同じラッチパルスＬａｔで行い、このラッチパルスＬａｔを分周する分周回路１０５を設け、第３レジスタ１０３−２，第４レジスタ１０４−２の格納データは、第１レジスタ１０３−１，第２レジスタ１０４−１へ格納される信号と、ラッチパルスＬａｔの分周信号ＤＩＶのＥＸＯＲ演算を行ったデータとし、レジスタペアの第１レジスタ１０３−１と第３レジスタ１０３−２同士、第２レジスタ１０４−１と第４レジスタ１０４−２同士のＥＸＯＲ演算を行い、全ビット一致または全ビット不一致以外の場合にリセットＲＳＴ１、ＲＳＴ２を発生し、演算結果を出力しない。【選択図】図４
2007323019.tif 000002
【特許請求の範囲】
【請求項１】
ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、
取り込み信号に同期してラウンド演算用データを格納する第１レジスタと、
上記第１レジスタに格納されたデータに応じたラウンド演算を行うラウンド演算部と、
上記取り込み信号を分周した分周信号を生成する分周回路と、
上記分周信号と上記第１レジスタに入力するデータとの排他的論理演算を行う論理演算部と、
上記取り込み信号に同期して上記論理演算部の演算結果を格納する第２レジスタと、
上記第１レジスタの格納データと上記第２レジスタの格納データの全ビットの一致度を判定し、全ビット一致または全ビット不一致以外の場合に上記ラウンド演算部の演算結果の出力を停止させる判定部と、
を有する暗号処理装置。
【請求項２】
上記分周回路は、上記取り込み信号を２分周する
請求項１記載の暗号処理装置。
【請求項３】
上記判定部は、上記第１レジスタの格納データと上記第２レジスタの格納データの排他的論理和演算を行う演算部を含む
請求項１記載の暗号処理装置。
【請求項４】
ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、
取り込み信号に同期してラウンド演算用第１データを格納する第１レジスタと、
取り込み信号に同期してラウンド演算用第２データを格納する第２レジスタと、
上記第１レジスタに格納された第１データと上記第２レジスタに格納された第２データに応じたラウンド演算を行うラウンド演算部と、
上記取り込み信号を分周した分周信号を生成する分周回路と、
上記分周信号と上記第１レジスタに入力する第１データとの排他的論理演算を行う第１論理演算部と、
上記取り込み信号に同期して上記第１論理演算部の演算結果を格納する第３レジスタと、
上記分周信号と上記第２レジスタに入力する第２データとの排他的論理演算を行う第２論理演算部と、
上記取り込み信号に同期して上記第２論理演算部の演算結果を格納する第４レジスタと、
上記第１レジスタの格納データと上記第３レジスタの格納データの全ビットの一致度を判定し、全ビット一致または全ビット不一致以外の場合に上記ラウンド演算部の演算結果の出力を停止させる第１の判定部と、
上記第２レジスタの格納データと上記第４レジスタの格納データの全ビットの一致度を判定し、全ビット一致または全ビット不一致以外の場合に上記ラウンド演算部の演算結果の出力を停止させる第２の判定部と、
を有する暗号処理装置。
【請求項５】
上記分周回路は、上記取り込み信号を２分周する
請求項４記載の暗号処理装置。
【請求項６】
上記判定部は、上記第１レジスタの格納データと上記第２レジスタの格納データの排他的論理和演算を行う演算部を含む
請求項４記載の暗号処理装置。
【請求項７】
前記ラウンド演算部は、非線形変換部としてのＳボックスを有し、
前記第１レジスタおよび第２レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する
請求項４記載の暗号処理装置。
【請求項８】
前記暗号処理装置は、
ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する
請求項４記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関し、さらに詳細には、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関するものである。
【背景技術】
【０００２】
昨今、ＩＣカード、ネットワーク通信、電子商取引などの発展に伴い、ＩＣカードを利用したデータ送受信やネットワークを介した通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行われている。
【０００３】
たとえばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行い、認証処理、あるいは送受信データの暗号化、復号化を行うシステムが実用化されている。
【０００４】
ＩＣカードでは、たとえばリーダライタやホストコンピュータとデータのやり取りを行う時、その過程でＩＣカードに格納されている秘密情報が漏れても問題を発生させないために、送受信データは暗号化される。
【０００５】
この暗号化方法として多く用いられている方式の１つとしてＤＥＳ(Data Encryption Standard)がある。
ＤＥＳは、代表的な共通鍵暗号方式のアルゴリズムであり、たとえばデータ送受信者としてのＩＣカードとホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
【０００６】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限り復号化してメッセージを取り出すのは困難である。
また、暗号化・復号化の時に使う鍵は、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納され、暗号化・復号化時にはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送されるような制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出すことが不可能な構成を採ってセキュリティを保持している。
【０００７】
しかし、ＩＣカードの消費電流を測定し、それに統計処理を施して鍵を取り出すという電力差分解析（ＤＰＡ：Differential Power Analysis）という攻撃方法がP.Kocherらにより報告された。
【０００８】
このＤＰＡ攻撃では、異なる１０００個程度の平文を用いて暗号化演算を行ってその時の消費電流波形を測定し、その消費電流を統計処理することにより鍵を取り出すことが可能となる。
【０００９】
P.Kocherらの論文に記載されている攻撃方法は、ＤＥＳ暗号処理部を構成する非線形変換部としてのＳボックス（Ｓ-box）の構成要素（Ｓ1〜Ｓ8）の１つを選択し（たとえばＳ1）、それに対応する６ビットの鍵を推定して複数の平文でのＤＥＳのシミュレーション（simulation）を行い、そのシミュレーション結果で、Ｓ1出力のＬＳＢが“０”か“１”かに応じて各平文に対応する消費電流波形を２つのグループに分類し、その差分をとってピーク電流の有無により、推定した鍵の妥当性を判断している。
【００１０】
しかし、Ｓ-boxをメモリ（Memory）ではなく、ロジック回路で構成する場合、各Ｓ-boxの出力値に起因する消費電流の差異はメモリで構成する場合に比べてかなり小さくなり、鍵の取り出しはかなり困難になる。
一方、Ｓ-boxの出力は、Ｆ関数内で置換（Ｐ）処理後に左データ（Left Data）と排他的論理和（ＥＸＯＲ）演算されて右レジスタ（Rigth Register）に格納される。この演算結果の格納時には、格納前のデータと格納データのＥＸＯＲ演算結果で“１”のビットにおいて、レジスタデータの反転に起因する電流が流れる。この時の変化電流に対してもＤＰＡ攻撃は可能となる。
【００１１】
この攻撃方法を図面に関連付けてさらに詳細に説明する。
図１はＤＥＳ演算回路の一般的な構成を示す図であり、図２はＦ関数部の構成例を示す図であり、図３（Ａ）〜（Ｅ）は図１のＤＥＳ演算回路のタイミングチャートである。
【００１２】
このＤＥＳ演算回路１０は、図１に示すように、初期置換部［ＩＰ（Initial Permutation）］１１、スイッチ（ＳＷ）１２、左レジスタ（Ｌレジスタという）１３、右レジスタ（Ｒレジスタ）１４、Ｆ関数部１５、ＥＸＯＲ演算部１６、逆置換部（ＩＰ-1）１７、および暗号文出力部(Crypto)１８を有する。
【００１３】
スイッチ（ＳＷ）１２は、Ｌレジスタ側スイッチ１２ＬとＲレジスタ側スイッチ１２Ｒとを含む。
スイッチ１２Ｌの作動接点ａは初期置換部１１の出力に接続され、作動接点ｂはＲレジスタ１４の出力に接続され、固定接点ｃがＬレジスタ１３の入力に接続されている。
スイッチ１２Ｒの作動接点ａは初期置換部１１の出力に接続され、作動接点ｂはＥＸＯＲ演算部１６の出力に接続され、固定接点ｃがＲレジスタ１４の入力に接続されている。
【００１４】
図１のＤＥＳ演算回路１０において、スイッチ（ＳＷ）１２Ｌ，１２Ｒは、ＤＥＳ演算開始時には固定接点ｃが作動接点“ａ”側に接続されている。
ＤＥＳ演算が開始されると、平文を初期置換部１１においてＩＰ置換後、２つの３２ビットデータＬ０，Ｒ０に分けられ、制御クロックに基づく制御タイミングとしてのラッチパルス(Latch Pulse）Ｌａｔの立ち上がりでＬレジスタ１３およびＲレジスタ１４へ取り込まれる。これと並行してスイッチ１２Ｌ，１２Ｒにおいて、固定接点ｃの接続を作動接点“ｂ”側に切り替える。
【００１５】
このデータ取り込みによってＬレジスタ１３およびＲレジスタ１４の出力が“Ｌ0”，“Ｒ0”になり、その後、これらのレジスタ格納値に基づいて、Ｆ関数部１５とＥＸＯＲ演算部１６を適用したラウンド(Round)演算が実行され、その結果が再度、スイッチ（ＳＷ）１２Ｌ，１２Ｒを介してＬレジスタ１３およびＲレジスタ１４の入力に供給される。
【００１６】
さらに、次のクロックサイクルのラッチパルスＬａｔの立ち上がりでＬレジスタ１３およびＲレジスタ１４へ取り込まれ、その出力が更新されることにより次のラウンドの演算が開始される。
この動作を１６クロックサイクル繰り返した後、演算結果を逆置換部（ＩＰ-1）１７へ出力して逆置換変換を実行し、暗号文として出力する。
【００１７】
Ｆ関数部１５は、図２に示すように、非線形処理を実行する複数（図２では８）のＳボックス（Ｓｂｏｘ）Ｓ1〜Ｓ8を有する。前段からの入力値Ｆ−ｉｎ、すなわち、Ｒ（ｎ−１）は拡張部(ＥＸ)１５１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）ＫｎとＥＸＯＲが実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックスＳ1〜Ｓ8に入力される。各ＳボックスＳ1〜Ｓ8では、変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
ＳボックスＳ1〜Ｓ8からの出力ビット４×８＝３２ビットは、置換部（Ｐ）１５２に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００１８】
図１の構成の場合、各クロックサイクルで３２ビットのレジスタ１３，１４の２つでデータの取り込みが行われているが、一般的にレジスタが変化する時の消費電流は大きい。したがって、ＤＥＳ演算時の消費電流波形を取得した時、この電流にはレジスタのデータ更新時の変化ビットと相関のある電流成分が含まれる。
たとえば最初のラウンド（Round1）演算した後の演算結果、次の（１），（２）式のようになる。
【００１９】
【数１】
2007323019.tif 000003
【００２０】
上記式において、Ｌ0はラウンド１開始前のレジスタＬ１３の格納値、Ｒ0はラウンド１開始前のレジスタＲ１４の格納値、Ｌ1はラウンド１終了後のレジスタＬ１３の格納値、Ｒ1はラウンド１終了後のレジスタＲ１４の格納値、Ｋ1はラウンド１に適用されるラウンド鍵、Ｆ（Ｒ0，Ｋ1）はＦ関数部１５の関数であり、入力値Ｒ0とラウンド鍵Ｋ１に基づく関数をそれぞれ示している。
【００２１】
このときのＬレジスタ１３とＲレジスタ１４の保持データは各々“Ｌ0”,“Ｒ0”であるため、次のクロックサイクルでのデータ格納時の変化ビットは、両者のＥXＯＲ演算を行うことによって、次の(３)，（４）式のようになる。
【００２２】
【数２】
2007323019.tif 000004
【００２３】
そして、１０００個程度の平文でＤＥＳ演算を実行してその消費電流波形を取得し、（３）式でラウンド鍵“Ｋ1”のうち、着目したＳ-box（Ｓ1〜Ｓ8 の１つ）に対応する６ビットの鍵を仮定して、それに基づいて消費電流波形を統計処理すれば、仮定した鍵が正しい場合にピーク電流が観察されてその推定が正しいことが判明する。
これを８個のＳ-box の構成要素（Ｓ1〜Ｓ8）全てに対して行うと４８ビットの鍵を求めることができ、残り８ビットは２8＝256回の全数攻撃で求めることができる。
【００２４】
これに対抗する手段としては、通常のＤＥＳのフローと異なるフローでＤＥＳ演算を実行する回路を搭載すれば良い。
ＤＰＡ攻撃は、ＤＥＳのシミュレータ（simulator）と実際のＩＣが同じ演算フローで動作することを前提にしている。このため、ＩＣを異なる演算フローで設計すれば、仮に正しい鍵でシミュレータにおいて演算して、着目ノード（node）の値に基づいて実デバイスで測定した電流波形をグループ分けしても、演算フローが異なるため、実際の着目ノードの値は各グループで同じ値とならず、結果的にグループ間の平均電流の差分を取ってもピークが取得できず、ＤＰＡ攻撃に対して耐性を持つ。
【００２５】
この構成の例が特許文献１、２に開示されている。
特許文献１に開示された技術では、Ｆ関数部の入力部で、そのままの値（ポジ）と反転値（ネガ）を生成し、拡張関数に入力する値をどちらにするかを乱数で選択する。この構成では、Ｓ-box も通常のもの（ポジ）と反転データに対応したもの（ネガ）の２種類を準備し、同じ乱数値とＦ関数部の入力値の極性のＥＸＯＲで選択する。
特許文献１に開示された方式の場合、乱数によってレジスタへの格納データが反転されていれば、ビット変化の有無は逆転され、結果的に推定した６ビット の鍵が正しい場合でも、２つのグループにはビット反転する消費電流波形とビット反転しない消費電流波形がほぼ均等に含まれ、差分をとってもピーク電流は検出されない。
【００２６】
特許文献２に開示された技術では、初期置換（ＩＰ）されたデータを乱数で選択された固定値とＥＸＯＲ演算した値をＬとＲに分けて演算を行い、Ｆ関数部内ではラウンド鍵の他に、別の乱数で選択された固定値とのＥＸＯＲ演算した値をＳ-boxに入力している。なお、Ｓ-boxは、Ｆ関数部内で乱数により選択する固定値の個数に対応したセット数だけ準備し、乱数で選択された固定値に対応するＳ-boxが選択される。
【特許文献１】特開２００２−３１１８２６号公報
【特許文献２】特開２００２−３６６０２９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
しかし、特許文献１に開示された方式の場合、高次のＤＰＡ攻撃を行えば、統計処理に必要な平文の数及び取得する消費電流波形の数は増えるが、鍵の取出しは可能となる。
【００２８】
特許文献２に開示された構成を採ると、ＤＰＡに対する耐性は前述の特許文献１の方式に比べて格段に向上するが、高次のＤＰＡ攻撃により結果的に鍵の取出しは可能となる可能性がある。高次のＤＰＡに対する耐性は、乱数で選択されるＳ-boxの個数を増やせばそれだけ耐性は強化されるが、回路規模の増大を招く。
【００２９】
本発明は、回路規模の増大を抑え、なおかつ十分なＤＰＡ耐性、ひいてはＤＦＡ耐性を持つ暗号処理装置を提供することにある。
【課題を解決するための手段】
【００３０】
本発明の第１の観点は、ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、取り込み信号に同期してラウンド演算用データを格納する第１レジスタと、上記第１レジスタに格納されたデータに応じたラウンド演算を行うラウンド演算部と、上記取り込み信号を分周した分周信号を生成する分周回路と、上記分周信号と上記第１レジスタに入力するデータとの排他的論理演算を行う論理演算部と、上記取り込み信号に同期して上記論理演算部の演算結果を格納する第２レジスタと、上記第１レジスタの格納データと上記第２レジスタの格納データの全ビットの一致度を判定し、全ビット一致または全ビット不一致以外の場合に上記ラウンド演算部の演算結果の出力を停止させる判定部と、を有する。
【００３１】
本発明の第２の観点は、ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、取り込み信号に同期してラウンド演算用第１データを格納する第１レジスタと、取り込み信号に同期してラウンド演算用第２データを格納する第２レジスタと、上記第１レジスタに格納された第１データと上記第２レジスタに格納された第２データに応じたラウンド演算を行うラウンド演算部と、上記取り込み信号を分周した分周信号を生成する分周回路と、上記分周信号と上記第１レジスタに入力する第１データとの排他的論理演算を行う第１論理演算部と、上記取り込み信号に同期して上記第１論理演算部の演算結果を格納する第３レジスタと、上記分周信号と上記第２レジスタに入力する第２データとの排他的論理演算を行う第２論理演算部と、上記取り込み信号に同期して上記第２論理演算部の演算結果を格納する第４レジスタと、上記第１レジスタの格納データと上記第３レジスタの格納データの全ビットの一致度を判定し、全ビット一致または全ビット不一致以外の場合に上記ラウンド演算部の演算結果の出力を停止させる第１の判定部と、上記第２レジスタの格納データと上記第４レジスタの格納データの全ビットの一致度を判定し、全ビット一致または全ビット不一致以外の場合に上記ラウンド演算部の演算結果の出力を停止させる第２の判定部と、を有する。
【発明の効果】
【００３２】
本発明によれば、１次のＤＰＡ攻撃での鍵の取出は不可能である。
２つのレジスタでの変化ビットは、鍵や平文の入力値に関係なく必ず３２ビット固定になるため、２次のＤＰＡ攻撃による鍵の取出も不可能である。
また、ＤＰＡ対策用途で配置したレジスタの値比較でＤＦＡ攻撃に対処しているため、２個のＤＥＳ回路を配置する必要が無く、回路規模および消費電流を低く抑えることが可能となる利点がある。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施形態を図面に関連付けて詳細について説明する。
【００３４】
図４は、本発明の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【００３５】
本ＤＥＳ演算回路１００は、初期置換部［ＩＰ（Initial Permutation）］１０１、スイッチ（ＳＷ）１０２、第１レジスタとしてＬ１レジスタ１０３−１、第３レジスタ（または第２レジスタ）としてのＬ２レジスタ１０３−２、第２レジスタ（または第１レジスタ）としてのＲ１レジスタ１０４−１、第４レジスタ（または第２レジスタ）としてのＲ２レジスタ１０４−２、分周回路１０５、第１論理演算部としてのＥＸＯＲ演算部１０６−１、第１の判定部としてのＥＸＯＲ演算部１０６−２、第２論理演算部としてのＥＸＯＲ演算部１０７−１、第２の判定部としてのＥＸＯＲ演算部１０７−２、Ｆ関数部１０８、ＥＸＯＲ演算部１０９、逆置換部（ＩＰ-1）１１０、および暗号文出力部(Crypto)１１１を有する。
そして、Ｆ関数部１０８、ＥＸＯＲ演算部１０９等によりラウンド演算部が形成される。
【００３６】
スイッチ（ＳＷ）１０２は、Ｌレジスタ側スイッチ１０２ＬとＲレジスタ側スイッチ１０２Ｒとを含む。
スイッチ１０２Ｌの作動接点ａは初期置換部１０１の出力に接続され、作動接点ｂはＲレジスタ１０４−１の出力に接続され、固定接点ｃがＬ１レジスタ１０３−１の入力およびＥＸＯＲ演算部１０６−１の一方の入力に接続されている。
スイッチ１０２Ｒの作動接点ａは初期置換部１０１の出力に接続され、作動接点ｂはＥＸＯＲ演算部１０９の出力に接続され、固定接点ｃがＲ１レジスタ１０４−１の入力およびＥＸＯＲ演算部１０７−１の一方の入力に接続されている。
【００３７】
Ｌ１レジスタ１０３−１は、データの取り込み信号としてのラッチパルスＬａｔに同期してスイッチ１０２Ｌを介したデータ（第１データ）Ｌｉｎをラッチ（格納）する。Ｌ１レジスタ１０３−１のラッチデータはＥＸＯＲ演算部１０６−２の一方の入力およびＥＸＯＲ演算部１０９の一方の入力に供給される。
【００３８】
Ｌ２レジスタ１０３−２は、ラッチパルスＬａｔに同期してＥＸＯＲ演算部１０６−１の演算結果（ＥＸＯＲ）をラッチする(格納する)。Ｌ２レジスタ１０３−２のラッチデータはＥＸＯＲ演算部１０６−２の他方の入力に供給される。
【００３９】
Ｒ１レジスタ１０４−１は、データの取り込み信号としてのラッチパルスＬａｔに同期してスイッチ１０２Ｒを介したデータ（第２データ）Ｒｉｎをラッチ（格納）する。Ｒ１レジスタ１０４−１のラッチデータはＥＸＯＲ演算部１０７−２の一方の入力およびＦ関数部１０８の入力に供給される。
【００４０】
Ｒ２レジスタ１０４−２は、ラッチパルスＬａｔに同期してＥＸＯＲ演算部１０７−１の演算結果（ＥＸＯＲ）をラッチする(格納する)。Ｒ２レジスタ１０４−２のラッチデータはＥＸＯＲ演算部１０７−２の他方の入力に供給される。
【００４１】
分周回路１０５は、ラッチパルスＬａｔを２分周し、分周信号ＤＩＶをＥＸＯＲ演算部１０６−１，１０７−１の他方の入力に供給する。
【００４２】
ＥＸＯＲ演算部１０６−１は、スイッチ１０２Ｌを介したデータＬｉｎと分周回路１０５の分周信号ＤＩＶとのＥＸＯＲ（排他的論理和）演算を行い、その演算結果をＬ２レジスタ１０３−２の入力に供給する。
【００４３】
ＥＸＯＲ演算部１０６−２は、Ｌ１レジスタ１０３−１に格納されたデータとＬ２レジスタ１０３−２に格納されたデータとのＥＸＯＲ演算を行い、その演算結果をリセット信号ＲＳＲ１として出力する。
より具体的には、ＥＸＯＲ演算部１０６−２は、Ｌ１レジスタ１０３−１に格納されたデータとＬ２レジスタ１０３−２に格納されたデータとが全ビット一致または全ビット不一致のどちらでもないときにリセット信号ＲＳＴ１を発生する。
このリセット信号ＲＳＴ１が発生されると、演算結果の出力が停止（抑止）される。
【００４４】
ＥＸＯＲ演算部１０７−１は、スイッチ１０２Ｒを介したデータＲｉｎと分周回路１０５の分周信号ＤＩＶとのＥＸＯＲ演算を行い、その演算結果をＲ２レジスタ１０４−２の入力に供給する。
【００４５】
ＥＸＯＲ演算部１０７−２は、Ｒ１レジスタ１０４−１に格納されたデータとＲ２レジスタ１０４−２に格納されたデータとのＥＸＯＲ演算を行い、その演算結果をリセット信号ＲＳＴ２として出力する。
より具体的には、ＥＸＯＲ演算部１０７−２は、Ｒ１レジスタ１０４−１に格納されたデータとＲ２レジスタ１０４−２に格納されたデータとが全ビット一致または全ビット不一致のどちらでもないときにリセット信号ＲＳＴ２を発生する。
このリセット信号ＲＳＴ２が発生されると、演算結果の出力が停止（抑止）される。
【００４６】
Ｆ関数部１０８は、非線形処理を実行する複数（図２のように８）のＳボックス（Ｓｂｏｘ）Ｓ1〜Ｓ8を有する。入力値ＦｉｎＲ（ｎ−１）を拡張部(ＥＸ)によって４８ビットに拡大し、さらに入力する鍵（４８ビット）ＫｎとＥＸＯＲ演算を実行し、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックスＳ1〜Ｓ8に入力する。各ＳボックスＳ1〜Ｓ8では、変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
ＳボックスＳ1〜Ｓ8からの出力ビット４×８＝３２ビットは、置換部（Ｐ）に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００４７】
ＥＸＯＲ演算部１０９は、Ｌ１レジスタ１０３−１に格納されたデータＦｉｎＬとＦ関数部１０８の出力とのＥＸＯＲ演算を行い、スイッチ１０２Ｒ、逆置換部１１０に供給する。
【００４８】
逆置換部１１０は、Ｆ関数部１０８とＥＸＯＲ演算部１０９を適用したラウンド(Round)演算が実行され、その結果が再度、スイッチ（ＳＷ）１０２Ｌ，１０２Ｒを介してＬレジスタ１０３−１およびＲレジスタ１０４−１の入力に供給される、という動作がたとえば１６クロックサイクル繰り返され、その演算結果に対する逆置換変換（ＩＰ-1）を実行し、出力部１１１を介して暗号文として出力する。
【００４９】
以上の構成を有する本実施形態のＤＥＳ演算回路１００は、通常のＤＥＳ演算回路におけるＬ１レジスタ（第１レジスタ）１０３−１，Ｒ１レジスタ（第２レジスタ）１０４−１の他に、もう１セットのＬ２レジスタ（第３レジスタ）１０３−２，Ｒ２レジスタ（第４レジスタ）１０４−２を配置し、これらのレジスタ１０３−１，１０３−２、１０４−１，１０４−２へのデータの取込みは同じ信号であるラッチパルスＬａｔで行う。
また、レジスタのデータ取込み信号であるラッチパルスＬａｔを分周する分周回路１０５を配置し、追加したＬ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の格納データは、通常のＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１へ格納される信号と、取込み信号であるラッチパルスＬａｔの分周信号ＤＩＶのＥＸＯＲを採ったデータとする。
また、後で説明するように、ＤＦＡ対策として、２セットのレジスタペアのＬ１レジスタ１０３−１とＬ２レジスタ１０３−２同士、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２同士のＥＸＯＲ演算を行い、全ビット一致または全ビット不一致以外の場合にリセットＲＳＴ１、ＲＳＴ２を発生し、演算結果を出力しない構成を採る。
【００５０】
すなわち、本実施形態のＤＥＳ演算回路１００においては、共通鍵の暗号演算回路として機能し、各ラウンド（Round）の演算結果を格納するレジスタを２種類配置する。
そして、レジスタへのデータの格納パルスＬａｔを分周回路１０５で２分周した信号を、レジスタへの入力データとＥＸＯＲ演算したものを追加したレジスタ１０３−２，１０４−２に取り込む。これにより、２種類のＬ１レジスタ１０３−１とＬ２レジスタ１０３−２同士、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２同士の各ビットは、必ずどちらかで変化することとなり、レジスタでの鍵に関連したリーク信号を発生させない。
【００５１】
図５（Ａ）〜（Ｌ）および図６（Ａ）〜（Ｍ）は、図４のＤＥＳ演算回路の動作を説明するための第１のタイミングチャートである。
図７（Ａ）〜（Ｌ）および図８（Ａ）〜（Ｍ）は、図４のＤＥＳ演算回路の動作を説明するための第２のタイミングチャートである。
なお、図５，図６の第１のタイミングチャートと図７，図８の第２のタイミングチャートで異なるのは、データ取り込み信号であるラッチパルスＬａｔの分周信号ＤＩＶの値およびそれに伴うデータの極性だけである。
【００５２】
まず、図４のＤＥＳ演算回路１００の基本動作について説明する。
【００５３】
本来のＬ１レジスタ１０３−１、Ｒ１レジスタ１０４−１の他に、Ｌ２レジスタ１０３−２、Ｒ２レジスタ１０４−２が配置され、これらのレジスタ１０３−１，１０３−２，１０４−１，１０４−２は同じ信号であるラッチパルスＬａｔの立ち上がりでデータが取り込まれる。
このラッチパルスＬａｔは分周回路１０５のクロック入力にも取り込まれ、その出力分周信号ＤＩＶはラッチパルスＬａｔの立ち上がりの度にトグル動作を繰り返す。
Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の入力には、スイッチ１０２Ｌ、１０２Ｒで選択された信号（データ）Ｌｉｎ、Ｒｉｎが供給され、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の入力には、スイッチ１０２Ｌ，１０２Ｒで選択されたデータ（信号）と分周信号ＤＩＶのＥＸＯＲ演算したデータ（信号）が供給されている。
すなわち、図５および図６の（Ｄ）〜（Ｈ）に示すように、分周信号ＤＩＶがロー（Low）レベルの時は、Ｌ２レジスタ１０３−２とＲ２レジスタ１０４−２には、Ｌ１レジスタ１０３−１とＲ１レジスタ１０４−１と同じ信号（データ）が入力される。一方、分周信号ＤＩＶがハイ（High）レベルの時は、Ｌ２レジスタ１０３−２とＲ２レジスタ１０４−２には、Ｌ１レジスタ１０３−１とＲ１レジスタ１０４−１の反転信号／Ｌｘ，／Ｒｘ（図面ではバーを付した信号）が入力される。
そして、Ｌ１レジスタ１０３−１の出力とＬ２レジスタ１０３−２の出力はＥＸＯＲ演算部１０６−２に入力され、全ビット一致または全ビット不一致のどちらでもない時にＴリセット信号ＲＳＴ１を発生する。同様に、Ｒ１レジスタ１０４−１の出力とＲ２レジスタ１０４−２の出力はＥＸＯＲ演算部１０７−２に入力され、全ビット一致または全ビット不一致のどちらでもない時にリセット信号ＲＳＴ２を発生する。
【００５４】
また、４つのレジスタの出力のうち、Ｌ１レジスタ１０３−１とＲ１レジスタ１０４−１に格納されているデータだけが、Ｆ関数を含むラウンド（Round）演算回路系に入力され、その演算結果は逆置換部（ＩＰ-1）１１０およびスイッチ１０２Ｌ，１０２Ｒを介してＬ１レジスタ１０３−１，Ｒ１レジスタ１０−４−１，Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の入力に供給される。
スイッチ１０２Ｌ，１０２Ｒは、ラウンド演算入力を、初期置換（ＩＰ）後の値とラウンド演算結果の値の切換を行い、ＤＥＳ演算開始時の最初の１クロック期間のみ固定接点ｃが作動接点“ａ”側に接続されて、初期置換した値をＬ１レジスタ１０３−１，Ｒ１レジスタ１０４―１，Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の入力に供給し、それ以後は固定接点ｃが作動接点“ｂ”側に接続されて、ラウンド演算結果の値をＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１，Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の入力に供給する。
【００５５】
次に、ＤＰＡ攻撃を踏まえたより具体的な回路動作について説明する。まず、第１の動作を図５（Ａ）〜（Ｌ）および図６（Ａ）〜（Ｍ）に関連付けて説明する。
【００５６】
図５（Ａ）に示すように、時刻ｔ０において信号/ＤＥＳが立ち下がってＤＥＳ演算が開始されると、図５（Ｂ）に示すように、スイッチ１０２Ｌ，１０２Ｒの固定接点ｃが作動接点“ａ”側に接続され、ＩＰ置換後に“Ｌ0”と“Ｒ0”に分けられたデータが選択される。
そして、図５（Ｅ），（Ｇ）に示すように、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の入力には“Ｌ0”と“Ｒ0”が供給されるが、図５（Ｄ）に示すように、分周信号ＤＩＶがハイ（High）レベルであるため、図５（Ｆ），（Ｈ）に示すように、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の入力へはその反転信号“/Ｌ0”と“/Ｒ0”が供給される。
【００５７】
そして、時刻t１においてＲｄ１サイクルに切り替わると、図５（Ｃ），（Ｄ）に示すように、ラッチパルスＬａｔの立ち上がりで分周信号ＤＩＶがロー（Low）レベルに反転し、スイッチ１０２Ｌ，１０２Ｒの固定接点ｃの接続は作動接点“ｂ”側に切換られると共に、図５（Ｉ）〜（Ｌ）に示すように、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の格納データは各々“Ｌ0”, “Ｒ0”に、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の格納データは各々“/Ｌ0”, “/Ｒ0”に更新される。
そして、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の出力はＦ関数を含むラウンド演算回路系に供給されてラウンド演算が実行され、一定時間後にその演算結果“Ｌ1”, “Ｒ1”が出力される。そして、図５（Ｄ）〜（Ｈ）に示すように、演算結果“Ｌ1”, “Ｒ1”はスイッチ１０２Ｌ，１０２Ｒを介してＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の入力に供給され、このとき、分周信号ＤＩＶはロー（Low）レベルであるため、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２にも同じ値が供給される。
【００５８】
そして、時刻ｔ２においてＲｄ２サイクルに切り替わると、図５（Ｃ），（Ｄ）に示すように、ラッチパルスＬａｔの立ち上がりで分周信号ＤＩＶがハイ（High）レベルに反転すると共に、図５（Ｉ）〜（Ｌ）に示すように、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の格納データは各々“Ｌ1”，“Ｒ1”に、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の格納データも各々“Ｌ1”，“Ｒ1”に更新される。このとき、各レジスタでの変化ビットは、次のようになる。
【００５９】
【数３】
2007323019.tif 000005
【００６０】
すなわち、Ｌ１レジスタ１０３−１とＬ２レジスタ１０３−２で変化するビットは反転の関係となり、レジスタの各ビットはＬ１レジスタ１０３−１またはＬ２レジスタ１０３−２のどちらか一方で必ず反転し、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、Ｌ１レジスタ１０３−１とＬ２レジスタ１０３−２で変化するビットは入力する平文の値や鍵の値に関係なく必ず３２ビットとなる。
Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットも反転の関係となり、レジスタの各ビットはＲ１レジスタ１０４−１またはＲ２レジスタ１０４−２のどちらか一方で必ず反転し、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットは入力する平文の値や鍵の値に関係なく必ず３２ビットとなる。
【００６１】
これにより、着目したＳ-box（Ｓ1〜Ｓ8のいずれか）に対応する６ビットの鍵を推定して複数の平文をＤＥＳ演算して、その演算結果に基づいて各平文に対応する消費電流波形をグループ分けしても、どちらのグループに属する消費電流波形でも着目したビットでは、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２のどちらかで必ずビット変化が起こり、それに起因する電流が流れるため、２つの消費電流グループの平均電流の差分を採っても、着目するビットのビット変化に起因する消費電流の成分を検出することはできない。
ＤＰＡ攻撃は、電源端子で測定した消費電流波形を統計処理して鍵を求める攻撃方法であるため、同時に変化するＲ１レジスタ１０４−１とＲ２レジスタ１０４−２のビット変化に起因する電流のうちのどちらか一方を取り出すことはできない。
このため、このＲｄ２サイクルでＤＰＡ攻撃により鍵を取り出すことはできない。
【００６２】
Ｒｄ２サイクルでは、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の出力“Ｌ1”，“Ｒ1”はＦ関数を含むラウンド演算回路系に供給されてラウンド演算が実行され、一定時間後にその演算結果“Ｌ2”，“Ｒ2”が出力される。そして、図５（Ｄ）〜（Ｈ）に示すように、演算結果“Ｌ2”，“Ｒ2”はスイッチ１０２Ｌ，１０２Ｒを介してＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の入力に供給され、このとき、分周信号ＤＩＶはハイ（High）レベルであるため、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２には反転データ“/Ｌ2”，“/Ｒ2”が供給される。
【００６３】
そして、時刻ｔ３においてＲｄ３サイクルに切り替わると、図５（Ｃ），（Ｄ）に示すように、ラッチパルスＬａｔの立ち上がりで分周信号ＤＩＶがロー（Low）レベルに反転すると共に、図５（Ｉ）〜（Ｌ）に示すように、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の格納データは各々“Ｌ2”，“Ｒ2”に、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の格納データも各々“/Ｌ2”，“/Ｒ2”に更新される。このとき、各レジスタでの変化ビットは、次のようになる。
【００６４】
【数４】
2007323019.tif 000006
【００６５】
すなわち、Ｌ１レジスタ１０３−１とＬ２レジスタ１０３−２で変化するビットは反転の関係となり、レジスタの各ビットはＬ１レジスタ１０３−１またはＬ２レジスタ１０３−２のどちらか一方で必ず反転し、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、Ｌ１レジスタ１０３−１とＬ２レジスタ１０３−２で変化するビットは入力する平文の値や鍵の値に関係なく必ず３２ビットとなる。
Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットも反転の関係となり、レジスタの各ビットはＲ１レジスタ１０４−１またはＲ２レジスタ１０４−２のどちらか一方で必ず反転し、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットは入力する平文の値や鍵の値に関係なく必ず３２ビットとなる。
このため、Ｒｄ３サイクルでもＤＰＡ攻撃により鍵を取り出すことはできない。
【００６６】
以後のラウンドサイクルでも同様に、Ｌ２レジスタ１０３−２とＲ２レジスタ１０４−２の値の極性はポジとネガを交互に繰り返す。奇数ラウンドＲd2m+1に切り替わった時には、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２へ格納されるデータはＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１へ格納されるデータの反転データとなるため、各レジスタでの変化ビットは次のようになる。
【００６７】
【数５】
2007323019.tif 000007
【００６８】
すなわち、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットは反転の関係となり、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、レジスタの各ビットはＲ１レジスタ１０４−１またはＲ２レジスタ１０４−２のどちらか一方で必ず反転している。
このため、推定鍵に基づいて消費電流波形をグループ分けしてその差分を採っても、消費電流波形のピーク電流は得られず、ＤＰＡ攻撃は失敗する。
【００６９】
偶数ラウンドＲd2m+2に切り替わる時には、格納されるデータの極性は、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２とＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１で同じであるが、格納前のＬ２レジスタ１０３−２，Ｒ２レジスタ１０４−２のデータはＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１のデータの反転データとなるため、各レジスタでの変化ビットは次のようになる。
【００７０】
【数６】
2007323019.tif 000008
【００７１】
すなわち、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットも反転の関係となり、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、レジスタの各ビットはＲ１レジスタ１０４−１またはＲ２レジスタ１０４−２のどちらか一方で必ず反転している。
このため、推定鍵に基づいて消費電流波形をグループ分けしてその差分を採っても、消費電流波形のピーク電流は得られず、ＤＰＡ攻撃は失敗する。
【００７２】
次に、ＤＥＳ演算が開始された時、ＩＰサイクルで分周信号ＤＩＶがロー（Low）レベルの場合の第２の動作を図７（Ａ）〜（Ｌ）および図８（Ａ）〜（Ｍ）に関連付けて説明する。
【００７３】
この場合でも同様に、Ｌ２レジスタ１０３−２とＲ２レジスタ１０４−２の値の極性は分周信号ＤＩＶと同期してポジとネガを交互に繰り返えす。
奇数ラウンドＲd2m+1に切り替わった時、格納されるデータの極性は、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２とＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１で同じであるが、格納前のデータでは、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２のデータはＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の反転データであるため、次のようになる。
【００７４】
【数７】
2007323019.tif 000009
【００７５】
すなわち、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットも反転の関係となり、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、レジスタの各ビットはＲ１レジスタ１０４−１またはＲ２レジスタ１０４−２のどちらか一方で必ず反転している。
このため、推定鍵に基づいて消費電流波形をグループ分けしてその差分を採っても、消費電流波形のピーク電流は得られず、ＤＰＡ攻撃は失敗する。
【００７６】
偶数ラウンドＲd2m+2に切り替わった時には、格納前のデータの極性は、Ｌ２レジス１０３−２，Ｒ２レジスタ１０４−２のデータとＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１のデータは同じであるが、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２へ格納されるデータはＬ１レジスタ１０３−１，Ｒ１レジスタ１０４−１へ格納されるデータの反転データとなるため、次のようになる。
【００７７】
【数８】
2007323019.tif 000010
【００７８】
すなわち、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２で変化するビットも反転の関係となり、なおかつこのビット変化はラッチパルスＬａｔの立ち上がりで同時に起こるため、レジスタの各ビットはＲ１レジスタ１０４−１またはＲ２レジスタ１０４−２のどちらか一方で必ず反転している。
このため、推定鍵に基づいて消費電流波形をグループ分けしてその差分を採っても、消費電流波形のピーク電流は得られず、ＤＰＡ攻撃は失敗する。
【００７９】
次に、ＤＦＡ（Differential Fault Analysis）対策について説明する。
【００８０】
ＤＦＡ攻撃は、故意に演算回路に動作不具合を発生させ、その時の演算結果と、同じ平文を用いた演算結果の比較から鍵を取り出す攻撃方法で、現実的な攻撃方法としては、ＤＥＳのラウンド（Round）演算中に、レジスタにレーザ（Laser）光を照射してビット反転を発生させ、得られた誤演算結果を正しい演算結果と比較して鍵を取り出す。
【００８１】
このＤＦＡ攻撃への対抗策として、
１）暗号化（復号化）演算結果を格納しておくと共にそれを復号化（暗号化）演算し、元の入力値と一致した場合に出力する、
２）２つのＤＥＳ演算回路を配置し、２つの出力の比較結果が一致する場合にデータ出力する、
などの構成が採られている。
【００８２】
しかし、上記１）の構成の場合は演算のスループットが半減し、２）の構成の場合はＤＥＳ演算回路の回路規模が２倍となり、なおかつ２セットのレジスタが同じ格納動作を行うことから、格納電流は２倍となり、ＤＰＡ攻撃で統計処理に使う消費電流波形のサンプル数は半分でよくなる。
【００８３】
これに対して、本実施形態のＤＰＡ対策の構成では、２ペアのレジスタを配置し、一方は常にポジのデータが格納され、他方はデータの極性がポジとネガが交互に繰り返される。
本実施形態におけるＤＦＡ対策として、
・Ｌ１レジスタ１０３−１のデータとＬ２レジスタ１０３−２のデータの全ビット一致および全ビット不一致の検出回路を配置し、全ビット一致または全ビット不一致以外の状況が検出されればリセット信号ＲＳＴ１を発生する、
・Ｒ１レジスタ１０４−１のデータとＲ２レジスタ１０４−２のデータの全ビット一致および全ビット不一致の検出回路を配置し、全ビット一致または全ビット不一致以外の状況が検出されればリセット信号ＲＳＴ２を発生する、
という構成を採用している。
【００８４】
この構成において、レーザ光照射によるビット反転が発生していない場合、Ｌ１レジスタ１０３−１とＬ２レジスタ１０３−２の比較、およびＲ１レジスタ１０４−１とＲ２レジスタ１０４−２の比較で、共に「全ビット一致」、または「全ビット不一致」が検出され、リセット信号ＲＳＴ１、ＲＳＴ２は発生しない。
もし、Ｌ１レジスタ１０３−１，Ｌ２レジスタ１０３−２，Ｒ１レジスタ１０４−１，Ｒ２レジスタ１０４−２のどれかのレジスタ（Ｌ１，Ｌ２，Ｒ２，Ｒ２）で１ビットのデータ反転が起こった場合、「１ビットだけ一致で残り６３ビットは不一致」、または、「１ビットだけ不一致で残り６３ビットは一致」が検出され、ＲＳＴ信号ＲＳＴ１，ＲＳＴ２が発生される。
これにより、誤演算結果の出力が回避され、ＤＦＡ攻撃による鍵の取り出しが不可能になる。
【００８５】
以上説明したように、本実施形態によれば、ＤＥＳ演算回路１００において、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１の他に、もう１セットのＬ２レジスタ１０３−２，Ｒ２レジスタ１０４−２を配置し、これらのレジスタ１０３−１，１０３−２、１０４−１，１０４−２へのデータの取込みは同じ信号であるラッチパルスＬａｔで行い、かつ、レジスタのデータ取込み信号であるラッチパルスＬａｔを分周する分周回路１０５を配置し、Ｌ２レジスタ１０３−２，Ｒ２レジスタ１０４−２の格納データは、Ｌ１レジスタ１０３−１，Ｒ１レジスタ１０４−１へ格納される信号と、取込み信号であるラッチパルスＬａｔの分周信号ＤＩＶのＥＸＯＲ演算を行ったデータとし、レジスタペアのＬ１レジスタ１０３−１とＬ２レジスタ１０３−２同士、Ｒ１レジスタ１０４−１とＲ２レジスタ１０４−２同士のＥＸＯＲ演算を行い、全ビット一致または全ビット不一致以外の場合にリセットＲＳＴ１、ＲＳＴ２を発生し、演算結果を出力しない構成を採ることから、以下の効果を得ることができる。
【００８６】
１次のＤＰＡ攻撃での鍵の取出は不可能である。
各S-box出力に対応する２つのレジスタでの変化ビットは、鍵や平文の入力値に関係なく必ず４ビット固定になるため、２次のＤＰＡ攻撃による鍵の取出も不可能である。
また、ＤＰＡ対策用途で配置したレジスタの値比較でＤＦＡ攻撃に対処しているため、２個のＤＥＳ回路を配置する必要が無く、回路規模および消費電流を低く抑えることが可能となる利点がある。
【００８７】
ここで、上述の暗号処理を実行するデバイスとしてのＩＣモジュール２００の構成例を図９を参照して説明する。上述の処理は、たとえばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図９に示すＩＣモジュール２００は、これら様々な機器に構成することが可能である。
【００８８】
図９において、ＣＰＵ(Central processing Unit)２０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述した各スイッチの切り替え制御、その他の各種プログラムを実行するプロセッサである。
メモリ２０２は、ＣＰＵ２０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ２０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ２０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【００８９】
暗号処理部２０３は、たとえば上述したＤＥＳアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、図４のＤＥＳ演算回路１００が適用される。
【００９０】
送受信部２０４は、外部とのデータ通信を実行するデータ通信処理部であり、たとえばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【００９１】
なお、暗号処理部２０３において適用される各種の制御信号、たとえば前述したスイッチの切り替え制御信号は、クロック生成回路２０５からのクロック信号をトリガにして動作するタイミング発生回路２０６において生成し、暗号処理部２０３に供給することが可能である。
【００９２】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。
【００９３】
なお、本明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【図面の簡単な説明】
【００９４】
【図１】一般的なＤＥＳ演算回路の構成を示す図である。
【図２】Ｆ関数部の構成例を示す図である。
【図３】図１のＤＥＳ演算回路のタイミングチャートである。
【図４】本発明の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【図５】図４のＤＥＳ演算回路の動作を説明するための第１のタイミングチャートである。
【図６】図４のＤＥＳ演算回路の動作を説明するための第１のタイミングチャートである。
【図７】図４のＤＥＳ演算回路の動作を説明するための第２のタイミングチャートである。
【図８】図４のＤＥＳ演算回路の動作を説明するための第２のタイミングチャートである。
【図９】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【００９５】
１００・・・ＤＥＳ演算回路、１０１・・・初期置換部［ＩＰ（Initial Permutation）］、１０２・・・スイッチ（ＳＷ）、１０２Ｌ・・・Ｌレジスタ側スイッチ、１０２Ｒ・・・Ｒレジスタ側スイッチ、１０３−１・・・Ｌ１レジスタ、１０３−２・・・Ｌ２レジスタ、１０４−１・・・Ｒ１レジスタ、１０４−２・・・Ｒ２レジスタ、１０５・・・分周回路、１０６−１，１０６−２，１０７−１，１０７−２・・・ＥＸＯＲ演算部、１０８・・・Ｆ関数部、１０９・・・ＥＸＯＲ演算部、１１０・・・逆置換部（ＩＰ-1）、１１１・・・暗号文出力部(Crypto)、２００・・・ＩＣモジュール、２０１・・・ＣＰＵ(Central processing Unit)、２０２・・・メモリ、２０３・・・暗号処理部、２０４・・・送受信部、２０５・・・クロック生成部、２０６・・・タイミング発生回路。
【図１】
2007323019.tif 000011
【図２】
2007323019.tif 000012
【図３】
2007323019.tif 000013
【図４】
2007323019.tif 000014
【図５】
2007323019.tif 000015
【図６】
2007323019.tif 000016
【図７】
2007323019.tif 000017
【図８】
2007323019.tif 000018
【図９】
2007323019.tif 000019