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