(57)【要約】【課題】電源に関わる測定結果を利用した暗号鍵の解析行為に対してより高い安全性を有する半導体集積回路を提供する。【解決手段】共通の電源ラインを通じて電源が供給される２つの暗号処理回路（１、２）が共通の半導体基板上に形成される。この２つの暗号処理回路（１、２）では、半導体基板の外部から入力されるデータに対して、互いに異なる暗号鍵を用いて並行に暗号化処理が実行される。そして、暗号処理回路１の処理結果のみが、入力データに対応する暗号化データとして半導体基板の外部に出力される。これにより、電源ラインを通じて半導体集積回路に供給される電流や電圧、電力の測定結果から内部の暗号処理を解析しようとしても、この測定結果には２つの暗号処理回路（１、２）の処理に関わる情報が混ざり合っており、両者の暗号処理を判別することが非常に困難になる。【選択図】図１
2007251390.tif 000002
【特許請求の範囲】
【請求項１】
共通の半導体基板上に形成され、共通の電源ラインを通じて電源が供給され、かつ、前記半導体基板の外部から入力されるデータをそれぞれ異なる暗号鍵を用いて並行に暗号化又は復号化する複数の暗号処理回路を有し、
前記複数の暗号処理回路の何れか１つが、前記入力データの処理結果を前記半導体基板の外部に出力する、
半導体集積回路。
【請求項２】
前記複数の暗号処理回路は、前記共通の電源ラインに供給される電流、電力及び電圧の少なくとも１つの測定結果に基づく暗号鍵の解析行為に対して、それぞれ異なる暗号強度を有する、
請求項１に記載の半導体集積回路。
【請求項３】
前記半導体基板の外部に処理結果を出力する暗号処理回路は、前記解析行為に対して、他の暗号処理回路より高い暗号強度を有する、
請求項２に記載の半導体集積回路。
【請求項４】
第１の乱数発生回路を有し、
前記半導体基板の外部に処理結果を出力しない暗号処理回路は、前記第１の乱数発生回路が発生する乱数に応じた暗号鍵を用いて暗号化処理又は復号化処理を行う、
請求項１に記載の半導体集積回路。
【請求項５】
前記半導体基板の外部に処理結果を出力する暗号化回路の暗号鍵と前記第１の乱数発生回路が発生する乱数とに所定の論理演算を行う論理回路を有し、
前記半導体基板の外部に処理結果を出力しない暗号化回路は、前記論理回路の論理演算結果を暗号鍵として用いる、
請求項４に記載の半導体集積回路。
【請求項６】
前記第１の乱数発生回路は、前記複数の暗号処理回路において所定数の入力データが処理される度に新しい乱数を発生する、
請求項４に記載の半導体集積回路。
【請求項７】
前記第１の乱数発生回路が新しい乱数を発生する度に新しい乱数を発生する第２の乱数発生回路を有し、
前記第１の乱数発生回路は、前記第２の乱数発生回路が発生した乱数に応じて、次に新しい乱数を発生するまでに前記複数の暗号処理回路が処理すべき入力データの数を決定する、
請求項６に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理回路を有する半導体集積回路に係り、特に、電源電流等の測定結果に基づいて暗号鍵を解析する攻撃に対しての安全性を高めた半導体集積回路に関するものである。
【背景技術】
【０００２】
例えばＩＣカードでは、ホストコンピュータとデータのやり取りを行なう場合、その過程でＩＣカードに格納されている秘密情報が漏洩することを防止するため、やり取りするデータには暗号化されたデータが用いられる。この暗号化の方法として、現在最も多く用いられているのはＤＥＳ（Data Encryption Standard）である。ＤＥＳを用いる場合、ＩＣカードの所有者とホストコンピュータは共通の鍵を所有し、この鍵によって伝送データの暗号化若しくは復号化を行う。すなわち、データの送信側はデータをその鍵で暗号化して送信し、データの受信側は同じ鍵を用いて受信したデータを復号化し、送信側からのメッセージを取り出す。通信の過程で悪意の第三者が盗聴しても、鍵を有していない限りは復号化してメッセージを取り出すことが困難である。
【０００３】
暗号化や復号化に使う鍵は、通常、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納される。暗号化や復号化を行うときにはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送される様な制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出すことが不可能な構成を採ってセキュリティを保持している。
【０００４】
ところが近年、ＩＣカードの消費電流を測定し、それに統計処理を施して鍵を取り出すＤＰＡ（differential power analysis）と称される攻撃方法がＰ．Ｋｏｃｈｅｒらにより報告された。ＤＰＡでは、異なる１０００個程度の平文を用いて攻撃対象のＩＣに暗号化演算を行わせて、その時ＩＣに流れる消費電流の波形を測定して統計処理することにより、ＩＣ内部の鍵を取り出す。すなわち、ＩＣ内で暗号処理に用いられている中間データのあるビットに着目し、予想した鍵に対して複数種類の平文（若しくは暗号文）を入力したとき、その注目したビットの予測値が「１」になる場合と「０」になる場合とで、消費電力の測定結果をグループ分けする。各グループの測定結果の平均値を求めて両者の差をとると、予想した鍵が正しい場合、この差分値が大きくなる。
【０００５】
このような攻撃手法に対抗するためには、通常と異なるＤＥＳの演算フローを実行する回路をＩＣ内に搭載する手法が有効である。ＤＰＡ攻撃は、ＤＥＳのシミュレータと実際のＩＣが同じ演算フローで動作することを前提にしているため、ＩＣを異なる演算フローで設計すれば、仮にシミュレータが正しい鍵でＤＥＳ演算を行い、着目するビットの値に基づいて測定結果をグループ分けしても、シミュレータの演算フローが実際とは異なるため、着目するビットの値は同一グループ内で同じ値とはならず、グループ間の平均電流の差分値を計算してもピークが現われない。
【０００６】
この構成の例として、例えば特許文献１がある。この特許では、Ｆ関数の入力部で、そのままの値（ポジ）と反転値（ネガ）を生成し、拡張関数に入力する値をどちらにするかを乱数で選択する。この構成では、Ｓボックスも通常のもの（ポジ）と反転データに対応したもの（ネガ）の２種類を準備し、同じ乱数値とＦ関数の入力の極性との排他的論理和演算によってＳボックスを選択する。この特許の方式の場合、２次のＤＰＡ攻撃によって鍵の取出しは可能である。
【０００７】
他方、特許文献２では、初期置換（ＩＰ）されたデータと、乱数によって選択された固定値とを排他的論理和演算し、その演算結果をＬレジスタとＲレジスタに分ける。Ｆ関数内では、セッション鍵の他に別の乱数で選択された固定値と入力データとを排他的論理和演算した結果がＳボックスに入力される。なおＳボックスは、乱数により選択される固定値の個数に対応したセット数だけＦ関数内に準備されており、乱数によってある固定値が選択されると、これに対応するＳボックスが選択される。この構成を採ると、ＤＰＡに対する耐性は格段に向上するが、高次のＤＰＡ攻撃によって鍵を取り出される可能性はある。
【特許文献１】特開２００２−３１１８２６号公報
【特許文献２】特開２００２−３６６０２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
このように従来の手法では、通常の演算フローに変形を加えることでＤＰＡ攻撃に対する耐性を高めようとするものであるが、コンピュータの演算能力や測定精度の向上によっていずれはそのセキュリティを突破される可能性がある。したがって、上記のような現在のＤＰＡ対策の水準を利用して、より高いレベルのセキュリティを達成する手法が望まれる。
【０００９】
本発明はかかる事情に鑑みてなされたものであり、その目的は、電源に関わる測定結果を利用した暗号鍵の解析行為に対してより高い安全性を有する半導体集積回路を提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係る半導体集積回路は、共通の半導体基板上に形成され、共通の電源ラインを通じて電源が供給され、かつ、前記半導体基板の外部から入力されるデータをそれぞれ異なる暗号鍵を用いて並行に暗号化又は復号化する複数の暗号処理回路を有しており、前記複数の暗号処理回路の何れか１つが、前記入力データの処理結果を前記半導体基板の外部に出力する。
【００１１】
本発明によれば、複数の暗号処理回路が共通の半導体基板上に形成されており、この複数の暗号処理回路に対して共通の電源ラインを通じて電源が供給される。前記複数の暗号処理回路では、前記半導体基板の外部から入力されるデータに対して、それぞれ異なる暗号鍵を用いて並行に暗号化処理又は復号化処理が実行される。そして、前記複数の暗号処理回路の何れか１つにおいて前記入力データの処理した結果が、前記半導体基板の外部に出力される。
そのため、前記電源ラインに供給される電流や、電力、電圧などの測定により得られる情報から、前記複数の暗号処理回路で行われる暗号処理を判別することが困難になる。
【００１２】
好適には、前記複数の暗号処理回路は、前記共通の電源ラインに供給される電流、電力及び電圧の少なくとも１つの測定結果に基づく暗号鍵の解析行為に対して、それぞれ異なる暗号強度を有する。
また、好適には、前記半導体基板の外部に処理結果を出力する暗号処理回路は、前記解析行為に対して、他の暗号処理回路より高い暗号強度を有する。
【００１３】
また、本発明に係る半導体集積回路は、第１の乱数発生回路を有しても良い。この場合、前記半導体基板の外部に処理結果を出力しない暗号処理回路は、前記第１の乱数発生回路が発生する乱数に応じた暗号鍵を用いて暗号化処理又は復号化処理を行っても良い。
【発明の効果】
【００１４】
本発明によれば、電源に関する測定により得られる情報ではそれらの処理を判別することができない複数の暗号処理回路においてそれぞれ異なる暗号鍵を用いて暗号化処理や復号化処理を行うことにより、攻撃者が誤った暗号鍵を取り出すように誘導して、正しい鍵を取り出すまでの労力を大幅に増大させることが可能であり、安全性を高めることができる。
【発明を実施するための最良の形態】
【００１５】
図１は、本発明の実施形態に係る半導体集積回路の構成の一例を示す図である。
本実施形態に係る半導体集積回路は、例えば図１に示すように、暗号処理回路１，２と、メモリ３と、システムコントローラ４と、排他的論理和回路５，６と、乱数発生回路７と、レジスタ９〜１３とを有する。
【００１６】
図１に示す半導体集積回路の構成要素と本発明の構成要素は次に述べる対応関係を有する。
暗号処理回路１，２は、それぞれ本発明の暗号処理回路に対応する。
乱数発生回路７は、本発明の第１の乱数発生回路に対応する。
排他的論理和回路６は、本発明の論理回路に対応する。
【００１７】
暗号処理回路１は、排他的論理和回路５から供給されるデータ（平文）をレジスタ１２に保持される暗号鍵に基づいて暗号化し、その暗号化結果（暗号文）をレジスタ９に出力する。
【００１８】
暗号処理回路２は、排他的論理和回路５から供給されるデータをレジスタ１３に保持される暗号鍵に基づいて暗号化する。暗号処理回路２の暗号化結果は、データバスに出力されることなく破棄される。
【００１９】
暗号処理回路１及び２は、共通の半導体基板上に形成されており、また半導体基板上の共通の電源ラインを通じて電源電圧ＶＤＤを供給される。
また、暗号処理回路１及び２は、システムコントローラ４の命令に従って並行に暗号処理を実行する。つまり、暗号処理回路１において暗号化処理が開始されると、暗号処理回路２においても暗号化処理が同様なタイミングで開始される。
そのため、半導体基板の外部から電源ラインに供給される電流や電圧、電力を測定しても、その測定により得られた波形が暗号処理回路１及び２のどちらに起因して生じるものかを容易に判別することができない。
【００２０】
このように、暗号処理回路１及び２は、電源ラインに供給される電流や電圧、電力を測定することによって半導体基板の外部から両者の挙動を判別することが困難になるように構成されている。
【００２１】
更に、暗号処理回路１，２は、共通の電源ラインに供給される電流や、電力、電圧の測定結果に基づく暗号鍵の解析行為に対して、それぞれ異なる暗号強度を有しており、その暗号強度は暗号処理回路１の方が暗号処理回路２に比べて高くなるように設定されている。
例えばＤＰＡ攻撃に対して、暗号処理回路１には「対策Ａ」、暗号処理回路２には「対策Ｂ」が施されており、「対策Ａ］の方が「対策Ｂ」に比べてより強固な耐性を有している。
【００２２】
メモリ３は、暗号処理回路１において用いられる暗号鍵を格納する回路であり、例えばＥＥＰＲＯＭ等の不揮発性メモリによって構成される。
【００２３】
レジスタ９は、暗号処理回路１から出力される暗号化処理後のデータ（暗号文）を保持し、データバスに出力する。
【００２４】
レジスタ１０は、暗号処理回路１，２において暗号化される所定ビット長のデータ（平文を）をデータバスから取得して保持する。
【００２５】
レジスタ１１は、暗号処理回路１，２において暗号化を開始する際に用いられる初期ベクトル（initial vector）をデータバスから取得して保持する。
【００２６】
レジスタ１２は、暗号処理回路１において暗号化処理に用いられる暗号鍵をデータバスから取得して保持する。
【００２７】
レジスタ１３は、排他的論理和回路６から出力されるデータを暗号処理回路２の暗号鍵として保持する。
【００２８】
排他的論理和回路５は、レジスタ１０に保持される平文とレジスタ１１に保持される初期ベクトルとの排他的論理和を演算し、その演算結果を暗号処理回路１，２に出力する。
【００２９】
排他的論理和回路６は、暗号処理回路１に入力される暗号鍵と乱数発生回路７において発生する乱数との排他的論理和を演算し、その演算結果をレジスタ１３に出力する。
【００３０】
乱数発生回路７は、排他的論理和回路６に入力する乱数を発生する。
暗号処理回路２には、暗号処理回路１に入力される暗号鍵とこの乱数とを排他的論理和演算した結果が暗号鍵として入力されるため、暗号処理回路１及び２では互いに異なる暗号鍵により同一の平文（レジスタ１０のデータ）に対する暗号化処理が実行される。
【００３１】
乱数発生回路７は、新たな乱数を任意のタイミングで発生してもよいし、あるいは、暗号処理回路１及び２が所定数の入力データの暗号化処理を実行する度に新たな乱数を発生してもよい。
【００３２】
システムコントローラ４は、半導体集積回路の全体的な動作を制御するための回路であり、例えばコンピュータとそのプログラム格納用のメモリを備えている。
例えば暗号化処理を実行する場合、システムコントローラ４は、データバスを介してレジスタ１０に所定ビット長の平文をセットし、レジスタ１１に初期ベクトルをセットするとともに、メモリ３からレジスタ１２へ暗号鍵を転送する。そして、暗号処理回路１及び２に対し暗号化処理の実行を命令し、両者に並行に暗号化処理を実行させる。また、暗号処理回路１から出力される処理結果の暗号文をレジスタ９から順次に読み出し、これを例えば不図示の記憶装置に格納する。
【００３３】
次に、暗号処理回路１及び２に適用される暗号化方式の一例として、ＤＥＳ方式の暗号演算を説明する。
【００３４】
図２は、ＤＥＳ方式の６４ビットの暗号演算の一例を示す図である。
まず、システムコントローラ４は、暗号化するデータを６４ビットのブロックに区分し、各ブロックのデータをレジスタ１０へ順次にセットする。
暗号処理回路は、レジスタ１０にセットされたデータを取得し、それらに所定の置換処理（初期転置）を施す。この置換処理によってビットの入れ替えを行ったあと、６４ビットのデータを３２ビットづつの２つのデータＬ０，Ｒ０に区分する。
【００３５】
次に暗号処理回路は、データＲ０を「Ｆ関数」と称される非線形の関数によって処理し、３２ビットのデータに変換する。Ｆ関数の処理には、暗号鍵に基づいて生成される４８ビットの鍵データを用いる（図３）。Ｆ関数によりデータＲ０を処理すると、暗号処理回路は処理結果の３２ビットのデータとデータＬ０との排他的論理和演算を行い、その演算結果をデータＲ１として保持する。また、データＲ０をそのままデータＬ１として保持する。
【００３６】
次に暗号処理回路は、上述と同様にデータＲ１をＦ関数によって処理し、その処理結果とデータＬ１との排他的論理和演算を行い、これをデータＲ２として保持する。また、データＲ１をそのままデータＬ２として保持する。
【００３７】
暗号処理回路は、上記のような同一構造の変換処理（ラウンド処理）を１６回繰り返して、最終的にデータＲ１６及びＬ１６を取得する。そして、この２つのデータＲ１６，Ｌ１６を結合して得られる６４ビットのデータに対して、初めに行った置換処理とは逆の置換処理（最終転置）を施し、その結果を６４ビットの暗号文として出力する。
【００３８】
図３は、各ラウンド処理においてＦ関数の処理に用いられる鍵データＫ１〜Ｋ１６の生成方法を示す図である。
暗号処理回路は、レジスタを介して取得した６４ビットの暗号鍵に縮約型の転置処理を施して、５６ビットのデータを抽出する。
暗号処理回路は、抽出した５６ビットのデータを２８ビットずつの２つのデータに分割し、その各々に所定ビット数の左巡回シフトを施して再び結合する。そして、結合した５６ビットのデータに対して更に縮約型の転置処理を施して４８ビットのデータを抽出し、これを先ほど説明した第１段目のラウンド処理におけるＦ関数用の鍵データＫ１とする。
次に暗号処理回路は、上記左巡回処理後の２つのデータ（各２８ビット）に対してさらに所定ビット数の左巡回処理をそれぞれ行い、これらを結合して縮約型の転置処理を施し、４８ビットのデータを抽出する。このデータは、第２段目のラウンド処理におけるＦ関数用の鍵データＫ２とする。
暗号処理回路は、このような左巡回処理と転置処理を繰り返すことによって、各ラウンド処理におけるＦ関数用の鍵データＫ１〜Ｋ１６を生成する。
【００３９】
図４は、上述したＤＥＳ方式の暗号化処理を行う暗号処理回路の構成の一例を示す図である。
図４に示す暗号処理回路は、置換部１０１と、レジスタ１０２と、レジスタ１０３と、Ｆ関数部１０４と、排他的論理和回路１０５と、逆置換部１０６と、スイッチＳＷ１及びＳＷ２とを有する。
【００４０】
置換部１０１は、暗号化処理の初めの置換処理（初期転置）を実行する。
レジスタ１０２は、スイッチＳＷ１を介して入力されるデータＬ０，Ｌ１，…，Ｌ１５を保持する。
レジスタ１０３は、スイッチＳＷ２を介して入力されるデータＲ０，Ｒ１，…，Ｒ１５を保持する。
Ｆ関数部１０４は、レジスタ１０３に保持されるデータＲ０，Ｒ１，…，Ｒ１５に対して鍵データＫ１，Ｋ２，…，Ｋ１６に応じたＦ関数処理を行う。
排他的論理和回路１０５は、レジスタ１０２に保持されるデータＬ０，Ｌ１，…，Ｌ１５とＦ関数部１０４で処理されたデータとの排他的論理和を演算する。
逆置換部１０６は、暗号化処理の最後の置換処理（最終転置）を実行する。
スイッチＳＷ１，ＳＷ２は、暗号化処理の開始時に置換部１０１から出力される初期転置後の６４ビットから、３２ビットずつのデータＬ０，Ｒ０をそれぞれ入力し、これをレジスタ１０２及び１０３にそれぞれ保持させる。また、１６回のラウンド処理を繰り返すときには、レジスタ１０３に保持されるデータＲ０，Ｒ１，…，Ｒ１４をデータＬ１，Ｌ２，…，Ｌ１５としてレジスタ１０２に保持させるとともに、排他的論理和回路１０５から出力されるデータをデータＲ１，Ｒ２，…，Ｒ１５としてレジスタ１０３に保持させる。
【００４１】
図５は、Ｆ関数部１０４の構成の一例を示す図である。
図５に示すＦ関数部１０４は、拡張部２０１と、排他的論理和回路２０２と、Ｓボックス回路Ｓ１〜Ｓ８と、置換部２０３とを有する。
【００４２】
拡張部２０１は、入力される３２ビットのデータＲ０，Ｒ１，…，Ｒ１５に対して拡大転置処理を行い、そのビット長を４８ビットに拡張する。
排他的論理和回路２０２は、拡張部２０１において４８ビットに拡張されたデータと、入力される鍵データＫ１，Ｋ２，…，Ｋ１６との排他的論理和を演算する。
排他的論理和回路２０２から出力される４８ビットのデータは６ビットずつの８つのブロックに区分される。Ｓボックス回路Ｓ１〜Ｓ８は、それぞれ１ブロック（６ビット）のデータを入力し、これを４ビットのデータに変換する。
Ｓボックス回路Ｓ１〜Ｓ８から出力される各４ビットのデータは、互いに結合されて３２ビットのデータとなり、置換部２０３に入力される。置換部２０３は、入力した３２ビットのデータに転置処理を施して３２ビットのデータを生成し、これをＦ関数の処理結果として出力する。
【００４３】
なお、以上はＤＥＳ方式の暗号演算を実行するための基本構成であり、本実施形態に係る暗号処理回路１，２においては、この基本構成に対して先に説明した「対策Ａ」，「対策Ｂ」に対応する変更や追加が施されている。
【００４４】
ここで、上述したＤＥＳ方式の暗号処理回路に対するＤＰＡ攻撃の方法について説明する。
【００４５】
第１段目のラウンド処理が実行されると、レジスタ１０３に格納されるデータは「Ｒ０」から「Ｒ１」へ変化する。このときレジスタ１０３の各ビットの変化は、図６（Ａ）に示すように次の論理式で表すことができる。
【００４６】
［数１］
Ｒ１＾Ｒ０＝Ｆ（Ｒ０、Ｋ１）＾Ｌ０＾Ｒ０  …  （１）
【００４７】
ただし、「＾」は排他的論理和の演算子を示し、「Ｆ（Ｒ０、Ｋ１）」はＦ関数を示す。
式（１）の演算結果において、変化を生じたビットは「１」となり、変化を生じていないビットは「０」になる。
【００４８】
他方、図５に示すように、８つのＳボックス回路Ｓ１〜Ｓ８は独立に動作する。例えばＳボックス回路Ｓ１には、拡張部２０１から出力される４８ビットのデータ（Ｄ１〜Ｄ４８）のうちの６ビット（Ｄ１〜Ｄ６）と、４８ビットの鍵データ（Ｋ１〜Ｋ４８）のうちの６ビット（Ｋ１〜Ｋ６）との排他的論理和が入力される。そのため、６ビットの鍵データ（Ｋ１〜Ｋ６）を推定することにより、Ｓボックス回路Ｓ１から出力される４ビットのデータを推定することができる。
【００４９】
ＤＥＳ方式の仕様は公開されており、入力する平文に対してデータＬ０，Ｒ０がどのような値になるかは既知である。また、既知のデータＲ０に対してＦ関数部１０４の拡張部２０１の出力（４８ビット：Ｄ１〜Ｄ４８）がどのような値になるかも既知である。
したがって、例えば６ビットの鍵データ（Ｋ１〜Ｋ６）を推定すると、拡張部２０１の出力の６ビット（Ｄ１〜Ｄ６）が既知であるため、ボックス回路Ｓ１から出力される特定の４ビットの値が定まり、これに応じてＦ関数から出力される特定の４ビットの値が定まる。更に、データＬ０が既知であるため、データＲ１の特定の４ビットの値が定まる。つまり、式（１）が表すビット値の変化（Ｒ０＾Ｒ１）を、特定の４ビットについて推定することが可能となる。
【００５０】
多数のランダムな平文について暗号化を行った場合、レジスタ１０３の特定ビットが変化する確率は約５０％になる。
ところが、上記のように６ビットの鍵データを推定し、この推定した鍵データに対してレジスタ１０３の特定ビットが変化する平文をグループ「Ｇ１」、この特定ビットが変化しない平文をグループ「Ｇ２」としてグループ分けした場合、もし鍵データの推定が正しければ、グループＧ１とグループＧ２においてレジスタ１０３の特定ビットが変化する確率が異なったものになる。
鍵データの推定が正しい場合、グループＧ１では全ての平文について特定ビットの変化が発生し（確率１００％）、グループＧ２では全ての平文について特定ビットの変化が発生しない（確率０％）。この場合、グループＧ１とＧ２の確率差は最大となる。
一方、鍵データの推定が間違っている場合は、グループＧ１及びＧ２の何れも、特定ビットの変化が約５０％の確率で発生する。この場合、グループＧ１とＧ２の確率差はほぼゼロになる。
【００５１】
図６（Ｂ）に示すように、レジスタ１０３の特定ビットが変化すると、電源ラインには微小な消費電流が流れる。したがって、レジスタ１０３の特定ビットの変化は、電源ラインに流れる消費電流の変化として検出することが可能である。
例えば、多数の平文（例えば数千個）について暗号化を行いながら消費電流の波形を測定し、その測定結果を上述の「Ｇ１」と「Ｇ２」にグループ分けする。そして、各グループの測定結果を平均化して両者の差分を計算すると、もし６ビットの鍵データの推定が正しければ、この計算により得られる差分の波形に、上述の確率差に応じた大きなピークが発生する。推定が間違っていれば、差分波形にピークは観察されない。このようにして、鍵データの推定が正しいか否かを６ビットずつ検証することができるため、少ない試行回数で４８ビットの鍵データＫ１の全ビットを求めることができる。
【００５２】
図３に示すように、Ｆ関数部１０４に供給される鍵データＫ１には、６４ビットの暗号鍵から抽出した５６ビットのデータのうち４８ビット分のデータが含まれている。上記の方法でこの４８ビット分のデータを知ることができれば、残りの８ビットのデータを総当り（２５６回）の試行によって容易に求めることができる。
以上が、ＤＰＡ攻撃の説明である。
【００５３】
攻撃者は、例えば次のような手順でＤＰＡ攻撃を実行する。
【００５４】
１．複数の異なる平文で暗号化演算を実行し、各平文を演算した場合の消費電流の測定波形を格納しておく。
【００５５】
２．１次のＤＰＡ攻撃を実行し、鍵の取出しを試みる。この攻撃で鍵の取り出しに成功した場合、攻撃を終了する。
【００５６】
３．１次のＤＰＡ攻撃で鍵の取出しに失敗した場合、ＤＰＡ対策の方式を予想し、それに基づいて２次のＤＰＡ攻撃を行なって鍵の取出しを試みる。この攻撃で鍵の取り出しに成功した場合、攻撃を終了する。
【００５７】
４．鍵の取り出しに失敗した場合、別のＤＰＡ対策の方式を想定し、それに基づいて２次のＤＰＡ攻撃を行なって鍵の取出しを試みる。鍵の取り出しに失敗した場合、更に別のＤＰＡ対策の方式を想定して、それに基づいて２次のＤＰＡ攻撃を行なって鍵の取出しを試みる。
【００５８】
５．２次のＤＰＡ攻撃で鍵が取出せないと判断した場合、３次、４次と高次のＤＰＡ攻撃を実施し、鍵の取出しを試みる。
【００５９】
一般に攻撃者は、上記の様な段階を踏んで鍵の取出しを試み、鍵の取出しに成功した段階で攻撃を終了する。高次のＤＰＡ攻撃になるほど解析に要する時間が長くなり、統計処理に用いる消費電流波形の数とデータ量が増大するため、通常は初めに簡単な１次のＤＰＡ攻撃によって鍵の取り出しを試みる。そして、それが不可能であると判断すると、考え得るあらゆるＤＰＡ対策を想定して２次のＤＰＡ攻撃を試み、それでもだめな場合は３次以降の高次のＤＰＡ攻撃に移行する。ある程度の段階まで試しても鍵の取り出しに成功しないときは、攻撃不可能と判断して鍵の取り出しを諦める。
【００６０】
一方、システムの開発者は、上記のようなＤＰＡ攻撃を想定してその対抗策をＬＳＩやシステムへ盛り込むが、その際、特に安全性が必要な場合は、対策内容が攻撃者に知られたとしてもそれを突破することが現実的に不可能な高レベルの対策を施すことが多い。ところが、コンピュータの計算能力や測定装置の精度が年々向上するにつれて、当初不可能と思われていた解析手法が比較的短期間で現実的なレベルに移行することもあり、１つの対策だけに絞ることにはリスクが伴う。また、複数の対策を多重に施しても、それらの対策内容が攻撃者に知られてしまえば、１つずつ突破される可能性がある。
そこで図１に示す半導体集積回路では、どのようなＤＰＡ対策が施されているのかを攻撃者が容易に把握できないようにすることで、安全性の向上を図る。すなわち、実施されているＤＰＡ対策を攻撃者が見出すまでに多大な労力と時間を費やすように仕向けることで、ＤＰＡ攻撃に対する実質的な耐性を高める。
【００６１】
図１に示す半導体集積回路の動作を説明する。
暗号化処理を開始する場合、システムコントローラ４は、データバスを介してレジスタ１０に平文、レジスタ１１に初期ベクトルをセットするとともに、メモリ３からレジスタ１２へ暗号鍵を転送する。メモリ３から転送された暗号鍵は、乱数発生回路７の乱数と排他的論理和演算され、レジスタ１３に格納される。次いでシステムコントローラ４は、暗号処理回路１及び２に暗号処理の実行を命令し、２つの回路において並行に暗号化処理が実行される。
【００６２】
暗号処理回路２において使用される暗号鍵は、暗号処理回路１において使用される暗号鍵と乱数発生回路７の乱数との排他的論理和であるため、乱数の値が全ビット「０」でない限り、両者の暗号鍵は異なる。図１に示す半導体集積回路では、例えば乱数発生回路７において全ビット「０」が乱数が発生することを禁止することにより、暗号処理回路１及び２の暗号鍵が必ず異なるようにしている。
【００６３】
また、暗号処理回路１及び２が共通の電源ラインに接続され、かつ、両者が並行に暗号化処理を実行するため、電源系の測定を通じて得られる情報（電流、電圧、電力）には、２つの暗号処理回路の情報が常に混ざり合っており、両者を判別することが困難な状態となっている。
【００６４】
このような図１に示す半導体集積回路に対してＤＰＡ攻撃を仕掛ける場合、どのようなＤＰＡ対策が講じられているか不明であるため、まず攻撃者は１次のＤＰＡ攻撃を仕掛ける。しかし、暗号処理回路１には「対策Ａ」、暗号処理回路２には「対策Ｂ」が施されているため、１次のＤＰＡ攻撃では鍵の取り出しに失敗する。そのため、攻撃者は何らかのＤＰＡ対策が施されているものと認識して、更に数千個〜数万個の平文を用いて暗号演算を行ない、その時の消費電流波形を取得し、推定した２次以上のＤＰＡ攻撃を仕掛ける。
【００６５】
例えば２次のＤＰＡ攻撃を仕掛ける場合、想定している対策と実際に施されている対策が一致していなければ、ＤＰＡ攻撃によって上述した差分波形にピークが発生せず、鍵の取り出しに失敗する。そこで攻撃者は、更に別の対策が施されていると推定し、これに対する２次のＤＰＡ攻撃を行う。
このような攻撃を繰り返していく過程で、暗号処理回路２の「対策Ｂ］に対応する攻撃が見出されると、正しい６ビットの鍵データが推定された際に差分波形にピークが発生する。攻撃者は、差分波形にピークが発生したことにより、現在正しい攻撃方法を選択していると勘違いして、同じ攻撃方法によって残りの鍵データを取り出す工程に進む。そして、全てのＳボックスに対応する鍵データを取り出し、４８ビットの鍵データＫ１の解析に成功すると、次に攻撃者は、残りの８ビットの鍵データを取り出すために総当りの試行（２５６回）を行う。ところが、この鍵データは暗号処理回路１で使用する暗号鍵と乱数との排他的論理和によって生成されたものであり、攻撃者が取り出そうとしている正しい暗号鍵とは異なっている。そのため、攻撃者は暗号鍵の取り出しに失敗する。
【００６６】
この後、攻撃者の行動として、次の４通りのパターンが予想される。
１．ＤＰＡ攻撃の設定を再度チェックして、再び２次のＤＰＡ攻撃を行なう。
２．別のＤＰＡ対策を想定して攻撃の環境を構築し、２次のＤＰＡ攻撃を行なう。
３．２次より更に高次のＤＰＡ対策が施されていると想定して、高次の攻撃の環境を構築し、攻撃を行なう。
４．攻撃をあきらめる。
【００６７】
上記の行動パターンにおいて、もし攻撃者が「４．」を選べば、ＤＰＡ対策として成功したことになる。また、暗号処理回路１の「対策Ａ］が２次のＤＰＡ攻撃によって突破できないより高度なＤＰＡ耐性を有しているものとすると、「１．」及び「２．」を選択した場合、攻撃者は暗号処理回路２に対する２次のＤＰＡ攻撃を続行することになるため、無駄な時間を費やすだけで正しい暗号鍵に辿りつくことができない。
「３．」のみが正しい鍵で動作する暗号処理回路１への攻撃であり、ここからが本来のＤＰＡ攻撃となるが、攻撃の対象となる回路のＤＰＡ対策が高次であるほど、ＤＰＡ攻撃の環境の構築と実際の攻撃に要する時間が膨大になる。ここに至るまでに経過している時間が長ければ長いほど、「３．」を試みる可能性は低くなり、ＤＰＡ攻撃によって正しい暗号鍵を取り出される確率が低くなる。
【００６８】
以上説明したように、図１に示す半導体集積回路によれば、共通の電源ラインを通じて電源が供給される２つの暗号処理回路（１、２）が共通の半導体基板上に形成される。この２つの暗号処理回路（１、２）では、半導体基板の外部から入力されるデータに対して、互いに異なる暗号鍵を用いて並行に暗号化処理が実行される。そして、暗号処理回路１の処理結果のみが、入力データに対応する暗号化データとして半導体基板の外部に出力される。
したがって、電源ラインを通じて半導体集積回路に供給される電流や電圧、電力の測定結果から内部の暗号処理を解析しようとしても、この測定結果には２つの暗号処理回路（１、２）の処理に関わる情報が混ざり合っており、両者の暗号処理を判別することが非常に困難である。これにより、攻撃者が偽りの攻撃対象（暗号処理回路２）を選択し、正しい攻撃対象（暗号処理回路１）を見出すまでの時間を長引かせることができるため、電源に関する測定結果を利用したＤＰＡなどの攻撃に対して安全性を向上することができる。
また、攻撃者が正しい攻撃対象を見出さなくてはならないという困難性が加わるため、単独の暗号処理回路にのみ対策を施す従来の方式に比べて安全性を高めることができる。
【００６９】
更に、図１に示す半導体集積回路では、電源に関する測定結果を利用したＤＰＡなどの攻撃に対して、２つの暗号処理回路（１、２）が互いに異なる暗号強度を有している。これにより、偽りの攻撃対象（暗号処理回路２）を選択した攻撃者は、攻撃手法を別のものに変更しなくてはならなくなり、正しい攻撃手法を見出すまでの時間を長引かせることができる。
【００７０】
しかも、半導体基板の外部の処理結果を出力する暗号処理回路１の方が、処理結果を外部に出力しない暗号処理回路２に比べて高い暗号強度を有しているため、簡易な攻撃から高度な攻撃へ段階的にレベルを高める一般的な攻撃手順が採用されている場合、攻撃者が正しい攻撃対象（暗号処理回路１）より前に偽りの攻撃対象（暗号処理回路２）を選択する確率を高めることができる。これにより、正しい攻撃対象（暗号処理回路１）に対する攻撃が開始されるまでの時間を長引かせることができるため、ＤＰＡ等の攻撃に対する安全性をより一層向上できる。
【００７１】
なお、図１に示す半導体集積回路では、乱数発生回路７において乱数が更新された場合に暗号処理回路２の暗号鍵も更新されるが、この更新の頻度を適切に調節することによって、攻撃者が暗号処理回路２の解析に関わる時間を長引かせることが可能である。
すなわち乱数発生回路７は、暗号鍵を解析するために暗号処理回路２に入力される平均的なデータ数に対して例えば数分の１程度の数のデータを暗号処理回路２が処理する度に、新たな乱数を発生するようにしてもよい。これにより、暗号処理回路２からの暗号鍵の取り出しを途中まで成功させて、正しい攻撃を行っていると勘違いさせることができるため、攻撃者が暗号処理回路２への無駄な攻撃を続けるように誘導することができる。
【００７２】
またこの場合、乱数発生回路７の乱数の更新間隔をランダムに変更してもよい。
例えば、図７に示すように、乱数発生回路７が新しい乱数を発生する度に自らも新しい乱数を発生する乱数発生回路８を半導体集積回路内に設ける。乱数発生回路７は、乱数発生回路８が発生する乱数に応じて、次に乱数を発生するまでに暗号処理回路１，２が処理すべき入力データの数を決定する。これにより、乱数発生回路７における乱数の更新間隔がランダムに変化し、これに応じて暗号処理回路２の暗号鍵が変化するため、攻撃者を混乱させることができる。
【００７３】
以上、本発明の一実施形態について説明したが、本発明はこの例に限定されない。
【００７４】
例えば、上記の実施形態では暗号処理回路１，２において暗号化処理を行う場合を例として挙げているが、本発明はこれに限定されない。例えば、これらの暗号処理回路では、入力される暗号文を暗号鍵に基づいて復号化してもよい。
【００７５】
また暗号処理回路の数は２つでなくともよく、３つ以上であってもよい。
【００７６】
暗号処理回路における暗号方式はＤＥＳに限定されるものではなく、他の種々の暗号方式が適用されていてもよい。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施形態に係る半導体集積回路の構成の一例を示す図である。
【図２】ＤＥＳ方式の暗号演算の一例を示す図である。
【図３】ＤＥＳ方式の各ラウンド処理においてＦ関数の処理に用いられる鍵データを生成する方法の一例を示す図である。
【図４】ＤＥＳ方式の暗号化処理を行う暗号処理回路の構成の一例を示す図である。
【図５】Ｆ関数部の構成の一例を示す図である。
【図６】暗号処理回路に内蔵されるレジスタの特定ビットの値が変化することにより消費電流の変化が生じることを説明するための図である。
【図７】本発明の実施形態に係る半導体集積回路の他の構成例を示す図である。
【符号の説明】
【００７８】
１，２…暗号処理回路、３…メモリ、４…システムコントローラ、５，６…排他的論理和回路、７，８…乱数発生回路、９〜１３…レジスタ
【図１】
2007251390.tif 000003
【図２】
2007251390.tif 000004
【図３】
2007251390.tif 000005
【図４】
2007251390.tif 000006
【図５】
2007251390.tif 000007
【図６】
2007251390.tif 000008
【図７】
2007251390.tif 000009