(57)【要約】【課題】セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えることが可能な暗号処理装置を提供する。【解決手段】複数の演算ブロックを含み、暗号演算を電源電圧レベルと基準電位レベル間でデータを遷移させ、演算によるデータの遷移を休止相と稼動相の２相で行う演算回路１００と、電源電圧と基準電圧の中間の電圧を生成する電圧生成部２００と、休止相では演算ブロック間の信号バスを上記電圧生成部に接続し、稼動相では信号バスを演算ブロックの出力に接続する出力制御部１０５，１０６，１０９，１１１，１１４とを有する。【選択図】図１
2010068253.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算ブロックを含み、暗号演算を電源電圧レベルと基準電位レベル間でデータを遷移させ、当該演算によるデータの遷移を休止相と稼動相の２相で行う演算回路と、
電源電圧と基準電圧の中間の電圧を生成する電圧生成部と、
上記休止相では上記演算ブロック間の信号バスを上記電圧生成部に接続し、上記稼動相では上記信号バスを演算ブロックの出力に接続する出力制御部と
を有する暗号処理装置。
【請求項２】
上記電圧生成部は、
電源電圧と基準電圧の中間の電圧を発生する中間電圧発生部を含み、
上記出力制御部は、
上記休止相では上記演算ブロック間の信号バスを上記中間電圧発生部の中間電圧の供給ラインに接続する
請求項１記載の暗号処理装置。
【請求項３】
上記電圧生成部は、
フローティング状態となる配線を含み、
上記出力制御部は、
上記休止相では上記演算ブロック間の信号バスを上記配線に接続しショートさせる
請求項１記載の暗号処理装置。
【請求項４】
上記出力制御部は、
出力端子と上記演算ブロックの出力との間に接続され、制御信号によりオン、オフされる第１スイッチと、
上記出力端子と上記電圧生成部との間に接続され、制御信号により上記第１スイッチと相補的にオン、オフされる第２スイッチと、を含み、
休止相を示す制御信号が供給されると上記第１スイッチがオフし、上記第２スイッチがオンし、
稼動相を示す制御信号が供給されると上記第１スイッチがオンし、上記第２スイッチがオフする
請求項１から３のいずれか一に記載の暗号処理装置。
【請求項５】
上記演算回路は、
取り込み信号に同期してラウンド演算用データを格納する第１レジスタと、
上記取り込み信号に同期して論理演算部の演算結果を格納する第２レジスタと、
演算部を含み、上記第１レジスタに格納されたデータに応じたラウンド演算を行うラウンド演算部と、を含み、
上記出力制御部は、
上記第１レジスタ、上記第２レジスタ、上記演算部の出力側のうち、少なくとも一つの出力側に配置されている
請求項１から４のいずれか一に記載の暗号処理装置。
【請求項６】
前記ラウンド演算部は、
非線形変換部としてのＳボックスを有し、当該Ｓボックスの出力側に出力制御部が配置され、
前記第１レジスタおよび第２レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する
請求項５記載の暗号処理装置。
【請求項７】
前記暗号処理装置は、
ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する
請求項６記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関し、さらに詳細には、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関するものである。
【背景技術】
【０００２】
ＩＣカードや携帯電話に搭載された電子マネー機能は、決裁処理時にホストコンピュータとデータをセキュアにやり取りするために、暗号エンジンを搭載し、データを暗号化して通信している。
【０００３】
具体的には、電子マネー端末とホストコンピュータが同じ鍵を共有し、一方でデータを暗号化した値を、ネットワークを介して他方に送り、他方では暗号化されたデータを受け取った後、同じ鍵で復号化してデータを取得する。
ネットワーク上のデータを悪意の第三者に取得されても、鍵が分からない限りは送付データを取得することができず、これによりデータを安全にやり取りできる。
【０００４】
しかし、ＩＣカードや携帯電話に搭載された暗号エンジンを含むＬＳＩに対して、その消費電流を統計処理して鍵を取り出す「ＤＰＡ（Differential Power Analysis：電力差分解析）攻撃」と呼ばれる攻撃方法があり、脅威となっている。
【０００５】
ＤＰＡ攻撃の脅威は、攻撃に際して電流測定用の抵抗を外部電源の電源端とＬＳＩの電源端または外部電源のＧＮＤ端とＬＳＩのＧＮＤ端の間に挿入して行うことができる点にある。
そして、ＤＰＡ攻撃においては、ＬＳＩの電源端またはＧＮＤ端が動作電流によって若干変動するだけで、それ以外は通常のＣＰＵからの命令の処理と同じであるため、演算回路は攻撃されていることを検知する術がない。
【０００６】
ＤＰＡ攻撃には、複数のメッセージに対して暗号化処理を行ってその消費電流波形を取得し、鍵を推定して消費電流波形を統計処理することによって鍵の取り出しを行う攻撃方法である。
【０００７】
このＤＰＡ攻撃に対処するための方法としては、鍵に起因する回路動作による電流発生を抑えたり、消費電流の統計処理を困難にする方法を盛り込むことが一般的に行われる。
このＤＰＡ対策には大きく分けて以下の３種類があり、これらの対策のうちの１つまたは１つ以上が選択されて搭載される。
＜１＞論理対策、
＜２＞タイミング対策、
＜３＞電流対策。
【０００８】
これらの中で、ＤＰＡ攻撃に対して最も耐性のあるのは＜１＞の論理対策である。通常は論理対策＜１＞に補助的にタイミング対策＜２＞や電流対策＜３＞を組み合わせてＤＰＡ対策とする。
【０００９】
論理対策＜１＞の方法としては、たとえば特許文献１に開示された技術が知られている。
この技術では、１bit のデータをハミング重み（Hamming Weight）の等しい２bitの数値に展開する。そして、演算によるデータの遷移は、稼動相と休止相の２相を設けて、一旦“０”でも“１”でもない状態に遷移してから演算後のデータに遷移する制御を行うことによって、演算値の遷移に伴う変化電流の検出を困難にしている。
【００１０】
具体的には、たとえばデータ“０”を “０１”、データ“１”を“１０”として暗号演算を実行する。そして、ラウンド（Ｒｏｕｎｄ）演算によってデータが変化する場合、たとえば一端“００”に遷移してから演算後のデータに遷移する。
すなわち、遷移を以下のように表わせば、演算に基づく各ビットの遷移は 演算結果によらず必ず１ビットとなり、変化電流からの鍵の取り出しは困難となる。
【００１１】
[稼動]    [休止]    [稼動]
“０”→“０”の遷移：“０１”→“００”→“０１”
“０”→“１”の遷移：“０１”→“００”→“１０”
“１”→“０”の遷移：“１０”→“００”→“０１”
“１”→“１”の遷移：“１０”→“００”→“１０”
【特許文献１】特開２００４−３４７９７５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかし、特許文献１に開示された方式の場合、本来各々１ビットの演算処理を各々２ビットで処理する必要があるため、回路規模および消費電流は２倍かそれ以上となる。
また、拡張した２ビットの配線等の付加容量に差があると、各ビットの充放電電流に差異が発生し、ＤＰＡ攻撃が可能となってしまう。
【００１３】
本発明の目的は、セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えることが可能な暗号処理装置を提供することにある。
【課題を解決するための手段】
【００１４】
本発明の第１の観点の暗号処理装置は、複数の演算ブロックを含み、暗号演算を電源電圧レベルと基準電位レベル間でデータを遷移させ、当該演算によるデータの遷移を休止相と稼動相の２相で行う演算回路と、電源電圧と基準電圧の中間の電圧を生成する電圧生成部と、上記休止相では上記演算ブロック間の信号バスを上記電圧生成部に接続し、上記稼動相では上記信号バスを演算ブロックの出力に接続する出力制御部とを有する。
【００１５】
好適には、上記電圧生成部は、電源電圧と基準電圧の中間の電圧を発生する中間電圧発生部を含み、上記出力制御部は、上記休止相では上記演算ブロック間の信号バスを上記中間電圧発生部の中間電圧の供給ラインに接続する。
【００１６】
好適には、上記電圧生成部は、フローティング状態となる配線を含み、上記出力制御部は、上記休止相では上記演算ブロック間の信号バスを上記配線に接続しショートさせる。
【００１７】
好適には、上記出力制御部は、出力端子と上記演算ブロックの出力との間に接続され、制御信号によりオン、オフされる第１スイッチと、上記出力端子と上記電圧生成部との間に接続され、制御信号により上記第１スイッチと相補的にオン、オフされる第２スイッチと、を含み、休止相を示す制御信号が供給されると上記第１スイッチがオフし、上記第２スイッチがオンし、稼動相を示す制御信号が供給されると上記第１スイッチがオンし、上記第２スイッチがオフする。
【００１８】
好適には、上記演算回路は、取り込み信号に同期してラウンド演算用データを格納する第１レジスタと、上記取り込み信号に同期して論理演算部の演算結果を格納する第２レジスタと、演算部を含み、上記第１レジスタに格納されたデータに応じたラウンド演算を行うラウンド演算部と、を含み、上記出力制御部は、上記第１レジスタ、上記第２レジスタ、上記演算部の出力側のうち、少なくとも一つの出力側に配置されている。
【００１９】
好適には、前記ラウンド演算部は、非線形変換部としてのＳボックスを有し、当該Ｓボックスの出力側に出力制御部が配置され、前記第１レジスタおよび第２レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する。
【発明の効果】
【００２０】
本発明によれば、セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えることができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態を図面に関連付けて詳細について説明する。
【００２２】
図１は、本発明の第１の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【００２３】
本ＤＥＳ演算回路１００は、初期置換部［ＩＰ（Initial Permutation）］１０１、スイッチ（ＳＷ）１０２Ｌ，１０２Ｒ、第１レジスタとしてＬレジスタ１０３、第２レジスタとしてのＲレジスタ１０４、および出力制御部１０５，１０６を有する。
ＤＥＳ演算回路１００は、拡張部１０７、ＥＸＯＲ演算部１０８、出力制御部１０９、Ｓｂｏｘ１１０、出力制御部１１１、置換部１１２、ＥＸＯＲ演算部１１３、出力制御部１１４、逆置換部（ＩＰ-1）１１５、および暗号文出力部(Crypto)１１６を有する。
また、ＤＥＳ演算回路１００は、出力制御部１０５，１０６，１０９，１１１，１１４は休止相のとき信号バスが、スイッチＳＷを介して中間電圧発生部２００に接続された配線３００に接続される。
【００２４】
スイッチ１０２Ｌの作動接点ａは初期置換部１０１の出力に接続され、作動接点ｂは逆置換部１１５および拡張部１０７に接続され、固定接点ｃがＬレジスタ１０３の入力に接続されている。
スイッチ１０２Ｒの作動接点ａは初期置換部１０１の出力に接続され、作動接点ｂは逆置換部１１５に接続され、固定接点ｃがＲレジスタ１０４の入力の入力に接続されている。
【００２５】
Ｌレジスタ１０３は、データの取り込み信号としてのラッチパルスＬａｔに同期してスイッチ１０２Ｌを介したデータ（第１データ）Ｌｉｎをラッチ（格納）する。
【００２６】
出力制御部１０５は、制御信号ＣＴＬ Ｒの制御の下、Ｌレジスタ１０３のラッチデータをＥＸＯＲ演算部１１３の一方の入力に供給する。
【００２７】
Ｒレジスタ１０４は、データの取り込み信号としてのラッチパルスＬａｔに同期してスイッチ１０２Ｒを介したデータ（第２データ）Ｒｉｎをラッチ（格納）する。
【００２８】
出力制御部１０６は、制御信号ＣＴＬ Ｒの制御の下、Ｒレジスタ１０４のラッチデータを拡張部１０７の入力およびスイッチ１０２Ｌの接点ｂに供給する。
【００２９】
拡張部１０７は、出力制御部１０６を介して入力したＲレジスタ１０４のラッチデータに対する拡張処理（ビット拡張処理）を行い、拡張処理後のデータをＥＸＯＲ演算部１０９の一方の入力に供給する。
【００３０】
ＥＸＯＲ演算部１０８は、拡張部１０７の出力データと鍵スケジュール部１１７から入力する鍵（拡張ビットと同じビット数）ＫｎとのＥＸＯＲ（排他的論理和）演算を行う。
【００３１】
出力制御部１０９は、制御信号ＣＴＬ Ｅ１の制御の下、ＥＸＯＲ演算部１０８の演算結果をＳｂｏｘ１１０に供給する。
【００３２】
Ｓｂｏｘ１１０は、出力制御部１０９を介して入力したＥＸＯＲ演算部１０８の演算結果に対して非線形処理を行う。
Ｓｂｏｘ１１０は、たとえば変換テーブルを適用した４８ビットから３２ビットへの非線形処理を実行する。
【００３３】
出力制御部１１１は、制御信号ＣＴＬ Ｓの制御の下、Ｓｂｏｘ１１０における非線形処理後のデータを置換部１１２に供給する。
【００３４】
置換部１１２は、出力制御部１１１を介したＳｂｏｘ１１０の出力データのビット位置の入れ替え処理を行い、その結果をＥＸＯＲ演算部１１３の他方の入力に供給する。
【００３５】
ＥＸＯＲ演算部１１３は、出力制御部１０５を介したＬレジスタ１０３のラッチデータと置換部１１２によるデータとのＥＸＯＲ（排他的論理和）演算を行う。
【００３６】
出力制御部１１４は、制御信号ＣＴＬ Ｅ２の制御の下、ＥＸＯＲ演算部１１３の演算結果をスイッチ１０２Ｒの接点ｂおよび逆置換部１１５に供給する。
【００３７】
逆置換部１１５では、出力制御部１０６を介したＲレジスタ１０４のラッチデータと出力制御部１１４を介したＥＸＯＲ演算部１１３の出力に対する逆置換変換（ＩＰ-1）を実行し、出力部１１６を介して暗号文として出力する。
【００３８】
以上の構成を有する本実施形態のＤＥＳ演算回路１００は、セキュリティ耐性を低下させること無く、暗号化演算回路の回路規模の増大および動作時の消費電流の増大を抑えるために以下の特徴的な構成を含む。
【００３９】
種々のレジスタや演算ブロック出力部を、ハイインピーダンス（High-Impedance）状態をもつ出力制御部（クロック制御回路）で構成し、各演算ブロックの出力バスは、転送（Transfer）回路を介して中間電圧の発生回路に接続されている。
回路動作は、休止相（Equalize Phase）と稼動相（Evaluation Phase）で構成され、休止相（Equalize Phase）では回路ブロック間の信号バスを中間電圧発生回路２００に接続し、稼動相（Evaluation Phase）では信号バスを演算ブロックの出力に接続する制御を行う。
または、休止相（Equalize Phase）では、バスの配線３００へのショートのみで、中間電圧発生回路２００に接続しない構成を採る。
【００４０】
以下、本実施形態におけるレジスタ、演算部と各出力制御部の構成および機能について具体的に説明する。
【００４１】
本ＤＥＳ演算回路１００においては、Ｌレジスタ１０３とＲレジスタ１０４の出力部分に、レジスタ値出力と中間電圧発生回路の出力電圧ＭＶｃｃ出力との切換制御を行う出力制御部１０５，１０６が配置されている。
【００４２】
図２は、レジスタとその出力制御部のスイッチ部との構成例を示す回路図である。
図３は、図２の回路のタイミングチャートである。
ここでは、Ｌレジスタ１０３、Ｒレジスタ１０４をレジスタ部として符号１２０を用いて表し、スイッチ部を符号１３０を用いて表している。
【００４３】
レジスタ部１２０は、転送ゲートＴＭＧ１２１〜ＴＭＧ１２４、インバータＩＮＶ１２１〜ＩＮＶ１２７、および入力端子Ｔ１２１，Ｔ１２２を有する。
【００４４】
転送ゲートＴＭＧ１２１〜ＴＭＧ１２４は、ｎチャネルＭＯＳ（ＮＭＯＳ）トランジスタとｐチャネルＭＯＳ（ＰＭＯＳ）トランジスタのソース・ドレイン同士が接続されて構成されている。
【００４５】
転送ゲートＴＭＧ１２１の一方の入出力端子がレジスタのラッチデータの入力端子Ｔ１２２に接続され、他方の入出力端子がインバータＩＮＶ１２１の入力および転送ゲートＴＭＧ１２２の一方の入出力端子に接続されている。
インバータＩＮＶ１２１の出力が転送ゲートＴＭＧ１２３の一方の入出力端子およびインバータＩＮＶ１２２の入力に接続されている。
そして、転送ゲートＴＭＧ１２２の他方の入出力端子がインバータＩＮＶ１２２の出力に接続されている。
インバータＩＮＶ１２１，ＩＮＶ１２２と転送ゲートＴＭＧ１２２によりマスタ部１２１が形成される。
【００４６】
転送ゲートＴＭＧ１２３の他方の入出力端子がインバータＩＮＶ１２３の入力および転送ゲートＴＭＧ１２４の一方の入出力端子に接続されている。
インバータＩＮＶ１２３の出力がインバータＩＮＶ１２４およびインバータＩＮＶ１２６の入力に接続されている。
そして、転送ゲートＴＭＧ１２４の他方の入出力端子がインバータＩＮＶ１２４の出力に接続されている。
インバータＩＮＶ１２３，ＩＮＶ１２４と転送ゲートＴＭＧ１２４によりスレーブ部１２２が形成される。
インバータＩＮＶ１２６の出力がインバータＩＮＶ１２７の入力に接続されている。
【００４７】
転送ゲートＴＭＧ１２１，ＴＭＧ１２４のＰＭＯＳトランジスタのゲート、並びに、転送ゲートＴＭＧ１２２、ＴＭＧ１２３のＮＭＯＳトランジスタのゲートが信号Ｌａｔの入力端子に接続されている。
転送ゲートＴＭＧ１２１，ＴＭＧ１２４のＮＭＯＳトランジスタのゲート、並びに、転送ゲートＴＭＧ１２２、ＴＭＧ１２３のＰＭＯＳトランジスタのゲートがインバータＩＮＶ１２５を介して信号Ｌａｔの入力端子に接続されている。
【００４８】
スイッチ部１３０は、転送ゲートＴＭＧ１３１，ＴＭＧ１３２、インバータＩＮＶ１３１、入力端子Ｔ１３１，Ｔ１３２、および出力端子Ｔ１３３を有する。
転送ゲートＴＭＧ１３１により第１スイッチが形成され、転送ゲートＴＭＧ１３２により第２スイッチが形成されている。
【００４９】
転送ゲートＴＭＧ１３１の一方の入出力端子がレジスタ部１２０の出力であるインバータＩＮＶ１２７の出力に接続され、他方の入出力端子が出力端子Ｔ１３３に接続されている。
転送ゲートＴＭＧ１３２の一方の入出力端子が中間電圧ＭＶｃｃの入力端子Ｔ１３２に接続され、他方の入出力端子が出力端子Ｔ１３３および転送ゲートＴＭＧ１３１の他方の入出力端子に接続されている。
そして、転送ゲートＴＭＧ１３１のＮＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１３２のＰＭＯＳトランジスタのゲートが制御信号ＣＴＬの入力端子Ｔ１３１に接続されている。転送ゲートＴＭＧ１３１のＰＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１３２のＮＭＯＳトランジスタのゲートがインバータＩＮＶ１３１を介して制御信号ＣＴＬの入力端子Ｔ１３１に接続されている。
【００５０】
図２の回路では、レジスタ部１２０の出力端に制御信号ＣＴＬで導通状態が制御される転送ゲートＴＭＧ１３１およびＴＭＧ１３２が配置されている。
転送ゲートＴＭＧ１３１は、制御信号ＣＴＬがハイレベルでレジスタ１２０の格納値を出力端子Ｔ１３３に出力する。
転送ゲートＴＭＧ１３２は、制御信号ＣＴＬがローレベルで中間電圧ＭＶｃｃを出力端子Ｔ１３３に出力する。
すなわち、制御信号ＣＴＬのレベルに応じて、レジスタ部１２０のラッチデータと中間電圧ＭＶｃｃの一方が出力端子Ｔ１３３およびその負荷に出力される。
【００５１】
具体的な動作は、以下のように行われる。
【００５２】
期間ｔ０において、レジスタ部１２０の格納値は“Ｒｎ−１”であり、出力の制御信号ＣＴＬはハイレベルとなっているため転送ゲートＴＭＧ１３１はオン状態、転送ゲートＴＭＧ１３２はオフ状態となる。
これにより、レジスタ部１２０のスレーブ部の格納値“Ｒｎ−１”が出力端子Ｔ１３１から信号“Reg_out”として出力されている。これと並行して、レジスタ部１２０のマスタ部１２１には次の値“Ｒｎ”が入力されている。
【００５３】
期間ｔ1において、レジスタ部１２０の取込信号Ｌａｔが立ち上り、レジスタ部１２０の入力値“Ｒｎ”がマスタ部１２１に保持され、この値はスレーブ部１２２へも伝えられる。
これと並行して、制御信号ＣＴＬが立下り、転送ゲートＴＭＧ１３１がオフし、転送ゲートＴＭＧ１３２がオンし、バスは中間電圧ＭＶｃｃの入力端子Ｔ１３２と接続される。
これにより、出力端子Ｔ１３３の信号“Reg_out”として中間電圧ＭＶｃｃが出力される。
このとき、たとえば３２本のバスは全てＭＶｃｃの供給ラインに接続されるが、同時に３２本のバスは転送ゲートＴＭＧ１３１を介してショートされる。このため、この過程では下記の＜１＞、＜２＞が連続して起こる。
【００５４】
＜１＞  各バス線は、各バス線間の電荷の再配分によって決まる電位に遷移する。
＜２＞  再配分電圧と中間電圧との差分が中間電圧発生回路から充電または放電される。
【００５５】
このとき、上記＜１＞での電荷再配分は、各バス間での電荷のやり取りであるため、これに起因するリーク電流は電源端または接地端には現われない。
そして、３２本のバス全体の再配分電圧と中間電圧ＭＶｃｃとの差分に対して、中間電圧発生回路２００により充放電される。
このため、この期間での動作電流には個々のビット（bit）の値に関するものはなく、ＤＰＡ攻撃は極めて困難となる。
【００５６】
期間ｔ２において、制御信号ＣＴＬが立ち上り、転送ゲートＴＭＧ１３１がオンすると同時に、転送ゲートＴＭＧ１３２がオフし、レジスタ部１２０の格納値“Ｒｎ”がバスに出力される。
このとき、レジスタ部１２０の値が“０”のビットはＭＶｃｃからＧＮＤへ、“１”のビットはＭＶｃｃからＶｃｃへの遷移が起こり、レジスタ部１２０の格納値が０でも１でも遷移電流が流れる。
この２つの遷移電流が同じになるように中間電圧ＭＶｃｃの電圧値が設定されている場合、遷移電流はレジスタ部１２０の格納値にかかわらず同じ電流が必ず流れることとなり、ＤＰＡ攻撃は極めて困難となる。
【００５７】
期間ｔ３において、レジスタ部１２０の取込信号Ｌａｔが立ち下り、レジスタ部１２０のスレーブ部１２２の値“Ｒｎ”が保持されると同時に、レジスタ部１２０の次の入力値“Ｒｎ+1”がマスタ部１２１に取り込まれる。
スレーブ部１２２の値に変化はないため、レジスタ部１２０の出力に変化はない。
【００５８】
なお、この構成では、レジスタ部１２０の制御信号である取込信号Ｌａｔの立ち上りとレジスタ部１２０の出力の制御信号ＣＬＴの立ち下りは同じタイミングであるが、信号Ｌａｔの立ち下りと信号ＣＬＴの立ち上りは同じタイミングとはしていない。
これは、本実施形態の構成では中間電圧ＭＶｃｃを用いるが、この電圧がレジスタ部１２０に入力されると貫通電流が流れるため、それを起こらないようにするためである。
【００５９】
次に、ＥＸＯＲ演算部およびその出力制御部について説明する。
【００６０】
図４は、ＥＸＯＲ演算部とその出力制御部のスイッチ部との構成例を示す回路図である。
図５は、図４の回路のタイミングチャートである。
ここでは、ＥＸＯＲ演算部を符号１４０を用いて表し、スイッチ部を符号１５０を用いて表している。
【００６１】
ＥＸＯＲ演算部１４０は、３入力ＮＡＮＤゲートＮＡ１４１〜ＮＡ１４３、２入力ＮＡＮＤゲートＮＡ１４４、および入力端子Ｔ１４１，Ｔ１４２，Ｔ１４３を有する。
【００６２】
ＮＡＮＤゲートＮＡ１４１の第１入力が信号Ａの入力端子Ｔ１４１に接続され、第２入力が制御信号ＣＴＬの入力端子Ｔ１４３に接続され、第３入力が信号Ｂの入力端子に接続されている。
ＮＡＮＤゲートＮＡ１４２の第１入力が信号Ａの入力端子Ｔ１４１に接続され、第２入力が制御信号ＣＴＬの入力端子Ｔ１４３に接続され、第３入力がＮＡＮＤゲートＮＡ１４１の出力に接続されている。
ＮＡＮＤゲートＮＡ１４３の第１入力が信号Ｂの入力端子Ｔ１４２に接続され、第２入力が制御信号ＣＴＬの入力端子Ｔ１４３に接続され、第３入力がＮＡＮＤゲートＮＡ１４１の出力に接続されている。
ＮＡＮＤゲートＮＡ１４４の第１入力がＮＡＮＤゲートＮＡ１４２の出力に接続され、第２入力がＮＡＮＤゲートＮＡ１４３の出力に接続されている。
【００６３】
スイッチ部１５０は、転送ゲートＴＭＧ１５１，ＴＭＧ１５２、インバータＩＮＶ１５１、入力端子Ｔ１５１、および出力端子Ｔ１５２を有する。
転送ゲートＴＭＧ１５１により第１スイッチが形成され、転送ゲートＴＭＧ１５２により第２スイッチが形成される。
【００６４】
転送ゲートＴＭＧ１５１の一方の入出力端子がＥＸＯＲ演算部１４０の出力であるＮＡＮＤゲートＮＡ１４４の出力に接続され、他方の入出力端子が出力端子Ｔ１５２に接続されている。
転送ゲートＴＭＧ１５２の一方の入出力端子が中間電圧ＭＶｃｃの入力端子Ｔ１５１に接続され、他方の入出力端子が出力端子Ｔ１５２よび転送ゲートＴＭＧ１５１の他方の入出力端子に接続されている。
そして、転送ゲートＴＭＧ１５１のＮＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１５２のＰＭＯＳトランジスタのゲートが制御信号ＣＴＬの入力端子Ｔ１４３に接続されている。転送ゲートＴＭＧ１５１のＰＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１５２のＮＭＯＳトランジスタのゲートがインバータＩＮＶ１５１を介して制御信号ＣＴＬの入力端子Ｔ１４３に接続されている。
【００６５】
図４の回路では、ＥＸＯＲ演算部１４０の出力側に制御信号ＣＴＬで導通状態が制御される転送ゲートＴＭＧ１５１およびＴＭＧ１５２が配置されている。
転送ゲートＴＭＧ１５１は、制御信号ＣＴＬがハイレベルでＥＸＯＲ演算部１４０の演算結果を出力端子Ｔ１５２に出力する。
転送ゲートＴＭＧ１５２は、制御信号ＣＴＬがローレベルで中間電圧ＭＶｃｃを出力端子Ｔ１５２に出力する。
すなわち、制御信号ＣＴＬのレベルに応じて、ＥＸＯＲ演算部１４０の演算結果と中間電圧ＭＶｃｃの一方が出力端子Ｔ１５２およびその負荷に出力される。
【００６６】
具体的な動作は、以下のように行われる。
【００６７】
期間ｔ0 において、制御信号ＣＴＬがハイレベルに設定され、転送ゲートＴＭＧ１５１がオンして、ＥＸＯＲ演算部１４０の演算結果が出力されている。
期間ｔ1 において、制御信号ＣＴＬがローレベルに変化すると、転送ゲートＴＭＧ１５１がオフし、転送ゲートＴＭＧ１５２がオンし、たとえば３２本の出力は中間電圧の供給端子Ｔ１５１と接続される。
ここで３２本の出力のショートも同時に起こり、電荷の再配分により決まる電位に遷移した後またはその過程で、電圧ＭＶｃｃから充電または放電が起こり、中間電圧ＭＶｃｃに収束する。
電荷の再配分ではこれに起因する動作電流は電源端子またはＧＮＤ端子に現われず、ＭＶｃｃからの充放電は、再配分電圧とＭＶｃｃとの差分に対して起こるため、この期間でのＤＰＡ攻撃も極めて困難である。
また、この期間の最初で制御信号ＣＴＬがローレベルに変化する。
本実施形態の構成では、中間電圧ＭＶｃｃがＥＸＯＲ演算部１４０の入力となる場合もある。
制御信号ＣＴＬは、中間電圧入力時に、貫通電流が流れない制御を行う。制御信号ＣＴＬがローレベルの期間にＥＸＯＲ演算部１４０の入力は次の値に変化するが、この期間は、ＥＸＯＲ演算部１４０の入力にかかわりなく出力はＧＮＤレベルとなる。
【００６８】
期間ｔ２において、制御信号ＣＴＬがハイレベルに変化し、ＥＸＯＲ演算部の出力は次の値に変化する。
同時に、スイッチ部１５０の転送ゲートＴＭＧ１５２がオフとなり、転送ゲートＴＭＧ１５１がオンして、出力端子Ｔ１５２はＥＸＯＲ演算部１４０の出力と接続される。
このとき、３２本のＥＸＯＲ出力の電圧はＭＶｃｃとなっていて、ＥＸＯＲ演算部１４０の演算結果が“０”のビットはＭＶｃｃからＧＮＤ、演算結果が“１”の ビットはＭＶｃｃからＶｃｃに変化し、ＥＸＯＲ演算結果にかかわらず電流が流れる。
ＥＸＯＲ演算結果が“０”の場合と“１”の場合の電流が同じになるように電圧ＭＶｃｃが設定されていれば、この期間でのＤＰＡ攻撃は極めて困難となる。
【００６９】
次に、回路素子の最後として、Ｓｂｏｘとその出力制御部について説明する。
【００７０】
Ｓｂｏｘ１１０は、６ビット入力４ビット出力の Ｓｕｂ Ｓｂｏｘ のテーブル８個で構成され、ＬＳＩへの実装ではＲＯＭを使う方法と、論理回路で構成する方法があり、ここでは論理回路で構成する方法について説明する。
論理回路で構成する方法にも幾つかあるが、その中でＢＤＤ( Binary Decision Diagram )を用いる方法について説明する。
【００７１】
図６は、Ｓｂｏｘの構成を概念的に示す図である。
【００７２】
ＢＤＤ法はスイッチ回路１６０をピラミッド状に配置し、各スイッチ回路の入力をＳｂｏｘテーブルに基づいて接続した構成を採り、その動作は、６ビットの入力で選択された１個のパスの値が出力される。
これを４個並べることにより６ビット入力４ビット出力の１個の Ｓｕｂ Ｓｂｏｘが構成され、これを８個並べることによりＤＥＳの変換テーブルであるＳｂｏｘ が構成される。
【００７３】
図７は、Ｓｂｏｘのスイッチ回路の構成例を示す図である。
図８は、図７の回路のタイミングチャートである。
図９は、スイッチ回路の真理値表を示す図である。
【００７４】
スイッチ回路１６０は、演算部１７０およびスイッチ部１８０を有する。
【００７５】
演算部１７０は、２入力ＮＡＮＤゲートＮＡ１７１、２入力ＮＡＮＤゲートＮＡ１７２、転送ゲートＴＭＧ１７１、ＴＭＧ１７２、インバータＩＮＶ１７１、入力端子Ｔ１７１〜Ｔ１７４を有する。
【００７６】
ＮＡＮＤゲートＮＡ１７１の第１入力が選択信号ＳＥＬの入力端子Ｔ１７１に接続され、第２入力が制御信号ＣＴＬの入力端子Ｔ１７４に接続され、出力がインバータＩＮＶ１７１の入力に接続されている。
転送ゲートＴＭＧ１７１の一方の入出力端子が信号Ａの入力端子Ｔ１７２に接続され、他方の入出力端子が転送ゲートＴＭＧ１７２の他方の入出力端子とＮＡＮＤゲートＮＡ１７２の第１入力に接続されている。
転送ゲートＴＭＧ１７２の一方の入出力端子が信号Ｂの入力端子Ｔ１７３に接続され、他方の入出力端子が転送ゲートＴＭＧ１７１の他方の入出力端子とＮＡＮＤゲートＮＡ１７２の第１入力に接続されている。
ＮＡＮＤゲートＮＡ１７２の第２入力は制御信号ＣＴＬの入力端子Ｔ１７４に接続されている。
ＮＡＮＤゲートＮＡ１７１の出力が転送ゲートＴＭＧ１７１のＮＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１７２のＰＭＯＳトランジスタのゲートに接続されている。
インバータＩＮＶ１７１の出力が転送ゲートＴＭＧ１７１のＰＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１７２のＮＭＯＳトランジスタのゲートに接続されている。
【００７７】
スイッチ部１８０は、転送ゲートＴＭＧ１８１，ＴＭＧ１８２、インバータＩＮＶ１８１、入力端子Ｔ１８１、および出力端子Ｔ１８２を有する。
転送ゲートＴＭＧ１８１により第１スイッチが形成され、転送ゲートＴＭＧ１８２により第２スイッチが形成される。
【００７８】
転送ゲートＴＭＧ１８１の一方の入出力端子が演算部１７０の出力であるＮＡＮＤゲートＮＡ１７２の出力に接続され、他方の入出力端子が出力端子Ｔ１８２に接続されている。
転送ゲートＴＭＧ１８２の一方の入出力端子が中間電圧ＭＶｃｃの入力端子Ｔ１８１に接続され、他方の入出力端子が出力端子Ｔ１８２および転送ゲートＴＭＧ１８１の他方の入出力端子に接続されている。
そして、転送ゲートＴＭＧ１８１のＮＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１８２のＰＭＯＳトランジスタのゲートが制御信号ＣＴＬの入力端子Ｔ１７４に接続されている。転送ゲートＴＭＧ１８１のＰＭＯＳトランジスタのゲートおよび転送ゲートＴＭＧ１８２のＮＭＯＳトランジスタのゲートがインバータＩＮＶ１８１を介して制御信号ＣＴＬの入力端子Ｔ１７４に接続されている。
【００７９】
図７の回路では、演算部１７０の出力側に制御信号ＣＴＬで導通状態が制御される転送ゲートＴＭＧ１８１およびＴＭＧ１８２が配置されている。
転送ゲートＴＭＧ１８１は、制御信号ＣＴＬがハイレベルで演算部１７０の選択結果を出力端子Ｔ１８２に出力する。
転送ゲートＴＭＧ１８２は、制御信号ＣＴＬがローレベル中間電圧ＭＶｃｃを出力端子Ｔ１８２出力する。
すなわち、制御信号ＣＴＬのレベルに応じて、演算部１７０の演算結果と中間電圧ＭＶｃｃの一方が出力端子Ｔ１８２およびその負荷に出力される。
【００８０】
具体的な動作は、以下のように行われる。
図９の真理値表で、制御信号ＣＴＬがハイレベル（Ｈ）のとき、スイッチ回路１６０の結果は“／Ａ”または“／Ｂ”となっていて、入力の反転信号となっている。
しかし、Ｓｂｏｘは６段のスイッチ回路１６０で構成されているため、最終的な出力は非反転の値に戻っている。
【００８１】
制御信号ＣＴＬがハイレベルの期間（ｔ0）は、入力データで選択された値が出力端子Ｔ１８２から信号SW_Outが出力されている。
ここで制御信号ＣＴＬがハイレベルからローレベルに遷移する時（ｔ1）、各スイッチ回路の出力はスイッチ演算結果から切り離されて中間電圧発生回路の出力ＭＶｃｃに接続される。
このとき、Ｓｂｏｘ内には数百個のスイッチ回路が存在する。
これらとＳｂｏｘの出力は同時にＭＶｃｃの供給ラインに接続されるが、これまでの回路と同様に、スイッチ回路の出力間のショートも同時に起こり、電荷の再配分が起こってから、再配分電圧と電圧ＭＶｃｃとの差分が中間電圧発生回路から供給される。
このため、この期間でのＤＰＡ攻撃は極めて困難である。
【００８２】
制御信号ＣＬＴがローレベルの期間は、Ｓｂｏｘ内のスイッチ回路の出力は全て中間電圧である“ＭＶｃｃ”になっている。
そして、スイッチ回路の制御信号ＣＴＬがローレベルからハイレベルに遷移したとき、スイッチ結果が “０”のビットでＭＶｃｃからＧＮＤ、スイッチ結果が“１”のビットではＭＶｃｃからＶｃｃの変化が起こり、どちらの場合でも電流は流れる。
この電流が同じになるように電圧ＭＶｃｃが設定されていれば、この期間でのＤＰＡ攻撃は極めて困難になる。
実際には、Ｓｂｏｘ 内のスイッチ回路はピラミッド状に配置されていて、スイッチ回路の出力は下側から確定していく。
【００８３】
このため、同じタイミングで制御信号ＣＴＬをローレベルからハイレベルに変化させると、スイッチ回路の上側の段では２つの入力がＭＶｃｃとなってしまい、貫通電流が流れる。
これを回避するために、スイッチ回路をアクティブとするタイミングを下から順番に制御する必要がある。
この場合でも、スイッチ結果が “０”のビットではＭＶｃｃからＧＮＤ、スイッチ結果が“１”のビットではＭＶｃｃからＶｃｃの変化が起こり、どちらの場合でも電流は流れ、ＤＰＡ攻撃は極めて困難となる。
【００８４】
以上説明してきたように、制御信号ＣＴＬがハイレベルからローレベルに遷移するときは、各ブロックの出力が中間電圧発生回路の電圧ＭＶｃｃの出力に接続される。
これと並行して、各信号線のショートも起こり、まずは電源端子、ＧＮＤ端子に電流としては現われない信号線間での電荷の再配分が起こり、その後に再配分電圧と“ＭＶｃｃ”との差分に相当する電位差が充放電される。
この間、各信号線がハイレベルかローレベルかに基づく充放電電流は電源端子、ＧＮＤ端子には流れない。
この電圧“ＭＶｃｃ”の供給ラインに接続する過程で、電荷の再配分と、再配分電圧と“ＭＶｃｃ”との差分の充放電は、接続が同時でも充放電の方が遅れて起こることが期待されるが、電荷の再配分が十分行われる前に充放電が起こり始める可能性もある。
確実に電荷の再配分が行われた後に、“ＭＶｃｃ”からの充放電が行われるように、本実施形態では、図１０に示すように、各回路ブロック１０３と１０５，１０４と１０６，１０８と１０９，１１３と１１４、１１０と１１１と中間電圧発生回路２００の間にスイッチ回路が配置される。
そして、各回路ブロックが中間電圧発生回路２００と接続する制御が行われるとき、その制御信号の少し遅延した信号で中間電圧発生回路２００と接続する制御が行われるようにすれば良い。
【００８５】
これらの回路ブロックを用いて構成したのが図１の回路であり、その動作タイミングを図１１に示す。
【００８６】
この例では、期間“t１”〜“t４”、すなわち２クロックで１つのラウンド（Round）を構成している。この構成には、以下の制御信号が供給されている。
【００８７】
図１１において、信号ＬａｔはＬレジスタ１０３、Ｒレジスタ１０４の値の取込信号であり、信号の立ち上りで、値を対応するレジスタ内に取り込む。
【００８８】
信号ＣＴＬ_Ｒは、レジスタの出力制御信号であり、ハイレベルでレジスタの値を出力し、ローレベルで中間電圧ＭＶｃｃを出力する。
【００８９】
信号ＣＴＬ_Ｅ１はいわゆるＦ関数内の入力とラウンド（Round）鍵の ＥＸＯＲ演算部１０８の出力制御信号であり、ハイレベルでＥＸＯＲ値を出力し、ローレベルで中間電圧ＭＶｃｃを出力する。
【００９０】
信号ＣＴＬ_Ｓ［0−5］はＦ関数内のＳｂｏｘの演算および出力の制御信号であり、ハイレベルでＳｂｏｘの値を出力し、ローレベルで中間電圧ＭＶｃｃを出力する。
この信号ＣＴＬ_Ｓがハイレベルからローレベルに遷移するとＳｂｏｘ内のスイッチ回路は全て非アクティブでその出力はＭＶｃｃとなる。
信号ＣＴＬ_Ｓがローレベルからハイレベルに遷移するとＳｂｏｘの出力は確定するが、ＳｂｏｘにＢＤＤ方式を用いている場合、Ｓｂｏｘは６段のスイッチ回路で構成されている。そして、下の段のスイッチ回路の出力が次の段のスイッチ回路の入力となっているため、立ち上りに際しては、スイッチ回路の遅延分だけ順次遅らせた６種類のタイミングで制御する。
【００９１】
信号ＣＴＬ_Ｅ２はＦ関数出力とＬレジスタ１０３の値とのＥＸＯＲ演算部１１３の出力制御信号であり、ハイレベルでＥＸＯＲ値を出力し、ローレベルで中間電圧ＭＶｃｃを出力する。
【００９２】
これらの制御信号を用いて、本実施形態の動作は以下のようになる。
【００９３】
期間t０において、制御信号ＣＴＬ_Ｒ，ＣＴＬ_Ｅ１，ＣＴＬ_Ｓ、およびＣＴＬ_Ｅ２は全てハイレベルで、各回路ブロックの各ノードはＶｃｃあるいはＧＮＤレベルに確定している。
Ｌレジスタ１０３およびＲレジスタ１０４には直前の値“Ｒｎ−1”，“Ｌｎ−1”が保持され、値“Ｒｎ−1”はＦ関数および値“Ｌｎ”としてＬレジスタ１０３の入力に供給される。
Ｆ関数の出力は値“Ｌｎ−1”とのＥＸＯＲ後に 演算結果“Ｒｎ”としてＲレジスタ１０４の入力に供給されている。
そして、制御信号Ｌａｔがローレベルであることにより、レジスタ入力の値はレジスタ部１２０のマスタ部１２１にも入力されている。
【００９４】
期間t１において、レジスタの取込制御信号Ｌａｔがハイレベルに遷移し、前のラウンド（Round）の演算結果“Ｒｎ”,“Ｌｎ”がレジスタ部１２０のスレーブ部１２２に取り込まれる。
これと並行して、制御信号ＣＴＬ_Ｒ，ＣＴＬ_Ｅ１，ＣＴＬ_Ｓ、およびＣＴＬ_Ｅ２は全てローレベルに遷移し、レジスタ１０３，１０４、ＥＸＯＲ演算部１０８，１１３、Ｓｂｏｘ１１０の出力は全て中間電圧発生回路２００のＭＶｃｃの供給ラインと接続される。  このとき、各回路ブロックの負荷は、まず信号線ショートによる電荷の再配分により、（１）各信号線の“０”，“１”比率に応じた電荷の再配分電圧に収束し、その後、（２）中間電圧ＭＶｃｃとの差分が 中間電圧発生回路２００から充放電される。
この期間、電源端子およびＧＮＤ端子に現われる電流は、（２）の電荷の再配分電圧と中間電圧ＭＶｃｃとの差分に対する中間電圧発生回路からの充放電電流であるため、この過程でのＤＰＡ攻撃は極めて困難である。
【００９５】
期間t２において、レジスタ出力の制御信号ＣＴＬ_Ｒがハイレベルに遷移する。
これに伴って、レジスタの出力はレジスタの格納値“Ｒｎ”,“Ｌｎ”に基づいて遷移するが、遷移前の電圧が中間電圧ＭＶｃｃであるため、Ｖｃｃへの遷移でもＧＮＤへの遷移でもどちらでも充放電電流が流れる。
この充放電電流が同じになる様に中間電圧ＭＶｃｃが設定されていると、この充放電電流へのＤＰＡ攻撃は極めて困難となる。
そして、この期間の動作により、ＶｃｃあるいはＧＮＤに確定した“Ｒｎ”がＦ関数内のラウンド（Round）鍵との ＥＸＯＲ演算部１０８、およびＬレジスタ１０３の入力に供給され、“Ｌｎ”がＦ関数出力とのＥＸＯＲ演算部１１３に供給される。
【００９６】
期間t３において、Ｆ関数内のＥＸＯＲ１０８、Ｓｂｏｘ１１０、およびＦ関数直後のＥＸＯＲ演算部１１３の制御信号ＣＴＬ_Ｅ１，ＣＴＬ_Ｓ、およびＣＴＬ_Ｅ２が順次ハイレベルに遷移する。
これに伴って、Ｆ関数内のＥＸＯＲ演算部１０８、Ｓｂｏｘ回路１１０、およびＦ関数直後のＥＸＯＲ演算部１１３が順次アクティブとなって出力が確定して行く。この場合、何れも中間電圧ＭＶｃｃからＶｃｃまたはＧＮＤへの遷移となり、どちらの遷移でも必ず充放電電流が流れ、この遷移電流へのＤＰＡ攻撃は極めて困難となる。
この期間での制御によりラウンド（Round）演算結果は確定し、“Ｒｎ＋1”および“Ｌｎ＋1”がＲレジスタ１０４、Ｌレジスタ１０３の入力に供給される。
【００９７】
期間t４において、レジスタの取込信号Ｌａｔがローレベルに遷移する。
これに伴って、このラウンド（Round）の演算結果“Ｒｎ＋1”と“Ｌｎ＋1”はレジスタ部１２０のマスタ部１２１に入力されるが両入力とも各ビットＶｃｃまたはＧＮＤレベルに確定しているため、レジスタ部１２０のマスタ部１２で貫通電流が流れることは無い。
【００９８】
以上説明してきたように、本実施形態においては、出力信号を中間電位に遷移させた後、次のデータの出力に遷移する制御を行う。
このことにより、中間電位への遷移では、電源端子・GND端子に動作電流として現われない「信号負荷間での電荷の再配分」がまず起こる。
その後、電荷の再配分電圧と中間電圧ＭＶｃｃとの差分のみが、電源端子およびＧＮＤ端子に動作電流として現われる中間電圧発生回路からの充放電電流として供給される。
このため、この期間でのＤＰＡ攻撃は極めて困難である。
中間電位からの遷移では、データが“０”のビットにはＭＶｃｃからＧＮＤの放電、データが“１”のビットにはＭＶｃｃからＶｃｃの充電が起こるが、どちらのデータでも必ず電流は流れる。
この放電電流と充電電流が等しくなるように、中間電圧ＭＶｃｃを設定しておけば、この過程でのＤＰＡ攻撃は極めて困難になる。
【００９９】
次に、本発明の第２の実施形態について説明する。
図１２は、本発明の第２の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【０１００】
第１の実施形態では、中間電位を発生する回路を配置し、ラウンド（Round）演算の前半のフェーズ（Phase）で、各回路ブロックの出力を切り離して中間電圧発生回路の出力に接続する。各配線間での電荷の再配分電圧と中間電圧発生回路からの充放電で所望の中間電圧ＭＶｃｃとし、後半のフェーズでは、中間電圧ＭＶｃｃから各ビットのデータに応じてＧＮＤまたはＶｃｃに遷移させる。
そして、その放電電流と充電電流を同じにすることにより、データに関わらず同じ電流が流れる構成とし、これによりＤＰＡ攻撃を不可能としていた。
【０１０１】
本第２の実施形態では、ラウンド（Round）演算の前半のフェーズ（Phase）で、各回路ブロックの出力を切離してフローティング状態の配線３００に対するショートのみ行い、中間電圧発生回路の出力と接続しない点が第１の実施形態と異なる。
【０１０２】
本第２の実施形態の構成で、配線をショートする方法は、回路ブロック単位で出力をショートする、幾つかのブロックまたは全ての回路ブロックの出力をショートする、異なるブロックの同じビットまたは複数のビットをショートする、等の構成が採用可能である。
ここでは、回路ブロック単位で出力をショートする場合について説明する。
【０１０３】
タイミングに関しては第１の実施形態と同じで制御可能で、図１１のタイミング図、および図１３、図１４に関連付けて説明する。
図１３は、電荷の再配分電圧と充放電電流を説明するための図である。
図１４は、各ケースをグループ分けした充放電電流の加算処理結果を示す図である。
【０１０４】
期間t1の最初に取込制御信号Ｌａｔが立ち上り、前のラウンド（Round）の演算結果がレジスタ１０３，１０４に取り込まれる。
これと並行して、制御信号ＣＴＬ_Ｒ，ＣＴＬ_Ｅ１，ＣＴＬ_Ｓ、およびＣＴＬ_Ｅ２は全てローレベルに遷移し、レジスタ出力、ＥＸＯＲ演算部１０８，１１３の出力、およびＳｂｏｘ出力の各３２ビットの信号線はその単位でショートされる。
このとき、Ｒレジスタ１０４の出力に着目すると、ショートによって各信号線間で電荷の再配分が起こり、３２ビット中の“０”と“１”の比率によって決まる電圧に収束する。
Ｒレジスタ１０４のデータはＦ関数とＬレジスタ１０３の入力に３２ビット全てが供給されるがここで、説明を簡単にするために、各ビットの配線容量を同じ（配線容量“C”）として説明する。
このときのショートによる収束電圧は、３２ビット中の“０”と“１”の比率によって図１３に示すようになる。
期間t2の最初で制御信号ＣＴＬ_Ｒがハイレベルに遷移し、レジスタ出力配線間のショートが解除されてレジスタに接続されるとき、ショート電圧からＶｃｃあるいはＧＮＤに遷移する。
このとき、ショート電圧の値によって、Ｖｃｃに遷移する場合の充電電流は色々な値となり、ＧＮＤに遷移する場合も色々な放電電流となる。そして、両電流値は、直前のデータの“０”と“１”が共に１６ビットである場合を除いて異なる値を採り、レジスタのラッチデータの情報がリークするおそれがある。
しかし、個々のリーク電流は非常に小さいため、ＤＰＡ攻撃するためには千個〜数十万個の電流波形を取得して、それを統計処理する必要がある。
ところが、千個〜数十万個の電流波形を取得したとき、図１３の各 Case はある分布で存在し、図１４に示すように、Case 0 と Case 32, Case 1 と Case 31, ・・・ Case 15 と Case 17 は同じ確率で存在する。
このとき、各組合せで充放電電流の加算を行うと、全ての組合せで充電電流と放電電流が同じとなり、統計処理を行うだけの十分な電流をそろえたとき次のようになる。
すなわち、Ｖｃｃに遷移する場合とＧＮＤに遷移する場合で統計処理後の電流は等しくなり、この電流に対するＤＰＡ攻撃は極めて困難となる。
この現象は他の回路ブロックの出力についても同じことが言え、したがって、第２の実施形態でもＤＰＡ攻撃は極めて困難となる。
【０１０５】
以上説明したように、本実施形態によれば、暗号演算回路において、休止相（Pre-Charge Phase）で、信号線をバス単位でイコライズして中間電圧発生回路２００に接続し、あるいは信号線をショートさせる。
そして、稼動相（Evaluation Phase）で中間電位から順次ＶｃｃまたはＧＮＤへ変化させる制御を行う。
その結果、暗号演算に伴うバス線の信号変化は、ＶｃｃあるいはＧＮＤから中間Ｖｃｃ、または中間ＶｃｃからＶｃｃあるいはＧＮＤへの変化となるため、データが０でも１でもほぼ同じ電流が流れる。
したがって、消費電流波形を、鍵を推定しての統計処理を行ってもリーク電流を取得することはできず、ＤＰＡ攻撃は失敗する。
すなわち、ＤＰＡ攻撃の対象となるリーク電流の発生が抑えられ、ＤＰＡ攻撃が極めて困難となる。
【０１０６】
ここで、上述の暗号処理を実行するデバイスとしてのＩＣモジュール４００の構成例を図１５を参照して説明する。上述の処理は、たとえばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図１５に示すＩＣモジュール４００は、これら様々な機器に構成することが可能である。
【０１０７】
図１５において、ＣＰＵ(Central processing Unit)４０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述した各スイッチの切り替え制御、その他の各種プログラムを実行するプロセッサである。
メモリ４０２は、ＣＰＵ４０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）を含む。
また、メモリ４０２は、ＣＰＵ４０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。
また、メモリ４０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１０８】
暗号処理部４０３は、たとえば上述したＤＥＳアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、図１のＤＥＳ演算回路１００や図１２のＤＥＳ演算回路１００Ａが適用される。
【０１０９】
送受信部４０４は、外部とのデータ通信を実行するデータ通信処理部であり、たとえばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１１０】
なお、暗号処理部４０３において適用される各種の制御信号、たとえば前述したスイッチの切り替え制御信号は、クロック生成回路４０５からのクロック信号をトリガにして動作するタイミング発生回路４０６において生成し、暗号処理部４０３に供給することが可能である。
【０１１１】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。
【図面の簡単な説明】
【０１１２】
【図１】本発明の第１の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【図２】レジスタとその出力制御部のスイッチ部との構成例を示す回路図である。
【図３】図２の回路のタイミングチャートである。
【図４】ＥＸＯＲ演算部とその出力制御部のスイッチ部との構成例を示す回路図である。
【図５】図４の回路のタイミングチャートである。
【図６】Ｓｂｏｘの構成を概念的に示す図である。
【図７】Ｓｂｏｘのスイッチ回路の構成例を示す図である。
【図８】図７の回路のタイミングチャートである。
【図９】スイッチ回路の真理値表を示す図である。
【図１０】各回路ブロックと中間電圧発生回路の間にスイッチ回路が配置される例を示す図である。
【図１１】図１の回路の動作タイミングを示す図である。
【図１２】本発明の第２の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【図１３】電荷の再配分電圧と充放電電流を説明するための図である。
【図１４】各ケースをグループ分けした充放電電流の加算処理結果を示す図である。
【図１５】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１１３】
１００，１００Ａ・・・ＤＥＳ演算回路、１０１・・・初期置換部［ＩＰ（Initial Permutation）］、１０２・・・スイッチ（ＳＷ）、１０２Ｌ・・・Ｌレジスタ側スイッチ、１０２Ｒ・・・Ｒレジスタ側スイッチ、１０３・・・Ｌレジスタ、１０４・・・Ｒレジスタ、１０５，１０６，１０９，１１１，１１４・・・出力制御部、１０７・・・拡張部、１０８，１１３・・・ＥＸＯＲ演算部、１１５・・・逆置換部（ＩＰ-1）、１１６・・・暗号文出力部(Crypto)。
【図１】
2010068253.tif 000003
【図２】
2010068253.tif 000004
【図３】
2010068253.tif 000005
【図４】
2010068253.tif 000006
【図５】
2010068253.tif 000007
【図６】
2010068253.tif 000008
【図７】
2010068253.tif 000009
【図８】
2010068253.tif 000010
【図９】
2010068253.tif 000011
【図１０】
2010068253.tif 000012
【図１１】
2010068253.tif 000013
【図１２】
2010068253.tif 000014
【図１３】
2010068253.tif 000015
【図１４】
2010068253.tif 000016
【図１５】
2010068253.tif 000017