(57)【特許請求の範囲】
【請求項１】
ｎ（ｎ≧１）ビットのデータにｎビットの第１乱数が排他的論理和されたデータを示すＸＯＲデータと、ｎビットの第１乱数と、１ビットの第２乱数とを入力信号として入力し、ＸＯＲデータと第１乱数との排他的論理和によりｎビットのデータを算出し、算出したｎビットのデータのすべてのビットの所定の論理演算をとり所定の論理演算の結果と第２乱数との排他的論理和を出力信号として出力することを特徴とする電子素子。
【請求項２】
前記第１乱数は、
前記１ビットの第２乱数のｎビット連結を用いることを特徴とする請求項１記載の電子素子。
【請求項３】
前記電子素子は、
入力信号の状態遷移が完了した場合に、処理を実行して出力信号を出力することを特徴とする請求項１記載の電子素子。
【請求項４】
前記電子素子は、さらに、
出力信号の出力を指令する指令信号を入力するとともに、指令信号を入力した場合に、出力信号を出力することを特徴とする請求項１記載の電子素子。
【請求項５】
前記所定の論理演算は、
論理積（ＡＮＤ）、否定論理積（ＮＡＮＤ）、論理和（ＯＲ）、否定論理和（ＮＯＲ）、排他的論理和（ＸＯＲ）のうち、いずれかであることを特徴とする請求項１記載の電子素子。
【請求項６】
複数のトランジスタから構成され、第１乱数と第２乱数とｎビット（ｎ≧１）のデータとを入力して所定の信号を出力信号として出力する電子素子において、
第１乱数と第２乱数とｎビットのデータとを入力した場合に、
第１乱数とｎビットのデータとの排他的論理和を実行し排他的論理和の実行結果を示す各ビットのすべてのビットの所定の論理演算をとり所定の論理演算の結果と第２乱数との排他的論理和を実行することにより得られる結果と等価な結果を示す出力信号を、複数のトランジスタを同時にスイッチングすることにより出力することを特徴とする電子素子。
【請求項７】
前記第２乱数は１ビットであり、
前記第１乱数は、
前記１ビットの第２乱数のｎビット連結を用いることを特徴とする請求項６記載の電子素子。
【請求項８】
前記電子素子は、
出力信号の出力を指令する指令信号を入力するとともに、指令信号を入力した場合に、出力信号を出力することを特徴とする請求項６記載の電子素子。
【請求項９】
第１乱数と第２乱数とｎビット（ｎ≧１）のデータとを入力して所定の信号を出力信号として出力する電子素子において、
第１乱数と第２乱数とｎビットのデータとを入力する入力部と、
０と１とにより構成される論理データを格納する格納部と、
前記入力部が第１乱数と第２乱数とｎビットのデータとを入力した場合に、第１乱数とｎビットのデータとの排他的論理和を実行し排他的論理和の実行結果を示す各ビットのすべてのビットの所定の論理演算をとり所定の論理演算の結果と第２乱数との排他的論理和を実行することにより得られる結果と等価な結果を、スイッチングにより前記格納部が格納する論理データから取得し出力信号として出力する複数のトランジスタと
を備えたことを特徴とする電子素子。
【請求項１０】
前記第２乱数は１ビットであり、
前記第１乱数は、
前記１ビットの第２乱数のｎビット連結を用いることを特徴とする請求項９記載の電子素子。
【請求項１１】
前記複数のトランジスタは、
スイッチングを同時に行うことを特徴とする請求項９記載の電子素子。
【請求項１２】
前記入力部は、さらに、
出力信号の出力を指令する指令信号を入力し、
前記電子素子は、
指令信号を入力した場合に、出力信号を出力することを特徴とする請求項９記載の電子素子。
【請求項１３】
ｎビットのデータにｎビットの第１乱数が排他的論理和されたデータを示すＸＯＲデータと、ｎビットの第１乱数と、１ビットの第２乱数とを入力信号として入力し、ＸＯＲデータと第１乱数との排他的論理和によりｎビットのデータを算出し、算出したｎビットデータの各ビットのすべてのビットの所定の論理演算をとり所定の論理演算の結果と第２乱数との排他的論理和を出力信号として出力することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号アルゴリズムを実現する半導体デバイスを構成する電子素子に関する。例えば、デバイス内で処理される秘密情報をデバイスの消費電力から特定する攻撃に対して対抗する電子素子、データ処理方法に関する。
【背景技術】
【０００２】
従来の半導体デバイスに関する秘密情報保護のための対抗措置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に代表される、ある特定の半導体デバイスを利用したソフトウェアによる対抗措置と、半導体デバイスそのものへのハードウェアによる対抗措置の２つに大別される。【０００３】
前者のソフトウェアによる対抗措置は、ＩＣカードに代表されるＣＰＵとメモリとを併せ持つデバイス構成で実現される。例えば、特開２０００−０６６５８５号公報では、広範に用いられている共通鍵ブロック暗号ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に対して、そのアルゴリズムで使用されるＳ−ｂｏｘと呼ばれる置換テーブルを、あらかじめ決められた規則Ｘに従って乱数パラメータＲを用いて、アルゴリズムで規定されているＳ−ｂｏｘと異なる置換テーブルの複数個分を事前に計算し、メモリ上にその結果を格納する。アルゴリズムの処理の際は、平文データＭ（もしくは暗号文データＣ）と鍵データＫに加えて乱数パラメータＲを用いて暗号文データＣ（平文データＭ）を処理する。これにより、通常のＭ（Ｃ）とＫのみによる処理と比較して、Ｒのとりうる場合の数の分だけ処理フローが変化するため、それに伴う消費電力も多様化する。また、乱数パラメータＲを用いることで、処理の中間値は予測不能となるため、消費電力から秘密情報を解読することは不可能であると説明されている。この他に、特表２００２−５４０６５４号公報も類似の対抗措置であるが、前記の規則Ｘ及び乱数パラメータＲのとり方が異なるだけで、本質的には同等の対抗措置である。【０００４】
後者のハードウェアによる対抗措置は、アルゴリズムを半導体デバイスで実装する際の、その設計手法により実現される。例えば、特表２００３−５２６１３４号公報では、デジタル回路の基本素子であるＡＮＤゲートに対して、そのスイッチング特性が相補的な（打ち消しあうような）ＩＮＶ−ＡＮＤゲートを対に実装することを対抗措置としている（以下これをゲートペアと略記する）。これによりアルゴリズムの中間値にデバイスの消費電力が依存しないため、消費電力から秘密情報を解読することは不可能であると説明されている。また、類似の対抗措置として、特開２００２−３１１８２６号公報がある。これはゲート単位でペアを構成せずにある回路単位（この例の場合Ｓ−ｂｏｘを実現する回路）でペアを構成している。しかし、これは、見かけ上の違いだけで、本質的には特表２００３−５２６１３４号公報と全く同じ対抗措置である。【０００５】
上記従来のゲートペアによる対抗措置は、原理的に消費電力から秘密情報を解読される可能性がある。以下にその理由を説明する。【０００６】
ゲートペアの安全性の根拠はＡＮＤゲートとＩＮＶ−ＡＮＤゲートが完全に相補的な動作を行うことに基づいている。この条件を満たすためには、対となるＡＮＤゲートとＩＮＶ−ＡＮＤゲートが同じタイミングで動作し、かつそのゲートの先に接続される負荷が等しくなければならない。何故ならば、動作するタイミングが微小でもずれた場合、観測される消費電力にも時間差が発生し、それぞれのゲートに起因する電力は位相がずれて観測されるからである。また、あるゲートペアにおけるＡＮＤゲートとＩＮＶ−ＡＮＤゲートの負荷が異なる場合は、その２つゲートが動作した直後の消費電力が異なる。このため、どちらのゲートが動作したかが容易に判別可能となり、相補的な動作とはならない。相補的な動作を行うために追加したゲート（以下これをダミーゲートという）は、論理実現のためには不必要なゲートであり、そのゲートの出力は使用されない。よって、必要なゲートと比較して、ダミーゲートは、その先の負荷が小さくなる傾向にある。同一の負荷を実現するために、ゲートのペアではなく、回路全体に対してペアを形成した場合、例として特開２００２−３１１８２６号公報のような対抗措置の場合、対応するゲートペアが同じタイミングで動作することを保証するのは、非常に困難である。これらの問題は、ゲートペアまたは回路ペアが相補的な動作を実現するために、その出力ノードが２つ存在することに起因する。
【特許文献１】特開２０００-０６６５８５号公報
【特許文献２】特表２００２−５４０６５４号公報
【特許文献３】特表２００３−５２６１３４号公報
【特許文献４】特開２００２−３１１８２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、１つの出力ノードで原理的に相補的な動作を行う半導体素子を構成することで、前記の時間差の問題及び負荷の問題を解決することを目的とする。
【課題を解決するための手段】
【０００８】
この発明の電子素子は、
所定のデータと第１乱数との排他的論理和の結果を入力信号として入力し、入力した入力信号に基いて所定の論理演算を実行し、実行した論理演算の結果と第２乱数との排他的論理和を出力信号として出力することを特徴とする。【０００９】
この発明の電子素子は、
ｎ（ｎ≧１）ビットのデータにｎビットの第１乱数が排他的論理和されたデータを示すＸＯＲデータと、ｎビットの第１乱数と、１ビットの第２乱数とを入力信号として入力し、ＸＯＲデータと第１乱数との排他的論理和によりｎビットのデータを算出し、算出したｎビットのデータの各ビットを用いて所定の論理演算を実行し、実行した論理演算の結果と第２乱数との排他的論理和を出力信号として出力することを特徴とする。【００１０】
前記第１乱数は、
ｎビットの各ビットが同一の値であり、
前記第２乱数は、
前記第１乱数の各ビットの値と等しい値であることを特徴とする。【００１１】
前記電子素子は、
入力信号の状態変化に依存せず、過渡的な処理を行わずに出力信号を出力することを特徴とする。【００１２】
前記電子素子は、さらに、
出力信号の出力を指令する指令信号を入力するとともに、指令信号を入力した場合に、出力信号を出力することを特徴とする。【００１３】
前記所定の論理演算は、
論理積（ＡＮＤ）、否定論理積（ＮＡＮＤ）、論理和（ＯＲ）、否定論理和（ＮＯＲ）、排他的論理和（ＸＯＲ）のうち、いずれかであることを特徴とする。【００１４】
この発明の電子素子は、
複数のトランジスタから構成され、第１乱数と第２乱数とｎビット（ｎ≧１）のデータとを入力して所定の信号を出力信号として出力する電子素子において、
第１乱数と第２乱数とｎビットのデータとを入力した場合に、
第１乱数とｎビットのデータとの排他的論理和を実行し排他的論理和の実行結果を示す各ビットを用いて所定の論理演算を行い所定の論理演算の結果と第２乱数との排他的論理和を実行することにより得られる結果と等価な結果を示す出力信号を、複数のトランジスタのスイッチングにより出力することを特徴とする。【００１５】
前記第１乱数は、
各ビットが同一の値であるｎビットの乱数であり、
前記第２乱数は、
前記第１乱数の各ビットの値と等しい値である１ビットの乱数であることを特徴とする。【００１６】
前記電子素子は、
前記複数のトランジスタのスイッチングを同時に行うことを特徴とする。【００１７】
前記電子素子は、
出力信号の出力を指令する指令信号を入力するとともに、指令信号を入力した場合に、出力信号を出力することを特徴とする。【００１８】
この発明の電子素子は、
第１乱数と第２乱数とｎビット（ｎ≧１）のデータとを入力して所定の信号を出力信号として出力する電子素子において、
第１乱数と第２乱数とｎビットのデータとを入力する入力部と、
０と１とにより構成される論理データを格納する格納部と、
前記入力部が第１乱数と第２乱数とｎビットのデータとを入力した場合に、第１乱数とｎビットのデータとの排他的論理和を実行し排他的論理和の実行結果を示す各ビットを用いて所定の論理演算を行い所定の論理演算の結果と第２乱数との排他的論理和を実行することにより得られる結果と等価な結果を、スイッチングにより前記格納部が格納する論理データから取得し出力信号として出力する複数のトランジスタと
を備えたことを特徴とする。【００１９】
前記第１乱数は、
各ビットが同一の値であるｎビットの乱数であり、
前記第２乱数は、
前記第１乱数の各ビットの値と等しい値である１ビットの乱数であることを特徴とする。【００２０】
前記複数のトランジスタは、
スイッチングを同時に行うことを特徴とする。【００２１】
前記入力部は、さらに、
出力信号の出力を指令する指令信号を入力し、
前記電子素子は、
指令信号を入力した場合に、出力信号を出力することを特徴とする。【００２２】
この発明のデータ処理方法は、
所定のデータと第１乱数との排他的論理和の結果を入力信号として入力し、入力した入力信号に基づき所定の論理演算を実行し、実行した論理演算の結果と第２乱数との排他的論理和を出力信号として出力することを特徴とする。【００２３】
この発明のデータ処理方法は、
ｎビットのデータにｎビットの第１乱数が排他的論理和されたデータを示すＸＯＲデータと、ｎビットの第１乱数と、１ビットの第２乱数とを入力信号として入力し、ＸＯＲデータと第１乱数との排他的論理和によりｎビットのデータを算出し、算出したｎビットデータの各ビットを用いて所定の論理演算を実行し、実行した論理演算の結果と第２乱数との排他的論理和を出力信号として出力することを特徴とする。
【発明の効果】
【００２４】
この発明により、相補的な動作を行う回路を設けることなく、消費電力から秘密情報を特定しようとする攻撃に対抗することができる。
【発明を実施するための最良の形態】
【００２５】
実施の形態１．
図１〜図１１を用いて、実施の形態１を説明する。実施の形態１は、非線形変換の処理を行う基本素子Ａ、線形変換の処理を行う基本素子Ｂ、及び基本素子Ａ、基本素子Ｂを用いて暗号アルゴリズムを処理する回路に関する。なお、以下において、ｎビットのデータＡと、ｎビットのデータＢとのビットどうしの排他的論理和を、Ａ＜ＸＯＲ＞Ｂとも表記する。【００２６】
任意の暗号アルゴリズムＦは、その安全性を堅持するために、必ず、非線形変換Ｓi（０≦ｉ≦ｐ）と、線形変換Ｌj（０≦ｊ≦ｑ）との組み合わせからなる。これは、デジタル回路で実装した場合に、ＡＮＤ（論理積）ゲートとＸＯＲ（排他的論理和）ゲートの組み合わせに等価変換できることを意味する。当然、ＯＲ（論理和）、ＮＯＲ（否定論理和）、ＮＡＮＤ（否定論理積）等の基本ゲートを組み合わせても実装できる。しかし、それらの処理も、全てＡＮＤゲートとＸＯＲゲートとの組み合わせに等価変換できる。このため、ＡＮＤとＸＯＲを中心に説明する。請求の範囲は、ＡＮＤ、ＸＯＲ、ＯＲ、ＮＯＲ、ＮＡＮＤ等の全ての基本ゲートに対するものである。【００２７】
まず、非線形変換Ｓiを構成する基本素子Ａについて説明する。以下、非線形変換を構成する素子を基本素子Ａと呼ぶものとする。また、非線形変換Ｓiは、基本素子Ａにより構成されているとする。【００２８】
図１は、基本素子Ａが２ｂｉｔの入力データ（ｘ1，ｙ2）を入力する場合を想定し、基本素子Ａの処理を説明するための便宜的な素子２０を示す図である。図１の素子２０は、基本素子Ａの処理を説明するための便宜的な構成であり、基本素子Ａの実施例を示すものではない。基本素子Ａの具体的な実施例は、図６の基本素子Ａ１００として後述する。【００２９】
素子２０は、ＸＯＲ２２、ＡＮＤゲート２３、ＸＯＲ２７、ＡＮＤゲート２４を備える。素子２０は、（ｘi，ｙi）に乱数ｒが排他的論理和されたｘ1（ｘ1＝ｘi＾ｒ）、ｘ2（ｘ2＝ｘj＾ｒ）を入力する。また、乱数ｒ及び制御信号ｅｎ２６を入力する。【００３０】
素子２０の動作を説明する。
（１）素子２０は、データ（ｘi，ｙi）（所定のデータの一例）と乱数ｒ（第１乱数の一例）との排他的論理和である、ｘ1（ｘ1＝ｘi＾ｒ）、ｘ2（ｘ2＝ｘj＾ｒ）を入力する。
（２）ＸＯＲ２２は、（ｘ1、ｘ2）（ＸＯＲデータの一例）及び乱数ｒを入力し、排他的論理和を実行する。すなわち、「ｘi＾ｒ＾ｒ」、及び「ｘj＾ｒ＾ｒ」を実行する。ＸＯＲ２２の出力は、ｘiとｘjとなる。
（３）ＡＮＤゲート２３は、ｘi、ｘjを入力し、「ｘi＆ｘj」を出力する（出力点２５）。
（４）ＸＯＲ２７は、乱数ｒ（第２乱数の一例）と「ｘi＆ｘj」を入力し、「ｘi＆ｘj＾ｒ」を出力する。
（５）ＡＮＤゲート２４は、「ｘｉ＆ｘｊ＾ｒ」と制御信号ｅｎ２６とを入力し、制御信号ｅｎ２６が「１」のとき、「ｚ＝ｘｉ＆ｘｊ＾ｒ」を出力する。ただし、これは一例であり、基本素子Ａの動作は、制御信号ｅｎの有意を「０」とすれば、ＡＮＤゲート２４をＯＲゲートで置き換えた動作で実現してもよい。
また、制御信号ｅｎが「立ち上がり」もしくは「立ち下がり」で有意を決定する信号であるとするならば、基本素子Ａの動作は、ＡＮＤゲート２４をフリップフロップで置き換え、制御信号ｅｎが「立ち上がり」もしくは「立ち下がり」でＸＯＲ２７の出力を取り込む方式の動作で実現してもよい。以下、基本素子Ａの動作は、説明の理解を簡単にするために制御信号ｅｎの有意を「１」とし、前述のＡＮＤゲート２４による動作で説明する。請求の範囲は、信号の有意が「０」、「１」、「立ち上がり」、「立ち下がり」の全ての方式に対するものである。また、これは基本素子Ｂについても同様である。【００３１】
次に、ｎ−ｂｉｔ入力の場合を、図１に示した２ｂｉｔ入力の素子２０と対比させて説明する。非線形変換Ｓiの各非線形処理において、例えば、ｎ入力ＡＮＤを下記のような（１ａ）から（４ａ）の処理を行う基本素子Ａで実現する。基本素子Ａは、入力として、ｎ−ｂｉｔのデータであるＸ（ｘ1，ｘ2，・・・，ｘn）と、ｎ−ｂｉｔの乱数であるＲa（ｒ1，ｒ2，・・・，ｒn）（第１乱数の一例）と、１ｂｉｔの乱数であるｒb（第２乱数の一例）と制御信号ｅｎ（指令信号の一例）を入力する。そして、出力として、
ｚ＝（（ｘ1＾ｒ1）＆（ｘ2＾ｒ2）＆・・・（ｘn＾ｒn）＾ｒb）＆ｅｎ
を出力する。
（１ａ）ｎ−ｂｉｔの入力Ｘ（ｘ1，ｘ2，・・・，ｘn）（ＸＯＲデータの一例）を、ｎビットの乱数Ｒa（ｒ1，ｒ2，・・・，ｒn）と排他的論理和する（なお、ｘ1，ｘ2等は、入力前に乱数Ｒaと排他的論理和されているものとする）。これをＸ’とする。素子２０の場合では、ｘ1＝ｘi＾ｒ、ｘ2＝ｘj＾ｒである。また、乱数Ｒa＝（ｒ1，ｒ2）＝（ｒ，ｒ）である。よって、Ｘ’＝（ｘi，ｘj）である。
（２ａ）Ｘ’の全てのビットについて論理積（ＡＮＤ）をとる。これをｘ’’とする。素子２０の場合は、ｘ’’＝ｘi＆ｘjとなる。
（３ａ）ｘ’’と、１ｂｉｔの乱数であるｒbとを排他的論理和する。これをｙとする。素子２０の場合は、ｒb＝ｒであり、ｙ＝ｘi＆ｘj＾ｒとなる。
（４ａ）ｙと制御用信号ｅｎのＡＮＤをとり出力する。これをｚとする。素子２０の場合は、上述のように、ｚ＝ｘi＆ｘj＾ｒとなる。なお、ｚを出力する場合は、すべての入力信号が確定後、制御信号ｅｎを「１」にすることにより、一気に出力する。【００３２】
上記の（１ａ）から（４ａ）の処理を、全て単一の演算素子で実行し、これを基本素子Ａとして非線形変換Ｓiを構成する。ｚを出力する場合は、前述のように、すべての入力信号が確定後、制御信号ｅｎにより出力ｚを一気に出力する。【００３３】
基本素子Ａの特徴は、以下の点にある。すなわち、従来の暗号処理アルゴリズムの処理の対象と成るデータ（ｘi、ｘj等）と乱数とを排他的論理和したデータを入力する。そして、従来の処理の対象となるデータに対する所定の論理演算の結果に乱数を排他的論理和した状態で出力する。さらに、出力の時には、すべて入力信号が確定した後に出力する。この特徴により、デバイス内で処理される秘密情報をデバイスの消費電力から特定しようとする攻撃に対して、対抗することができる。対抗できるのは次の理由による。出力ｚには乱数ｒが排他的論理和されて出力される。この乱数ｒは「０」と「１」が１／２の確率で出現するため、出力ｚの信号遷移率αは、１／２になる。また、ｚを出力する場合は、すべて入力信号の状態遷移が完了した場合に、処理を実行し出力信号ｚを出力する。ここで「処理」とは、ｎ−ｂｉｔのデータであるＸ（ＸＯＲデータ）と乱数Ｒa（第１乱数）との排他的論理和によりｎビットのデータを算出し、算出したｎビットデータの各ビットを用いてＡＮＤ演算（所定の論理演算の一例）を実行し、実行したＡＮＤ演算（論理演算）の結果と乱数ｒb（第２乱数）との排他的論理和を実行する一連の過程をいう。このため、攻撃者からは、出力ｚの電力の変動を検出することができないからである。後述の基本素子Ｂについても同様である。この特徴点については、さらに、図８〜図１１の説明で述べる。【００３４】
基本素子Ａの構成をより簡単にするために、乱数を１ｂｉｔのみ用いることも可能である。すなわち
（１ｂ）ｎ−ｂｉｔの入力Ｘ（ｘ1，ｘ2，・・・，ｘn）を、１ｂｉｔの乱数ｒによるｎ−ｂｉｔ連結と排他的論理和する。これをＸ’とする。すなわち、
Ｘ’＝（ｘ1＾ｒ，ｘ2＾ｒ，・・・，ｘn＾ｒ）
（２ｂ）Ｘ’の全てのｂｉｔについてＡＮＤをとる。これをｘ’’とする。すなわち、
ｘ’’＝（ｘ1＾ｒ）＆（ｘ2＾ｒ）＆・・・＆（ｘn＾ｒ）
（３ｂ）ｘ’’とｒを排他的論理和する。これをｙとする。すなわち、
ｙ＝（ｘ1＾ｒ）＆（ｘ2＾ｒ）＆・・・＆（ｘn＾ｒ）＾ｒ
（４ｂ）ｙと制御用信号ｅｎのＡＮＤをとり出力とする。これをｚとする。
（１ｂ）から（４ｂ）の処理を全て単一の演算素子で実行し、これを基本素子ＡとしてＳiを構成する。すなわち
基本素子Ａ（Ｘ）：
ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＆・・・（ｘn＾ｒ）＾ｒ）＆ｅｎ
となる。【００３５】
次に、線形変換Ｌjを構成する基本素子Ｂの概略を説明する。
以下、線形変換を構成する素子を基本素子Ｂと呼ぶ。線形変換Ｌjは、基本素子Ｂにより構成されているとする。線形変換Ｌjの各線形処理において、例えば、ｎ入力ＸＯＲを下記のような処理を行う素子で実現する。
（１ｃ）ｎ−ｂｉｔの入力Ｘ（ｘ1，ｘ2，・・・，ｘn）の全てのビットについてＸＯＲをとる。これをｘ’とする。すなわち、
ｘ’＝ｘ1＾ｘ2＾・・・＾ｘn
（２ｃ）ｘ’と１ｂｉｔの乱数ｒを排他的論理和する。これをｙとする。すなわち、
ｙ＝（ｘ1＾ｘ2＾・・・＾ｘn）＾ｒ
（３ｃ）ｙと制御用信号ｅｎのＡＮＤをとり出力とする。これをｚとする。
（１ｃ）から（３ｃ）の処理を全て単一の演算素子で実行し、これを基本素子ＢとしてＬjを構成する。すなわち
基本素子Ｂ（Ｘ）：
ｚ＝（ｘ1＾ｘ2＾・・・＾ｘn＾ｒ）＆ｅｎ
となる。ここで、入力Ｘが既に乱数成分を排他的論理和されている場合、例えば、Ａ（Ｘ）の出力である場合、Ｘが奇数ビット列であれば（２ｃ）の処理は行わない。【００３６】
基本素子Ａ、基本素子Ｂの入力として用いる制御用信号ｅｎは、各基本素子のその他の入力信号より十分遅れて変化させる。すなわち、前記の基本素子Ａ、基本素子Ｂの場合、制御用信号ｅｎが論理「１」のときのみ、
「（暗号アルゴリズムの中間値もしくは処理結果）＾乱数値」
の形で各基本素子は結果を出力し、それ以外の場合は常に０を出力する。これら基本素子Ａ、基本素子Ｂを用いて、暗号アルゴリズムＦを構成する。後述する図２の「最後の変換層」の場合のように、基本素子Ａもしくは基本素子Ｂの処理結果に対して、直前の処理で使用した乱数を排他的論理和することで暗号文または、平文を得ることができる。【００３７】
次に、図２により、基本素子Ａ、基本素子Ｂを用いて暗号アルゴリズムを処理する回路について説明する。図２は、基本素子Ａ、基本素子Ｂを用いて暗号アルゴリズムＦの処理を行う回路３０の構成の概略を示すブロック図である。基本素子Ａ、基本素子Ｂは、暗号アルゴリズムの最小単位の基本演算に対する対抗措置であるため、適用アルゴリズムは限定されない。【００３８】
回路３０は、セレクタ２、乱数発生器３、排他的論理和４、排他的論理和５、非線形変換Ｓ1６等、線形変換Ｌ2７等、制御回路８、タイミング生成回路ＴＧ９、タイミング制御回路ＴＣ１０、ＡＮＤゲート１１、排他的論理和１２、レジスタ１３、レジスタ１４を備える。非線形変換Ｓ1６、線形変換Ｌ2７等は、層を形成している。非線形変換Ｓiは、基本素子Ａで構成される。また、線形変換Ｌjは基本素子Ｂで構成される。【００３９】
図３は、図２に示す回路３０の動作を示すフローチャートである。図３を参照して、回路３０の動作を説明する。【００４０】
入力データＸ１（平文、暗号文、鍵等）は、排他的論理和４で乱数Ｒ1と処理され、Ｘ＜ＸＯＲ＞Ｒ1となり、非線形変換Ｓ1６へ入力される（Ｓ１０１）。なお、図２では、非線形変換Ｓ1６、線形変換Ｌ2等の順に層を形成している。これは一例である。非線形変換層、線形変換層の順序、及び層数はアルゴリズムＦと実装方法に依存する。排他的論理和５の上からの入力は０とし、乱数発生器３の一番上の出力は乱数Ｒ1である。また、非線形変換Ｓ1６への右からの入力は乱数Ｒ1及び乱数Ｒ2である。非線形変換Ｓ1６への左からは、前記の制御用信号ｅｎ1を入力する（Ｓ１０２）。制御用信号ｅｎ1は、入力信号であるＸ＜ＸＯＲ＞Ｒ1、Ｒ1、及びＲ2の信号変化より遅れて“１”に変化する。この制御は、制御回路８、タイミング生成回路ＴＧ９、タイミング制御回路ＴＣ１０で行う。非線形変換Ｓ1６は、Ｘ1＜ＸＯＲ＞Ｒ2を出力する（Ｓ１０３）。同様に、線形変換Ｌ2７は、入力としてＸ1＜ＸＯＲ＞Ｒ2、Ｒ2及びこれらの信号変化より遅れた制御用信号ｅｎ2を入力する。これにより、線形変換Ｌ2７は、Ｘ2＜ＸＯＲ＞Ｒ2を出力する。これ以降、同様に、非線形変換、線形変換の処理を繰り返し行う（Ｓ１０４）。【００４１】
なお、非線形変換、線形変換の回路を同一の回路で処理する場合は、最後の変換層Ｓn（あるいはＬn）で出力した結果Ｘi＜ＸＯＲ＞Ｒjをセレクタ２で選択し、再び排他的論理和４の入力とする。このとき、排他的論理和５の上からの入力はＲjであり、乱数発生器３の一番上の出力はＲj+1である。これより、排他的論理和４の右からの入力はＲj＜ＸＯＲ＞Ｒj+1となり、排他的論理和４の出力は、Ｘi＜ＸＯＲ＞Ｒj+1となる（Ｓ１０５）。【００４２】
暗号アルゴリズムＦの処理に必要な非線形変換、線形変換の処理が終了した段階で、制御回路８は、ＡＮＤゲート１１に対して“１”を入力する。これにより、最後の変換層Ｓn（あるいはＬn）で出力した結果Ｘn＜ＸＯＲ＞Ｒmは、Ｒmと排他的論理和１２で処理され、データＸnが出力される（Ｓ１０６）。【００４３】
図４は、図２に示した回路３０に対して、乱数を１ｂｉｔに簡略化した回路３１の構成を示す図である。例えば、回路３１の非線形変換Ｓ1は、前述した、乱数を１ｂｉｔのみ用いる基本素子Ａにより構成されている。回路３１は、回路３０と比較して、回路上で用いる乱数の数を削減しているため、回路３０よりも少ない回路面積で実装できる。【００４４】
図５は、図２の回路３０、図４の回路３１における各層で用いる制御信号のタイミングを示した図である。暗号アルゴリズムの処理を開始するｓｔａｒｔ信号が有効になってから、入力データＸ１に対して、セレクタ２、排他的論理和４の処理が終了し、かつ非線形変換Ｓ1を構成する基本素子Ａにその処理結果が十分伝播してから、最初の層Ｓ1の制御信号ｅｎ（Ｓ1）が論理１に変化する。その後Ｓ1は演算結果を出力し、Ｌ2を構成する基本素子Ｂにデータが伝播する。全てのデータが伝播した段階で、Ｌ2の制御信号（Ｌ2）が論理１に変化する。同様の動作をその後の層に対して行い、最終的に最後の層であるＳ2i-1の制御信号ｅｎ（Ｓ2i-1）が論理１に変化する。【００４５】
上記の制御信号については、次の演算を行うために、各制御信号を論理０にする初期化処理が必要となる。初期化の方式は、全ての演算が終了した段階で行う方法がある。また、別の方法として、図５のように、上位層から順次初期化する方法もある。上位層から順次初期化する方法は、次の演算開始までの待ち時間を短縮できるため、高速処理を実現できる。しかし、初期化の対象となる層と次の層との層間に、初期化の対象となる層の出力を格納するレジスタが必要となる。このため、回路コストは増加する。【００４６】
図６は、前述の基本素子Ａの実施例として、トランジスタで具体的に構成した基本素子Ａ１００を示す図である。図６の基本素子Ａ１００は、ｘ1（ｘ1＝ｘi＾ｒ）、ｘ2（ｘ2＝ｘj＾ｒ）、及び乱数ｒ、制御信号ｅｎ（指令信号の一例）を入力する。そして、
ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＾ｒ）＆ｅｎ
を出力する。ｚの式においてｘ1、及びｘ2と排他的論理和的論理和されている乱数ｒは第１乱数である。３つ目の乱数ｒは、第２乱数である。【００４７】
図６を用いて、基本素子Ａ１００の構成を説明する。
（１）基本素子Ａ１００は、上部１１５と下部１１６との直列接続により構成される。上部１１５と下部１１６との間から出力信号ｚが出力される。
（２）図６において、記号「！」は、信号信号の反転を意味する。また、上部１１５を構成する各トランジスタに付されている右向き矢印「→」は、信号が「０」のときにトランジスタが導通することを示す。また、下部１１６を構成する各トランジスタに付されている左向き矢印「←」は、信号が「１」のときにトランジスタが導通することを示す。したがって、上部１１５は、信号が「０」のとき導通するトランジスタの集合である。また、下部１１６は、信号が「１」のとき導通するトランジスタの集合である。印加部１１３には、論理「１」に相当する電圧が印加される。
（３）印加部１１３に論理「１」に相当する電圧が印加された場合、各トランジスタのスイッチングにより
ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＾ｒ）＆ｅｎ
が出力される。
（４）基本素子Ａ１００のトランジスタの構成を説明する。上部１１５は、トランジスタ１０１と、トランジスタ１０２とトランジスタ１０３との並列回路と、トランジスタ１０４とトランジスタ１０５との直列接続とトランジスタ１０６とが並列接続された並列回路とが、直列接続されて構成される。
（５）下部１１６は、トランジスタ１０７と、トランジスタ１０８とトランジスタ１０９との直列接続と、トランジスタ１１０とトランジスタ１１１との並列回路とトランジスタ１１２との直列接続とが、並列接続されて構成される。そして、トランジスタ１０７、トランジスタ１０９、及びトランジスタ１１２の一端は、アース１１４に接続されている。
（６）次に入力信号について説明する。入力信号は全て反転してトランジスタに入力する。
入力信号ｘ1は、反転して、トランジスタ１０２、トランジスタ１０４、トランジスタ１０８、及びトランジスタ１１０に入力する。
（７）入力信号ｘ2は、反転して、トランジスタ１０３、トランジスタ１０５、トランジスタ１０９、及びトランジスタ１１１に入力する。
（８）入力信号ｒは、反転して、トランジスタ１０６及びトランジスタ１１２に入力する。
（９）入力信号ｅｎは、反転して、トランジスタ１０１及びトランジスタ１０７に入力する。【００４８】
前述のように、基本素子Ａ１００は、ｘi、ｘjのそれぞれに乱数ｒを排他的論理和したデータであるｘ1、ｘ2を入力し、ｘi、ｘjに対する所定の論理演算の結果に乱数ｒを排他的論理和した状態で出力する。そして、出力する場合は、すべての入力信号が確定後に一気に出力する。すなわち、出力信号は、入力信号の過渡遷移の影響を受けない。また、入力から出力に至る途中のデータを生成することなく一気に出力する。これにより、消費電力から秘密情報を特定しようとする攻撃に対抗することができる。【００４９】
図６の基本素子Ａ１００は、２入力ＡＮＤ型であり、前述のように、次のｚを出力する。
Ａ（ｘ1、ｘ2）：ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＾ｒ）＆ｅｎ
ここで、ｘ1＝ｘj＾ｒ、ｘ2＝ｘj＾ｒ
である。
図４の非線形変換Ｓ1を基本素子Ａ１００で構成した場合は、次のようになる。非線形変換Ｓ1の入力である、Ｘ＜ＸＯＲ＞｛ｒ，ｒ，ｒ，・・・，ｒ｝、ｒ、及び制御信号ｅｎについて、基本素子Ａ１００は、任意の２ｂｉｔに対してＡ（ｘi＾ｒ，ｘj＾ｒ）の処理を行い、ｚを出力する。すなわち、
ｚ＝（（（ｘi＾ｒ）＾ｒ）＆（（ｘj＾ｒ）＾ｒ））＆ｅｎ
となる。そして、ｅｎ＝１の場合、
ｚ＝ｘi＆ｘj＾ｒ
を出力する。【００５０】
図７は、基本素子Ａ１００の真理値表を示している。
ｘ1＝０の場合において、出力ｚの信号が「０から１」あるいは「１から０」に遷移する信号遷移率α（ｘ1＝０）は、
α（ｘ1＝０）＝Ｐ０×Ｐ１（ｘ1＝０）＋  Ｐ１×Ｐ０（ｘ1＝０）＝１／２
となる。
ここで、Ｐ０は、ｚが「０」になる確率である。Ｐ１はｚが「１」になる確率である。真理値表から、
Ｐ０＝４／８、
Ｐ１＝４／８
である。
また、Ｐ１（ｘ1＝０）は、ｘ1＝０の条件下において、ｚが「１」になる確率である。Ｐ０（ｘ1＝０）は、ｘ1＝０の条件下において、ｚが「０」になる確率である。真理値表から、
Ｐ０（ｘ1＝０）＝３／４、
Ｐ１（ｘ1＝０）＝１／４
である。よって、
α（ｘ1＝０）＝Ｐ０×Ｐ１（ｘ1＝０）＋Ｐ１×Ｐ０（ｘ1＝０）
＝４／８×１／４＋４／８×３／４＝１／２
となる。
ｘ1＝１の場合も同様に計算すると、真理値表から、
Ｐ０（ｘ1＝１）＝１／４、
Ｐ１（ｘ1＝１）＝３／４
である。よって、
α（ｘ1＝１）＝Ｐ０×Ｐ１（ｘ1＝１）＋Ｐ１×Ｐ０（ｘ1＝１）
＝４／８×３／４＋４／８×１／４＝１／２
となる。したがって、信信号遷移率αは、入力ｘ1（あるいはｘ2）が０と１の場合で同じとなる。また、出力ｚについては、制御信号ｅｎにより、入力信号が確定後に一気に出力する。すなわち、出力信号は、入力信号の過渡遷移の影響を受けない。また、入力から出力に至る途中のデータを生成することなく一気に出力する。このため基本素子Ａにおいては、消費電力から秘密情報を予測することはできない。【００５１】
図８Ａ〜図８Ｃは、基本素子Ａ１００における乱数ｒと制御信号ｅｎとの役割を説明する図である。前述の基本素子Ａ１００におけるｘi＆ｘjの処理を、乱数ｒと制御信号ｅｎを使用しない状態で処理した場合は、図８Ａに示す２入力ＡＮＤゲートと同様となる。その場合の真理値表は、図８Ｂとなる。この場合、出力における信号遷移率αは、図８Ｂの真理値表より、
ｘi＝０のとき、α（ｘi＝０）＝１／４、
ｘi＝１のとき、α（ｘi＝１）＝１／２
となる。すなわち、信号遷移率αが異なる。【００５２】
図８Ｃを用いて、詳しく説明する。まず、ｘi＝０の場合において、出力ｚの信号が「０から１」あるいは「１から０」に遷移する信号遷移率α（ｘi＝０）は、
α（ｘi＝０）＝Ｐ０×Ｐ１（ｘi＝０）＋Ｐ１×Ｐ０（ｘi＝０）＝１／４
である。
ここで、Ｐ０は、ｚが「０」になる確率である。Ｐ１は、ｚが「１」になる確率である。図８Ｂの真理表から、Ｐ０＝３／４、Ｐ１＝１／４である。また、Ｐ１（ｘi＝０）は、ｘi＝０の条件下において、ｚが「１」になる確率である。Ｐ０（ｘi＝０）は、ｘi＝０の条件下においてｚが「０」になる確率である。真理値表から、
Ｐ０（ｘi＝０）＝１、
Ｐ１（ｘi＝０）＝０
である。よって、
α（ｘi＝０）＝Ｐ０×Ｐ１（ｘi＝０）＋Ｐ１×Ｐ０（ｘi＝０）
＝３／４×０＋１／４×１＝１／４
となる。
ｘi＝０の場合も同様に計算すると、真理値表から、
Ｐ０（ｘi＝１）＝１／２、
Ｐ１（ｘi＝１）＝１／２
である。よって、
α（ｘi＝１）＝Ｐ０×Ｐ１（ｘi＝１）＋Ｐ１×Ｐ０（ｘi＝１）
＝３／４×１／２＋１／４×１／２＝１／２
となる。
したがって、上記のように、
ｘi＝０のとき、α（ｘi＝０）＝１／４、
ｘi＝１のとき、α（ｘi＝１）＝１／２
となる。このように信号遷移率αに偏りが生じる。【００５３】
よって、図８Ａに示す２入力ＡＮＤは、片方の入力ｘi（あるいはｘj）が０と１の場合で電力差が生じることになる。このため、消費電力からＡＮＤゲートの入力を予測することが可能となる。これにより、処理に用いられている秘密情報を特定することが可能になる。【００５４】
次に、図９Ａ〜図９Ｃを用いて、制御信号ｅｎについて説明する。図９Ａに示すような制御信号ｅｎを用いない基本素子Ａ’は、入力信号の変化に時間差がある場合、過渡遷移において乱数に依存しない信号変化が発生し、信号遷移率αに偏りが発生する。このため、秘密情報の特定が可能となる。図９Ｂは、図９Ａの基本素子Ａ’の真理値表を示す。また、図９Ｃは、基本素子Ａ’の信号遷移率αを示す。図９Ｂの真理値表からは、出力ｚに関する信号遷移率α（ｘi＝０）、信号遷移率α（ｘi＝１）のいずれも１／２となる。しかし、入力信号の変化に時間差がある場合、次のようになる。例えば、基本素子Ａ’において、図９Ｃに示すようにｘi、ｘj、ｒの順に信号が変化する場合、ｘjが変化する時間において、信号遷移率αに図８Ｃ同様の偏りが発生する。したがって、消費電力からＡＮＤゲートの入力を予測することが可能となる。ｘi、ｘj、ｒの変化する順序が異なっても偏りが発生する時間がずれるだけである。なお、入力信号の変化に時間差がない場合は、問題はない。【００５５】
図１０Ａ〜図１０Ｃは、基本素子Ａ１００の処理を示す図である。
図１０Ａは、基本素子Ａ１００の入出力を示す図である。
図１０Ｂは、基本素子Ａ１００の真理値表を示す図である。
図１０Ｃは、入力信号の変化と出力信号ｚとの関係を示す図である。
図１０Ｃでは、図１０Ｂの真理値表から、信号遷移率αはｘi、ｘjの０、１に依存せずに１／２となる。さらに、図１０Ｃに示すように、制御信号ｅｎが０の間は、基本素子Ａ１００の出力ｚは、常に０である。よって、ｘi、ｘj、ｒの信号変化より遅く制御信号ｅｎを１にすることにより、出力ｚに過渡遷移は発生せず、信号遷移率αが均等である遷移しか発生しない。したがって、消費電力から秘密情報を特定することはできない。【００５６】
このように、入出力値について、従来の処理の対象であった値であるｘi、ｘj等に対して乱数を排他的論理和し、かつ、その出力は制御信号ｅｎによって演算した結果を出力する場合と任意の値を出力するような処理方式を、３入力以上のＡＮＤ処理や、その他ＯＲ、ＮＯＲ、ＮＡＮＤ、ＸＯＲ等にも適用し、非線形変換層、線形変換層を構成する。【００５７】
前記の手法で基本素子を構成する際に、単に、従来の基本ゲートを組み合わせて、上記と同様の演算を行っても対抗措置として機能しない。例えば、図１１は、図６の等価回路である。図１１のＡＮＤゲート４０は、ｘi＆ｘjの処理を行うため、図８Ａと同じ動作をすることを意味する。よって、信号遷移率αに偏りが生じるため、ＡＮＤゲート４０の入力を予測することが可能となる。図１１の「等価回路」は、図１の素子２０と同一である。素子２０の出力点２５において、ＡＮＤゲート４０と同様に信号遷移率αに偏りが生じる。このため、素子２０は、基本素子Ａを説明するための便宜的な構成である。電力消費からの秘密情報漏洩を防ぐため、入出力値について従来の値に対して乱数値を排他的論理和し、かつ、その出力は制御信号ｅｎによって一気に出力する処理を行うには、図６の基本素子Ａ１００のように、一気に出力ｚを出力する単一の演算素子で処理を実現する必要がある。【００５８】
特表２００３−５２６１３４号公報や特開２００２−３１１８２６号公報のゲートペアや回路ペア等の、相補的な回路を実装することで信号遷移率αを均等化する方式は、相補的な動作を行う回路が同一のタイミングで動作しない限り、対抗措置として機能しない。一方、この実施の形態１の基本素子Ａ１００では、単体の演算素子で信号遷移率αが均等になるとともに、出力ｚに過渡遷移が生じない。このため、「相補的な動作を行う回路が同一のタイミングで動作することを要する」というような前記のような条件を必要としない。よって、効率よく対抗措置を実現することができる。また、図６の基本素子Ａ１００は、出力線は１本しか存在しない。したがって、ゲートペアや回路ペアのように「出力線の負荷の均等化」について考慮する必要がない。【００５９】
実施の形態１の基本素子Ａは、ｎ−ｂｉｔのデータと乱数Ｒaとの排他的論理和的論理和のデータＸを入力して所定の論理演算を実行し、論理演算の結果と乱数ｒbとの排他的論理和を出力信号として出力するので、出力信号の信号遷移率を均等にすることができる。このため、消費電力の偏りをなくすことにより、消費電力から秘密情報を特定しようとする攻撃に対抗することができる。【００６０】
実施の形態１の基本素子Ａは、一種類の乱数ｒを用いて処理を行うことにより乱数の種類を削減するので、多種類の乱数を用いる場合に比べて、実装面積を小さくすることができる。【００６１】
実施の形態１の基本素子Ａは、入力信号の状態遷移が完了した場合に、処理を実行して出力信号を出力するので、出力の信号遷移均等にすることができる。【００６２】
実施の形態１の基本素子Ａは、出力を指令する制御信号ｅｎ（指令信号）により出力ｚを出力するので、信号遷移率を均等にすることができる。【００６３】
実施の形態１の基本素子Ａ１００により、消費電力から秘密情報を特定しようとする攻撃に対抗することができる。また、基本素子Ａ１００は、トランジスタの回路構成によるハードウェアの対抗であるので、ソフトウェアの対抗策に比べて高速処理が可能である。【００６４】
実施の形態１の基本素子Ａ１００は、一種類の乱数ｒを用いて処理を行うことにより乱数の種類を削減するので、多種類の乱数を用いる場合に比べて、実装面積を小さくすることができる。【００６５】
実施の形態１の基本素子Ａ１００は、出力を指令する制御信号ｅｎ（指令信号）により出力ｚを出力するので、信号遷移率を均等にすることができる。【００６６】
実施の形態２．
次に、図１２Ａ〜図１６を用いて、実施の形態２を説明する。実施の形態２は、メモリ素子を用いることにより、図６に示した実施の形態１の基本素子Ａ１００と等価な機能を実現するＬＵＴ２００（後述の図１５）を説明する。【００６７】
まず、非線形層の例として、ＤＥＳのＳ−ｂｏｘの構成方法について説明する。その後、Ｓ−ｂｏｘにＬＵＴ２００を適用する場合を説明する。【００６８】
「Ｓ−ｂｏｘ」とは、ある入力に対して決められた出力を行う変換テーブルである。ＤＥＳでは、６ｂｉｔ入力、４ｂｉｔ出力のテーブルが８種類定義されている。このような変換テーブルは、全てＡＮＤ−ＸＯＲ回路で実装できる。【００６９】
図１２Ａは、ＤＥＳアルゴリズムで定義されるＳ１テーブルの入出力を表す図である。図１２Ａに示すように、Ｓ１テーブルは、６ｂｉｔのデータ｛Ｘ5，Ｘ4，Ｘ3，Ｘ2，Ｘ1，Ｘ0｝を入力して、４ｂｉｔのデータ｛ｙ3，ｙ2，ｙ1，ｙ0｝に変換して出力する。【００７０】
図１２Ｂは、Ｓ１テーブルの内容を示す図である。図１２ＢのＳ１テーブルにおいて、入力データ｛Ｘ5，Ｘ4，Ｘ3，Ｘ2，Ｘ1，Ｘ0｝の｛Ｘ5，Ｘ0｝から行が決定される。また、｛Ｘ4，Ｘ3，Ｘ2，Ｘ1｝から列が決定される。【００７１】
図１２Ｃは、入力値と出力値の一例を示す図である。
｛Ｘ5，Ｘ4，Ｘ3，Ｘ2，Ｘ1，Ｘ0｝＝｛０１１０１１｝
から、
｛Ｘ5，Ｘ0｝＝｛０１｝＝１
である。したがって、Ｓ１テーブルの２行目と決定される。次に、
｛Ｘ4，Ｘ3，Ｘ2，Ｘ1｝＝｛１１０１｝＝１３
である。よって、Ｓ１テーブルの１４列目と決定される。よって、｛０１１０１１｝は、２行１４列の「５」（０１０１）に換字される。【００７２】
図１２Ｂに示すＳ１テーブル１行目の「１４、４、１３、・・・０、７」は、図１３に示すｙ0’からｙ3’の式に等価変形できる。同様に、２行目以降も変換可能である。図１３の式は、図４の回路３１の場合と同様に、図１４に示すような、それぞれ１層の非線形層と１層の線形層で構成できる。図１４では、図４の場合と同様に、入力データは、あらかじめ乱数ｒにより排他的論理和されて非線形層に入力される。次に、第１層の非線形層でＡＮＤ処理が行われ、２層目の線形層でＸＯＲの処理が行われる。【００７３】
これまでに説明した対抗措置は、図６の基本素子Ａ１００のように、ＭＯＳＦＥＴ（Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｆｉｅｌｄ  Ｅｆｆｅｃｔ  Ｔｒａｎｓｉｓｔｏｒ）で構成することを想定していた。しかし、暗号アルゴリズムの回路をＭＯＳＦＥＴレベルの設計で行わない場合も考えられる。例えば、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）に代表される書き換え可能な半導体デバイスとして設計する場合も考えられる。この場合は、あらかじめチップ上に実装されているＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を基本に構成されたメモリ素子（以下これをＬＵＴと略記する）や、フリップフロップに代表される記憶素子の内部状態と、その配線のみとを設計者が自由に変更可能な仕様となっている。このようなデバイスにおける実施形態を図１５に示す。【００７４】
図１５は、図６の基本素子Ａ１００と等価な機能を、４入力１出力のＬＵＴ２００を用いて実現した構成を示す図である。【００７５】
ＬＵＴ２００は、基本素子Ａ１００と等価であり、入力としてｘ1、ｘ2、ｒ、ｅｎを入力する。出力ｚは、
ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＾ｒ）＆ｅｎ
である。【００７６】
ＬＵＴ２００は、入力部２５０、複数のＳＲＡＭ２６０等（格納部）、及び複数のパストランジスタ２８０等を備える。ＳＲＡＭは、論理関数を実現する値を格納する機能を持つ。データ列２７０（論理データ）は、各ＳＲＡＭが格納するデータで構成される。パストランジスタは、左右の結線に対してのスイッチング機能を持つ。【００７７】
図１５のＬＵＴ２００の構成を説明する。各パストランジスタは、ツリー構造の各ブランチに配置される。後述のように、各パストランジスタは、ブランチ２０１〜ブランチ２３０の３０のブランチのそれぞれに配置される。入力信号線は、各ブランチに配置されたパストランジスタをＯＮ／ＯＦＦのスイッチングを行う。スイッチ機能としてのパストランジスタは、「０」が入力すると開く。【００７８】
（１）次に、ＬＵＴ２００の構成を説明する。ＬＵＴ２００は、出力Ｚからブランチ２０１、ブランチ２０２が二分木に分岐する。ブランチ２０２は、ブランチ２０５、ブランチ２０６の二分木に分岐する。ブランチ２０５は、ブランチ２１１、ブランチ２１２の二分木に分岐する。ブランチ２０６は、ブランチ２１３、ブランチ２１４の二分木に分岐する。ブランチ２１１は、ブランチ２２３、ブランチ２２４の二分木に分岐する。ブランチ２１２は、ブランチ２２５、ブランチ２２６の二分木に分岐する。ブランチ２１３は、ブランチ２２７、ブランチ２２８の二分木に分岐する。ブランチ２１４は、ブランチ２２９、ブランチ２３０の二分木に分岐する。「ブランチ２２３、ブランチ２２４、・・・ブランチ２３０」のそれぞれには、ＳＲＡＭが接続している。
（２）ブランチ２０１は、ブランチ２０２と同様に分岐していく。ブランチ２０１は、ブランチ２０３、ブランチ２０４の二分木に分岐する。ブランチ２０３は、ブランチ２０７、ブランチ２０８の二分木に分岐する。ブランチ２０４は、ブランチ２０９、ブランチ２１０の二分木に分岐する。ブランチ２０７は、ブランチ２１５、ブランチ２１６の二分木に分岐する。ブランチ２０８は、ブランチ２１７、ブランチ２１８の二分木に分岐する。ブランチ２０９は、ブランチ２１９、ブランチ２２０の二分木に分岐する。ブランチ２１０は、ブランチ２２１、ブランチ２２２の二分木に分岐する。「ブランチ２１５、ブランチ２１６、・・・ブランチ２２２」のそれぞれには、ＳＲＡＭが接続している。図１５では、ブランチ２１６、ブランチ２１８、、ブランチ２２０に接続しているＳＲＡＭには「１」が格納されている。その他のＳＲＡＭには「０」が格納されている。
（３）入力信号について説明する。入力信号ｘ２の反転信号は、ブランチ２０１に配置されたパストランジスタに入力する。入力信号ｘ２は、ブランチ２０２に配置されたパストランジスタに入力する。入力信号ｘ１の反転信号は、ブランチ２０３、ブランチ２０５に配置されたパストランジスタに入力する。入力信号ｘ１は、ブランチ２０４、ブランチ２０６に配置されたパストランジスタに入力する。入力信号ｒの反転信号は、ブランチ２０７、ブランチ２０９、ブランチ２１１、ブランチ２１３に配置されたパストランジスタに入力する。入力信号ｒは、ブランチ２０８、ブランチ２１０、ブランチ２１２、ブランチ２１４に配置されたパストランジスタに入力する。入力信号ｅｎの反転信号は、ブランチ２１５、ブランチ２１７、ブランチ２１９、ブランチ２２１、ブランチ２２３、ブランチ２２５、ブランチ２２７、ブランチ２２９に配置されたパストランジスタに入力する。入力信号ｅｎは、ブランチ２１６、ブランチ２１８、ブランチ２２０、ブランチ２２２、ブランチ２２４、ブランチ２２６、ブランチ２２８、ブランチ２３０に配置されたパストランジスタに入力する。【００７９】
制御信号ｅｎの有意を「０」とするならば、前述のｚ＝（（ｘ１＾ｒ）＆（ｘ２＾ｒ）＾ｒ）＆ｅｎにおける「＆ｅｎ」の処理は、「｜ｅｎ」（制御信号ｅｎとのＯＲ）に変更し、同様の考え方でＬＵＴにより基本素子Ａの等価な機能を実現できる。【００８０】
なお、入力信号ｘ1、ｘ2、ｒが同時に入力するのであれば制御信号ｅｎは不要である。この場合、それぞれの該当するトランジスタは、同時にスイッチングする。【００８１】
その他、２入力ＯＲ、ＮＯＲ、ＮＡＮＤ、ＸＯＲ等にも同様の処理方式を適用することで、秘密情報を消費電力から特定する攻撃に対して、対抗することができる。【００８２】
３入力以上の基本素子では、一般に、ＬＵＴの大きさは固定されている場合が多い。このため、図１６に示すように、２入力の基本素子を組み合わせて構成することが現実的である。この場合、２本の異なる制御信号を用いる必要がある。これは、図１６に示すように、ＬＵＴ２９２の入力となるＬＵＴ２９１の出力と、ＬＵＴ２９２におけるＬＵＴ２９１からの入力以外の入力について、信号変化の時間差があるため、制御信号を共有した場合は、前述した理由（入力信号の過渡遷移）から、乱数性が機能しなくなるためである。【００８３】
実施の形態２のＬＵＴ２００により、消費電力から秘密情報を特定しようとする攻撃に対抗することができる。【００８４】
実施の形態２のＬＵＴ２００は、一種類の乱数ｒを用いて処理を行うことにより乱数の種類を削減するので、多種類の乱数を用いる場合に比べて、実装面積を小さくすることができる。【００８５】
実施の形態２のＬＵＴ２００は、複数のトランジスタがスイッチングを同時に行うので、入力から出力に至る途中経過は出現せず、信号遷移率を均等にすることができる。【００８６】
実施の形態２のＬＵＴ２００は、出力を指令する制御信号ｅｎ（指令信号）により出力ｚを出力するので、信号遷移率を均等にすることができる。【００８７】
実施の形態３．
次に、図１７〜図２２を用いて、図６の基本素子Ａ１００、図１５のＬＵＴ２００とは別の基本素子について説明する。図１７〜図２４に示す一連の基本素子は、基本素子Ａ１００、ＬＵＴ２００等と同様に、消費電力から秘密情報を特定する攻撃に対抗することができる。【００８８】
図１７は、実施の形態３に係る基本素子Ａ３００を示す図である。基本素子Ａ３００は、図６の基本素子Ａ１００に対して、制御信号ｅｎを入力するトランジスタ１０１とトランジスタ１０７とを削除した構成である。すなわち基本素子Ａ３００入力信号は、ｘ1、ｘ2、ｒである。また、出力ｚは、
ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＾ｒ）
となる。御信号ｅｎは存在しない。基本素子Ａ３００は、入力信号ｘ1、ｘ2、ｒが各トランジスタに同じタイミングで入力する場合を想定した素子である。
すなわち、入力信号は同時に入力するので、該当する複数のトランジスタのスイッチングは同時に行われる。この場合、制御信号ｅｎは必要ないからである。【００８９】
実施の形態３の基本素子Ａ３００は、制御信号ｅｎの入力を必要としないので、簡易な構成で実装することができる。【００９０】
図１８は、実施の形態３に係る基本素子Ａ４００を示す図である。図６の基本素子Ａ１００が２入力ＡＮＤ型であるのに対して、基本素子Ａ４００は、２入力ＯＲ型である。入力信号は、ｘ1、ｘ2、ｒ、ｅｎである。また、出力ｚは、
ｚ＝（（ｘ1＾ｒ）｜（ｘ2＾ｒ）＾ｒ）＆ｅｎ
となる。基本素子Ａ１００の場合と同様に、入力ｘ1、ｘ2は、
ｘ1＝ｘi＾ｒ，    ｘ2＝ｘj＾ｒ
である。よって、入出力に乱数が排他的論理和されている。及び制御信号ｅｎに基づく各トランジスタのスイッチングにより、一気にｚが出力される。これらにより、基本素子Ａ１００と同様、消費電力から秘密情報を特定する攻撃に対抗することができる。
（１）基本素子Ａ４００の構成を説明する。基本素子Ａ４００は、上部４１５と下部４１６との直列接続により構成されている。上部４１５と下部４１６との間から出力信号ｚが出力される。
（２）図１８において、記号「！」、右向き矢印「→」、左向き矢印「←」は、図６の場合と同様である。なお、これらの意味は、後述の図１９〜図２２についても同様である。印加部４１３には、論理「１」に相当する電圧が印加される。
（３）印加部４１３に論理「１」に相当する電圧が印加された場合、各トランジスタのスイッチングにより
ｚ＝（（ｘ1＾ｒ）｜（ｘ2＾ｒ）＾ｒ）＆ｅｎ
が出力される。
（４）上部４１５は、トランジスタ４０１と部分回路４１７との直列接続で構成される。
トランジスタ４０１の一端は、印加部４１３と接続され、他端が部分回路４１７に接続する。部分回路４１７は、トランジスタ４０２とトランジスタ４０３との直列接続と、トランジスタ４０４とトランジスタ４０５との並列回路とトランジスタ４０６との直列接続とが、並列接続されている。
（５）下部４１６のトランジスタの構成は、図６の基本素子Ａ１００の下部１１６と同じ構成である。すなわち、トランジスタ４０７〜トランジスタ４１２の配置は、トランジスタ１０７〜トランジスタ１１２の配置と同一である。ただし、下部１１６のトランジスタ１１２には、入力信号ｒの反転信号が入力するのに対して、下部４１６のトランジスタ４１２には、入力信号ｒが反転することなく、そのまま入力する。
（６）次に、入力信号について説明する。入力信号ｘ1の反転信号がトランジスタ４０２、トランジスタ４０４、トランジスタ４０８、及びトランジスタ４１０に入力する。
（７）入力信号ｘ2の反転信号が、トランジスタ４０３、トランジスタ４０５、トランジスタ４０９、及びトランジスタ４１１に入力する。
（７）入力信号ｒが、トランジスタ４０６及びトランジスタ４１２に入力する。
（８）入力信号ｅｎの反転信号が、トランジスタ４０１及びトランジスタ４０７に入力する。【００９１】
図１９は、実施の形態３に係る基本素子Ａ５００を示す図である。図６の基本素子Ａ１００が２入力ＡＮＤ型であるのに対して、基本素子Ａ５００は、２入力ＮＡＮＤ型である。入力信号は、ｘ1、ｘ2、ｒ、ｅｎである。また、出力ｚは、
ｚ＝（〜（（ｘ1＾ｒ）＆（ｘ2＾ｒ））＾ｒ）＆ｅｎ
となる。基本素子Ａ１００の場合と同様に、入力ｘ1、ｘ2は、
ｘ1＝ｘi＾ｒ，    ｘ2＝ｘj＾ｒ
である。よって、入出力に乱数が排他的論理和されている。及び制御信号ｅｎに基づく各トランジスタのスイッチングにより、一気にｚが出力される。これにより基本素子Ａ１００と同様、消費電力から秘密情報を特定する攻撃に対抗することができる。【００９２】
（１）基本素子Ａ５００のトランジスタの構成は、図１９に示すように、図１８の基本素子Ａ５００と同じである。ただし、各トランジスタに入力する信号の反転が異なる。
（２）入力信号について説明する。入力信号ｘ1は、トランジスタ５０２、トランジスタ５０４、トランジスタ５０８、及びトランジスタ５１０に入力する。
（３）入力信号ｘ2は、トランジスタ５０３、トランジスタ５０５、トランジスタ５０９、及びトランジスタ５１１に入力する。
（４）入力信号ｒは、トランジスタ５０６及びトランジスタ５１２に入力する。
（５）入力信号ｅｎの反転信号が、トランジスタ３０１及びトランジスタ３０７に入力する。【００９３】
図２０は、実施の形態３に係る基本素子Ａ６００を示す図である。図６の基本素子Ａ１００が２入力ＡＮＤ型であるのに対して、基本素子Ａ６００は、２入力ＮＯＲ型である。入力信号は、ｘ1、ｘ2、ｒ、ｅｎである。また、出力ｚは、
「ｚ＝（〜（（ｘ1＾ｒ）｜（ｘ2＾ｒ））＾ｒ）＆ｅｎ」となる。基本素子Ａ１００の場合と同様に、入力ｘ1、ｘ2は、
ｘ1＝ｘi＾ｒ，    ｘ2＝ｘj＾ｒ
である。よって、入出力に乱数が排他的論理和されている。及び制御信号ｅｎに基づく各トランジスタのスイッチングにより、一気にｚが出力される。これにより基本素子Ａ１００と同様、消費電力から秘密情報を特定する攻撃に対抗することができる。
（１）基本素子Ａ６００のトランジスタの構成は、図２０に示すように、図１８の基本素子Ａ３００と同じである。ただし、各トランジスタに入力する信号の反転の有無が異なる。
（２）入力信号について説明する。入力信号ｘ1は、トランジスタ６０２、トランジスタ６０４、トランジスタ６０８、及びトランジスタ６１０に入力する。
（３）入力信号ｘ2は、トランジスタ６０３、トランジスタ６０５、トランジスタ６０９に入力する。また、入力信号ｘ2の反転信号が、トランジスタ６１１入力する。
（４）入力信号ｒの反転信号が、トランジスタ６０６及びトランジスタ６１２に入力する。
（５）入力信号ｅｎの反転信号が、トランジスタ６０１及びトランジスタ６０７に入力する。【００９４】
図２１は、実施の形態３に係る基本素子Ｂ７００を示す図である。図６の基本素子Ａ１００が２入力ＡＮＤ型であるのに対して、基本素子Ｂ７００は、２入力ＸＯＲ型である。入力信号は、ｘ1、ｘ2、ｒ、ｅｎである。また、出力ｚは、
ｚ＝（（ｘ1＾ｒ）＾（ｘ2＾ｒ）＾ｒ）＆ｅｎ
となる。基本素子Ａ１００の場合と同様に、入力ｘ1、ｘ2は、
ｘ1＝ｘi＾ｒ，    ｘ2＝ｘj＾ｒ
である。よって、入出力に乱数が排他的論理和されている。及び制御信号ｅｎに基づく各トランジスタのスイッチングにより、一気にｚが出力される。これにより、基本素子Ａ１００と同様、消費電力から秘密情報を特定する攻撃に対抗することができる。
（１）基本素子Ｂ７００は、上部７２１と下部７２２との直列接続で構成される。上部７２１と下部７２２との間から出力信号ｚが出力される。
（２）印加部７１９には、論理「１」に相当する電圧が印加される。
（３）印加部７１９に論理「１」に相当する電圧が印加された場合、各トランジスタのスイッチングにより
ｚ＝（（ｘ1＾ｒ）＾（ｘ2＾ｒ）＾ｒ）＆ｅｎ
が出力される。
（４）上部７２１は、トランジスタ７０１と部分回路７２７との直列接続で構成される。
トランジスタ７０１は、一端が印加部７１９に接続され、他端が部分回路７２７と接続する。
（５）部分回路７２７の構成を説明する。部分回路７２７は、トランジスタ７０２と並列回路７２３との直列接続と、並列回路７２４とトランジスタ７０９との直列接続とが、並列に接続されている。
そして、並列回路７２３は、トランジスタ７０３とトランジスタ７０４との直列接続と、トランジスタ７０５とトランジスタ７０６との直列接続とが並列に接続されて、並列回路を構成している。
また、並列回路７２４は、トランジスタ７０７とトランジスタ７０８とが、並列回路を構成している。
（６）次に、下部７２２の構成を説明する。
下部７２２は、トランジスタ７１０と、並列回路７２５とトランジスタ７１５との直列接続と、並列回路７２６とトランジスタ７１８との直列接続とが、並列に接続されている。そして、並列回路７２５は、並列回路７２３と同様に、トランジスタ７１１とトランジスタ７１２との直列接続と、トランジスタ７１３とトランジスタ７１４との直列接続とが、並列に接続されて、並列回路を構成している。並列回路７２６は、並列回路７２４と同様に、トランジスタ７１６とトランジスタ７１７とが、並列回路を構成している。
（７）次に、各トランジスタへの入力信号について説明する。入力信号ｘ1は、トランジスタ７０３、トランジスタ７０７、トランジスタ７１１、トランジスタ７１６に入力する。また、入力信号ｘ1の反転信号は、トランジスタ７０５、トランジスタ７１３に入力する。入力信号ｘ2は、トランジスタ７０４、トランジスタ７０８、トランジスタ７１２、トランジスタ７１７に入力する。また、入力信号ｘ2の反転信号は、トランジスタ７０６、トランジスタ７１４に入力する。入力信号ｒは、トランジスタ７０９、トランジスタ７１８に入力する。入力信号ｒの反転信号は、トランジスタ７０２、トランジスタ７１５に入力する。入力信号ｅｎの反転信号は、トランジスタ７０１、トランジスタ７１０に入力する。【００９５】
図２２は、実施の形態３に係る基本素子Ａ８００を示す図である。図６の基本素子Ａ１００が２入力ＡＮＤ型であるのに対して、基本素子Ａ８００は、３入力ＡＮＤ型である。入力信号は、ｘ1、ｘ2、ｘ3、ｒ、ｅｎである。また、出力ｚは、
ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＆（ｘ3＾ｒ）＾ｒ）＆ｅｎ
となる。基本素子Ａ１００の場合と同様に、入力ｘ1，ｘ2，ｘ3は、
ｘ1＝ｘi＾ｒ，    ｘ2＝ｘj＾ｒ，    ｘ3＝ｘk＾ｒ
である。よって、入出力に乱数が排他的論理和されている。及び制御信号ｅｎに基づく各トランジスタのスイッチングにより、一気にｚが出力される。これにより、基本素子Ａ１００と同様、消費電力から秘密情報を特定する攻撃に対抗することができる。【００９６】
（１）基本素子Ａ８００は、上部８１９と下部８２０との直列接続により構成されている。
上部８１９と下部８２０との間から出力信号ｚが出力される。
（２）印加部８１７には、論理「１」に相当する電圧が印加される。
（３）印加部８１７に論理「１」に相当する電圧が印加された場合、各トランジスタのスイッチングにより
「ｚ＝（（ｘ1＾ｒ）＆（ｘ2＾ｒ）＆（ｘ3＾ｒ）＾ｒ）＆ｅｎ」
が出力される。
（４）上部８１９は、トランジスタ８０１と、トランジスタ８０２とトランジスタ８０３とトランジスタ８０４とによる並列回路と、トランジスタ８０５とトランジスタ８０６とトランジスタ８０７との直列接続とトランジスタ８０８とによる並列回路との直列接続で構成される。
（５）下部８２０は、トランジスタ８０９と、トランジスタ８１０とトランジスタ８１１とトランジスタ８１２とによる直列接続と、トランジスタ８１３とトランジスタ８１４とトランジスタ８１５との並列回路とトランジスタ８１６とによる直列接続とが、並列に接続されて、並列回路を構成している。
（６）次に、各トランジスタへの入力信号について説明する。基本素子Ａ８００では、入力信号であるｘ1、ｘ2、ｘ3、ｒ、ｅｎは、全て反転して、各トランジスタに入力する。入力信号ｘ1の反転信号は、トランジスタ８０２、トランジスタ８０５、トランジスタ８１０、トランジスタ８１３に入力する。入力信号ｘ2の反転信号は、トランジスタ８０３、トランジスタ８０６、トランジスタ８１１、トランジスタ８１４に入力する。入力信号ｘ3の反転信号は、トランジスタ８０４、トランジスタ８０７、トランジスタ８１２、トランジスタ８１５に入力する。入力信号ｒの反転信号は、トランジスタ８０８、トランジスタ８１６に入力する。入力信号ｅｎの反転信号は、トランジスタ８０１、トランジスタ８０９に入力する。【００９７】
図２３は、消費電力から秘密情報を特定する攻撃を行った場合の、消費電力の時間変化を示すグラフである。図２３は、基本素子Ａ、基本素子Ｂを用いていない、ＡＮＤ回路、ＸＯＲ回路から構成される回路について、対策前の状態を示している。図に示すように、ＡＮＤ演算、及びＸＯＲ演算が実行される際に、消費電量のピークが出現している。このピークの出現により、秘密情報の特定が可能となる。【００９８】
図２４は、図２３に対して、基本素子Ａ、基本素子Ｂを用いて対策を行った場合を示している。図２３の場合に出現していたピークが消えている。このピークの消滅により、秘密情報の特定を行うことはできなくなる。
【図面の簡単な説明】
【００９９】
【図１】実施の形態１における基本素子Ａの処理を説明するための便宜的な素子２０を示す図である。
【図２】実施の形態１における回路３０の構成の概略を示すブロック図である。
【図３】実施の形態１における回路３０の動作を示すフローチャートである。
【図４】実施の形態１における回路３１の構成を示す図である。
【図５】実施の形態１における回路３０及び回路３１の各層で用いる制御信号のタイミングを示した図である。
【図６】実施の形態１における基本素子Ａ１００を示す図である。
【図７】実施の形態１における基本素子Ａ１００の真理値表を示す図である。
【図８Ａ】２入力ＡＮＤゲートを示す図である。
【図８Ｂ】２入力ＡＮＤゲートの真理値表である。
【図８Ｃ】２入力ＡＮＤゲートの信号遷移率を説明する図である。
【図９Ａ】２入力ＡＮＤゲートを示す図である。
【図９Ｂ】２入力ＡＮＤゲートの真理値表である。
【図９Ｃ】２入力ＡＮＤゲートの過渡遷移と信号遷移率との関係を説明する図である。
【図１０Ａ】実施の形態１における基本素子Ａ１００の入出力を示す図である。
【図１０Ｂ】実施の形態１における基本素子Ａ１００の真理値表を示す図である。
【図１０Ｃ】実施の形態１における基本素子Ａ１００の入力信号の変化と出力信号ｚとの関係を示す図である。
【図１１】基本素子Ａ１００と論理的に等価な回路を示す図である。
【図１２Ａ】ＤＥＳアルゴリズムで定義されるＳ１テーブルの入出力を表す図である。
【図１２Ｂ】Ｓ１テーブルの内容を示す図である。
【図１２Ｃ】入力値と出力値の一例を示す図である。
【図１３】Ｓ１テーブルの１行目を等価変形した式を示す図である。
【図１４】図１３に示す式を実施する回路構成を示す図である。
【図１５】実施の形態２におけるＬＵＴ２００を示す図である。
【図１６】実施の形態２における２入力の基本素子を組み合わせて構成する回路を示す図である。
【図１７】実施の形態３における基本素子Ａ３００を示す図である。
【図１８】実施の形態３における基本素子Ａ４００を示す図である。
【図１９】実施の形態３における基本素子Ａ５００を示す図である。
【図２０】実施の形態３における基本素子Ａ６００を示す図である。
【図２１】実施の形態３における基本素子Ｂ７００を示す図である。
【図２２】実施の形態３における基本素子Ａ８００を示す図である。
【図２３】対策前において消費電力から秘密情報を特定する攻撃を行った場合の、消費電力の時間変化を示すグラフである。
【図２４】対策後において消費電力から秘密情報を特定する攻撃を行った場合の、消費電力の時間変化を示すグラフである。
【符号の説明】
【０１００】
１  入力データＸ、２  セレクタ、３  乱数発生器、４，５  排他的論理和、６  非線形変換Ｓ1、７  線形変換Ｌ2、８  制御回路、９  タイミング生成回路ＴＧ、１０  タイミング制御回路ＴＣ、１１  ＡＮＤゲート、１２  排他的論理和、１３，１４  レジスタ、２０  素子、２１，２２  ＸＯＲ、２３，２４  ＡＮＤゲート、２５  出力点、２６  制御信号ｅｎ、２７  ＸＯＲ、３０  回路、３１  回路、４０  ＡＮＤゲート、１００  基本素子Ａ、１０１〜１１２  トランジスタ、１１３  印加部、１１４  アース、１１５  上部、１１６  下部、２００  ＬＵＴ、２０１〜２３０  ブランチ、２５０  入力部、２６０  ＳＲＡＭ、２７０  データ列、２８０  パストランジスタ、２９１，２９２  ＬＵＴ、３００  基本素子Ａ、４００  基本素子Ａ、４０１〜４１２  トランジスタ、４１３  印加部、４１４  アース、４１５  上部、４１６  下部、４１７  部分回路、５００  基本素子Ａ、５０１〜５１２  トランジスタ、６００  基本素子Ａ、６０１〜６１２  トランジスタ、７００  基本素子Ｂ、７０１〜７１８  トランジスタ、７１９  印加部、７２０  アース、７２１  上部、７２２  下部、７２３  並列回路、７２４，７２５，７２６  並列回路、７２７  部分回路、８００  基本素子Ａ、８０１〜８１６  トランジスタ、８１７  印加部、８１８  アース、８１９  上部、８２０  下部。
【図１】
0004589327.tif 000002
【図２】
0004589327.tif 000003
【図３】
0004589327.tif 000004
【図４】
0004589327.tif 000005
【図５】
0004589327.tif 000006
【図６】
0004589327.tif 000007
【図７】
0004589327.tif 000008
【図８Ａ】
0004589327.tif 000009
【図８Ｂ】
0004589327.tif 000010
【図８Ｃ】
0004589327.tif 000011
【図９Ａ】
0004589327.tif 000012
【図９Ｂ】
0004589327.tif 000013
【図９Ｃ】
0004589327.tif 000014
【図１０Ａ】
0004589327.tif 000015
【図１０Ｂ】
0004589327.tif 000016
【図１０Ｃ】
0004589327.tif 000017
【図１１】
0004589327.tif 000018
【図１２Ａ】
0004589327.tif 000019
【図１２Ｂ】
0004589327.tif 000020
【図１２Ｃ】
0004589327.tif 000021
【図１３】
0004589327.tif 000022
【図１４】
0004589327.tif 000023
【図１５】
0004589327.tif 000024
【図１６】
0004589327.tif 000025
【図１７】
0004589327.tif 000026
【図１８】
0004589327.tif 000027
【図１９】
0004589327.tif 000028
【図２０】
0004589327.tif 000029
【図２１】
0004589327.tif 000030
【図２２】
0004589327.tif 000031
【図２３】
0004589327.tif 000032
【図２４】
0004589327.tif 000033