(57)【特許請求の範囲】
【請求項１】

所定ビット数の第１データブロックと鍵情報とを入力として所定の非線形関数Ｆの演算を行う関数演算部を有し、前記関数演算部の演算の結果値と該所定ビット数の第２データブロックとを論理演算した結果値を得て、前記第２データブロックを第１データブロックと置き換えるとともに、前記第１データブロックを前記論理演算した結果値と置き換える攪拌ステップを繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号演算回路であって、
前記鍵情報とは無関係の情報を前記関数演算部に供給する手段を備え、
前記供給する手段は、前記暗号化データの出力の後に、前記鍵情報とは無関係の情報の供給を前記関数演算部に開始し、
前記関数演算部は、供給された前記鍵情報とは無関係の情報と所定ビット数の第１データブロックを入力として非線形関数Fの演算を行うことを特徴とする暗号演算回路。
【請求項２】
所定ビット数の第１データブロックと鍵情報とを所定の非線形関数Ｆへ作用させた結果得られる結果値と該所定ビット数のデータブロックとを論理演算した結果値を得て、前記第２データブロックを第１データブロックと置き換えるとともに、前記第１データブロックを前記論理演算した結果値と置き換える攪拌ステップを繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号演算回路であって、
前記第１データブロックを保持する保持手段と、
この保持手段へ前記鍵情報とは無関係の第１情報を供給する第１供給手段を備え、
前記第１供給手段は、前記暗号化データの出力の後に、前記鍵情報とは無関係の第１情報を供給し、
供給された前記鍵情報とは無関係の情報は、所定ビット数の第１データブロックと共に非線形関数Fに作用される情報であること
を特徴とする暗号演算回路。
【請求項３】
請求項２記載の暗号演算回路は、
前記保持手段へ前記論理演算した結果とは無関係の第２情報を供給する第２供給手段とを更に備え、
前記第２供給手段は、前記暗号化データの出力の後に、前記論理演算した結果とは無関係の第２情報の供給を開始するようにしたことを特徴とする暗号演算回路。
【請求項４】
非線形関数Ｆを処理する手段を備えるＦｅｉｓｔｅｌ型暗号アルゴリズムを実装し、暗号化データを出力する暗号演算回路であって、
前記非線形関数Ｆを処理する手段へ前記非線形関数Ｆの演算結果とは無関係のデータである乱数を供給する手段を備え、
前記供給する手段は、前記暗号化データの出力の後に、前記演算結果とは無関係のデータである乱数を前記非線形関数Ｆを処理する手段へデータ供給を開始し、
前記非線形関数Ｆを処理する手段は、供給された前記演算結果とは無関係のデータである乱数を処理するようにしたことを特徴とする暗号演算回路。
【請求項５】
Ｆｅｉｓｔｅｌ型暗号アルゴリズムを実装し、暗号化処理を行って、暗号化データを出力する暗号演算回路であって、
暗号演算回路内の内部データを保持する保持手段と、
この保持手段へ前記鍵情報とは無関係の情報を供給する手段とを備え、
前記供給する手段は、前記暗号化データの出力の後に、前記鍵情報とは無関係の情報の供給を開始するようにしたことを特徴とする暗号演算回路。
【請求項６】

所定ビット数の第１データブロックと鍵情報とを所定の非線形関数Ｆへ作用させた結果得られる結果値と該所定ビット数の第２データブロックとを論理演算した結果値を得て、前記第２データブロックを第１データブロックと置き換えるとともに、前記第１データブロックを前記論理演算した結果値と置き換える攪拌ステップを繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号演算回路であって、 
前記非線形関数Ｆを作用させるための前記鍵情報に代えて前記鍵情報とは無関係の情報を供給する手段を備え、
前記供給する手段は、前記暗号化データの出力の後に、前記鍵情報とは無関係の情報の供給を開始し、
供給された前記鍵情報とは無関係の情報は、所定ビット数の第１データブロックと共に非線形関数Fに作用される情報であること
を特徴とする暗号演算回路。 
【請求項７】

前記鍵情報とは無関係の情報は、乱数であることを特徴とする請求項１または請求項６記載の暗号演算回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｆｅｉｓｔｅｌ型アルゴリズムを実装した暗号演算回路に関し、特に、電力解析攻撃に対する耐性を持った暗号化演算回路に関する。
【０００２】
【従来の技術】
暗号演算回路に対して演算処理中の消費電力に関するグラフを作成し、その消費電力グラフを用いて、暗号演算回路に納められている鍵情報を取り出すという電力解析攻撃(ＤＰＡ: Differential Power Analysis) 法がある。
【０００３】
ＤＰＡ法は、まず、複数のデータをそれぞれ暗号演算回路に入力し、それぞれの消費電力を測定する。次に、暗号演算回路内にある鍵情報の推定を行う。このとき、推定した鍵情報と消費電力グラフに相関がある場合、計算されたその相関値は、推定した鍵情報が正しい時には大きな値となり、推定した鍵情報が間違っている時には小さな値となる。ＤＰＡ法は、この原理を用いて、消費電力を測定することにより暗号演算回路内部の鍵情報を取り出すという攻撃方法である。
【０００４】
ＤＰＡ法は、破壊行為を伴わない攻撃であるため、外見を見ただけでは攻撃によって鍵情報が取り出されたかどうか判断できず、不正利用による被害が拡大する恐れがある。このため、暗号演算回路において、ＤＰＡ法への対策が必須となってきている。
【０００５】
ＤＰＡ法に対する対策の一つとして、演算中のデータをマスクして演算する発明があった（例えば、特許文献１参照）。この発明は、鍵情報を用いた演算中の消費電力の変動が鍵情報と関係しないように、鍵情報をマスクして演算を行なうというものである。この発明は、鍵情報をマスクして演算することで、鍵情報と消費電力との相関関係を失わせるようにして、ＤＰＡ法対策を行ったものである。
【０００６】
【特許文献１】
特開２０００−６６５８５公報
【０００７】
【発明が解決しようとする課題】
ところで、共通鍵ブロック暗号方式では、Feistel氏の開発したFeistel型暗号アルゴリズムを用いたものが多く採用されている。
【０００８】
従来の技術欄で説明した、特開２０００−６６５８５公報の発明は、このFeistel型暗号アルゴリズムを実装した暗号演算回路において、演算終了時点のＤＰＡ法の対策として有効であるが、演算終了の後の回路動作に対して行われるＤＰＡ法に対する対策では無かった。
【０００９】
そこで、本発明は、このような問題点に鑑みなされたものであり、Feistel型暗号アルゴリズムを実装した暗号演算回路の演算終了の後に行われるＤＰＡ法の対策を実現した暗号演算回路を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明は、所定ビット数の第１データブロックと鍵情報とを所定の非線形関数Ｆへ作用させた結果得られる結果値と該所定ビット数の第２データブロックとを論理演算して結果値を得て、前記第２データブロックを第１データブロックと置き換えるとともに、前記第１データブロックを前記結果値と置き換える攪拌ステップを繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号演算回路であって、前記非線形関数Ｆを作用させるための前記鍵情報を前記暗号化処理とは無関係の情報として供給する手段を備え、前記暗号化データの出力の後に、前記供給する手段によって始するようにした。
【００１１】
また、本発明は、所定ビット数の第１データブロックと鍵情報とを所定の非線形関数Ｆへ作用させた結果得られる結果値と該所定ビット数のデータブロックとを論理演算して結果値を得て、前記第２データブロックを第１データブロックと置き換えるとともに、前記第１データブロックを前記結果値と置き換える攪拌ステップを繰り返し実行することにより、暗号化処理を行って、該処理結果を暗号化データとして外部へ出力する暗号演算回路であって、前記第1データブロックを保持する保持手段と、この保持手段へ前記暗号化処理とは無関係の情報を供給する手段を備え、前記暗号化データの出力の後には、前記供給する手段によって供給を開始するようにした。
【００１２】
本発明は、例えば、Feistel型暗号アルゴリズムを実装した暗号演算回路の信号線の遷移や信号線の値に着目し、それぞれにおいてＤＰＡ法により攻撃されうるタイミングと攻撃ポイントを明確にして、上記のように対策するようにしたから、ＤＰＡ法による攻撃に対して暗号演算回路の内部にある鍵情報の漏洩を防ぐことができる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００１４】
まず、Feistel型暗号アルゴリズムについて、その処理の流れを図１のフローチャートを用いて簡単に説明する。
【００１５】
まず、暗号化する入力ブロックデータは、初期転値(ＩＰ:Initial Permutation)と呼ばれる、入力ブロックデータのビット間のデータを並び換える処理が施される（ステップＳ１）。次に、この初期転値後のブロックデータをｎ／２ビットのブロックに分割する（ステップＳ２）。この分割された２つのブロックを初期値とし、以下の演算を繰り返す（ステップＳ３、Ｓ４）。
Ｌi＝Ｒi-1
Ｒi＝Ｌi-1＾Ｆ(keyi、Ｒi-1)
ここで、演算回数をｉ(１≦i≦k)、ｉ回目の演算時の一方の分割されたブロック（右側）をＲi、他方のブロック（左側）をＬi、ｉ回目の鍵情報をkeyi、非線形演算を行なう関数をＦとする。また、「＾」は、排他的論理和を示す。
【００１６】
この繰り返し演算Ｓ３をｋ回繰り返した後（Ｓ４のＹ）に、各演算結果Ｒk、Ｌkを合成する（ステップＳ５）。なお、この合成は、Ｌkを上位ｎ／２ビットのブロックに、Ｒkを下位ｎ／２ビットのブロックとしたｎビットのブロックデータとすることを意味する。そして、合成されたブロックデータに対し、逆初期転値（ＩＰ-1）を行ない（ステップＳ６）、演算結果を得て演算を終了する。
【００１７】
次に、このFeistel 型暗号アルゴリズムを実装した暗号演算回路のデータパス部の構成を図２に示す。
【００１８】
ＩＰ部２１は、予め定められた規則に基づいて、初期転値の演算を行なう回路モジュールである。関数演算部２４は、所定の非線形関数である関数Ｆの演算を行なう回路モジュールである。ＩＰ-1部２５は、ＩＰ部２１で定められた規則に相反する規則に基づいて、逆初期転値の演算を行なう回路モジュールである。Ｌレジスタ２３、Ｒレジスタ２２は、それぞれｎ／２ビット幅を持ったレジスタであり、３入力１出力のセレクタ２６、２７は、図示されていない制御回路部からの信号に応じて、Ｌレジスタ２３、Ｒレジスタ２２へ入力するデータを選択する。なお、セレクタ２６への３入力とは、ＩＰ部２１からの上位ｎ／２ビットの値と、Ｒレジスタ２２の出力値と、Ｌレジスタ２３の出力値と関数演算部の出力値とを排他的論理和した値とであり、セレクタ２７への３入力とは、ＩＰ部２１からの下位ｎ／２ビットの値と、Ｒレジスタ２２の出力値と、Ｌレジスタ２３の出力値と関数演算部の出力値とを排他的論理和した値とである。
【００１９】
さて、以上説明した構成において処理された暗号演算結果Ｃ＝（Ｃl、Ｃr）は、次式のように表すことができる。
Ｃ＝ＩＰ-1｛（Ｌk＾Ｆ（keyk、Ｒk））、Ｒk｝
ここで、ＩＰ-1部２５は、ビット並びを入れ換えているだけであるために、演算結果ＣからＲkの値は容易に特定される。Ｒkの値が特定されると、演算終了後の関数演算部２４の出力値は、鍵情報keykの一変数の値のみによって決まる。以上のことから、関数演算部２４の出力結果を攻撃ポイントとして、鍵情報keykを推定することにより、ＤＰＡ法が行われてしまう。仮に、関数演算部２４の消費電力の変動と鍵情報の演算との間に相関があった場合には、攻撃者に鍵情報を特定されてしまう。すなわち、暗号演算の終了時点で、ＤＰＡ法を用いた攻撃を行なうことで、暗号演算回路内の鍵情報が取り出されてしまう。このＤＰＡ法を用いた攻撃法の対処方法としては、先に示した特開２０００−６６５８５号公報による発明によって解決できる。
【００２０】
一方、Feistel型暗号アルゴリズムを回路実装した暗号演算回路においては、上記の暗号演算の終了時点での攻撃の他に、暗号演算が終了後（終了時点の次のタイミング以降）においても、ＤＰＡ法を用いた攻撃を行うことで、暗号演算回路内の鍵情報が取り出されてしまう可能性があることが新たに分かった。このことを説明する前に、暗号演算回路の演算結果を出力する際のデータパス部におけるデータの制御方法には２通り有って、各制御方法によって、暗号演算の終了後のＤＰＡ法による攻撃ポイントが異なっているため、まず、２通りのデータの制御方法について説明する。
【００２１】
１つめの制御方法は、演算結果を出力するタイミングにおいて、図３にあるようにセレクタ２７がデータパス２８を選択し、かつセレクタ２６がデータパス２９を選択することで、左右のデータを入れ換えた形で演算を終わらせる、クロス型回路構成である。一方、２つ目の制御方法は、演算結果を出力するタイミングにおいて、図１０にあるようにセレクタ２７がデータパス２９を選択し、セレクタ２６がデータパス２８を選択することで、演算の最後において左右のデータを入れ換えないような形で演算を終わらせる、ストレート型回路構成である。
【００２２】
Feistel型暗号アルゴリズムを実装した暗号演算回路において、そのアルゴリズムで定められている繰り返し演算を行なう場合、セレクタ２６、セレクタ２７は左右のデータが入れ替わるように、図２において図示されていない制御回路により制御される。この暗号演算回路において、演算結果を出力する場合に、特に必要がない場合は繰り返し演算を行なう場合と同様に、左右のデータが入れ替わったクロス型回路構成で演算を終了させる。このようなクロス型回路構成とする理由として、演算結果を出力するタイミング演算結果を出力するタイミングでデータの流れを変えるように制御するよりも、演算結果を出力する場合であっても、繰り返し演算を行なっているときと同様に左右のデータが入れ替わるような制御を行なった方が、制御が簡単であり制御回路の実装も小さくできるからである。
【００２３】
一方、ＤＥＳを３回行なうTriple DES(3DES)を実装した回路の場合には、１回目のＤＥＳの演算結果と２回目のＤＥＳの演算開始間、および２回目のＤＥＳの演算結果と３回目のＤＥＳの演算開始間において、左右のデータを入れ換えないような制御を行なう必要がある。そのため、３回目のＤＥＳが終了後も左右のデータを入れ換えずに出力するストレート型回路構成とすることが多い。このような回路構成となるのは、暗号演算回路として回路実装する場合において、その回路規模を小さくするために、演算中にできる限り場合分けを減らすような制御を行なうようにするためである。１回目、２回目が終わったときと同様に、３回目が終わったときにもストレート型回路構成となるようにセレクタ２６、 セレクタ２７を制御したほうが、場合分けの数が少なくなり制御回路を小さく構成することができる。
【００２４】
以上説明したように、Feistel 型暗号アルゴリズムを実装した場合には、クロス型回路構成とストレート型回路構成との何れかで構成される。
【００２５】
次に、これら回路構成の違いによる演算終了後におけるＤＰＡ法による攻撃ポイントについて説明する。
【００２６】
まず、クロス型回路構成の場合について、ＤＰＡ法により攻撃のポイントとなるタイミングと、その原因について説明する。
【００２７】
演算結果を出力するクロックClockfinの立ち上がりのタイミングにおいて、Ｌレジスタ２３の値をＬfin、Ｒレジスタ２２の値をＲfinとする。このとき、この暗号演算回路の演算結果をＣとすると、ＣはＣlとＣrを用いてＣ=ＩＰ-1(Ｌfin＾Ｆ(keyfin、Ｒfin)、Ｒfin)と表すことができる。ここで、ＩＰ-1は、ビットの並びを変換する処理だけであるため、演算結果ＣからＲfinとＬfin＾Ｆ(keyfin、Ｒfin)の値は簡単に解ってしまう。
【００２８】
次に、クロックClockfin+1において、Ｒレジスタ２２ に値が書き込み可能である場合、Ｒレジスタ２２の値はＬfin＾F(keyfin、Ｒfin)=Ｒfin+1となる。このとき、鍵情報がClockfinと同じkeyfinであるので、関数演算部２４の出力はＦ(keyfin、Ｒfin+1)となる。Ｒfin+1は、暗号演算回路の出力結果から簡単に解ってしまう値であり、そのため、関数演算部２４の関数Ｆは、keyfinの一変数の関数と見なすことができる。
【００２９】
以上のように、関数演算部２４の出力の遷移を攻撃ポイントとして、関数演算部２４の出力を推定することにより鍵情報を特定されてしまうといった問題点があった。
【００３０】
また、上記の他に、Ｌレジスタ２３の値の遷移を攻撃ポイントとされる別の問題点がある。これについて説明する。
【００３１】
Clockfin、Clockfin+1におけるＬレジスタ２３の値をＬfin、Ｌfin+1とする。Ｌレジスタ２３の値の遷移は次式で表すことができる。
Ｌfin＾Ｌfin+1=Ｒfin-1＾Ｒfin
なお、上記式の右辺は、クロス型回路構成においてＬレジスタ２３の値はＬi=Ｒi-1(１≦i≦k)という関係があることから、書き変えたものである。ここで、Ｒfinは外部から観測可能な値であることから、Ｒfin-1に対して推定することができる。Ｌレジスタ２３の遷移は、暗号演算回路の消費電力の変動と関係があるので、ＤＰＡ法によりＲfin-1の値が特定される可能性がある。つまり、上記で述べたように演算結果Ｃから、Ｌfin＾Ｆ(keyfin、Ｒfin)(＝Ｒfin+1)およびＲfinの値は観測可能である。ここで、Ｌfin=Ｒfin-1であることから、Ｒfin-1が特定されると、Ｒfin+1、Ｌfin、Ｒfinが知ることのできる値となるため、keyfinを特定されてしまうという問題点があった。
【００３２】
以上のように、関数演算部２４の出力値の遷移、または、Ｌレジスタ２３の値の遷移において、ＤＰＡ法を用いて攻撃される可能性がある。
【００３３】
クロス型回路構成の場合のこれらＤＰＡ法による攻撃に対する対策は、それぞれ異なる。
【００３４】
まず、このクロス型回路構成のClockfin+1のタイミングにおける関数演算部２４の出力値に関するＤＰＡ対策として、本実施の形態においては、Clockfin+1のときに関数演算部２４に入力される値は、鍵情報と関係のない値を入力するような回路構成とする。このような回路の具体例としては、図４に示すように関数演算部２４へ鍵情報を入力する個所へ新たにセレクタを設け、Clockfinまでは鍵情報を入力し、Clockfin+1以降は乱数を入力するような回路構成や、図５にあるように関数演算部２４の入力として、鍵情報と乱数を排他的論理和（ＸＯＲ）演算、論理積（ＡＮＤ）演算、または論理和（ＯＲ）演算した値を入力する回路構成とし、Clockfin+1以降のクロックの立ち上がり時に、常に異なる乱数を与えて得た演算結果を入力するという回路構成で解決した。
【００３５】
また、関数演算部２４の入力として、外部から観測可能な値を入れないようにする回路構成も対策となりうる。このような対策の具体例としては、図６に示すように、関数演算部２４の入力の前にセレクタを設け、Clockfin+1以降は乱数を入力するような回路構成を用いる例がある。また、図６のセレクタを用いて乱数を入れる代わりに、図７のように演算回路を追加し、Ｒレジスタ２２の値と乱数との演算結果が、関数演算部２４に入力されるような回路構成としてもよい。このようにClockfin+1以降、関数演算部２４の入力として、暗号演算回路で利用した鍵情報や演算結果が、そのまま入力されないような回路構成とすることで、関数演算部２４の出力におけるＤＰＡ対策とすることができる。
【００３６】
このほかに、Clockfin+1以降、Ｒレジスタ２２の値を、演算結果と無関係な値とすることで、ＤＰＡ法対策ができる。例えば、図８にあるようにＲレジスタ２２の入力の前にセレクタを入れ、Clockfin+1以降、このセレクタから乱数がＲレジスタ２２に書き込まれるような回路構成や、図６のようにデータパス２９の結果と乱数を演算するような回路構成とすればよい。
【００３７】
以上のような対策を施した暗号演算回路とすることにより、関数演算部２４の出力の遷移を攻撃のポイントとできなくなった。
【００３８】
次に、Ｌレジスタ２３の値の遷移を攻撃ポイントとした場合には、Clockfin+1のタイミングでＬレジスタ２３にＲfin+1を書き込まないような回路構成としなければならない。この時の対策として、回路構成の具体例は、図１１のようにＬレジスタ２３へのデータパス３０上にＡＮＤ／ＯＲ／ＸＯＲなどの演算回路を入れ、Clockfin+1以降でデータパス３０上の値と乱数の演算結果をＬレジスタ２３に書き込むという方法や、図１２にあるようにデータパス３０にセレクタを入れることでClockfin+1以降、Ｌレジスタ２３に乱数が書き込まれるような回路構成で実現できる。
【００３９】
以上のような対策を施した暗号演算回路とすることにより、Ｌレジスタ２３の値の遷移を攻撃のポイントとできなくなった。
【００４０】
次に、図１０のストレート型回路構成の場合についてのＤＰＡ法による攻撃のポイントとなるタイミングとその原因について説明する。
【００４１】
ストレート型回路構成においてもクロス型回路構成のときと同様に、演算結果を出力するときのクロックClockfinの立ち上がりのタイミングにおいて、Ｌレジスタ２３の値をＬfin、Ｒレジスタ２２の値をＲfinとする。Clockfinの次のクロックClockfin+1の立ち上がりのタイミングにおいて、Ｌレジスタ２３、Ｒレジスタ２２の値はそれぞれＬfin+1、Ｒfin+1とすると、次式で表すことができる。
Ｌfin+1=Ｌfin＾Ｆ(keyfin、Ｒfin)
Ｒfin+1=Ｒfin
このClockfin+1のタイミングにおいて、Ｌレジスタ２３の値の遷移に着目すると、Ｌレジスタ２３の値の遷移はＬfin＾Ｌfin+1=Ｆ(keyfin、Ｒfin)と表すことができる。Ｌレジスタ２３の値の遷移Ｆ(keyfin、Ｒfin) は、鍵情報に関係する情報を含んでいるうえに、Ｒfinは外部から観測可能な値である。従って、Ｌレジスタ２３の値の遷移に対し、ＤＰＡ法を用いて攻撃が行われると、暗号演算回路の鍵情報keyfinが特定されてしまう。
【００４２】
そのため、本実施の形態においては、Ｌレジスタ２３の値が、Clockfin+1において暗号演算回路が持つ鍵情報と相関を持つことのないような回路構成とする。この回路構成の具体例としては、クロス型回路構成で説明した方法と同様の図１２にあるようにＬレジスタ２３へのデータパス２８上にＡＮＤ、ＯＲ、ＸＯＲなどの論理演算器を配置し、データパス２８の値と乱数の演算結果をＬレジスタ２３に書き込むという方法や、図１１にあるように、Clockfin+1のタイミングにて、データパス２８の値と乱数とをセレクタで切り替えるという方法で実現可能である。
【００４３】
また、関数演算部２４にClockfin+1以降、常にkeyfinとＲfinとが入力されるような回路構成の場合には、上記のクロス型回路構成の時と同様に関数演算部２４の出力値の遷移によって鍵情報が特定される可能性がある。そのため、前記クロス型回路構成の関数演算部２４のＤＰＡ法の対策と同様、図４〜図９の何れかを用いることによって、対策を実現できる。
【００４４】
また、クロス型回路構成、ストレート回路構成の何れの場合においても、Clockfin+1においてＲレジスタ２２、Ｌレジスタ２３へのデータの書き込みが行なわれず、且つ、Clockfin;1以降、常に鍵情報keyfinが関数演算部２４に入力されるような回路構成が取られている場合には、関数演算部２４の出力値Ｆ(keyfin、Ｒfin)となるので、上記のクロス型回路構成の時と同様、関数演算部２４の出力値の遷移がＤＰＡ法による攻撃の対象となってしまう。従って、上記のクロス型回路構成の関数演算部２４のＤＰＡ法の対策と同様、図４〜図９の何れかを用いることによって、対策を実現できる。
【００４５】
以上説明してきたように、本実施の形態では、暗号演算回路の演算終了後以降において、鍵情報と消費電力の相関関係を失わせるような回路構成としたから、暗号演算回路内部にある鍵情報の漏洩を防ぐことができ、ＤＰＡ法による攻撃に対する耐性を持った暗号演算回路を提供できるようになった。
【００４６】
【発明の効果】
以上説明したように、本発明によれば、暗号演算回路内部にある鍵情報の漏洩を防ぐことができ、ＤＰＡ法による攻撃に対する耐性を持った暗号演算回路を提供できるようになった。
【図面の簡単な説明】
【図１】Feistel型アルゴリズムを示すフローチャート。
【図２】Feistel型アルゴリズムを採用した暗号演算回路のデータパス部に関する回路構成を示す図。
【図３】クロス型回路構成のデータパス部を示す図。
【図４】本実施の形態における、関数演算部２４のＤＰＡ法対策を施した回路構成の第１例を示す図。
【図５】本実施の形態における、関数演算部２４のＤＰＡ法対策を施した回路構成の第２例を示す図。
【図６】本実施の形態における、関数演算部２４のＤＰＡ法対策を施した回路構成の第３例を示す図。
【図７】本実施の形態における、関数演算部２４のＤＰＡ法対策を施した回路構成の第４例を示す図。
【図８】本実施の形態における、関数演算部２４のＤＰＡ法対策を施した回路構成の第５例を示す図。
【図９】本実施の形態における、関数演算部２４のＤＰＡ法対策を施した回路構成の第６例を示す図。
【図１０】ストレート型回路構成のデータパス部を示す図。
【図１１】本実施の形態における、Ｌレジスタ２３のＤＰＡ法対策を施した回路構成の第１例を示す図。
【図１２】本実施の形態における、Ｌレジスタ２３のＤＰＡ法対策を施した回路構成の第２例を示す図。
【符号の説明】
２１・・・ＩＰ部
２２・・・Ｒレジスタ
２３・・・Ｌレジスタ
２４・・・関数演算部
２５・・・ＩＰ-1部
２６、２７・・・セレクタ
２８、２９、３０・・・データパス
【図１】
0004357815.tif 000002
【図２】
0004357815.tif 000003
【図３】
0004357815.tif 000004
【図４】
0004357815.tif 000005
【図５】
0004357815.tif 000006
【図６】
0004357815.tif 000007
【図７】
0004357815.tif 000008
【図８】
0004357815.tif 000009
【図９】
0004357815.tif 000010
【図１０】
0004357815.tif 000011
【図１１】
0004357815.tif 000012
【図１２】
0004357815.tif 000013