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