(57)【要約】【課題】過渡遷移に基づく解析を困難とし、例えばＤＰＡ攻撃に対する耐性の高い演算構成を実現する。【解決手段】非線形変換処理などのデータ変換処理を行う演算装置において、論理回路を構成するセレクタ入力値をすべて同一値に維持したプリチャージ・フェーズにおいて入力ビット遷移処理を実行させ、遷移処理終了後にエバリュエーション・フェーズへ移行してデータ変換処理に基づく出力ビット生成を行なう。プリチャージ・フェーズにおいては全てのセレクタ入力値を同一値とするリセットを実行するので、入力ビット遷移処理時の過渡遷移に基づく解析が困難となり、例えばＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）攻撃に対する耐性の高い演算装置が実現される。【選択図】図１１
2008153806.tif 000002
【特許請求の範囲】
【請求項１】
入力ビットのデータ変換処理を実行する演算処理装置であり、
入力ビットをセレクト信号として設定した複数のセレクタによる階層構成を有し、定数項を複数の最下層セレクタから入力して、前記セレクト信号に従って上層セレクタへ前記定数項を転送して最上層セレクタから選択された定数項を出力する論理回路と、
前記論理回路を適用したデータ変換処理の制御を行なう制御部を有し、
前記制御部は、
前記論理回路を構成するセレクタに対する入力値を全て同一値とするプリチャージ・フェーズと、
前記入力ビットに対応する出力ビットの生成を実行するエバリュエーション・フェーズと、
上記２つのフェーズを交互に実行させ、前記プリチャージ・フェーズにおいて前記セレクト信号に相当する入力ビットの遷移処理を実行することを特徴とする演算処理装置。
【請求項２】
前記論理回路を構成するセレクタは、
前記定数項の１つと、前記セレクト信号を入力する第１アンドゲートと、
前記定数項の１つと、前記セレクト信号の反転値である反転セレクト信号を入力する第２アンドゲートと、
前記第１アンドゲートおよび第２アンドゲートの出力を入力とするオアゲートによって構成され、
前記制御部は、
前記プリチャージ・フェーズにおいて、前記第１アンドゲートおよび第２アンドゲートの入力をすべて同一値に設定する制御を実行する構成であることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記論理回路を構成するセレクタは、前記セレクト信号および前記セレクト信号の反転セレクト信号の入力部を有し、さらに、
前記セレクト信号入力部の前段に設定された演算回路と、
前記反転セレクト信号の前段に設定された演算回路と、
前記定数項を入力する複数の最下層セレクタの前段に設定された演算回路と、
を有し、前記演算回路は、プリチャージ信号の入力可能な演算回路であり、
前記制御部は、
前記演算回路に対するプリチャージ信号の切り替えにより、前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行う構成であることを特徴とする請求項１に記載の演算処理装置。
【請求項４】
前記演算回路は、一方の入力をプリチャージ信号としたアンドゲートによって構成され、
前記制御部は、
前記アンドゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行う構成であることを特徴とする請求項３に記載の演算処理装置。
【請求項５】
前記演算回路は、一方の入力をプリチャージ信号としたオアゲートによって構成され、
前記制御部は、
前記オアゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行う構成であることを特徴とする請求項３に記載の演算処理装置。
【請求項６】
前記論理回路を構成するセレクタは、同一値を入力値とする複数のセレクタを１つのセレクタとした共有セレクタを有する構成であることを特徴とする請求項１に記載の演算処理装置。
【請求項７】
前記論理回路を構成するセレクタは、反転出力を行なうセレクタおよび反転入力を行なうセレクタであることを特徴とする請求項１に記載の演算処理装置。
【請求項８】
前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力を固定値とし、前記エバリュエーション・フェーズにおいて、前記定数項または乱数を前記最下層セレクタの入力として設定する構成であることを特徴とする請求項１記載の演算処理装置。
【請求項９】
前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力をランダムに０または１とするように前記ゲート回路の出力制御を行う構成であることを特徴とする請求項１に記載の演算処理装置。
【請求項１０】
前記論理回路は、
二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた構成を有することを特徴とする請求項１に記載の演算処理装置。
【請求項１１】
前記論理回路は、
入力ビットのデータ変換処理として、
入力ビットの非線形変換処理を実行する構成であることを特徴とする請求項１に記載の演算処理装置。
【請求項１２】
演算処理装置において入力ビットのデータ変換処理を実行する演算処理制御方法であり、
前記演算処理装置は、
入力ビットをセレクト信号として設定した複数のセレクタによる階層構成を有し、定数項を複数の最下層セレクタから入力して、前記セレクト信号に従って上層セレクタへ前記定数項を転送して最上層セレクタから選択された定数項を出力する論理回路を有し、
前記論理回路を適用したデータ変換処理の制御を行なう制御部が、
前記論理回路を構成するセレクタに対する入力値を全て同一値とするプリチャージ・フェーズと、
前記入力ビットに対応する出力ビットの生成を実行するエバリュエーション・フェーズと、
上記２つのフェーズを交互に実行させ、前記プリチャージ・フェーズにおいて前記セレクト信号に相当する入力ビットの遷移処理を実行することを特徴とする演算処理制御方法。
【請求項１３】
前記論理回路を構成するセレクタは、
前記定数項の１つと、前記セレクト信号を入力する第１アンドゲートと、
前記定数項の１つと、前記セレクト信号の反転値である反転セレクト信号を入力する第２アンドゲートと、
前記第１アンドゲートおよび第２アンドゲートの出力を入力とするオアゲートによって構成され、
前記制御部は、
前記プリチャージ・フェーズにおいて、前記第１アンドゲートおよび第２アンドゲートの入力をすべて同一値に設定する制御を実行することを特徴とする請求項１２に記載の演算処理制御方法。
【請求項１４】
前記論理回路を構成するセレクタは、前記セレクト信号および前記セレクト信号の反転セレクト信号の入力部を有し、さらに、
前記セレクト信号入力部の前段に設定された演算回路と、
前記反転セレクト信号の前段に設定された演算回路と、
前記定数項を入力する複数の最下層セレクタの前段に設定された演算回路と、
を有し、前記演算回路は、プリチャージ信号の入力可能な演算回路であり、
前記制御部は、
前記演算回路に対するプリチャージ信号の切り替えにより、前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行うことを特徴とする請求項１２に記載の演算処理制御方法。
【請求項１５】
前記演算回路は、一方の入力をプリチャージ信号としたアンドゲートによって構成され、
前記制御部は、
前記アンドゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行うことを特徴とする請求項１４に記載の演算処理制御方法。
【請求項１６】
前記演算回路は、一方の入力をプリチャージ信号としたオアゲートによって構成され、
前記制御部は、
前記オアゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行うことを特徴とする請求項１４に記載の演算処理制御方法。
【請求項１７】
前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力を固定値とし、前記エバリュエーション・フェーズにおいて、前記定数項または乱数を前記最下層セレクタの入力として設定することを特徴とする請求項１２記載の演算処理制御方法。
【請求項１８】
前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力をランダムに０または１とする制御を行うことを特徴とする請求項１２に記載の演算処理制御方法。
【請求項１９】
演算処理装置において入力ビットのデータ変換処理を実行させるコンピュータ・プログラムであり、
前記演算処理装置は、
入力ビットをセレクト信号として設定した複数のセレクタによる階層構成を有し、定数項を複数の最下層セレクタから入力して、前記セレクト信号に従って上層セレクタへ前記定数項を転送して最上層セレクタから選択された定数項を出力する論理回路を有し、
前記コンピュータ・プログラムは、
前記論理回路を構成するセレクタに対する入力値を全て同一値とするプリチャージ・フェーズと、
前記入力ビットに対応する出力ビットの生成を実行するエバリュエーション・フェーズと、
上記２つのフェーズを交互に実行させ、前記プリチャージ・フェーズにおいて前記セレクト信号に相当する入力ビットの遷移処理を実行させることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラムに関する。さらに詳細には、本発明は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に代表されるような共通鍵暗号方式や、ＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ）暗号に代表されるような公開鍵暗号方式、またはＳＨＡ−１に代表されるようなハッシュ関数などの演算を効率的に実行する論理回路を利用した演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実現され、運用されている。
【０００３】
暗号化方式には大きく分けて共通鍵暗号方式と公開鍵暗号方式が存在する。共通鍵暗号方式には、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がある。ＡＥＳ暗号方式はＤＥＳ暗号方式の後継暗号方式として位置づけられている。また、公開鍵暗号方式には、ＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ）暗号方式やＥＣＣ（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｃｒｙｐｔｏｓｙｓｔｅｍｓ）暗号方式が存在する。
【０００４】
このような様々な暗号方式に従った暗号処理を実行する装置、すなわち暗号処理デバイスとしては、例えば、Ｃ言語のようなプログラミング言語を用いてＣＰＵを利用してプログラムの処理によって実行させる構成、あるいは様々なゲート回路を使用してハードウェア上で実行させる構成などがある。
【０００５】
暗号処理デバイスにおいては、例えば、平文を入力し暗号文を出力するデータ暗号化処理、あるいは暗号文を入力し平文を出力する復号化処理が実行される。これらの暗号処理は、セキュアに行なわれ、情報の漏洩を防ぐ工夫がなされているが、一方で、暗号処理の適用鍵や、アルゴリズムを解析する攻撃手法も存在する。攻撃方法は大別して破壊攻撃と非破壊攻撃に分類することができる。
【０００６】
このうち破壊攻撃は、ＩＣチップなどのパッケージを硝酸などの薬品を用いて化学的処理により溶解しＩＣチップのダイをあらわにした後、物理的な方法で秘密情報を読み取る攻撃である。ダイがあらわになると、配線パターンから構成された回路を導出するリバースエンジニアリングが可能であり、配線から直接秘密情報を抽出することが可能となる。また配線だけでなくメモリセルからもレーザーや電磁波を用いてメモリ状態を検知することによって、メモリ内に書き込まれている秘密情報を観測することができる。
【０００７】
また非破壊攻撃はサイドチャネル攻撃（Ｓｉｄｅ−Ｃｈａｎｎｅｌ  Ａｔｔａｃｋ）とも呼ばれる。基本的にＩＣチップのパッケージを溶解するという処理を行なわず、外部から得られる物理的情報、たとえば消費電流、輻射電磁波、演算終了時間等の情報を利用して、秘密情報を盗み出すものである。実際に共通鍵暗号方式であるＤＥＳが実装されたデバイスの暗号処理中の消費電流を観測して、秘密情報である鍵情報を漏洩させる方法がＫｏｃｈｅｒらによって１９９９年に発表された。この手法については、例えば非特許文献１に記載されている。この攻撃技術の存在は、暗号の実装方法が適切でない場合、安全性が確保できないことを意味するものである。
【０００８】
非特許文献１に記載されているＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）攻撃は、入力平文の異なる数多くの暗号演算処理中の消費電流を観測して、秘密情報のビット値をもとに消費電流波形を統計処理することにより、秘密情報との相関の有無によって統計処理した消費電流波形に表れる特徴的なパターンから秘密情報を導き出すという攻撃手法である。
【０００９】
このような攻撃に対して、様々な防御方法も提案されている。例えば、共通鍵暗号方式であるＡＥＳについて例を挙げれば、非特許文献２に１つの防御手法が記載されている。この非特許文献２に記載の手法は、ＡＥＳの演算のうちＳｕｂＢｙｔｅと呼ばれている内部のＳ−Ｂｏｘ演算に対して対策を施したものである。この対策は演算途中の秘密情報を含んだ中間値があらわに存在しないように乱数を用いて秘匿する技術である。
【００１０】
しかしながら、この方法を単純にハードウェアに実装しても内部信号の遅延差による過渡遷移が生じるために、乱数を用いて秘密情報を含んだ中間値の秘匿が完全にできない状況が生じるためにＤＰＡ攻撃によって秘密情報が漏洩してしまうことがあるという問題がある。
【００１１】
さらに、非特許文献３には、上述の非特許文献２の構成における欠点である過渡遷移を解消した構成として、ＷＤＤＬ（Ｗａｖｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｄｙｎａｍｉｃ  Ｌｏｇｉｃ）を用いた対策が開示されている。この対策はロジックの状態として、Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ、およびＥｖａｌｕａｔｉｏｎ  Ｐｈａｓｅという２つの状態を持ち、この２つの状態を行き来することによって演算を行なう処理を漏洩防止策としたものである。
【００１２】
Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅはゲート回路が初期化されている状態であり、Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅは実際の演算を行なっている状態ということができる。さらにゲート回路の入出力に対して相補的な入力および出力が存在する。この相補的入力に対して正論理ゲートと負論理ゲートが形成され、相補的な出力が得られる。ＷＤＤＬはこの２つの機構、Ｐｒｅ−Ｃｈａｒｇｅ  ＰｈａｓｅとＥｖａｌｕａｔｉｏｎ  Ｐｈａｓｅの２状態および相補的な入出力の存在によって、いかなる入力信号に対しても出力はＰｒｅ−Ｃｈａｒｇｅ  ＰｈａｓｅからＥｖａｌｕａｔｉｏｎｏ  ＰｈａｓｅおよびＥｖａｌｕａｔｉｏｎ  ＰｈａｓｅからＰｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅに状態が遷移するときに一度だけ出力が変化するＭｏｎｏｔｏｎｉｃｉｔｙを満たしている。
【００１３】
ＷＤＤＬにはこのような性質があるため、不要な過渡遷移が生じることがない。さらに相補的な出力は任意の入力に対してどちらかの出力のみ変化するので、状態が遷移したときにのみ充放電が行なわれるＣＭＯＳ（Ｃｏｍｐｌｅｍｅｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）プロセスを用いたロジックでは消費電流が一定となる。よって秘密情報を含むビット値の違いによって消費電流の相違がなくなるので、ＤＰＡ攻撃に対して有効な対策となる。
【００１４】
しかしながらＷＤＤＬは相補的入出力が存在し、その入出力の遅延差をなくすようにレイアウトを行なわなければならない。さらに演算構成上で２つの演算入力に対して大幅な遅延差がある場合には、ＤＰＡ攻撃によって秘密情報が漏洩してしまう危険が存在するという問題点を有する。
【００１５】
上述のＡＥＳにおけるＳｕｂＢｙｔｅと呼ばれている内部のＳ−Ｂｏｘ演算は、例えば二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いたハードウェアによって実行可能である。二分決定グラフ（ＢＤＤ）については、例えば、特許文献１に記載されている。なお、二分決定グラフ（ＢＤＤ）については本明細書中においても後段で説明する。
【００１６】
特許文献１には二分決定グラフ（ＢＤＤ）で構成されたＳ−Ｂｏｘなどの組合せ回路の構成およびその論理合成方法に関することが記載されている。共通鍵暗号による暗号処理を実行する場合、Ｓ−Ｂｏｘと呼ばれる非線形変換部を利用した非線形変換処理を実行することが必要であり、このＳ−Ｂｏｘの処理速度が暗号処理演算自体の処理速度に大きく影響している。例えば、ＡＥＳのＳ−Ｂｏｘはガロア体の逆元演算回路が必要である。
【００１７】
この回路を二分決定グラフ（ＢＤＤ）で構成せず、例えば、合成体（ｃｏｍｐｏｓｉｔｅ  ｆｉｅｌｄ）で実現しようとすると、ＢＤＤのような真理値表から直接回路を導出する構成に比べて数倍程度の回路遅延が生じてしまうことになる。従って、高速な実装が要求される場合はＢＤＤ構成とすることが好ましい。しかしながら、ＢＤＤを用いたＳ−Ｂｏｘは高速動作が実現されるが、ＤＰＡ攻撃に関する考慮を行わないと、不要な過渡遷移等の信号伝搬に基づく解析が可能となり秘密鍵等の秘密情報の漏洩の危険が発生するという問題がある。すなわち、二分決定グラフ（ＢＤＤ）を適用した論理回路構成による演算を実行した場合、内部信号の遅延差による過渡遷移が生じ、ＤＰＡ攻撃によって秘密情報が漏洩してしまうことがあるという問題がある。
【特許文献１】特開２００３−２２３１００
【非特許文献１】Ｐａｕｌ  Ｃ．Ｋｏｃｈｅｒ，Ｊｏｓｈａｕａ  Ｊａｆｆｅ  ａｎｄ  Ｂｅｎｊａｍｉｎ  Ｊｕｎ，"Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ"，ＣＲＹＰＴＯ  １９９９，Ｌｅｃｔｕｒｅ  Ｎｏｔｅ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，Ｖｏｌ．１６６６，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ（１９９９），ｐｐ．３８８−３９７．
【非特許文献２】Ｅｌｉｓａｂｅｔｈ  Ｏｓｗａｌｄ，  Ｓｔｅｆａｎ  Ｍａｎｇａｒｄ，  Ｎｏｒｂｅｒｔ  Ｐｒａｍｓｔａｌｌｅｒ，"Ａ  Ｓｉｄｅ−Ｃｈａｎｎｅｌ  Ａｎａｌｙｓｉｓ  Ｒｅｓｉｓｔａｎｔ  Ｄｅｓｃｒｉｐｔｉｏｎ  ｏｆ  ｔｈｅ  ＡＥＳ  Ｓ−Ｂｏｘ"，ＦＳＥ  ２００５，ＬＮＣＳ  ３５５７，ｐｐ．４１３−４２３．
【非特許文献３】Ｋｒｉｓ  Ｔｉｒｉ，  Ｉｎｇｒｉｄ  Ｖｅｒｂａｕｗｈｅｄｅ，"Ｓｅｃｕｒｉｎｇ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｌｇｏｒｉｔｈｍｓ  ａｇａｉｎｓｔ  ＤＰＡ  ａｔ  ｔｈｅ  Ｌｏｇｉｃ  Ｌｅｖｅｌ：  Ｎｅｘｔ  Ｇｅｎｅｒａｔｉｏｎ  Ｓｍａｒｔ  Ｃａｒｄ  Ｔｅｃｈｎｏｌｏｇｙ"，ＣＨＥＳ  ２００３，ＬＮＣＳ  ２７７９，ｐｐ．１２５−１３６．
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、上記問題点に鑑みてなされたものであり、不要な過渡遷移を生じさせることなく、また遅延差も少なくした論理回路による演算処理構成を実現するものであり、例えば、ＤＰＡ攻撃による秘密情報漏洩の可能性を低減させて、攻撃に対する耐性を高めた演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明の第１の側面は、
入力ビットのデータ変換処理を実行する演算処理装置であり、
入力ビットをセレクト信号として設定した複数のセレクタによる階層構成を有し、定数項を複数の最下層セレクタから入力して、前記セレクト信号に従って上層セレクタへ前記定数項を転送して最上層セレクタから選択された定数項を出力する論理回路と、
前記論理回路を適用したデータ変換処理の制御を行なう制御部を有し、
前記制御部は、
前記論理回路を構成するセレクタに対する入力値を全て同一値とするプリチャージ・フェーズと、
前記入力ビットに対応する出力ビットの生成を実行するエバリュエーション・フェーズと、
上記２つのフェーズを交互に実行させ、前記プリチャージ・フェーズにおいて前記セレクト信号に相当する入力ビットの遷移処理を実行することを特徴とする演算処理装置にある。
【００２０】
さらに、本発明の演算処理装置の一実施態様において、前記論理回路を構成するセレクタは、前記定数項の１つと、前記セレクト信号を入力する第１アンドゲートと、前記定数項の１つと、前記セレクト信号の反転値である反転セレクト信号を入力する第２アンドゲートと、前記第１アンドゲートおよび第２アンドゲートの出力を入力とするオアゲートによって構成され、前記制御部は、前記プリチャージ・フェーズにおいて、前記第１アンドゲートおよび第２アンドゲートの入力をすべて同一値に設定する制御を実行する構成であることを特徴とする。
【００２１】
さらに、本発明の演算処理装置の一実施態様において、前記論理回路を構成するセレクタは、前記セレクト信号および前記セレクト信号の反転セレクト信号の入力部を有し、さらに、前記セレクト信号入力部の前段に設定された演算回路と、前記反転セレクト信号の前段に設定された演算回路と、前記定数項を入力する複数の最下層セレクタの前段に設定された演算回路と、を有し、前記演算回路は、プリチャージ信号の入力可能な演算回路であり、前記制御部は、前記演算回路に対するプリチャージ信号の切り替えにより、前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行う構成であることを特徴とする。
【００２２】
さらに、本発明の演算処理装置の一実施態様において、前記演算回路は、一方の入力をプリチャージ信号としたアンドゲートによって構成され、前記制御部は、前記アンドゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行う構成であることを特徴とする。
【００２３】
さらに、本発明の演算処理装置の一実施態様において、前記演算回路は、一方の入力をプリチャージ信号としたオアゲートによって構成され、前記制御部は、前記オアゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行う構成であることを特徴とする。
【００２４】
さらに、本発明の演算処理装置の一実施態様において、前記論理回路を構成するセレクタは、同一値を入力値とする複数のセレクタを１つのセレクタとした共有セレクタを有する構成であることを特徴とする。
【００２５】
さらに、本発明の演算処理装置の一実施態様において、前記論理回路を構成するセレクタは、反転出力を行なうセレクタおよび反転入力を行なうセレクタであることを特徴とする。
【００２６】
さらに、本発明の演算処理装置の一実施態様において、前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力を固定値とし、前記エバリュエーション・フェーズにおいて、前記定数項または乱数を前記最下層セレクタの入力として設定する構成であることを特徴とする。
【００２７】
さらに、本発明の演算処理装置の一実施態様において、前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力をランダムに０または１とするように前記ゲート回路の出力制御を行う構成であることを特徴とする。
【００２８】
さらに、本発明の演算処理装置の一実施態様において、前記論理回路は、二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた構成を有することを特徴とする。
【００２９】
さらに、本発明の演算処理装置の一実施態様において、前記論理回路は、入力ビットのデータ変換処理として、入力ビットの非線形変換処理を実行する構成であることを特徴とする。
【００３０】
さらに、本発明の第２の側面は、
演算処理装置において入力ビットのデータ変換処理を実行する演算処理制御方法であり、
前記演算処理装置は、
入力ビットをセレクト信号として設定した複数のセレクタによる階層構成を有し、定数項を複数の最下層セレクタから入力して、前記セレクト信号に従って上層セレクタへ前記定数項を転送して最上層セレクタから選択された定数項を出力する論理回路を有し、
前記論理回路を適用したデータ変換処理の制御を行なう制御部が、
前記論理回路を構成するセレクタに対する入力値を全て同一値とするプリチャージ・フェーズと、
前記入力ビットに対応する出力ビットの生成を実行するエバリュエーション・フェーズと、
上記２つのフェーズを交互に実行させ、前記プリチャージ・フェーズにおいて前記セレクト信号に相当する入力ビットの遷移処理を実行することを特徴とする演算処理制御方法にある。
【００３１】
さらに、本発明の演算処理制御方法の一実施態様において、前記論理回路を構成するセレクタは、前記定数項の１つと、前記セレクト信号を入力する第１アンドゲートと、前記定数項の１つと、前記セレクト信号の反転値である反転セレクト信号を入力する第２アンドゲートと、前記第１アンドゲートおよび第２アンドゲートの出力を入力とするオアゲートによって構成され、前記制御部は、前記プリチャージ・フェーズにおいて、前記第１アンドゲートおよび第２アンドゲートの入力をすべて同一値に設定する制御を実行することを特徴とする。
【００３２】
さらに、本発明の演算処理制御方法の一実施態様において、前記論理回路を構成するセレクタは、前記セレクト信号および前記セレクト信号の反転セレクト信号の入力部を有し、さらに、前記セレクト信号入力部の前段に設定された演算回路と、前記反転セレクト信号の前段に設定された演算回路と、前記定数項を入力する複数の最下層セレクタの前段に設定された演算回路と、を有し、前記演算回路は、プリチャージ信号の入力可能な演算回路であり、前記制御部は、前記演算回路に対するプリチャージ信号の切り替えにより、前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行うことを特徴とする。
【００３３】
さらに、本発明の演算処理制御方法の一実施態様において、前記演算回路は、一方の入力をプリチャージ信号としたアンドゲートによって構成され、前記制御部は、前記アンドゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行うことを特徴とする。
【００３４】
さらに、本発明の演算処理制御方法の一実施態様において、前記演算回路は、一方の入力をプリチャージ信号としたオアゲートによって構成され、前記制御部は、前記オアゲートの一方の入力であるプリチャージ信号の切り替えを実行して前記プリチャージ・フェーズと、前記エバリュエーション・フェーズとの切り替え制御を行うことを特徴とする。
【００３５】
さらに、本発明の演算処理制御方法の一実施態様において、前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力を固定値とし、前記エバリュエーション・フェーズにおいて、前記定数項または乱数を前記最下層セレクタの入力として設定することを特徴とする。
【００３６】
さらに、本発明の演算処理制御方法の一実施態様において、前記制御部は、前記プリチャージ・フェーズにおいて、前記最下層セレクタの入力をランダムに０または１とする制御を行うことを特徴とする。
【００３７】
さらに、本発明の第３の側面は、
演算処理装置において入力ビットのデータ変換処理を実行させるコンピュータ・プログラムであり、
前記演算処理装置は、
入力ビットをセレクト信号として設定した複数のセレクタによる階層構成を有し、定数項を複数の最下層セレクタから入力して、前記セレクト信号に従って上層セレクタへ前記定数項を転送して最上層セレクタから選択された定数項を出力する論理回路を有し、
前記コンピュータ・プログラムは、
前記論理回路を構成するセレクタに対する入力値を全て同一値とするプリチャージ・フェーズと、
前記入力ビットに対応する出力ビットの生成を実行するエバリュエーション・フェーズと、
上記２つのフェーズを交互に実行させ、前記プリチャージ・フェーズにおいて前記セレクト信号に相当する入力ビットの遷移処理を実行させることを特徴とするコンピュータ・プログラムにある。
【００３８】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００３９】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４０】
本発明の構成によれば、非線形変換処理などのデータ変換処理を行う演算装置において、論理回路を構成するセレクタ入力値をすべて同一値に維持したプリチャージ・フェーズにおいて入力ビット遷移処理を実行させ、遷移処理終了後にエバリュエーション・フェーズへ移行してデータ変換処理に基づく出力ビット生成を行なう構成とした。プリチャージ・フェーズにおいては全てのセレクタ入力値を同一値とするリセットを実行するので、入力ビット遷移処理時の過渡遷移に基づく解析が困難となり、例えばＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）攻撃に対する耐性の高い演算装置が実現される。
【発明を実施するための最良の形態】
【００４１】
以下、本発明の演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラムの詳細について説明する。
【００４２】
以下、本発明の実施の形態として、共通鍵暗号方式であるＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）における本発明の適用例を説明する。共通鍵暗号方式であるＡＥＳは、例えば、入力１２８ビットの平文を１２８ビットの暗号文に変換する処理を行なう。従来の共通鍵暗号方式であるＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）と同様、データ変換処理単位としてのラウンド演算を繰り返し実行する構成を持つ。なお、本発明は、ＡＥＳやＤＥＳなどの共通鍵暗号処理のみならずＲＳＡなどの公開鍵暗号処理やＳＨＡ−１などのハッシュ関数の演算など、非線形変換処理や線形変換処理などのデータ変換処理を実行する各種の演算において適用可能である。
【００４３】
以下、下記の項目に従って、本発明について順次説明する。
１．共通鍵暗号方式の暗号処理を実行する基本構成について
２．ＢＤＤを用いた非線形変換部（Ｓ−Ｂｏｘ）の一般的構成について
３．本発明に従った非線形変換部の構成例１
４．本発明に従った非線形変換部の構成例２（セレクタの共有構成例）
５．本発明に従った非線形変換部の構成例３（反転出力セレクタおよび反転入力セレクタ利用構成）
６．本発明に従った非線形変換部の構成例４（乱数の入力構成）
７．本発明に従った非線形変換部の構成例５（ＯＲゲート利用構成）
８．暗号処理装置の構成例
【００４４】
［１．共通鍵暗号方式の暗号処理を実行する基本構成について］
図１にＡＥＳやＤＥＳなどの共通鍵暗号方式の暗号処理を実行する基本構成を示す。図１に示すように、共通鍵暗号の基本的な暗号処理構成は、鍵スケジュール部１０１と、データ変換部１１０からなる。鍵スケジュール部１０１は、秘密鍵１００を入力して、秘密鍵１００に基づいて各ラウンドにおいて適用するラウンド鍵を生成して各ラウンド演算部１５１−１〜１５１-ｎに出力する。
【００４５】
データ変換部１１０は、変換対象のデータを入力し、複数のラウンド演算部１５１−１〜１５１−ｎにおいて、鍵スケジュール部１０１から入力するラウンド鍵を適用し、データ変換を行って変換データを出力する。
【００４６】
ラウンド演算部１５１−１〜１５１−ｎでは同様のラウンド演算を繰り返し実行する。１つのラウンドでは、入力ビットの変換処理として、変換テーブルを利用した入力ビットの非線形変換や、線形変換、入力鍵（ラウンド鍵）を適用したデータ変換処理などが実行される。その結果に基づいて次のラウンド演算部の入力が生成される。
【００４７】
例えば、ＡＥＳ暗号では、ラウンド演算部１５１−１〜１５１−ｎにおいて実行される非線形変換処理はＳｕｂＢｙｔｅと呼ばれる。このＳｕｂＢｙｔｅと呼ばれる非線形変換処理は、予め用意された非線形変換テーブル（Ｓ−Ｂｏｘテーブル）を利用した変換処理として実行される。
【００４８】
図２にＡＥＳ暗号処理の詳細構成を示す。鍵スケジュール部２０１は、秘密鍵２００を入力して、秘密鍵２００に基づいて各ラウンドにおいて適用するラウンド鍵を生成して各ラウンド演算部２１０に出力する。ＡＥＳ暗号におけるラウンド演算部２１０は、図に示すように、ラウンド鍵との排他的論理和演算を実行する排他的論理和演算部２１１、ＳｕｂＢｙｔｅと呼ばれる非線形変換処理を実行するＳ−Ｂｏｘ２１２、各Ｓ−Ｂｏｘ２１２の出力の入れ替え処理を実行するＭｉｘ−Ｃｏｌｕｍ２１３、さらにＭｉｘ−Ｃｏｌｕｍ２１３とラウンド鍵との排他的論理和演算を実行する排他的論理和演算部２１４、排他的論理和演算部２１４の出力に対して非線形変換処理を実行するＳ−Ｂｏｘ２１５によって構成される。なお、これらの各処理は、図に示すように８ビットデータに分割されたデータを単位として実行される。
【００４９】
なお、ラウンド演算は繰り返し実行されるが、ＡＥＳ暗号演算実行部をハードウェアとして構成する場合は、繰り返し実行されるラウンド演算部を１つ構成し、繰り返し利用する構成とする。例えば、図３にＡＥＳ暗号を実行するハードウェア構成例を示す。
【００５０】
ＡＥＳ暗号演算実行部２５０は、最初のラウンド鍵０を入力して、排他的論理和演算部２５１において、暗号処理対象データ（１２８ビット）と排他的論理和演算処理を実行し、セレクタ２５２を介してレジスタ２５３に入力し、レジスタ２５３から８ビットデータ単位で、Ｓ−Ｂｏｘ２５４において非線形変換処理が実行され、Ｍｉｘ−Ｃｏｌｕｍ２５５においてビット値入れ替えがなされ、セレクタ２５６を介して排他的論理和演算部２５７においてラウンド鍵との排他的論理和演算が実行され、この結果データが再びセレクタ２５２を介してレジスタ２５３に入力されて、Ｓ−Ｂｏｘ２５４に入力される。この処理が繰り返し実行され、予め規定されたラウンド数の処理が終了すると、結果データとしての暗号文がレジスタ２５３から出力される。
【００５１】
ラウンド演算部の非線形変換部であるＳ−Ｂｏｘの各々では、８ビットデータをそれぞれ入力して、非線形変換テーブル（Ｓ−Ｂｏｘテーブル）を適用して非線形変換処理を実行して出力８ビットを生成する。すなわち、１６個のＳ−Ｂｏｘの各々において８ビット毎の非線形変換データを順次生成して、１６×８＝１２８ビット分の非線形変換データを生成し出力する。図４に非線形変換処理に適用する変換テーブル（Ｓ−Ｂｏｘテーブル）を示す。
【００５２】
図４に示す変換テーブルにおいて、最上段の横ラインに示す（０，１，２，・・・ｄ，ｅ，ｆ）は変換処理対象となる入力８ビットの下位４ビットを１６進表現で示している。０〜ｆは、２進表現では００００〜１１１１に相当する。左端の縦ラインに示す（０，１，２，・・・ｄ，ｅ，ｆ）は変換処理対象となる入力８ビットの上位４ビットを１６進表現で示している。これらの上位、下位ビットの計８ビット（００００００００〜１１１１１１１１）に対する出力としての８ビットがテーブル内部に記録されている。
【００５３】
すなわち、入力ビットは８ビット００〜ＦＦ（００００００００〜１１１１１１１１）であり、２８＝２５６種類のビット状態がある。これを上位４ビットと下位４ビットに分割して、図４に示すテーブルを適用して２５６種類の出力８ビット００〜ＦＦ（００００００００〜１１１１１１１１）を決定する。
【００５４】
例えば、入力が１６進表現で００（２進表現で００００００００）である場合、図４に示すテーブルに基づいて出力が６３（１６進表現）となる。すなわち、左上端のテーブル値［６３］が出力値として選定される。また、入力がＣ０（１６進数）である場合、図４に示すテーブルに基づいて出力がＢＡ（１６進表現）となる。このように、ラウンド演算部における非線形変換処理は、図４に示された変換テーブルを適用した８ビット入力、８ビット出力の１対１写像を実行する。
【００５５】
［２．ＢＤＤを用いた非線形変換部（Ｓ−Ｂｏｘ）の一般的構成について］
このような非線形変換テーブル（Ｓ−Ｂｏｘテーブル）による変換処理を実行するハードウェアの回路構成例として、二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた構成がある。図５に非線形変換テーブル（Ｓ−Ｂｏｘテーブル）に基づく変換結果中の出力の下位１ビットを出力する論理回路としての二分決定グラフ（ＢＤＤ）を示す。
【００５６】
図５には、論理関数としての２入力１出力のセレクタを、第１層から第８層の階層構成として論理回路としての二分決定グラフ（ＢＤＤ）を示している。ピラミッド型の８層構造にセレクタが接続された構成を持つ。最終１ビットを出力するセレクタは、第１層のセレクタである。
【００５７】
第１層にはセレクタが１個、第２層にはセレクタが２個、第３層にはセレクタが４個、第４層にはセレクタが８個、第５層にはセレクタが１６個、第６層にはセレクタが３２個、第７層にはセレクタが６４個、第８層にはセレクタが１２８個あり、全部で２５５個のセレクタで構成されている。
【００５８】
第１層のセレクタ入力は第２層のセレクタ出力が供給され、
第２層のセレクタ入力は第３層のセレクタ出力が供給され、
第３層のセレクタ入力は第４層のセレクタ出力が供給され、
第４層のセレクタ入力は第５層のセレクタ出力が供給され、
第５層のセレクタ入力は第６層のセレクタ出力が供給され、
第６層のセレクタ入力は第７層のセレクタ出力が供給され、
第７層のセレクタ入力は第８層のセレクタ出力が供給され、
第８層のセレクタ入力は０もしくは１の定数項が供給される。
【００５９】
第８層のセレクタ入力は、図４に示す非線形変換テーブル（Ｓ−Ｂｏｘテーブル）に基づいて決定される０もしくは１の定数項であり、２５６ビットデータである。
図５に示す論理回路は、非線形変換結果としての出力８ビットの最下位ビットを出力する選択回路である。この場合、図５の最下段に示される第８層のセレクタ入力値としての２５６ビット［１０１１０１１１・・・１１１１００１０］は、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）の最下位ビットに対応するビット値として設定される。
【００６０】
例えば、図５の最下段に示される第８層のセレクタ入力値の左端のビット値［１］は図４に示すテーブルの最上段の左端に示す出力値である（６３）の最下位ビットに相当し、図５の最下段に示される第８層のセレクタ入力値の右端のビット値［０］は図４に示すテーブルの最下段の右端に示す出力値である（１６）の最下位ビットに相当する。
【００６１】
図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）の最下位ビットに対応するビット値のみを示す変換テーブルを図６に示す。この図６に示す１６×１６＝２５６個の出力値は、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）の最下位ビットに対応するビット値であり、このビット値が、図５に示す回路構成の第８層のセレクタ入力値として設定される。
【００６２】
各層のセレクタに入力するセレクト信号は、非線形変換対象データとして入力される１２８ビットを８ビット毎に分割した８−ｂｉｔの各１ビットが利用される。入力８−ｂｉｔ中の最上位ビット（ｉｎ［７］）が、第１層のセレクタに対するセレクト信号として入力され、第２番目のビット（ｉｎ［６］）が、第２層のセレクタに対するセレクト信号として入力され、以下、各層に各ビットが入力され、最下位ビット（ｉｎ［０］）は、第８層のセレクタに対するセレクト信号として入力される。
【００６３】
入力８ビットは、非線形変換対象データとしての１２８ビットの分割データであり、１２８ビットを構成する８ビット毎に、順次、入力値が変更（遷移）され、次々に８ビット単位で非線形変換処理が行なわれることになる。
【００６４】
各セレクタに入力されるセレクト信号が［０］の場合にはセレクタ入力の左側の入力が選択されて上位層に出力され、セレクト信号が［１］の場合にはセレクタ入力の右側が選択されて上位層に出力される。従って、セレクト信号８ビットが決まると、第８層のセレクタ入力２５６個のうちのひとつが出力される。第８層のセレクタ入力の定数は第１層から第８層のセレクト入力の順列で一意に決定される。
【００６５】
例えば、非線形変換対象データとしての入力８ビットが［００００００００］である場合、セレクト信号は、すべて［０］であり、すべてのセレクタにおいて、左側の入力が選択されて上位層に出力されることになり、結果として、図５の最下段に示される第８層のセレクタ入力値の左端のビット値［１］が最終的な出力（第１層のセレクタ出力）とされる。この出力は、図４に示すテーブルの最上段の左端に示す出力値である（６３）の最下位ビットに相当する。このように、非線形変換対象データとしての入力ビットの値（００００００００〜１１１１１１１１）の値に応じて、第８層のセレクタ入力２５６個のうちのひとつが出力される。これらの第８層のセレクタ入力２５６個のそれぞれは、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）の最下位ビットに対応するビット値である。
【００６６】
この図５に示す階層構成のセレクタからなる構成を８つ適用することで、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）の８ビット全てに対応するビット値を決定する。
【００６７】
図５に示す構成においては、最下段の第８層のセレクタ入力値としての２５６ビット［１０１１０１１１・・・１１１１００１０］は、図６を参照して説明したビット値、すなわち、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）の最下位ビットに対応するビット値として設定されている。
【００６８】
最下段の第８層のセレクタ入力値を、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最上位ビット〜最下位ビットの８種類を設定してその出力を組み合わせることで、入力８ビットを図４に示すテーブルによって非線形変換した結果としての出力８ビットを得ることができる。
【００６９】
このようにして、図４に示す非線形変換テーブル（Ｓ−Ｂｏｘテーブル）と同等の値を出力する構成が実現される。すなわち、図４に示す非線形変換テーブル（Ｓ−Ｂｏｘテーブル）と同等の値を出力される論理関数は図５のような二分決定グラフ（ＢＤＤ）によって構成することができる。
【００７０】
図５に示す論理回路には、先に説明したように、第１層にはセレクタが１個、第２層にはセレクタが２個、第３層にはセレクタが４個、第４層にはセレクタが８個、第５層にはセレクタが１６個、第６層にはセレクタが３２個、第７層にはセレクタが６４個、第８層にはセレクタが１２８個あり、全部で２５５個のセレクタで構成されている。これらのセレクタの構成例を図７に示す。
【００７１】
セレクタ２７０の構成はたとえば図７に示すように、Ｓ−ｂｏｘテーブルから求められる定数項ａとセレクト信号の反転値を入力するアンドゲート２７１、Ｓ−ｂｏｘテーブルから求められる定数項ｂとセレクト信号の信号値を入力するアンドゲート２７２、さらに、アンドゲート２７１，２７２の出力を入力するＯＲゲート２７３によって構成される。
【００７２】
例えば、セレクタに入力されるセレクト信号が［０］の場合にはセレクタ入力の定数項［ａ］が選択されて出力され、セレクト信号が［１］の場合にはセレクタ入力の定数項［ｂ］が選択されて出力される。
【００７３】
この図７に示す構成を持つセレクタが図５のような二分決定グラフ（ＢＤＤ）の各層に設定されて下位から上位層に順次、出力を決定していくことになる。しかしながら、このようなセレクタ構成を採用すると、それぞれの層のセレクト信号の入力タイミングが乱れによる過渡遷移が発生する。
【００７４】
過渡遷移について、図８を参照して説明する。図８（１）は、図５に示す従来型の二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路構成において、各層に入力される（ｐ）セレクト信号［ｉｎ］と、（ｑ）最終セレクタ出力［ｏｕｔ］の遷移を示すタイミングチャートであり、
【００７５】
図８（２）は、図８（１）に示すデータ領域２８１の拡大図である。（ｐ）セレクト信号［ｉｎ］は、例えば図５の論理回路における第１層から第８層までの８つのセレクタ層に対する８つの入力ビットの遷移タイミングが図８（２）（ｐ）セレクト信号［ｉｎ［０］〜［７］］に示す信号線の交差領域で発生する。この入力８ビットの遷移は、完全な同一タイミングで発生させることは困難であり、各入力ビットの遷移タイミングにはずれが発生することになる。
【００７６】
従って、入力８ビットの遷移が開始されてから完全に全ビットの遷移が終了するまでには、一定の期間を要することになる。これが、図８（２）に示すΔｔの遷移期間に相当する。このような、遷移期間において、図８（２）（ｑ）に示す出力［ｏｕｔ］は、８層のセレクタ層に対する入力８ビットの遷移に応じて、出力値を変化させることになる。図８（２）（ｑ）に示す点線部では、セレクト信号の遷移タイミングのずれに応じた出力値変化が発生する。
【００７７】
この出力値の変化の解析により、二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路構成で利用されている信号値が解析される可能性がある。すなわち、先に背景技術の欄で説明したように、この過渡遷移に起因して、ＤＰＡ攻撃によって秘密情報が漏洩してしまうことがある。
【００７８】
なお、背景技術の欄で説明したように、この過渡遷移を防止する従来構成としてＷＤＤＬ（Ｗａｖｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｄｙｎａｍｉｃ  Ｌｏｇｉｃ）を用いた対策が開示されているが、ＷＤＤＬは相補的入出力が存在し、その入出力の遅延差をなくすようにレイアウトを行なわなければならないというレイアウト構築の困難性という問題がある。さらに演算構成上で２つの演算入力に対して大幅な遅延差がある場合には、ＤＰＡ攻撃を確実に防止できないという問題がある。
【００７９】
［３．本発明に従った非線形変換部の構成例１］
本発明は、不要な過渡遷移を生じさせることなく、また遅延差も少なくした論理回路による演算処理構成を実現するものである。以下、本発明に従った非線形変換部（Ｓ−Ｂｏｘ）の実施例について説明する。
【００８０】
本発明の暗号処理装置は、共通鍵ブロック暗号に従った暗号処理を実行する暗号処理装置であり、入力ビットの非線形変換処理を実行して出力ビットを生成する論理回路と、この論理回路に対する入力ビットの切り替え処理としての入力ビット遷移処理を、論理回路の出力を固定値に維持したプリチャージ・フェーズにおいて実行させ、入力ビット遷移処理が終了した後、エバリュエーション・フェーズへ移行させて遷移後の入力ビットの非線形変換処理に基づく出力ビットの生成処理を行なわせる制御部とを有する。
【００８１】
非線形変換処理を実行する本発明に係るピラミッド型のセレクタ階層構成を持つ二分決定グラフ（ＢＤＤ）の基本構成を図９に示す。図９に示すように本実施例におけるＳ−Ｂｏｘを構成する論理回路は、図５を参照して説明したピラミッド型のセレクタ階層構成を持つ二分決定グラフ（ＢＤＤ）と同様８層のピラミッド型セレクタ構成を有する。最下層の第８層のセレクタ入力は、図５を参照して説明した第８層のセレクタの入力値と同様の定数項であり、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最上位ビット〜最下位ビットの８種類のいずれかである。
【００８２】
図９に示す論理回路に、第１層にはセレクタが１個、第２層にはセレクタが２個、第３層にはセレクタが４個、第４層にはセレクタが８個、第５層にはセレクタが１６個、第６層にはセレクタが３２個、第７層にはセレクタが６４個、第８層にはセレクタが１２８個あり、全部で２５５個のセレクタで構成されている。これらのセレクタには、図９に示すようにセレクト信号と反転セレクト信号の２つの信号が入力される。セレクタの構成例を図１０に示す。
【００８３】
図１０に示すようにセレクタ３００は、Ｓ−ｂｏｘテーブルから求められる定数項ａとセレクト信号の反転値を入力するアンドゲート３０１、Ｓ−ｂｏｘテーブルから求められる定数項ｂとセレクト信号の信号値を入力するアンドゲート３０２、さらに、アンドゲート３０１，３０２の出力を入力するＯＲゲート３０３によって構成される。
【００８４】
このセレクタ３００の構成は、先に図７を参照して説明したセレクタ２７０の構成と異なり、セレクト信号の入力と、反転セレクト信号とが独立に入力される構成となっている。すなわち、アンドゲート３０１，３０２の入力の４系統の信号は、それぞれ独立した信号となっている。先に図７を参照して説明したセレクタ２７０では、アンドゲート２７１に入力される反転セレクト信号と、アンドゲート２７２に入力されるセレクト信号は、１つの入力セレクト信号に基づいて生成された信号である点が、１０に示す構成と異なる点である。
【００８５】
なお、出力信号Ｃは、セレクタに入力されるセレクト信号が［０］の場合にはセレクタ入力の定数項［ａ］が選択されて出力され、セレクト信号が［１］の場合にはセレクタ入力の定数項［ｂ］が選択されて出力される点は、先に図１０を参照して説明したと同様である。
【００８６】
本発明の第１実施例に係る非線形変換処理を実行するＳ−Ｂｏｘとしての二分決定グラフ（ＢＤＤ）の具体的な論理回路構成例を図１１に示す。図１１に示す回路に設定されるセレクタは、図１０を参照して説明したセレクト信号と、反転セレクト信号を独立に入力可能とした構成をもつ。
【００８７】
図１１に示すように、本発明の第１実施例に係る非線形変換処理を実行する論理回路は、
第８層のセレクタ入力部の前段に演算回路（アンドゲート）、
各セレクタに対するセレクト信号入力部の前段に演算回路（アンドゲート）、
各セレクタに対する反転セレクト信号入力部の前段に演算回路（アンドゲート）、
これらの演算回路（アンドゲート）を設けている。
【００８８】
第８層のセレクタの入力は２５６個であり、２５６個のアンドゲート回路によって第８層のセレクタの入力値を生成する。２５６個のアンドゲート回路の一方の入力は、図５を参照して説明した第８層のセレクタの入力値と同様の定数項であり、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最上位ビット〜最下位ビットの８種類のいずれかである。
【００８９】
各層のセレクタに入力するセレクト信号は、非線形変換対象データとして入力される１２８ビットを８ビット毎に分割した８−ｂｉｔの各１ビットが利用される。入力８−ｂｉｔ中の最上位ビット（ｉｎ［７］）が、第１層のセレクタに対するセレクト信号として演算回路（アンドゲート）を介して入力され、第２番目のビット（ｉｎ［６］）が、第２層のセレクタに対するセレクト信号として演算回路（アンドゲート）を介して入力され、以下、各層に各ビットが演算回路（アンドゲート）を介して入力され、最下位ビット（ｉｎ［０］）は、第８層のセレクタに対するセレクト信号として演算回路（アンドゲート）を介して入力される。
【００９０】
なお、入力８ビットは、前述したように非線形変換対象データとしての１２８ビットの分割データであり、１２８ビットを構成する８ビット毎に、順次、入力値が変更（遷移）され、次々に８ビット単位で非線形変換処理が行なわれることになる。
【００９１】
各セレクタには、セレクト信号の他に反転セレクト信号も、演算回路（アンドゲート）を介して入力される。
【００９２】
このように、本実施例に係る論理回路は、
定数項の入力部である第８層のセレクタ入力部の前段に演算回路（アンドゲート）、
各セレクタに対するセレクト信号入力部の前段に演算回路（アンドゲート）、
各セレクタに対する反転セレクト信号入力部の前段に演算回路（アンドゲート）、
これらの演算回路（アンドゲート）を設けており、
第８層のセレクタの入力値をアンドゲート回路の出力値、
各セレクタに対するセレクト信号入力値をアンドゲート回路の出力値、
各セレクタに対する反転セレクト信号入力値をアンドゲート回路の出力値、
としている。これらの演算回路の処理によってプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）とエバリュエーション・フェーズ（Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅ）状態を設定可能としている。なお、これらのフェーズの移行制御や入力情報の設定、遷移制御は図示しない制御部によって実行される。
【００９３】
図１１に示す例は、図５と同様、図６に示すビット値、すなわち図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最下位ビットを定数項として設定した例を示している。従って、図１１に示す構成は、図５の構成と同様、非線形変換処理による出力８ビットの最下位ビットを出力する回路構成である。
【００９４】
図１１に示す第８層のセレクタに接続された２５６個のアンドゲート回路と、各層の８つのセレクト信号および８つの反転セレクト信号の入力部に接続されたそれぞれ８つのアンドゲート回路のもう一方の入力は、プリチャージ信号入力［ｐｒｃｈ］である。プリチャージ信号入力［ｐｒｃｈ］が［０］の場合には第８層のセレクタ入力の２５６個の入力、各層のセレクタに対するセレクト信号入力、各層のセレクタに対する反転セレクト信号入力、これらのすべてが０となる。この状態が、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）状態である。すなわち、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）では、すべてのセレクタ入力値が０となる。
【００９５】
プリチャージ信号入力［ｐｒｃｈ］が［１］の場合には、定数項が第８層のセレクタ入力として設定され、さらに、真のセレクト信号と反転セレクト信号、すなわち、非線形変換対象データとして入力される１２８ビットを８ビット毎に分割した８−ｂｉｔのデータの値がセレクト信号として各セレクタに入力され、その反転値が反転セレクト信号とし各セレクタにアンドゲートを介して入力される。この入力状態が、エバリュエーション・フェーズ（Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅ）状態である。
【００９６】
本実施例においては、
８階層のセレクタを適用した出力ビットの算出処理を実行するエバリュエーション・フェーズ（Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅ）と、
セレクタ入力のすべてを０とするプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）と、
これらの２つのフェーズを交互に繰り返す。
【００９７】
各セレクタにおける入力値の遷移について、図１２を参照して説明する。図１２（ａ）には、先に図１０を参照して説明したセレクタ３００の構成を示している。図１２（ｂ）は、セレクタに対する入力信号の遷移を示している。図１２（ａ）に示すセレクタ３００は、Ｓ−ｂｏｘテーブルから求められる定数項ａとセレクト信号の反転値を入力するアンドゲート３０１、Ｓ−ｂｏｘテーブルから求められる定数項ｂとセレクト信号の信号値を入力するアンドゲート３０２、さらに、アンドゲート３０１，３０２の出力を入力するＯＲゲート３０３によって構成される。
【００９８】
図１２（ｂ）は、セレクタに対する入力信号の時間的遷移を示している。左から右に時間が推移し、フェーズが交互に切り替わり、セレクタ入力値が入れ替えられる。上述したように、本発明に従った論理回路では、セレクタに対するすべての入力を［０］とするプリチャージ・フェーズと、正しい定数項とセレクト信号、および反転セレクト信号をセレクタに入力して出力ビットの算出処理を実行するエバリュエーション・フェーズとを交互に繰り返す。
【００９９】
図１２（ｂ）は、セレクタに対する入力信号、すなわち、
定数項（ａ）の入力、
定数項（ｂ）の入力、
セレクト信号の入力、
反転セレクト信号の入力、
これらの入力値の時間的遷移を示している。これらの入力は、すべて一方の入力をプリチャージ信号としたアンドゲートを介して入力されており、プリチャージ信号は、プリチャージ・フェーズでは［０］、エバリュエーション・フェーズでは［１］となる。
【０１００】
最初のプリチャージ・フェーズでは、プリチャージ信号は［０］に設定されるので、すべてのセレクタ入力値は［０］となる。その後のエバリュエーション・フェーズでは、プリチャージ信号は［１］に設定され、定数項、セレクト信号、反転セレクト信号のそれぞれの正しい値がセレクタに入力される。このエバリュエーション・フェーズにおいて、１組の８ビットのセレクト信号に対応する出力値（非線形変換結果）が、最上段（第１層）のセレクタから出力される。
【０１０１】
さらに、このエバリュエーション・フェーズの後、プリチャージ・フェーズに移行し、すべてのセレクタ入力値は［０］に設定される。このプリチャージ・フェーズ期間において、セレクト信号と反転セレクト信号は次の入力値（８ビット）に入れ替えられる。プリチャージ・フェーズ期間が終了すると、エバリュエーション・フェーズに移行し、新たなセレクト信号と反転セレクト信号に基づいて新たな８ビットのセレクト信号に対応する出力値（非線形変換結果）が、最上段（第１層）のセレクタから出力される。
【０１０２】
このようにして、エバリュエーション・フェーズとプリチャージ・フェーズとを交互に繰り返し実行する。この構成によれば、各セレクタにおける新たなセレクト信号の入力タイミングは、常にセレクタ入力がオール０のプリチャージ・フェーズからエバリュエーション・フェーズへの切り替え時となる。このタイミングにおけるセレクタ入力値変化は、すべて［０］から真の入力値への変化として設定される。従って、先に図８を参照して説明した過渡遷移、すなわち８層の各セレクタ層に対する真のデータ値である８ビットの遷移に応じた出力値変化を電力変化として解析することは困難となる。
【０１０３】
すなわち、セレクタに対するセレクト信号の遷移は、セレクタ入出力が［０］に維持されるプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）への移行後、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）が定常状態になった時点に実行される。従って、各層のセレクト信号の遷移タイミングがずれても、セレクタ出力は［０］のままに維持され、出力値［ｏｕｔ］が変化せず、過渡遷移に基づく出力値の遷移状態を検出されることがなく秘密情報の漏洩防止が可能となる。
【０１０４】
本実施例の構成では、１組の８ビットのセレクト信号に対応する出力値が決定された後、すべてのセレクタに対する入力をすべて［０］とする初期状態にリセットし、リセット状態から新たなセレクト信号の入力が実行される構成としている。本構成によりセレクト信号の切り替えに伴って発生するセレクト信号の遷移に依存した出力値変化を発生させることがなく、二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路で利用されている信号値が解析される可能性を低減させることが可能となり、ＤＰＡ攻撃に対する耐性を高めることが可能となる。
【０１０５】
図１３を参照して、エバリュエーション・フェーズとプリチャージ・フェーズとを交互に繰り返し実行する場合の、非線形変換部としてのＳ−Ｂｏｘ（ＢＢＤ）に対する入力信号の切り替え処理構成例について説明する。
【０１０６】
図１１を参照して説明したように、非線形変換部としての論理回路である二分決定グラフ（ＢＤＤ）としてのＳ−Ｂｏｘにはセレクト信号および反転セレクト信号が入力され、さらに、第８層から定数項が入力される。エバリュエーション・フェーズにおいては、これらはすべて真の入力値が入力されるが、プリチャージ・フェーズにおいては、これらの値はすべて［０］に切り替えられることになる。
【０１０７】
図１３に示すＳ−Ｂｏｘ（ＢＢＤ）に対する入力信号の切り替え処理実行部の構成において、データレジスタ３２１には、非線形変換処理対象としてのデータが入力され、データレジスタ制御部３２４の制御により、８ビット単位のデータが順次出力される。この８ビットデータが、エバリュエーション・フェーズにおいて、セレクト信号および反転セレクト信号としてＳ−Ｂｏｘ（ＢＢＤ）３２３に入力される。反転セレクト信号は反転素子３２２においてセレクト信号に対する反転処理が実行されて生成される。
【０１０８】
プリチャージ制御部３２５は、エバリュエーション・フェーズにおいては、プリチャージ信号［１］を出力する。この処理によって、エバリュエーション・フェーズにおいて、セレクト信号および反転セレクト信号がＳ−Ｂｏｘ（ＢＢＤ）３２３のセレクタに入力される。なお、図では示していないが、プリチャージ信号［１］は、Ｓ−Ｂｏｘ（ＢＢＤ）３２３内の最下層のセレクタの前段の定数項入力部を持つアンドゲートの一方の入力としても利用されており、エバリュエーション・フェーズにおいては、定数項が最下層のセレクタに入力され、真の非線形変換結果がＳ−Ｂｏｘ（ＢＢＤ）３２３から出力される。
【０１０９】
プリチャージ・フェーズにおいては、プリチャージ制御部３２５からプリチャージ信号、すなわち全てのセレクト信号、反転セレクト信号、および第８層入力値のすべてを［０］とするためのプリチャージ信号［０］がＳ−Ｂｏｘ（ＢＢＤ）３２３に入力される。この場合は、Ｓ−Ｂｏｘ（ＢＢＤ）３２３を構成するすべてのセレクタ入力は０となり、Ｓ−Ｂｏｘ（ＢＢＤ）３２３出力も０とされる。
【０１１０】
データレジスタ制御部３２４およびプリチャージ制御部３２５には、クロック信号が入力され、エバリュエーション・フェーズにおいてはプリチャージ制御部から［１］が出力されて、データレジスタ制御部３２４からのセレクタ信号の出力が有効値としてＳ−Ｂｏｘ（ＢＢＤ）３２３において利用され、真の非線形変換結果が出力される。が実行され、プリチャージ・フェーズにおいてはプリチャージ制御部３２５からプリチャージ信号［０］が出力され、Ｓ−Ｂｏｘ（ＢＢＤ）３２３を構成するすべてのセレクタ入力は０となり、Ｓ−Ｂｏｘ（ＢＢＤ）３２３出力も０とされる。各信号の出力タイミングは各フェーズの切り替えにクロックに従って実行される。
【０１１１】
この構成を適用することで、エバリュエーション・フェーズにおいては、１組の８ビットのセレクト信号および反転セレクト信号がＳ−Ｂｏｘ３２３に入力され、その後、プリチャージ・フェーズに切り替わり、プリチャージ制御部３２５からのプリチャージ信号［０］がＳ−Ｂｏｘ３２３に入力され、すべてのセレクタの入力が［０］にリセットされる。さらに、次のエバリュエーション・フェーズにおいて、リセット状態から新たなセレクト信号の入力が開始されるという処理を繰り返し実行することが可能となる。この処理構成とすることで、セレクト信号の切り替えに伴って発生するセレクト信号の遷移に依存した出力値変化を発生させることがなく、二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路で利用されている信号値が解析される可能性を低減させることが可能となり、ＤＰＡ攻撃に対する耐性を高めることが可能となる。
【０１１２】
［４．本発明に従った非線形変換部の構成例２（セレクタの共有構成例）］
例えば図１１に示す二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路構成は、出力８ビット中の１ビットを出力するために適用される論理回路であり、入力８ビットから非線形変換結果としての出力８ビットを、並列に得るためには、図１１に示す二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路を８個、組み合わせて動作させることが必要である。
【０１１３】
このように各出力ビット対応の二分決定グラフ（ＢＤＤ）を用いた論理回路構成とする場合、回路規模が大きくなるが、回路規模の縮小のためセレクタを共有する構成が可能である。
【０１１４】
図１４を参照して、セレクタの共有化構成について説明する。例えば、図１４（Ａ）に示すように、同一の入力値を持つ複数のセレクタ３５１，３５２が存在する場合、これらの複数のセレクタを１つのセレクタとして構成する。すなわち、図１４（Ｂ）に示すように、セレクタ３５１，３５２の代用として１つのセレクタ３６１を設ける。このセレクタ共有化処理により、二分決定グラフ（ＢＤＤ）を用いた論理回路構成を小さくすることが可能であり、回路規模の縮小およびコストダウンが可能となる。また、回路規模の削減により消費電流も小さくすることができる。
【０１１５】
［５．本発明に従った非線形変換部の構成例３（反転出力セレクタおよび反転入力セレクタ利用構成）］
次に、本発明の実施例３として、反転出力セレクタおよび反転入力セレクタを利用した構成例について説明する。図１５を参照して本発明の実施例３の構成および処理について説明する。
【０１１６】
本発明の第３の実施形態は、先に図１１を参照して説明した実施例１の二分決定グラフ（ＢＤＤ）を用いた論理回路構成において適用するセレクタを偶数階層の場合には反転出力セレクタと、奇数階層の場合には反転入力セレクタとした構成である。セレクタは８階層であり、偶数回の反転が行なわれることになる。従って、最終出力は８階層のセレクタとした場合も、合わせて８階層の反転出力セレクタおよび反転入力セレクタとした場合も同一となる。
【０１１７】
反転出力つきセレクタおよび反転入力つきセレクタは、図１１を参照して説明した構成において使用するセレクタよりも占有面積が小さくできる。従って、よって回路規模を削減でき、消費電流も小さくできる。
【０１１８】
なお、本構成においても、
（ａ）エバリュエーション・フェーズにおいては、セレクタ入力は、真の出力値（非線形変換結果）を得るための入力値として、８ビット単位の非線形変換処理対象としてのデータであるセレクト信号および反転セレクト信号が各セレクタに入力され、第８層のセレクタには、非線形変換テーブル（Ｓ−Ｂｏｘテーブル）に基づいて設定される定数項（例えば図４、図６に示すテーブル参照）が入力される。
（ｂ）プリチャージ・フェーズにおいては、すべてのセレクタ入力は［０］、すなわち、セレクト信号、反転セレクト信号、および定数項入力がなされる最下層のセレクタ入力も［０］に設定される。
【０１１９】
すなわち、反転出力つきセレクタおよび反転入力つきセレクタに対するセレクト信号［ｉｎ］の遷移は、すべてのセレクタ入力が［０］とされるプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）と、真の出力値（非線形変換結果）を得るための定数項、セレクト信号、反転セレクト信号が入力されるエバリュエーション・フェーズ（Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅ）とが交互に繰り返される。
【０１２０】
この構成においても、プリチャージ・フェーズでは、すべてのセレクタの入力が［０］にリセットされ、次のエバリュエーション・フェーズにおいて、リセット状態から新たなセレクト信号の入力が開始されるという処理を繰り返し実行される。セレクタに対するセレクト信号の遷移は、セレクタ入出力が［０］に維持されるプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）への移行後、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）が定常状態になった時点に実行される。従って、各層のセレクト信号の遷移タイミングがずれても、セレクタ出力は［０］のままに維持され、出力値［ｏｕｔ］が変化せず、過渡遷移に基づく出力値の遷移状態を検出されることがない。すなわち、セレクト信号の遷移に依存した出力値変化を発生させることがなく、二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路で利用されている信号値が解析される可能性を低減させることが可能となり、ＤＰＡ攻撃に対する耐性を高めることが可能となる。
【０１２１】
［６．本発明に従った非線形変換部の構成例４（乱数の入力構成）］
次に、本発明の実施例４として、乱数入力を利用した構成例について説明する。図１６を参照して本発明の実施例４の構成および処理について説明する。
【０１２２】
本発明の第４の実施形態は、先に図１１を参照して説明した実施例１の二分決定グラフ（ＢＤＤ）を用いた論理回路構成において、第８層の入力値を生成するアンドゲート回路に対する一方の入力値を実施例１とは異なる設定としている。
【０１２３】
実施例１では、先に説明したように、２５６個のアンドゲート回路の一方の入力は、図５を参照して説明した第８層のセレクタの入力値と同様の定数項であり、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最上位ビット〜最下位ビットの８種類のいずれかの定数項である。例えば、図１１に示す例は、図６に示すビット値、すなわち図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最下位ビットを定数項として設定した例である。
【０１２４】
すなわち、実施例１では、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最上位ビット〜最下位ビットのビット値［０］または［１］に従った２５６個の定数項からなるビット値がアンドゲート回路に対する入力値としてそのまま適用されていた。本実施例４では、この２５６個のアンドゲート回路の入力を定数項、およびその反転値、乱数、これらを適宜、組み合わせて入力する設定とする。
【０１２５】
具体的には、例えば、
（ａ１）実施例１と同様の非線形変換テーブル（Ｓ−Ｂｏｘテーブル）の出力値対応のビット値からなる定数項、
（ａ２）上記定数項の反転値、
（ａ３）乱数
これら（ａ１）〜（ａ３）のデータを入力値として適用する。（ａ１）〜（ａ３）のすべてを利用する構成やいずれか２つを組み合わせて利用する構成などが可能である。
【０１２６】
なお、この場合には、どのタイミングで（ａ１）〜（ａ３）のいずれのデータが入力されたかを示す管理情報を保持し、管理情報に従って、正しい出力値を取得することになる。なお、（ａ２）の定数項の反転値を入力した場合の最終出力は正式な出力ビットの反転値（正式出力が１の場合０、０の場合１）となるため、出力を反転させて正式な出力ビットとして適用することが可能である。
【０１２７】
具体的には、例えば、図１６に示す回路を非線形変換結果の８ビット中の最下位ビットを得るための回路とする場合、図４に示すテーブルに示される２５６個の出力値（６３，７Ｃ，７７・・・５４，ＢＢ，１６）各々の最下位ビットのビット値、すなわち、先に図６を参照して説明したビット値［１，０，１，１，０・・・，０，０，１，０］を入力するか、あるいはその反転入力としての反転ビット値［０，１，０，０，１・・・，１，１，０，１］を入力する設定とする。この反転値入力に基づいて得た出力を反転処理することで、正式な非線形変換出力ビットを得ることができる。
【０１２８】
この実施例においては、定数項入力のみならず、乱数の入力を行なうので、セレクタ出力におけるビットの０および１の生起確率が平均化され、ＤＰＡ解析をさらに困難とすることが可能となる。
【０１２９】
なお、本構成においては、
（ａ）エバリュエーション・フェーズにおいて。
（ａ１）実施例１と同様の非線形変換テーブル（Ｓ−Ｂｏｘテーブル）の出力値対応のビット値からなる定数項、
（ａ２）上記定数項の反転値、
（ａ３）乱数、
これら（ａ１）〜（ａ３）のデータを入力値として適用する。なお（ａ１）〜（ａ３）のすべてを利用する構成やいずれか２つを組み合わせて利用する構成などが可能である。適用する乱数は、論理関数８組のそれぞれにおいて同一のものを適用してもよいし異なるものを適用してもよい。さらに、
（ｂ）プリチャージ・フェーズにおいては、すべてのセレクタ入力は［０］、すなわち、セレクト信号、反転セレクト信号、および定数項入力がなされる最下層のセレクタ入力も［０］に設定される。
【０１３０】
すなわち、本実施例では、セレクタに対するセレクト信号［ｉｎ］の遷移は、すべてのセレクタ入力が［０］とされるプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）と、
セレクト信号、反転セレクト信号は、真の設定値が入力され、最下層のセレクタ入力として、
（ａ１）実施例１と同様の非線形変換テーブル（Ｓ−Ｂｏｘテーブル）の出力値対応のビット値からなる定数項、
（ａ２）上記定数項の反転値、
（ａ３）乱数、
これらのいずれかの信号が入力されるエバリュエーション・フェーズ（Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅ）とが交互に繰り返される。ただし、この構成の場合には、どのタイミングで（ａ１）〜（ａ３）のいずれのデータが入力されたかを示す管理情報を保持し、管理情報に従って、正しい出力値を取得する。
【０１３１】
この構成においても、プリチャージ・フェーズでは、すべてのセレクタの入力が［０］にリセットされ、次のエバリュエーション・フェーズにおいて、リセット状態から新たなセレクト信号の入力が開始されるという処理を繰り返し実行される。セレクタに対するセレクト信号の遷移は、セレクタ入出力が［０］に維持されるプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）への移行後、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）が定常状態になった時点に実行される。従って、各層のセレクト信号の遷移タイミングがずれても、セレクタ出力は［０］のままに維持され、出力値［ｏｕｔ］が変化せず、過渡遷移に基づく出力値の遷移状態を検出されることがない。すなわち、セレクト信号の遷移に依存した出力値変化を発生させることがなく、二分決定グラフ（ＢＤＤ：  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）を用いた論理回路で利用されている信号値が解析される可能性を低減させることが可能となり、ＤＰＡ攻撃に対する耐性を高めることが可能となる。
【０１３２】
［７．本発明に従った非線形変換部の構成例５（ＯＲゲート利用構成）］
上述した各実施例においては、各層のセレクト信号の遷移処理を実行するタイミングにおいて、プリチャージ信号［ｐｒｃｈ］＝［０］として、セレクタ入力をオール［０］に維持するリセット処理（初期化処理）を実行する構成として説明したが、このリセット処理（初期化処理）タイミングにおいて、各層のセレクタ入力をオール［０］とするのではなくオール［１］とする構成としても、過渡遷移によるＤＰＡ攻撃を困難化することが可能である。
【０１３３】
本実施例の二分決定グラフ（ＢＤＤ）を用いた論理回路構成を図１７に示す。本実施例の論理回路は、図１７に示すように、
定数項を入力する最下層のセレクタの前段、
セレクタに対するセレクト信号入力部、
セレクタに対する反転セレクト信号入力部、
これらの各構成部にＯＲゲートを設けた構成としている。
各オアゲートの１つの入力をプリチャージ信号の入力部として設定したものである。
【０１３４】
プリチャージ信号は前述の実施例とは異なり［１］として入力される。この場合、プリチャージ・フェーズでは、全てのセレクタ入力値が［１］に設定され、エバリュエーション・フェーズにおいては、真の定数項、セレクト信号および反転セレクト信号がセレクタに入力される。すなわち本実施例では、上述の各実施例と異なり、リセット状態ではすべてのセレクタ入力が［１］に設定される。
【０１３５】
この構成においても、セレクタに対するセレクト信号［ｉｎ］の遷移は、出力が［１］に維持されるプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）への移行後、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）が定常状態になった時点に実行される。従って、各層のセレクト信号の遷移タイミングがずれても、出力は［１］のままに維持され、出力値［ｏｕｔ］が変化せず、過渡遷移に基づく出力値の遷移状態を検出されることがなく秘密情報の漏洩防止が可能となる。
【０１３６】
さらに、各層のセレクト信号の遷移処理を実行するタイミングでの出力を［０］と［１］を不規則に変更する構成としてもよい。この構成は、第８層に入力する出力信号を生成するゲート回路の出力を、
オール１、または、
オール０、または、
定数項あるいは乱数、
これらの３種類の出力を選択して出力可能なゲート回路を構成し、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）において、オール１またはオール０の出力をランダムに選択するスイッチを設けてスイッチをランダムに切り替えて第８層のセレクタにオール０またはオール１を入力する構成とする。
【０１３７】
この構成においても、セレクタに対するセレクト信号［ｉｎ］の遷移は、出力を［０］または［１］のいずれかの選択された値とするプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）への移行後、プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）が定常状態になった時点に実行される。従って、各層のセレクト信号の遷移タイミングがずれても、出力はランダムに選択された［０］または［１］に維持される。従って、出力値［ｏｕｔ］が変化せず、過渡遷移に基づく出力値の遷移状態を検出されることがなく秘密情報の漏洩が防止される。
【０１３８】
なお、上述した各実施例は、単独で適用することも可能であるが、複数組み合わせた構成としてもよい、
【０１３９】
なお、上述した実施例では、共通鍵暗号処理における非線形変換処理例を中心として説明したが、本発明は、ＡＥＳやＤＥＳなどの共通鍵暗号処理のみならずＲＳＡなどの公開鍵暗号処理やＳＨＡ−１などのハッシュ関数の演算など、非線形変換処理や線形変換処理などのデータ変換処理を実行する各種の演算において適用可能である。
【０１４０】
［８．暗号処理装置の構成例］
最後に、暗号文の生成、あるいは暗号文の復号処理等の暗号処理を実行する暗号処理装置としてのＩＣモジュール５００の構成例について図１８を参照して説明する。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図１８に示すＩＣモジュール５００は、これら様々な機器に構成することが可能である。
【０１４１】
図１８に示すＣＰＵ(Central processing Unit)５０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行する制御部として機能するプロセッサである。メモリ５０２は、ＣＰＵ５０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ５０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ５０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。例えば暗号処理に適用する秘密鍵：Ｋが格納される。データ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１４２】
暗号処理部５０３は、上述した各実施例において説明した階層構成のセレクタ構成からなる二分決定グラフ（ＢＤＤ）を用いた論理回路構成を有し、上述したプリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）と、エバリュエーション・フェーズ（Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅ）を設定可能とした非線形変換処理回路を有する構成である。
【０１４３】
各フェーズの切り替え制御や、ゲート回路の出力制御、セレクタに対するセレクト信号の遷移、出力の選択処理など、上述した実施例において説明した論理回路から正当な出力を得るために必要となる制御は、例えば制御部としてのＣＰＵ５０１において予め設定されたプログラムに従って実行される。例えば暗号処理の実行プログラムをＲＯＭに格納し、ＣＰＵ５０１がＲＯＭ格納プログラムを読み出して、暗号処理部５０３に構成された二分決定グラフ（ＢＤＤ）を用いた論理回路構成を用いた処理を実行する。
【０１４４】
乱数発生器５０４は、暗号処理に適用する鍵、乱数情報の生成処理において適用される。あるいはデバイス間の認証処理において必要となる乱数生成、その他、暗号処理に必要となる乱数生成処理に適用される。乱数発生器５０４は、例えばＬＦＳＲ（線形フィードバックシフトレジスタ）を適用した乱数生成器、あるいは擬似乱数生成器などによって構成される。
【０１４５】
送受信部５０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１４６】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１４７】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１４８】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１４９】
上述した本発明の構成によれば、非線形変換処理などのデータ変換処理を行う演算装置において、論理回路を構成するセレクタ入力値をすべて同一値に維持したプリチャージ・フェーズにおいて入力ビット遷移処理を実行させ、遷移処理終了後にエバリュエーション・フェーズへ移行してデータ変換処理に基づく出力ビット生成を行なう構成とした。プリチャージ・フェーズにおいては全てのセレクタ入力値を同一値とするリセットを実行するので、入力ビット遷移処理時の過渡遷移に基づく解析が困難となり、例えばＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）攻撃に対する耐性の高い演算装置が実現される。
【図面の簡単な説明】
【０１５０】
【図１】ＡＥＳやＤＥＳなどの共通鍵暗号方式の暗号処理を実行する基本構成を示す図である。
【図２】ＡＥＳ暗号処理構成例を示す図である。
【図３】ＡＥＳ暗号処理を実行するハードウェア構成例を示す図である。
【図４】非線形変換処理に適用する変換テーブル（Ｓ−Ｂｏｘテーブル）を示す図である。
【図５】非線形変換テーブル（Ｓ−Ｂｏｘテーブル）に基づく変換結果中の出力の下位１ビットを出力する論理回路としての二分決定グラフ（ＢＤＤ）を示す図である。
【図６】図４に示すテーブルに示される２５６個の出力値の最下位ビットに対応するビット値のみを示す変換テーブルを示す図である。
【図７】図５に示す非線形変換論理回路に適用されるセレクタの構成例を示す図である。
【図８】過渡遷移について説明する図である。
【図９】プリチャージ・フェーズ（Ｐｒｅ−Ｃｈａｒｇｅ  Ｐｈａｓｅ）とエバリュエーション・フェーズ（Ｅｖａｌｕａｔｉｏｎ  Ｐｈａｓｅ）を設定可能とした論理回路構成を示す図である。
【図１０】図９に示す非線形変換論理回路に適用されるセレクタの構成例を示す図である。
【図１１】本発明の第１の実施形態としての非線形変換処理を実行する論理回路構成を示す図である。
【図１２】本発明の第１の実施形態としての論理回路における信号遷移を説明する図である。
【図１３】本発明の第１の実施形態としての非線形変換処理を実行する論理回路の制御構成例を示す図である。
【図１４】セレクタの共有化構成について説明する図である。
【図１５】反転出力セレクタおよび反転入力セレクタを利用した本発明の実施例構成について説明する図である。
【図１６】乱数入力構成を持つ本発明の実施例構成について説明する図である。
【図１７】オアゲートを持つ本発明の実施例構成について説明する図である。
【図１８】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１５１】
１０１  鍵スケジュール部
１１０  データ変換部
１１５  ラウンド演算部
２００  秘密鍵
２０１  鍵スケジュール部
２１０  ラウンド演算部
２１１  排他的論理和演算部
２１２  Ｓ−Ｂｏｘ
２１３  Ｍｉｘ−Ｃｏｌｕｍ
２１４  排他的論理和演算部
２１５  Ｓ−Ｂｏｘ
２５０  ＡＥＳ暗号演算実行部
２５１  排他的論理和演算部
２５２  セレクタ
２５３  レジスタ
２５４  Ｓ−Ｂｏｘ
２５５  Ｍｉｘ−Ｃｏｌｕｍ
２５６  セレクタ
２７０  セレクタ
２７１，２７２  アンドゲート
２７３  オアゲート
３００  セレクタ
３０１，３０２  アンドゲート
３０３  オアゲート
５００  ＩＣモジュール
５０１  ＣＰＵ(Central processing Unit)
５０２  メモリ
５０３  暗号処理部
５０４  乱数発生器
５０５  送受信部
【図１】
2008153806.tif 000003
【図４】
2008153806.tif 000004
【図５】
2008153806.tif 000005
【図６】
2008153806.tif 000006
【図７】
2008153806.tif 000007
【図８】
2008153806.tif 000008
【図９】
2008153806.tif 000009
【図１０】
2008153806.tif 000010
【図１１】
2008153806.tif 000011
【図１２】
2008153806.tif 000012
【図１３】
2008153806.tif 000013
【図１４】
2008153806.tif 000014
【図１５】
2008153806.tif 000015
【図１６】
2008153806.tif 000016
【図１７】
2008153806.tif 000017
【図１８】
2008153806.tif 000018
【図２】
2008153806.tif 000019
【図３】
2008153806.tif 000020