(57)【要約】【課題】  本発明は、信号の伝搬を制御することにより、消費電力から秘密情報を解読しようとする解読攻撃に対抗する技術の提供を目的とする。【解決手段】  所定のデータの論理演算結果を出力する場合に、少なくも論理演算結果にいたる中間値に乱数成分を持たせる電子素子に関する。電子素子１００１は、  論理演算結果の算出に使用する入力信号を入力する複数の入力部と、  複数の入力部が入力した入力信号に基づいて所定の論理演算を行なう複数の論理ゲートと、複数の入力部のうち所定の入力部（例えば、信号ｙの入力部）と複数の論理ゲートのうち所定の論理ゲート（例えばＸＯＲゲート１０６）とを結ぶ信号経路のいずれかの位置に配置されるとともに、この信号経路を通って所定の入力部から前記所定の論理ゲートに向かう信号の伝搬を制御する伝搬制御部（遅延素子４０１、遅延素子４０２）を備えた。【選択図】        図２
2006203416.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータの論理演算結果を算出する場合に、少なくとも前記論理演算結果にいたる中間値に乱数成分を持たせる電子素子において、
所定の論理演算を行なう論理ゲートと、
前記論理ゲートに入力する入力信号の伝搬を制御する伝搬制御部と
を備えたことを特徴とする電子素子。
【請求項２】
前記伝搬制御部は、
前記入力信号を遅延させることを特徴とする請求項１記載の電子素子。
【請求項３】
論理ゲートを用いて所定のデータの論理演算結果を算出する場合に少なくとも前記論理演算結果にいたる中間値に乱数成分を持たせる電子素子に対して、前記電子素子が消費する消費電力を測定し、測定した前記消費電力に基づいて前記所定のデータを解読する解読攻撃を防御する解読攻撃防御方法において、
前記電子素子を構成する前記論理ゲートに入力する入力信号の伝搬を制御することを特徴とする解読攻撃防御方法。
【請求項４】
前記解読攻撃防御方法は、
信号を遅延させる遅延素子により、前記入力信号の伝搬を制御することを特徴とする請求項３記載の解読攻撃防御方法。
【請求項５】
複数の論理ゲートを用いて秘匿の対象である秘匿対象データの論理演算結果を算出する場合に少なくとも前記論理演算結果にいたる中間値に乱数成分を持たせる電子素子に対して、前記電子素子が消費する消費電力を測定し、測定した前記消費電力に基づいて前記秘匿対象データを解読する解読攻撃を防御する解読攻撃防御方法において、
前記複数の論理ゲートのうち所定の論理ゲートの動作タイミングを制御することにより、前記秘匿対象データと前記消費電力との間の相関関係を遮断することを特徴とする解読攻撃防御方法。
【請求項６】
前記解読攻撃防御方法は、
信号を遅延させる遅延素子により、前記所定の論理ゲートの動作タイミングを制御することを特徴とする請求項５記載の解読攻撃防御方法。
【請求項７】
所定のデータの論理演算結果を出力する場合に、少なくも前記論理演算結果にいたる中間値に乱数成分を持たせる電子素子において、
前記論理演算結果の算出に使用する入力信号を入力する複数の入力部と、
前記複数の入力部が入力した入力信号に基づいて所定の論理演算を行なう複数の論理ゲートと、
前記複数の入力部のうち所定の入力部と前記複数の論理ゲートのうち所定の論理ゲートとを結ぶ信号経路のいずれかの位置に配置されるとともに、前記信号経路を通って前記所定の入力部から前記所定の論理ゲートに向かう信号の伝搬を制御する伝搬制御部と
を備えたことを特徴とする電子素子。
【請求項８】
前記伝搬制御部が配置される信号経路の一方の端である前記所定の入力部は、
前記複数の論理ゲートのうち少なくともいずれかの論理ゲートのスイッチング確率を前記所定のデータの値に依存させる入力信号である依存起因信号を入力する入力部であり、
前記伝搬制御部が配置される信号経路の他方の端である前記所定の論理ゲートは、
前記依存起因信号により自己のスイッチング確率が前記所定のデータの値に依存させられる論理ゲートであることを特徴とする請求項７記載の電子素子。
【請求項９】
所定のデータの論理演算結果を算出する場合に、少なくとも前記論理演算結果にいたる中間値に乱数成分を持たせる電子素子において、
所定の信号を入力信号として入力し、入力した前記入力信号の状態遷移が完了した場合に、状態遷移が完了した前記入力信号を状態遷移完了信号として出力する出力制御部を備えたことを特徴とする電子素子。
【請求項１０】
前記出力制御部は、
出力を指令する出力指令信号を入力するとともに、前記出力指令信号を入力した場合に、前記状態遷移完了信号を出力することを特徴とする請求項９記載の電子素子。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号アルゴリズムを実現する半導体デバイスに係り、デバイス内で処理される秘密情報をデバイスの消費電力から特定する攻撃に対しての対抗措置に関するものである。
【背景技術】
【０００２】
従来の半導体デバイスに関する消費電力からの秘密情報漏洩、特に近年脅威とされている、差分電力攻撃（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）に対する対抗措置は、主として２つある。一つは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に代表される、ある特定の半導体デバイスを利用したソフトウェアによる対抗措置である。もう一つは、半導体デバイスそのものへのハードウェアによる対抗措置である。
【０００３】
前者のソフトウェアによる対抗措置は、ＩＣカードに代表されるＣＰＵとメモリ併せ持つデバイス構成で実現される対策手法である。例えば、特開２０００−０６６５８５号公報（特許文献１）では、広範に用いられている共通鍵ブロック暗号ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に対して、そのアルゴリズムで使用されるＳ−ｂｏｘと呼ばれる置換テーブルを、あらかじめ決められた規則Ｘに従って乱数パラメータＲを用いて、アルゴリズムで規定されているＳ−ｂｏｘと異なる置換テーブルの複数個分を事前に計算し、ＲＡＭもしくはＲＯＭ上にその結果を格納する。アルゴリズムの処理の際は、平文データＭ（もしくは暗号文データＣ）と鍵データＫに加えて、乱数パラメータＲを用いて暗号文データＣ（平文データＭ）を処理する。これにより、通常のＭ（Ｃ）とＫのみによる処理と比較して、Ｒのとりうる場合の数の分だけ処理フローが変化するため、それに伴う消費電力も多様化する。また、乱数パラメータＲを用いることで、処理の中間値は予測不能となるため、消費電力から秘密情報を解読することは不可能であると説明されている。
【０００４】
この他に、特表２００２−５４０６５４号公報も類似の対抗措置であるが、前記の規則Ｘ及び乱数パラメータＲのとり方が異なるだけで、本質的には同等の対抗措置である。これらソフトウェアによる対抗措置の特徴は、乱数パラメータＲを利用して、通常の暗号処理とは異なる置換テーブルをあらかじめ演算を行う前に生成し、そのデータをＲＡＭもしくはＲＯＭ上に格納して、暗号処理を行うことである。
【０００５】
後者のハードウェアによる対抗措置には、アルゴリズムを半導体素子で実装する際の、その設計手法により実現される対策手法である。例えば、半導体素子による対抗措置として、前述のソフトウェアによる対抗措置をより詳細化し、半導体素子で実現する手法がある。
【０００６】
前記のソフトウェアによる対抗措置では、暗号処理で用いる置換テーブルを乱数Ｒによりランダム化し、そのデータをメモリ上に格納することで暗号処理を実現するが、半導体素子による対抗措置では、メモリのような記憶素子では実現せず、ＡＮＤゲート等の論理回路で実現される。例えば、代表的なものとして、非特許文献１に示されている「Ｍａｓｋｅｄ−ＡＮＤ方式」や、非特許文献２に示されている「ＭＡＮＤ方式」が知られている。
【０００７】
これらの方式では、通常のＡＮＤ処理に対して乱数を用いたマスク機能を付加することで、中間値を予測不可能にし、消費電力から秘密情報を解読不能にすることを特徴としている。
【０００８】
次に、図１８〜図２０を用いて、前述の半導体素子による対抗措置の詳細な方式について説明する。まず「Ｍａｓｋｅｄ−ＡＮＤ方式」を説明する。図１８は「Ｍａｓｋｅｄ−ＡＮＤ方式」によるＡＮＤ処理を行う回路図である。ａ，ｂは攻撃者が予測可能なデータである。ａ，ｂは攻撃者が予測可能なデータであるため、秘匿の対象となるデータである（以下、「秘匿対象データ」という。）
【０００９】
説明に先立ち、以下で使用する演算記号について定義をしておく。
記号「＆」は、論理積（ＡＮＤ）を示す。
記号「＾」は、排他的論理和（ＸＯＲ）を示す。
記号「〜」は、否定（ＮＯＴ）を示す。通常のＡＮＤ処理は
ｃ＝ａ＆ｂ
となる処理を行う。これに対して、「Ｍａｓｋｅｄ−ＡＮＤ方式」では
ｃ＝ａ＆ｂ＾ｚ（ｚは乱数）
なる処理を行う。この場合、入力信号としてａ、ｂが直接入力されない。に示すように入力信号として、
（ａ＾ｘ），（ｂ＾ｙ），（ｘ），（ｙ），（ｚ）
が入力される（ｘ，ｙ，ｚは乱数）。
これより、入力信号は全て乱数成分を持つため、攻撃者は入力信号を予測できないことを特徴とする。
【００１０】
次に、ＡＮＤゲート１０１の出力は、
（ａ＾ｘ）＆（ｂ＾ｙ）＝ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ
であり、乱数成分を持つため予測できない。
【００１１】
同様に、
ＡＮＤゲート１０２の出力は（ｂ＾ｙ）＆ｘ＝ｂ＆ｘ＾ｙ＆ｘ、
ＡＮＤゲート１０３の出力は（ａ＾ｘ）＆ｙ＝ａ＆ｙ＾ｘ＆ｙ，
ＡＮＤゲート１０４の出力はｘ＆ｙ
となり、どのＡＮＤゲート出力も必ず乱数成分を持つ。
【００１２】
次に、各ＸＯＲゲートの出力について説明する。
ＸＯＲゲート１０５の出力はｘ＆ｙ＾ｚ，
ＸＯＲゲート１０６の出力は（ａ＆ｙ＾ｘ＆ｙ）＾（ｘ＆ｙ＾ｚ）＝ａ＆ｙ＾ｚ，
ＸＯＲゲート１０７の出力は（ｂ＆ｘ＾ｙ＆ｘ）＾（ａ＆ｙ＾ｚ）＝ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ＾ｚ，
ＸＯＲゲート１０８の出力は（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）＾（ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ＾ｚ）＝ａ＆ｂ＾ｚ
となり、どのＸＯＲゲート出力も必ず乱数成分を持つ。
【００１３】
以上より、「回路中のどのノードも必ず乱数成分を持つことから、攻撃者は中間値を予測できないため、ＤＰＡに対して安全にＡＮＤ処理が可能である」と提案者は主張している。
【００１４】
次に図１９を用いて「ＭＡＮＤ方式」を説明する。図１９は「ＭＡＮＤ方式」によるＡＮＤ処理を行う回路図である。「ＭＡＮＤ方式」では、通常のＡＮＤ処理
ｃ＝ａ＆ｂ
に対して、乱数ｍｘ，ｍｙを用いて、
ｃ＝ａ＆ｂ＝φ1＾φ2
なる２出力φ1，φ2を出力する。
【００１５】
また、「ＭＡＮＤ方式の処理」を行う回路に対しては、
ａ＾ｍｘ＝ｘ，ｂ＾ｍｙ＝ｙ，ｍｘ，ｍｙ
の乱数成分をもつ４つの信号を入力する。これにより、入力信号は全て乱数成分を持つため、攻撃者は入力信号を予測できないことを特徴とする。
【００１６】
ＡＮＤゲート２０１の出力は
ｘ＆ｙ＝（ａ＾ｍｘ）＆（ｂ＾ｍｙ）＝ａ＆ｂ＾ａ＆ｍｙ＾ｂ＆ｍｘ＾ｍｘ＆ｍｙ
であり、乱数成分を持つため予測できない。
同様に、
ＡＮＤゲート２０２の出力は（〜ｙ＆ｍｘ）＝（ｂ＾ｍｙ＾１）＆ｍｘ＝ｂ＆ｍｘ＾ｍｘ＆ｍｙ＾ｍｘ，
ＡＮＤゲート２０４の出力は、ｘ＆ｍｙ＝（ａ＾ｍｘ）＆ｍｙ＝ａ＆ｍｙ＾ｍｘ＆ｍｙ，
ＡＮＤゲート２０５の出力は、ｍｘ＆ｍｙ＝（ａ＾ｍｘ）＆ｍｙ＝ａ＆ｍｙ＾ｍｘ＆ｍｙ
となり、それぞれ乱数成分を持つため予測できない。
【００１７】
また、ＯＲゲート２０３の出力φ1は、
（ｘ＆ｙ）｜（〜ｙ＆ｍｘ）＝ｘ＆ｙ＾ｍｘ＆ｙ＾ｍｘ＝ａ＆ｂ＾ａ＆ｍｙ＾ｍｘ，
ＯＲゲート２０６の出力φ2は、
（ｘ＆ｍｙ）｜（〜ｍｙ＆ｍｘ）＝ｘ＆ｍｙ＾ｍｘ＆ｍｙ＾ｍｘ＝ａ＆ｍｙ＾ｍｘ
となり、それぞれ乱数成分を持つため予測できない。
【００１８】
さらに、
φ1＾φ2＝ａ＆ｂ
となるため、所望の演算を行うことが可能である。
【００１９】
以上より、「回路中のどのノードも必ず乱数成分を持つことから、攻撃者は中間値を予測できないため、ＤＰＡに対して安全にＡＮＤ処理が可能である」と提案者は主張している。
【００２０】
図２０はセレクタ３０１，３０２を用いた場合の図１９の「ＭＡＮＤ方式」の等価回路である。一般にセレクタは複合ゲートで構成されるため、図１４の場合よりも回路面積と回路遅延が小さくなるので、効率よく同機能が実現できる。図２０の回路についても図１９の回路の場合と同様の議論が当てはまる。
【００２１】
上記に説明した「Ｍａｓｋｅｄ−ＡＮＤ方式」，「ＭＡＮＤ方式」による対抗措置は、原理的に、消費電力から秘密情報を解読される可能性がある。以下にその理由を説明する。
【００２２】
「非特許文献３」では、消費電力から秘密情報を解読される可能性があることが指摘されている。「非特許文献３」では、論理回路におけるＤＰＡによる秘密情報の漏洩は、各論理ゲートのスイッチング回数の偏りに起因することが示されている。前記の対抗措置の「Ｍａｓｋｅｄ−ＡＮＤ方式」，及び「ＭＡＮＤ方式」では、回路上において「信号の伝搬時間を０（ゼロ）」（信号の伝搬遅延が無い）と仮定した場合にのみ各論理ゲートのスイッチング回数が均一になり、消費電力から秘密情報を解読しようとする攻撃に対抗することができる。しかし、「信号に伝搬時間がある」場合には、各論理ゲートのスイッチング回数が不均一になる可能性がある。従って、各論理ゲートのスイッチング回数の不均一性から消費電力が変動し、この消費電力の変動から秘密情報を解読される可能性が生じる。この点について説明する。
【００２３】
図１８の「Ｍａｓｋｅｄ−ＡＮＤ方式」を例に説明する。次の場合は、信号ｙが他の信号より遅れて変化する場合を考える。ｙの変化（遅延）をΔｙとする。例えば、図１８において、ＸＯＲゲート１０６の出力は前述のように，（ａ＆ｙ＾ｚ）である。前記のΔｙによるＸＯＲゲート１０６のスイッチングは（ａ＆Δｙ）で表せる。つまり、ＸＯＲゲート１０６の処理を考えると、
第１入力（ａ＆ｙ＾ｘ＆ｙ）と第２入力（ｘ＆ｙ＾ｚ）とから、
変化前は（ａ＆ｙ＾ｘ＆ｙ）＾（ｘ＆ｙ＾ｚ）であり、
変化後は（ａ＆（ｙ＾Δｙ）＾ｘ＆（ｙ＾Δｙ））＾（ｘ＆（ｙ＾Δｙ）＾ｚ）
である。両者の差分は、両者の排他的論理和により得られ、（ａ＆Δｙ）となる。
【００２４】
（１）このとき（ａ＝１）の場合を考える。
ｙは乱数であるため、Δｙは確率１／２で１となる。したがって、（ａ＆Δｙ）（ＸＯＲゲート１０６のスイッチング）は１／２となり、ＸＯＲゲート１０６は確率１／２で変化する。
（２）次に、（ａ＝０）の場合を考える。
（ａ＆Δｙ）のにおいてａ＝０であるため、Δｙの値によらず（ａ＆Δｙ）は常に０である。従って、ＸＯＲゲート１０６は確率０でスイッチングする（つまり絶対にスイッチングしない）。このように（ａ＝１）の場合と（ａ＝０）の場合とでは、ＸＯＲゲート１０６のスイッチング確率が異なる。この確率の差が消費電力の差として現れ、秘密情報（例えばａの値）が漏洩する可能性がある。
【００２５】
図１９に示す「ＭＡＮＤ方式」の場合も「Ｍａｓｋｅｄ−ＡＮＤ方式」と同様である。図１９において、
ＯＲゲート２０３の出力（ｘ＆ｙ＾ｍｘ＆ｙ＾ｍｘ）
において、ｙが他の信号より遅れて変化するとすれば、ＯＲゲート２０３のスイッチングは
ｘ＆Δｙ＾ｍｘ＆Δｙ＝（ａ＾ｍｘ）＆Δｙ＾ｍｘ＆Δｙ＝ａ＆Δｙ
となる。このため、「Ｍａｓｋｅｄ−ＡＮＤ方式」の場合と同様、ａ＝１の場合のＯＲゲート２０３のスイッチング確率は１／２であり、ａ＝０の場合のスイッチング確率は０となる。このように信号の伝搬遅延を考慮した場合、ａの値によってＯＲゲート２０３のスイッチングする確率が異なるので、秘密情報（例えば、ａ）が漏洩する可能性がある。
【特許文献１】特開２０００−０６６５８５号公報
【特許文献２】特表２００２−５４０６５４号公報
【非特許文献１】Ｅｌｅｎａ  Ｔｒｉｃｈｉｎａ、“Ｃｏｍｂｉｎａｔｉｏｎａｌ  Ｌｏｇｉｃ  Ｄｅｓｉｇｎ  ｆｏｒ  ＡＥＳ  ＳｕｂＢｙｔｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  ｏｎ  Ｍａｓｋｅｄ  Ｄａｔａ、”Ｃｒｙｐｔｏｌｏｇｙｅ  Ｐｒｉｎｔ  Ａｒｃｈｉｖｅ、２００３／２３６
【非特許文献２】清水秀夫、“マスク論理素子を使ったサイドチャネル攻撃対策、”ＩＳＥＣ２００４−６９（２００４−０９）
【非特許文献３】市川哲也，鈴木  大輔，佐伯  稔，“データマスクを利用したＤＰＡ対策に対する攻撃、”ＩＳＥＣ２００４−５８（２００４−０７）
【発明の開示】
【発明が解決しようとする課題】
【００２６】
（１）上記で説明したように、「Ｍａｓｋｅｄ−ＡＮＤ方式」、及び「ＭＡＮＤ方式」の提案者は、信号の伝搬遅延が「０（ゼロ）」となる理想的な状態を想定していた。その場合、例えば図１８のＸＯＲゲート１０６の出力（ａ＆ｙ＾ｚ）はランダムであり、秘密情報が漏洩する可能性はない。
（２）しかし、上記において図１８のＸＯＲゲート１０６の出力（ａ＆ｙ＾ｚ）について説明したように、ａ，ｚに対してｙがおくれて変化したような場合は、ΔｙによるＸＯＲゲート１０６のスイッチングは（ａ＆Δｙ）となる。これにより、ＸＯＲゲート１０６のスイッチング確率は、ａの値が１か０かによって偏る。そのため、秘密情報であるａが漏洩する可能性がある。
（３）本発明では、信号の伝搬を制御することにより、消費電力から秘密情報を解読する解読攻撃に対抗する技術の提供を目的とする。
【課題を解決するための手段】
【００２７】
本発明の電子素子は、
所定のデータの論理演算結果を算出する場合に、少なくとも前記論理演算結果にいたる中間値に乱数成分を持たせる電子素子において、
所定の論理演算を行なう論理ゲートと、
前記論理ゲートに入力する入力信号の伝搬を制御する伝搬制御部と
を備えたことを特徴とする。
【発明の効果】
【００２８】
本発明により、ＤＰＡによる秘密情報の漏洩に関する耐性を強化することができる。また、簡単な構成によりＤＰＡへの耐性を強化することができる。
【発明を実施するための最良の形態】
【００２９】
一般に、乱数マスクを利用することにより、非線形処理の入出力に対してスイッチング回数を均等化する場合、図１に示すように、以下のような処理を行う必要がある。
（１）入力データとして、攻撃者が予測可能なデータに乱数をマスクしたデータを用いる（Ｓ１）。例えば、ａ＾ｘ，ｂ＾ｙ等である。ここでａ，ｂが攻撃者が予測可能なデータ（秘匿対象データ）、ｘ，ｙは乱数である。
（２）ＡＮＤ処理では、
（ａ＾ｘ）＆（ｂ＾ｙ）
の処理を行う（ＯＲ処理でも同じ）（Ｓ２）。
（３）（２）で発生する本来必要な処理ａ＆ｂ以外の不要な項（ｂ＆ｘ，ａ＆ｙ，ｘ＆ｙ）のいずれか、もくしは全てをキャンセルする処理を行う（Ｓ３）。
（１）から（３）の演算過程において、その処理が行われる順序関係によっては、演算の過渡状態においてスイッチング回数の不均一な状態が発生する可能性がある。以下に示す実施の形態では、遅延素子あるいは、過渡状態を制御するための素子（後述のＡＮＤゲート等）を用いて、演算が行われる順序関係を制御する。これにより、演算の過渡状態においてもスイッチング回数を均一化する。
【００３０】
また、ＭＡＮＤ方式についても同様に、遅延素子もしくは過渡状態を制御するための素子を用いて、φ1とφ2が演算される順序関係、あるいは演算のタイミングを制御することで、ＤＰＡによる秘密情報の漏洩に関する耐性を強化する。
【００３１】
実施の形態１．
図２〜図５を用いて実施の形態１を説明する。実施の形態１は、論理ゲートへ入力する信号の伝搬を制御することにより、その論理ゲートのスイッチングする確率と、秘匿の対象である秘匿対象データの値との間の依存性を遮断する実施形態である。
【００３２】
図２は、実施の形態１に係る電子素子１００１の構成図である。電子素子１００１は、図１８の「Ｍａｓｋｅｄ−ＡＮＤ方式」に対して、ＸＯＲゲート１０５とＸＯＲゲート１０７の出力位置に、信号を遅延させる遅延素子４０１（伝搬制御部の一例）及び遅延素子４０２（伝搬制御部の一例）を備えた構成である。電子素子１００１では、秘匿対象データはａ，ｂである。なお、遅延素子４０１等の構成方法としては、バッファツリー等が考えられる。
【００３３】
図３を参照して、遅延素子の配置方法について説明する。それぞれの論理ゲートの処理する論理演算式から、入力信号の状態遷移の発生状況により、スイッチング確率が秘匿対象データであるａとｂとのうち少なくともいずれかに依存してしまう論理ゲート（「依存ゲート」という場合がある）を特定する。また、その依存の原因となる入力信号（「依存起因信号」という場合がある）を特定する（Ｓ１０１）。そして、依存起因信号の入力部と依存ゲートとを結ぶ信号経路を特定し、特定した信号経路のいずれかの位置に遅延素子を配置する（Ｓ１０２）。なお、さらに詳しい特定の方法は実施例として、実施の形態１の最後で詳しく説明する。
【００３４】
電子素子１００１では、入力信号に対するそれぞれの論理ゲートが処理する論理演算式から、ＸＯＲゲート１０６とＸＯＲゲート１０８とが依存ゲートとして特定され、ＸＯＲゲート１０６に対する依存起因信号として、入力信号ｙが特定される。
【００３５】
ＸＯＲゲート１０６の信号経路について説明する。入力信号ｙに対して、入力信号ｙの入力部とＸＯＲゲート１０６とを結ぶパスが決まる。この場合、
「第１信号経路」として、入力信号ｙの入力部、ＡＮＤゲート１０３、ＸＯＲゲート１０６のパスが決まる。また、「第２の信号経路」として、入力信号ｙの入力部、ＡＮＤゲート１０４、ＸＯＲゲート１０５、ＸＯＲゲート１０６のパスが決まる。遅延素子は、これらの第１信号経路、あるいは第２信号経路のいずれかの位置に配置すればよい。図２では、「第２信号経路」においてＸＯＲゲート１０５の出力の位置に遅延素子４０１を配置した場合を示している。
【００３６】
ＸＯＲゲート１０８の場合は、例えば入力信号（ｂ＾ｙ）の信号ｙについて、
「第１信号経路」として、入力信号（ｂ＾ｙ）の入力部、ＡＮＤゲート１０１、ＸＯＲゲート１０８が決まり、
「第２信号経路」として、入力信号（ｂ＾ｙ）の入力部、ＡＮＤゲート１０２、ＸＯＲゲート１０７、ＸＯＲゲート１０８が決まる。ＸＯＲゲート１０６の場合と同様に、遅延素子の配置位置は、この第１信号経路、あるいは第２信号経路のいずれのかの位置に配置すればよい。図２は第２信号経路において、ＸＯＲゲート１０７の出力の位置に遅延素子４０２を配置した場合を示している。
【００３７】
次に、ＸＯＲゲート１０６のスイッチング確率と秘匿対象データとの間の依存性を遮断するために挿入する遅延素子４０１について説明する。
電子素子１００１において、ＸＯＲゲート１０６の
第１入力（ａ＆ｙ＾ｘ＆ｙ）
と
第２入力（ｘ＆ｙ＾ｚ）
によるＸＯＲゲート１０６の出力である次の式に着目する。
（ａ＆ｙ＾ｘ＆ｙ）＾（ｘ＆ｙ＾ｚ）＝ａ＆ｙ＾ｚ
ＸＯＲゲート１０６の
第１入力（ａ＆ｙ＾ｘ＆ｙ）
と、
第２入力（ｘ＆ｙ＾ｚ）
の両者に含まれる
（ｘ＆ｙ）項は、
出力時に打ち消されていることがわかる。ＸＯＲゲート１０６の出力は、それぞれの信号に伝搬遅延がなければ、次式に示す
出力（ａ＆ｙ＾ｚ）
を出力する。従って、ＸＯＲゲート１０６のスイッチング確率はａに依存しない。しかし、背景技術で説明したように信号ｙに伝搬遅延がある場合は、ＸＯＲゲート１０６のスイッチング確率は
（ａ＆Δｙ）
となり、ａに依存する。そこで、ＸＯＲゲート１０６の第１入力（第１信号経路）もしくは第２入力（第２信号経路）のどちらか一方に対して意図的に「遅延素子」を挿入することにより、信号の伝播を制御し、依存を解消する。
【００３８】
ＸＯＲゲート１０６において
第１入力（ａ＆ｙ＾ｘ＆ｙ）のｙと、
第２入力（ｘ＆ｙ＾ｚ）のｙは、
回路上の信号経路が異なる。第１入力のｙをｙ1とする。第２入力のｙをｙ2とする。第１入力のｙ1は、ＡＮＤゲート１０３からＸＯＲゲート１０６に向かう第１信号経路である。第２入力のｙ2は、ＡＮＤゲート１０４からＸＯＲゲート１０５を介してＸＯＲゲート１０６に向かう第２信号経路である。このため、第１入力のｙ1の第１信号経路と、第２入力のｙ2の第２信号経路とのいずれかの位置に遅延素子を配置することで、ＸＯＲゲート１０６がスイッチングする確率がａの値に依存することを解消できる。これにより秘匿対象データであるａが解読されることを防御することができる。この点について、以下さらに説明する。
【００３９】
第１入力（ａ＆ｙ＾ｘ＆ｙ）におけるｙの変化Δｙ1と、第２入力（ｘ＆ｙ＾ｚ）におけるｙの変化Δｙ2は、遅延素子４０１により、変化するタイミングが異なる。つまり、第１入力におけるｙの変化Δｙ1に対するＸＯＲゲート１０６のスイッチングは、
（ａ＆Δｙ1＾ｘΔｙ1）
となる。算出の過程は後述する。図４は、ＸＯＲゲート１０６のスイッチングの式
（ａ＆Δｙ1＾ｘ＆Δｙ1）
についての真理値表である。図４に示すように、
ａ＝０の場合、
ＸＯＲゲート１０６のスイッチングする確率（（ａ＆Δｙ1＾ｘ＆Δｙ1）が１になる確率）は、１／４である。同じく、
ａ＝１の場合も、
ＸＯＲゲート１０６のスイッチングする確率（（ａ＆Δｙ1＾ｘ＆Δｙ1）が１になる確率）は、１／４である。
このように、ＸＯＲゲート１０６のスイッチングする確率はａの値に依存せず、ａ＝１、０のいずれの場合とも１／４となる。
【００４０】
次に、ＸＯＲゲート１０６のスイッチングの式
（ａ＆Δｙ1＾ｘ＆Δｙ1）
の算出過程を説明する。ＸＯＲゲート１０６のスイッチング確率について、ある一つの信号に対してスイッチング確率を計算する場合、その信号の変化をΔとするならば、その信号を含む項のみを考慮すればよい。ＸＯＲゲート１０６の最初の第１入力に含まれる信号ｙの変化Δｙ1に伴うＸＯＲゲート１０６の出力のスイッチングは、
変化前（ａ＆ｙ＾ｘ＆ｙ）＾（ｘ＆ｙ＾ｚ）
変化後（ａ＆（ｙ＾Δｙ1）＾ｘ＆（ｙ＾Δｙ1））＾（ｘ＆ｙ＾ｚ）
となる。スイッチングは、変化前と変化後の排他的論理和で表すことができる。
すなわち、
スイッチング＝変化前＾変化後＝ａ＆Δｙ1＾ｘ＆Δｙ1
である。この式が「１」になった場合はスイッチングしたことを意味する。また、「０」の場合はスイッチングしなかったことを意味する。よって、この式が「１」になる確率がスイッチング確率である。また、ｘは乱数、Δｙ1は乱数の変化を意味するので、ｘもΔｙ1も、０，１になる確率は共に１／２である。
【００４１】
また、第２入力におけるｙの変化Δｙ2に対するＸＯＲゲート１０６のスイッチングは
（ｘ＆Δｙ2）
である。これもａの値に依存しない。よって、ＸＯＲゲート１０６のスイッチングする確率はａ，ｂに依存しない。従って図１８の場合に対して、遅延素子４０１を配置することで、ＸＯＲゲート１０６のスイッチング確率と秘匿対象データａ，ｂとの依存を遮断することができる。従って消費電力の攻撃に対してａ，ｂを秘匿することができる。
【００４２】
次に、遅延素子４０２を挿入することにより、ＸＯＲゲート１０８のスイッチング確率と秘匿対象データの値との依存を遮断する場合を説明する。ＸＯＲゲート１０８の出力を各ＡＮＤゲート出力の成分毎に分けて表記すると下記のようになる。
（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）＾（ｂ＆ｘ＾ｘ＆ｙ＾ａ＆ｙ＾ｚ）
ここで、
第１入力（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）と
第２入力（ｂ＆ｘ＾ｘ＆ｙ＾ａ＆ｙ＾ｚ）
の両者に含まれる
（ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）項
は、出力時に打ち消されていることがわかる。
【００４３】
その場合、ＸＯＲゲート１０８の
第１入力（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）、
もしくは
第２入力（ｂ＆ｘ＾ｘ＆ｙ＾ａ＆ｙ＾ｚ）
のどちらか一方に対して、意図的に遅延素子を挿入する。
【００４４】
例えば、
第２入力として（ｂ＆ｘ＾ｘ＆ｙ＾ａ＆ｙ＾ｚ）
が入力されるＸＯＲゲート１０８のポートに対して挿入する遅延素子４０２について考える。このとき、
第１入力（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）
における各信号の変化と、
第２入力（ｂ＆ｘ＾ｘ＆ｙ＾ａ＆ｙ＾ｚ）
における各信号の変化は、遅延素子４０２により、変化するタイミングが異なることになる。つまり、第１入力におけるｙの変化Δｙ1に対するＸＯＲゲート１０８のスイッチングは
（ａ＆Δｙ1＾ｘ＆Δｙ1）
となり、ａの値に依存せずスイッチングする確率は１／４である。
【００４５】
また、第１入力（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）におけるｘの変化Δｘ1に対するＸＯＲゲート１０８のスイッチングは
（ｂ＆Δｘ1＾ｙ＆Δｘ1）
となりｂの値に依存せずスイッチングする確率は１／４となる。
【００４６】
同様に
第２入力（ｂ＆ｘ＾ｘ＆ｙ＾ａ＆ｙ＾ｚ）
におけるｙの変化Δｙ2、及びｘの変化Δｘ2についても、それぞれａ，ｂの値に依存せずＸＯＲゲート１０８がスイッチングする確率は１／４となり、均等化することができる。
【００４７】
以上から、ある特定のノードに遅延素子を挿入することで、「Ｍａｓｋｅｄ−ＡＮＤ方式」のスイッチング確率をａ，ｂの値に依存せず均等にすることが可能となる。
【００４８】
次に、図５を用いて実施の形態１に係る電子素子１００２を説明する。図５は電子素子１００２の構成図である。電子素子１００２は、図１９に示す「ＭＡＮＤ方式」に対して、遅延素子５１０、５２０を備えた構成である。背景技術で説明したように、図１９の「ＭＡＮＤ方式」の場合、ｙが他の信号より遅れて変化（Δｙ）する場合、ＯＲゲート２０３のスイッチングは、
（ａ＆Δｙ）
であった。このため、「Ｍａｓｋｅｄ−ＡＮＤ方式」の場合と同様、ａ＝１の場合のＯＲゲート２０３のスイッチング確率は１／２であり、ａ＝０の場合のスイッチング確率は０となる。よって、スイッチング確率が秘匿対象データａに依存し、この秘匿対象データが漏洩する可能性があった。この対策として、遅延素子５１０、５２０を挿入し、依存を遮断する。
【００４９】
ＯＲゲート２０３については、入力信号（ｂ＾ｍｙ＝ｙ）について、
第１信号経路として、入力信号（ｂ＾ｍｙ＝ｙ）の入力部、ＡＮＤゲート２０１、ＯＲゲート２０３に至るパスが決まる。
また、第２信号経路として、入力信号（ｂ＾ｍｙ＝ｙ）の入力部、ＡＮＤゲート２０２、ＯＲゲート２０３に至るパスが決まる。
ＯＲゲート２０６については、入力信号ｍｙについて、
第１信号経路として、入力信号ｍｙの入力部、ＡＮＤゲート２０４、ＯＲゲート２０６に至るパスが決まる。また、
第２信号経路として、入力信号ｍｙの入力部、ＡＮＤゲート２０５、ＯＲゲート２０６に至るパスが決まる。
【００５０】
図５におけるＯＲゲート２０３の出力
（ｘ＆ｙ＾ｍｘ＆ｙ＾ｍｘ）
に着目する。ここで、
出力の第１項（ｘ＆ｙ）におけるｙは信号線５０２によるものであり、
出力の第２項（ｍｘ＆ｙ）におけるｙは信号線５０３によるものである。
よって、信号線５０２（ＯＲゲート２０３の第１信号経路）、信号線５０３（ＯＲゲート２０３の第２信号経路）のいずれか一方に対して意図的に遅延素子を挿入することで、それぞれの項におけるｙの変化するタイミングをずらすことができる。
【００５１】
例えば、図５のように遅延素子５１０（ＯＲゲート２０３の第２信号経路に配置）を用いた場合、信号線５０３は信号線５０２と同様に遷移が発生するが、信号線５０２の方が速く変化する。このとき、信号線５０２の変化Δｙ1に伴う、ＯＲゲート２０３の出力の変化は
（ｘ＆Δｙ1＝ａ＆Δｙ1＾ｍｘ＆Δｙ1）
となり、ａの値に係わらず、スイッチングする確率は１／４となる。
また、信号線５０３の変化Δｙ2に伴う、ＯＲゲート２０３の出力の変化は
ｍｘ＆Δｙ2
となり、ａの値に依存せずスイッチングする確率は１／４となる。
【００５２】
以上から、遅延素子５１０の効果により、ＯＲゲート２０３のスイッチング確率を均等にすることが可能となる。
【００５３】
同様に、遅延素子５２０はＯＲゲート２０６のスイッチング確率を均等にする。
なお、図５では遅延素子５１０を信号線５０３に配置したが、遅延素子５１０はＯＲゲート２０３の第１信号経路のいずれかの位置、あるいはＯＲゲート２０３の第２信号経路のいずれかのに配置すればよい。ＯＲゲート２０６についても同様である。また、遅延素子の構成方法としては、バッファツリー等が考えられる。
【００５４】
実施の形態１の電子素子は遅延素子を備えたので、論理ゲートに入力する信号の伝播を制御することにより、論理ゲートのスイッチングする確率と秘匿対象データとの依存を遮断することができる。これにより、消費電力から秘密情報を解読しようとする攻撃を防御することができる。
【００５５】
また、実施の形態１の電子素子は、遅延素子により論理ゲートに入力する信号の伝播を制御するので、簡単な構成で消費電力から秘密情報を解読しようとする攻撃を防御することができる。
【００５６】
（実施例）
以下に図６〜図１０を用いて、図２に示した電子素子１００１を対象として、遅延素子の配置方法を説明する。図６は遅延素子の配置方法の過程を示すフローチャートである。図６を説明し、その後、電子素子１００１を対象として具体例で詳述していく。
（１）ステップ２０１では、各ゲート出力の論理式を導出する。このとき、予測可能な中間値（ａ，ｂ）を用いて表現し、ゲート段数が少ない論理ゲートから検討する。図７にゲート段数の例を示している。
（２）ステップ２０２では、ステップ２０１で導出した論理式について、各変数の遷移によって発生する「ゲート出力の遷移」を求める。
（３）ステップ２０３では、ステップ２０２の「ゲート出力遷移」のうち、秘密情報の漏洩の原因となる「ゲート出力遷移」を調べる。なければステップ２０１に戻る。あればステップ２０４へ進む。
（４）ステップ２０４では、ステップ２０３で秘密情報の漏洩の原因となる「ゲート出力遷移」が見つかった場合、その「ゲート出力遷移」に依存する「ゲート入力の遷移」をそれぞれ求める。
（５）ステップ２０５では、ステップ２０４で求めた「ゲート入力の遷移」に遅延差があった場合の「出力信号の遷移」を求める。
（６）ステップ２０６では、ステップ２０５で求めた「出力信号の遷移」が秘密情報の漏洩の原因とならないことを確認する。そして、実際に入力信号のどちらか一方に対して遅延素子をおくことで、その出力遷移が必ず発生するかを確認する。
（７）ステップ２０７では、ステップ２０６の遅延素子が既に回路上にあるかをチェックし、なければ遅延素子を置く。
（８）ステップ２０８では、次のゲートに対してステップ２０１から繰り返す。
【００５７】
次に、電子素子１００１を対象として具体的に説明する。ステップ２０１において、ＡＮＤゲート１０１，ＸＯＲゲート１０６，ＸＯＲゲート１０７，ＸＯＲゲート１０８を検討する。ＡＮＤゲート１０２，１０３，１０４，ＸＯＲゲート１０５は、ＡＮＤゲート１０１と同様に秘密情報の漏洩の原因とならないため、省略する（これは、ステップ２０２まで処理すると自明となる。）。
ステップ２０１に基づく各ゲートの出力の論理式は次のようになる。
ＡＮＤゲート１０１の出力は、（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）、
ＸＯＲゲート１０６の出力は、（ａ＆ｙ＾ｚ）、
ＸＯＲゲート１０７の出力は、（ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ＾ｚ）、
ＸＯＲゲート１０８の出力は、（ａ＆ｂ＾ｚ）
となる。
【００５８】
次に、ステップ２０２に進む。ステップ２０２では、ステップ２０１で導出した論理式について、各変数の遷移によって発生する「ゲート出力の遷移」を求める。
（１）ＡＮＤゲート１０１の検討．
まずＡＮＤゲート１０１から検討する。ゲート段数が少ないほうから考えるのは、ステップ２０８でのチェックを有効にするためであり、うしろから（段数の多い方から）考えると無駄な遅延素子をおいてしまう可能性があるからである。
ＡＮＤゲート１０１における各変数毎の出力遷移は次のようになる。
Δａについて、（Δａ＆ｂ＾Δａ＆ｙ＝Δａ＆（ｂ＾ｙ））、
Δｂについて、（ａ＆Δｂ＾Δｂ＆ｘ＝Δｂ＆（ａ＾ｘ））、
Δｘについて、（ｂ＆Δｘ＾Δｘ＆ｙ＝Δｘ＆（ｂ＾ｙ））、Δｙについて、（ａ＆Δｙ＾ｘ＆Δｙ＝Δｙ＆（ａ＾ｘ））
となる。
いずれの遷移も、「Δ（任意の変数）＆（乱数を含む成分）」の形のため、秘密情報の漏洩の原因とならない（ステップ２０３のなし）。秘密情報の漏洩の原因となる遷移は「Δ（任意の変数）＆（ａもしくはｂ）」の場合のみである。これは、背景技術で説明したように、例えば「Δｙ＆ａ」の形であると、ａ＝１，ａ＝０によりゲートのスイッチング確率が異なり、秘密情報の漏洩の可能性が発生するからである。よってステップ２０３からステップ２０１へもどり、違う論理ゲートに対して検討する。
【００５９】
（２）ＸＯＲゲート１０６の検討．
ステップ２０１へもどり、次に、ＸＯＲゲート１０６を検討する。ＸＯＲゲート１０６の場合、ステップ２０２における各変数ごとの出力遷移は、次のようになる。
Δａについて、（Δａ＆ｙ）、
Δｙについて、（ａ＆Δｙ）、
Δｚについて、（Δｚ）
となる。
Δｙによる遷移は「Δ（任意の変数）＆（ａもしくはｂ）」の形式であるため、秘密情報の漏洩の原因となる（ステップ２０３のあり）。よってステップ２０４に進む。
【００６０】
ステップ２０４では、ＸＯＲゲート１０６についてのΔｙによる入力信号の遷移は、次のようになる。
図７に示すように、
線１の入力信号は、（ｘ＆ｙ＾ｚ）、
線２の入力信号は、（ａ＆ｙ＾ｘ＆ｙ）
である。
したがって、
Δｙによる線１の遷移は、（ｘ＆Δｙ）
Δｙによる線２の遷移は、（ａ＆Δｙ＾ｘ＆Δｙ）
となる。
【００６１】
次に、ステップ２０５に進む。ステップ２０５では、ステップ２０４で求めた「ゲート入力の遷移」に遅延差があった場合の「出力信号の遷移」を求める。ＸＯＲゲートの場合、ステップ２０４の処理とステップ２０５の処理は同じになる。これは入力の遷移がそのまま出力の遷移になるためである。
ＸＯＲゲート１０６について、
Δｙによる線１の入力遷移は、（ｘ＆Δｙ）、
Δｙによる線２の入力遷移は、（ａ＆Δｙ＾ｘ＆Δｙ＝（ａ＾ｘ）＆Δｙ）
となる。図８における線１、線２上のΔｙがそれぞれ異なるタイミングで発生する（遅延差がある）場合、ＸＯＲゲート１０６の出力の遷移は、線１、線２の遷移がそれぞれ異なるタイミングでそのまま伝搬する。出力遷移は次のようになる。Δｙによる線１の遷移に対する出力の遷移は、（ｘ＆Δｙ）、
Δｙによる線２の遷移に対する出力の遷移は、（（ａ＾ｘ）＆Δｙ）
となる。
これらは共に秘密情報の漏洩が発生しない遷移である（ステップ２０６前半）。従って、これらの遷移が異なるタイミングで生じるとすればＸＯＲゲート１０６の出力遷移は、「ａ＆Δｙ」にはならない。よって、ＸＯＲゲート１０６については、図８において、線１と線２のΔｙが異なるタイミングで発生するような遅延素子を入れれば良い（ステップ２０６後半）。具体的には図８の破線で示す信号経路１のいずれかの位置、もしくは、破線で示す信号経路２のいずれかの位置に遅延素子を入れれば良い（ステップ２０７）。図２の場合は、信号経路２（線１の位置）に遅延素子を配置した。
【００６２】
（３）ＸＯＲゲート１０７の検討．
検討すべき論理ゲートがあるので、ステップ２０８からステップ２０１に戻り、ＸＯＲゲート１０７を検討する。ＸＯＲゲート１０７における各変数毎の出力遷移（ステップ２０２）は次のようになる。
Δａについて、（Δａ＆ｙ）、
Δｂについて、（Δｂ＆ｘ）、
Δｘについて、（ｂ＆Δｘ＾Δｘ＆ｙ＝Δｘ＆（ｂ＾ｙ））、
Δｙについて、（ａ＆Δｙ＾ｘ＆Δｙ＝Δｙ＆（ａ＾ｘ））、
Δｚについて、（Δｚ）
となる。
いずれの遷移も秘密情報の漏洩の原因とならない。よってステップ２０３からステップ２０１へ戻る。  
【００６３】
（４）ＸＯＲゲート１０８の検討．
最後にＸＯＲゲート１０８を検討する。
ＸＯＲゲート１０８における各変数毎のゲート出力遷移を検討すると次のようになる（ステップ２０２）。
Δａについて、（Δａ＆ｂ）、
Δｂについて、（ａ＆Δｂ）、
Δｚについて、（Δｚ）
となる。
Δａ，Δｂによるゲート出力遷移は「Δ（任意の変数）？＆（ａもしくはｂのみ）」の形式であるため、秘密情報の漏洩の原因となる（ステップ２０３）。よってステップ２０４に進む。
線３の入力信号は、（ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ＾ｚ）、
線４の入力信号は、（ａ＆ｂ＾ａ＆ｙ＾ｂ＆ｘ＾ｘ＆ｙ）、
である。
【００６４】
まず、Δａによる入力信号の遷移（ステップ４，５）を検討する。
ＸＯＲゲート１０８について、Δａによる線３の入力遷移は、（Δａ＆ｙ）、
Δａによる線４の入力遷移は、（Δａ＆ｂ＾Δａ＆ｙ＝Δａ＆（ｂ＾ｙ））
となる。これらは共に秘密情報の漏洩が発生しない遷移である（ステップ６前半）。
よって線３と線４のΔａが異なるタイミングで発生するような遅延素子を入れれば良い。具体的には、図９において、破線示す信号経路１のいずれかの位置、もしくは破線で示す信号経路２のいずれかの位置に遅延素子を配置すれば良い。図２では信号経路２（線３の位置）に遅延素子を配置した。
【００６５】
続けてＸＯＲゲート１０８に関しΔｂによる入力信号の遷移について検討する。
Δｂによる線１の入力遷移は、（Δｂ＆ｘ）、
Δｂによる線２の入力遷移は、（ａ＆Δｂ＾Δｂ＆ｘ＝Δｂ＆（ａ＾ｘ））、
となる。これらは共に秘密情報の漏洩が発生しない遷移である（ステップ６前半）。よって線３と線４のΔｂが異なるタイミングで発生するような遅延素子を入れれば良い。具体的には、図１０の破線で示す信号経路３のいずれかの位置、もしくは破線で示す信号経路４のいずれかの位置に遅延素子を配置すれば良い。上記のΔａの条件を合わせて考えると、図１０の示す位置（線３の位置）に配置すれば、Δａ，Δｂの両方の条件を満足する。線４側でもよいが、もともと線３側のほうがゲート段数が多いため信号が遅延する傾向がある。よって、直感的には線３側にいれたほうがわかりやすい。
【００６６】
以上でＭａｓｋｅｄ−ＡＮＤ方式の遅延素子の配置は完了する。ＭＡＮＤ方式でも同じ考え方により遅延素子を配置することができる。
【００６７】
実施の形態２．
次に図１１〜図１５を用いて実施の形態２を説明する。実施の形態１では、それぞれの論理ゲートのスイッチングする確率が秘匿対象データに依存することを遮断することにより、消費電力から秘密情報を解読する攻撃を防御するものであり、ゲート単体から発生する秘密情報の漏洩に対する対策であった。実施の形態２は、ゲート間の相関関係によって発生しうるスイッチングの偏りを遮断する。
【００６８】
論理ゲートのスイッチング確率の平均を均等化することにより、スイッチングの確率と秘匿対象データとの依存関係を遮断することは、前記のように消費電力から秘密情報を解読する攻撃に有効である。しかし、原理的には、ゲート毎にスイッチング確率の平均を均等にした場合であっても、消費電力から秘密情報を解読される可能性がある。実施の形態２では、これに対抗する電子素子２００１を説明する。図１１は、実施の形態２に係る電子素子２００１の構成図である。電子素子２００１は、図１９の構成に対して、遅延素子９０１ａ〜９０１ｃを備えた点が異なっている。
【００６９】
電子素子の動作を説明する前に、まず、ゲート毎にスイッチング確率の平均を均等にした場合であっても、消費電力から秘密情報を解読される可能性がる理由について説明する。図１２は、図１９に示した「ＭＡＮＤ方式」における、φ1とφ2の真理値表を示す図である。図において、「'」（アポストロフィ）を付した信号は変化前を示す。「'」のない信号は、変化後を示す。ここでいう「変化」は、「ａ'＝０」→「ａ＝０］のような場合も含めている。
【００７０】
図１２を説明する。「ａ’」、「ｂ’」、「ｍｘ’」、「ｍｙ’」「φ１’」、「φ２’」は、図１９における「ＭＡＮＤ方式」の変化前の信号を示す。同様に「ａ」、「ｂ」、「ｍｘ」、「ｍｙ」、「φ１」、「φ２」は、変化後の信号を示す。
【００７１】
また、「Δφ１」、「Δφ２」は、出力の遷移（φ１’→φ１、φ２’→φ２）を示している。また、「Σφ＝Δφ１＋Δφ２」で遷移回数の総和を表す。
【００７２】
図１２は、変化前の入力信号である「ａ’」、「ｂ’」、「ｍｘ’」、「ｍｙ’」と変化後の入力信号である「ａ」、「ｂ」、「ｍｘ」、「ｍｙ」に対する遷移を示した真理値表である。そのため図１２（ａ）〜図１２（ｈ）において、２8＝２５６通りの場合を示している。
【００７３】
図１３は、図１２の変化前の信号がすべて「０」とした場合の、遷移を示す真理値表である。図１３は図１２（ａ）の「第１行〜第１６行」の部分を抜き出したものである。図１３から、φ1とφ2の信号間に、ａ（変化後である）の値に依存した相関があることがわかる。
すなわち、
（１）ａ＝０の場合、ｂの「０」、「１」によらず、φ1とφ2は同一の動作（φ1とφ2は同じ値をとる）をする。
（２）ａ＝１、ｂ＝０の場合、φ1とφ2は同一の動作をする。
（３）ａ＝１、ｂ＝１の場合、φ1とφ2は相補的な動作をする。
この場合、φ1とφ2のスイッチングする確率は、ａの値に依存せず、均等である。
しかし、φ1とφ2における遷移回数の和Σφの２乗（Σφ）2に差が発生する。
図１３に示すように、
ａ＝０における遷移回数の和の２乗の平均値は、
（４＋４＋４＋４）／８＝２
である。
ａ＝１における遷移回数の和の２乗の平均値は、
（４＋４＋１＋１＋１＋１）／８＝１．５
である。
同様に、
ｂ＝０における遷移回数の和の２乗の平均値＝２であり、
ｂ＝１における遷移回数の和の２乗の平均値＝１．５である。
φ1あるいはφ2に遷移が生じることは消費電力が変動することを意味する。従って、遷移回数に依存する消費電力に対して、その２乗の差を観測することで偏りが生じ、秘密情報が漏洩する可能性が発生する。
【００７４】
図１２は、入力信号の変化のすべての場合（２５６通り）を示している。図１２の真理値表については、図１４に示すように、消費電力の平均波形（Σφに対応）を観測することに基づく攻撃では、秘匿対象データａ，ｂの値によらず、φ1とφ2との遷移回数の平均値は１である。従って、消費電力の平均波形に差が生じることがなく、秘匿対象データａ，ｂを解読することができない。
【００７５】
しかし、図１５に示すように、消費電力の２乗値の平均波形（Σφの２乗に対応）を観測することに基づく攻撃では、秘匿対象データａ，ｂの値により、φ1とφ2との遷移回数の「２乗の平均値」が異なってくる。従って、消費電力の「２乗の平均波形」に差が生じることとなり、秘匿対象データａ，ｂを解読される可能性が生じる。
【００７６】
図１１の電子素子２００１を説明する。電子素子２００１は、図１９の「ＭＡＮＤ方式」の構成に対して、上記で説明した「消費電力の２乗の平均波形の差」をなくす構成である。電子素子２００１は、複数の論理ゲートのうち所定の論理ゲートの動作タイミングを、信号の伝搬制御により制御することで、秘匿対象データと自身の消費電力との間の相関関係を遮断する。「所定の論理ゲート」とは、上記で例示したように、「遷移回数の和の２乗平均」が、秘匿対象データａ，ｂの少なくともいずれかに依存する論理ゲートである。依存する論理ゲートは、図１２に示したような真理値表に基づく検討により特定することができる。
【００７７】
前記のように電子素子２００１は、図２の「ＭＡＮＤ方式」に対して、さらに遅延素子９０１ａ、９０１ｂ、９０１ｃを備えた構成である。「ＭＡＮＤ方式」を構成する論理ゲートの入力信号に遅延素子を挿入することにより、２つのＯＲゲート２０３とＯＲゲート２０６の動作タイミングを意図的に変える。これにより消費電力の２乗の差を利用した電力解析による攻撃に対抗することができる。
【００７８】
電子素子２００１では、遅延素子９０１ａ〜９０１ｂを挿入し、ＭＡＮＤ出力のφ2側の動作を遅らせている。これにより、φ1とφ2の「遷移の和の２乗」は、φ1（ＯＲゲート２０３）が動作する時刻、もしくはφ2（ＯＲゲート２０６）が動作する時刻の消費電力に直接影響を与えない。よって、スイッチング回数における総和の２乗値の偏りから発生する秘密情報の漏洩の可能性を最小限に抑えることが可能となる。
【００７９】
ここで、遅延素子の配置する位置について説明する。真理値表に基づき「遷移回数の和の２乗平均が秘匿対象データａ，ｂの少なくともいずれかに依存する論理ゲート」を特定する際に、依存させることとなる入力信号を特定する。そして、特定した信号が入力する入力部と特定した論理ゲートとを結ぶ信号経路のいずれかの位置に遅延素子を配置する。
【００８０】
図１３では、例として「ＭＡＮＤ方式」のφ2出力用の入力信号に遅延を挿入した例を示した。しかしこれに限定することはなく、この他、「ＭＡＮＤ方式」のφ1出力用の入力信号に遅延素子を挿入した場合も同一の効果が得られる。また、図１の「Ｍａｓｋｅｄ−ＡＮＤ方式」におけるＡＮＤゲート１０１，１０２，１０３，１０４の入力信号に遅延素子を挿入した場合も同一の効果が得られる。
【００８１】
実施の形態２に係る電子素子は遅延素子を備えたので、秘匿対象データの値の違いによる論理ゲートにおける遷移回数の和Σφの２乗（Σφ）2に差が生じることを解消することができる。これにより消費電力から秘密情報を解読する攻撃を防御することができる。
【００８２】
実施の形態３．
次に図１６、図１７を用いて実施の形態３を説明する。実施の形態３は、例えば「Ｍａｓｋｅｄ−ＡＮＤ方式」あるいは「ＭＡＮＤ方式」の電子素子において、信号を入力し、入力した信号の状態遷移が完了した場合に出力する実施形態である。遷移状態を制御する素子を用いて他のゲートに過渡遷移が伝搬するのを防ぎ、スイッチング回数の偏りを最小限に抑えることができる。
【００８３】
図１６は、実施の形態３に係る電子素子３００１の構成図である。電子素子３００１は、図１８の「Ｍａｓｋｅｄ−ＡＮＤ方式」に対して、制御用ゲートであるＡＮＤゲート６０１（出力制御部の一例）を追加した構成である。図１６の信号ｅｎ（出力指令信号の一例）は、初期状態及び演算休止状態では信号値「０」とし、演算稼動状態では信号値「１」をとるものとする。また、演算休止状態から演算稼動状態に状態遷移する場合、信号ｅｎは他の信号より十分遅れて０から１に変化するものとする。
【００８４】
この場合、演算休止状態から演算稼動状態に状態遷移する際に発生する各ゲートの過渡遷移は、制御用ゲートであるＡＮＤゲート６０１の入力信号ｅｎが信号値０であるため、ＡＮＤゲート６０１より先に接続されるゲートに伝搬しない。よって、電子素子３００１で発生するスイッチング回数の偏りは、ＡＮＤゲート６０１より先の他のゲートに影しない。このため、スイッチング回数（スイッチング確率）の偏りから発生する消費電力の偏りに基づく秘密情報の漏洩を最小限に抑えることが可能となる。
【００８５】
図１６では例としてＡＮＤゲートを用いて制御用ゲートとした。しかし、これに限ることはなく、この他にＮＡＮＤゲート，ＯＲゲート，ＮＯＲゲートでも構わない。制御用ゲートとしてＯＲゲート、ＮＯＲゲートを用いる場合は、信号ｅｎを初期状態及び演算休止状態では信号値「１」とし、演算稼動状態では信号値「０」をとるものとする。
【００８６】
また、図１６では例として「Ｍａｓｋｅｄ−ＡＮＤ方式」の出力（ＸＯＲゲート１０８の出力）に制御用ゲートを適用した。しかし、この他のＸＯＲゲートの出力にも適用することで、よりスイッチング回数の偏りを抑えることが可能である。すなわち、制御用ゲートは電子素子３００１のいずれのゲートの出力、あるいは入力に適用することができる。この適用により、スイッチング回数の偏りを抑えることができる。
【００８７】
図１７は実施の形態３に係る電子素子３００２の構成を示す図である。電子素子３００２は、図２０に示した「ＭＡＮＤ方式」に、制御用ゲート（出力制御部の一例）を適用した構成である。電子素子３００２は、図２０に示した「ＭＡＮＤ方式」について、さらに制御用ゲートであるＡＮＤゲート７０１，７０２を追加している。図１７の信号ｅｎは初期状態及び演算休止状態では信号値「０」とし、演算稼動状態では信号値「１」をとるものとする。また、演算休止状態から演算稼動状態に状態遷移する場合、信号ｅｎは他の信号より十分遅れて０から１に変化するものとする。
【００８８】
この場合、演算休止状態から演算稼動状態に状態遷移する際に発生する各ゲートの過渡遷移は、制御用のＡＮＤゲート７０１、７０２の入力信号ｅｎが信号値「０」であるため、制御用のＡＮＤゲート７０１及び７０２より先に接続されるゲートに伝搬しない。よって、図１７で発生するスイッチング回数の偏りは他のゲートに影響を及ぼさない。よって、スイッチング回数の偏りから発生する秘密情報の漏洩を最小限に抑えることが可能となる。図１７では例としてＡＮＤゲートを用いて制御用ゲートとしたが、この他にＮＡＮＤゲート，ＯＲゲート，ＮＯＲゲートでも代用できる。制御用ゲートとして、ＯＲゲート，ＮＯＲゲートを用いた場合は、信号ｅｎを初期状態及び演算休止状態では信号値「１」とし、演算稼動状態では信号値「０」をとるものとする。
【００８９】
実施の形態に係る電子素子は、制御用ゲートを備えたので、他のゲートに過渡遷移が伝搬するのを防ぎ、スイッチング回数の偏りを最小限に抑えることができる。
【００９０】
なお、実施の形態１から実施の形態３の電子素子の機能の少なくとも２つ以上を併せ持つ電子素子によれば、消費電力から秘密情報を解読しようとする攻撃の耐性をさらに向上することができる。
【００９１】
以上に説明した実施の形態１〜実施の形態３に説明した電子素子は、所定のデータと乱数とを入力して所定の演算を実行し、実行した演算結果と乱数の排他的論理和を出力する論理回路に対して、特定の入力信号もしくは中間信号に遅延素子を挿入することで、信号の過渡状態をランダム化すること特徴とする。
【００９２】
以上に説明した実施の形態１〜実施の形態３に説明した電子素子は、所定のデータと乱数とを入力して所定の演算を実行し、実行した演算結果と乱数の排他的論理和を出力する論理回路に対して、特定の入力信号もしくは中間信号もしくは出力信号に、状態遷移を制御する素子を挿入することで、信号の過渡遷移を他のゲートに伝搬するのを防ぐことを特徴とする。
【００９３】
以上に説明した実施の形態１〜実施の形態３に説明した電子素子は所定のデータと乱数を入力し、所定の演算を実行し、必要な演算結果に乱数成分を含む演算結果を出力する論理回路に対して、所定の演算を実行する回路と、乱数成分を再計算する回路に対して、各回路の動作するタイミングを制御することで、回路間の電力の相関をランダム化することを特徴とする。
【図面の簡単な説明】
【００９４】
【図１】実施の形態１における処理の関係を示す図である。
【図２】実施の形態１における電子素子１００１の構成図である。
【図３】実施の形態１における電子素子１００１の遅延素子の配置位置を決定する手順を示すフローチャートである。
【図４】実施の形態１における電子素子１００１のＸＯＲゲート１０６の真理値表である。
【図５】実施の形態１における電子素子１００２の構成図である。
【図６】実施の形態１における遅延素子の配置方法を示すフローチャートである。
【図７】実施の形態１における電子素子１００１の遅延素子の配置を説明する図である。
【図８】実施の形態１における電子素子１００１の遅延素子の配置を説明する図である。
【図９】実施の形態１における電子素子１００１の遅延素子の配置を説明する図である。
【図１０】実施の形態１における電子素子１００１の遅延素子の配置を説明する図である。
【図１１】実施の形態２における電子素子２００１の構成図である。
【図１２ａ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１２ｂ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１２ｃ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１２ｄ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１２ｅ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１２ｆ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１２ｇ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１２ｈ】実施の形態２における電子素子２００１の出力に関する真理値表である。
【図１３】図１２の真理値表の一部である。
【図１４】実施の形態２における電子素子２００１の出力φの遷移回数の平均値を示す図である。
【図１５】実施の形態２における電子素子２００１の出力φの遷移回数の２乗の平均値を示す図である。
【図１６】実施の形態３における電子素子３００１の構成図である。
【図１７】実施の形態３における電子素子３００２の構成図である。
【図１８】従来のＭａｓｋｅｄ−ＡＮＤ方式の構成図である。
【図１９】従来のＭＡＮＤ方式の構成図である。
【図２０】従来のＭＡＮＤ方式の別の構成図である。
【符号の説明】
【００９５】
１０１，１０２，１０３，１０４  ＡＮＤゲート、１０５，１０６，１０７，１０８  ＸＯＲゲート、２０１，２０２  ＡＮＤゲート、２０３  ＯＲゲート、２０４，２０５  ＡＮＤゲート、２０６  ＯＲゲート、３０１，３０２  セレクタ、４０１，４０２  遅延素子、５０２，５０３，５０６，５０７  信号線、６０１  ＡＮＤゲート、７０１，７０２  ＡＮＤゲート、９０１ａ，９０１ｂ，９０１ｃ  遅延素子、５１０，５２０  遅延素子、１００１，１００２，２００１，３００１，３００２  電子素子。
【図１】
2006203416.tif 000003
【図２】
2006203416.tif 000004
【図３】
2006203416.tif 000005
【図４】
2006203416.tif 000006
【図５】
2006203416.tif 000007
【図６】
2006203416.tif 000008
【図７】
2006203416.tif 000009
【図８】
2006203416.tif 000010
【図９】
2006203416.tif 000011
【図１０】
2006203416.tif 000012
【図１１】
2006203416.tif 000013
【図１２ａ】
2006203416.tif 000014
【図１２ｂ】
2006203416.tif 000015
【図１２ｃ】
2006203416.tif 000016
【図１２ｄ】
2006203416.tif 000017
【図１２ｅ】
2006203416.tif 000018
【図１２ｆ】
2006203416.tif 000019
【図１２ｇ】
2006203416.tif 000020
【図１２ｈ】
2006203416.tif 000021
【図１３】
2006203416.tif 000022
【図１４】
2006203416.tif 000023
【図１５】
2006203416.tif 000024
【図１６】
2006203416.tif 000025
【図１７】
2006203416.tif 000026
【図１８】
2006203416.tif 000027
【図１９】
2006203416.tif 000028
【図２０】
2006203416.tif 000029