(57)【要約】【課題】故障利用攻撃を検出する方法及び装置を提供する。【解決手段】複数のブラインディング値を提供し、第１の群のデータ要素、及び、第１の群の少なくとも１つのデータ要素とブラインディング値のうちの少なくとも１つとの間で排他的論理和を実行することによって生成された少なくとも１つの追加的データ要素を有する第１のセットを生成するとともに、第１のセットの各データ要素と複数のブラインディング値のうちの選択した１つとの間の排他的論理和に対応するデータ要素からなる第２のセットを生成し、第１のセットのデータ要素の各々の間で可換演算を実行することによって第１のシグネチャを生成するとともに、第２のセットのデータ要素の各々の間で可換演算を実行することによって第２のシグネチャを生成し、第１のシグネチャと第２のシグネチャとを比較して故障利用攻撃を検出する。【選択図】図３
2011109662.tif 000002
【特許請求の範囲】
【請求項１】
故障利用攻撃を検出する方法であって、
複数のブラインディング値を提供するステップ、
第１の群のデータ要素、及び、前記第１の群の少なくとも１つのデータ要素と前記ブラインディング値のうちの少なくとも１つとの間で排他的論理和を実行することによって生成された少なくとも１つの追加的データ要素を有するデータ要素からなる第１のセットを生成するステップ、
前記第１のセットの各データ要素と前記複数のブラインディング値のうちの選択した１つとの間の排他的論理和に対応するデータ要素からなる第２のセットを生成するステップ、
前記第１のセットのデータ要素の各々の間で可換演算を実行することにより、第１のシグネチャを生成するステップ、
前記第２のセットのデータ要素の各々の間で可換演算を実行することにより、第２のシグネチャを生成するステップ、並びに、
前記第１のシグネチャと第２のシグネチャとを比較して、故障利用攻撃を検出するステップ
を備えることを特徴とする方法。
【請求項２】
前記少なくとも１つの追加的データ要素を生成する際に、
前記第１の群のデータ要素の各データ要素と前記複数のブラインディング値の各々との間で排他的論理和を実行することにより、データ要素からなる複数の追加的群を生成し、
少なくとも１つの追加的群のうちの少なくとも１つのデータ値を選択して、少なくとも１つの追加的データ要素を生成することを特徴とする請求項１に記載の方法。
【請求項３】
前記データ要素からなる少なくとも１つの追加的群を生成する際に、
前記第１の群のデータ要素の各データ要素と前記ブラインディング値のうちの２つの各組合せとの間で排他的論理和を実行することを特徴とする請求項２に記載の方法。
【請求項４】
前記第１のセットの各データ要素と前記複数のブラインディング値のうちの選択した１つとの間で排他的論理和を実行することにより、前記第１のセットの各データ要素をブラインディングすることによって、データ要素からなる前記第２のセットは生成されることを特徴とする請求項１から３のいずれかに記載の方法。
【請求項５】
前記第１の群の各データ要素と前記複数のブラインディング値のうちの選択した１つとの間で排他的論理和を実行し、且つ、前記ブラインディングされた群のデータ要素のうちの少なくとも１つのデータ要素と前記ブラインディング値のうちの少なくとも１つとの間で排他的論理和を実行することにより、前記第１の群のデータ要素をブラインディングして、データ要素からなるブラインディングされた群を生成することによって、データ要素からなる前記第２のセットは生成されることを特徴とする請求項１から３のいずれかに記載の方法。
【請求項６】
前記少なくとも１つの追加的データ要素を選択する際に、
ブラインディングされた各群の各データ値に対して、前記データ値が既に前記第２のセット内に存在するか否かを判断し、前記データ値が前記第２のセット内に存在しない場合には前記データ値を前記第２のセットに追加することを特徴とする請求項１から５のいずれかに記載の方法。
【請求項７】
前記少なくとも１つの追加的データ要素を選択する際に、
前記第２のセットに追加された各データ値を使用不能としてタグ付けし、
前記データ値が既に前記第２のセット内に存在する場合には、前記データ値が使用不能としてタグ付けされているか否かを判断し、前記データ値が使用可能でないときには、前記データ値を使用不能としてタグ付けし、前記データ値が使用可能である場合には、前記データ値を前記第２のセットに追加することを特徴とする請求項６に記載の方法。
【請求項８】
前記第１のシグネチャ及び第２のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素間で排他的論理和を実行することを特徴とする請求項１から７のいずれかに記載の方法。
【請求項９】
前記第１のシグネチャ及び第２のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に追加することを特徴とする請求項１から７のいずれかに記載の方法。
【請求項１０】
前記第１のシグネチャ及び第２のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に乗算することを特徴とする請求項１から９のいずれかに記載の方法。
【請求項１１】
故障利用攻撃を検出する装置であって、
複数のブラインディング値を格納する記憶装置、
第１の群のデータ要素、及び、前記第１の群の少なくとも１つのデータ要素と前記ブラインディング値のうちの少なくとも１つとの間で排他的論理和を実行することによって生成された少なくとも１つの追加的データ要素を有するデータ要素からなる第１のセットを生成し、また、前記第１のセットの各データ要素と前記複数のブラインディング値のうちの選択した１つとの間の排他的論理和に対応するデータ要素からなる第２のセットを生成する計算手段、
前記第１のセットのデータ要素の各々の間で可換演算を実行することによって第１のシグネチャを生成し、また、前記第２のセットのデータ要素の各々の間で可換演算を実行することによって第２のシグネチャを生成するシグネチャ手段、並びに、
前記第１のシグネチャと第２のシグネチャとを比較して故障利用攻撃を検出する比較器
を備えることを特徴とする装置。
【請求項１２】
前記第１のセットの少なくとも１つのデータ要素に基づく演算を実行する関数器をさらに備え、前記関数器は、秘密鍵に基づく暗号化または復号化の演算を実行するように構成されていることを特徴とする請求項１１に記載の装置。
【請求項１３】
請求項１１または請求項１２に記載の装置を備えることを特徴とする集積回路。
【請求項１４】
請求項１３に記載の集積回路を備えることを特徴とするＩＣカード。
【請求項１５】
請求項１３に記載の集積回路を備えることを特徴とするＩＣカードリーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、故障利用攻撃（Fault Attack）を検出するための方法及び装置に関し、具体的には、シグネチャに基づく検出を実現するための方法及び装置に関する。
【背景技術】
【０００２】
集積回路は、認証キー、シグネチャ等の扱うデータのセキュリティの観点から、または、暗号化アルゴリズム若しくは復号化アルゴリズム等の利用するアルゴリズムの観点から敏感であると考えられる回路系を備えることができる。そのような情報は、秘密にされることが要求され、つまり、該情報は、第三者または未許可の回路に伝達されるべきではなく、また、第三者または未許可の回路によって検出可能であってはならない。
【０００３】
情報の処理中に使用される集積回路のゾーンを検出する際には、該集積回路によって扱われる情報を侵害する共通のプロセスが存在する。このことのために、集積回路は、作動され、または、機能的環境に置かれ、符号化すべきデータパケットが入力に導かれる。データが処理されている間、集積回路の表面にはレーザ光が照射されて、集積回路の機能に故障が注入される。並行して、集積回路の出力を解析することにより、データを処理する集積回路のゾーンを判断することができる。それらのゾーンを突き止めると、侵害者は、処理されている機密データを判断するために、それらのゾーンに攻撃を集中させることができる。
【０００４】
シグネチャは、故障利用攻撃から集積回路を保護する一つの方法をもたらす。シグネチャは、アルゴリズムによって用いられる１つ以上のデータ値に基づいて生成される。そして、シグネチャは、同じデータ値がそのアルゴリズムによって用いられた後に、その同じデータ値に対して生成される。２つのシグネチャの違いが、攻撃の発生を示すことになる。一旦、検出回路がそのような攻撃を検出した場合、検出回路は、集積回路をリセットする、及び／またはカウンタをインクリメントする等の対抗手段を講じ、それにより、一旦、ある一定数の障害が検出されたときに、この集積回路は恒久的に休止状態になる。
【０００５】
サイドチャネル攻撃は、例えば、ある回路の消費電力を測定することを伴う違う種類の攻撃である。ブラインディング（Blinding）は、サイドチャネル攻撃から回路を保護する一つの方法をもたらす。ブラインディングは、擬似乱変数を用いて、非破壊的な方法で、アルゴリズムの入力を変えることを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
同じ群のデータ値を用いてシグネチャを生成して故障利用攻撃を検出することができ、また、ブラインディングを実行して、サイドチャネル攻撃をより困難にすることができる装置を提供することが望ましい。しかしながら、これらの機能を兼ね備える有効な装置を実施するには難しい点がある。
【０００７】
本発明の目的は、従来技術における１つ以上の問題に少なくとも部分的に対処することが可能である故障利用攻撃を検出するための方法及び装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の故障利用攻撃を検出する方法は、複数のブラインディング値を提供するステップ、第１の群のデータ要素、及び、前記第１の群の少なくとも１つのデータ要素と前記ブラインディング値のうちの少なくとも１つとの間で排他的論理和を実行することによって生成された少なくとも１つの追加的データ要素を有するデータ要素からなる第１のセットを生成するステップ、前記第１のセットの各データ要素と前記複数のブラインディング値のうちの選択した１つとの間の排他的論理和に対応するデータ要素からなる第２のセットを生成するステップ、前記第１のセットのデータ要素の各々の間で可換演算を実行することにより、第１のシグネチャを生成するステップ、前記第２のセットのデータ要素の各々の間で可換演算を実行することにより、第２のシグネチャを生成するステップ、並びに、前記第１のシグネチャと第２のシグネチャとを比較して、故障利用攻撃を検出するステップを備えることを特徴とする。
【０００９】
本発明の方法は、前記少なくとも１つの追加的データ要素を生成する際に、前記第１の群のデータ要素の各データ要素と前記複数のブラインディング値の各々との間で排他的論理和を実行することにより、データ要素からなる複数の追加的群を生成し、少なくとも１つの追加的群のうちの少なくとも１つのデータ値を選択して、少なくとも１つの追加的データ要素を生成することを特徴とする。
【００１０】
本発明の方法は、前記データ要素からなる少なくとも１つの追加的群を生成する際に、前記第１の群のデータ要素の各データ要素と前記ブラインディング値のうちの２つの各組合せとの間で排他的論理和を実行することを特徴とする。
【００１１】
本発明の方法は、前記第１のセットの各データ要素と前記複数のブラインディング値のうちの選択した１つとの間で排他的論理和を実行することにより、前記第１のセットの各データ要素をブラインディングすることによって、データ要素からなる前記第２のセットは生成されることを特徴とする。
【００１２】
本発明の方法は、前記第１の群の各データ要素と前記複数のブラインディング値のうちの選択した１つとの間で排他的論理和を実行し、且つ、前記ブラインディングされた群のデータ要素のうちの少なくとも１つのデータ要素と前記ブラインディング値のうちの少なくとも１つとの間で排他的論理和を実行することにより、前記第１の群のデータ要素をブラインディングして、データ要素からなるブラインディングされた群を生成することによって、データ要素からなる前記第２のセットは生成されることを特徴とする。
【００１３】
本発明の方法は、前記少なくとも１つの追加的データ要素を選択する際に、ブラインディングされた各群の各データ値に対して、前記データ値が既に前記第２のセット内に存在するか否かを判断し、前記データ値が前記第２のセット内に存在しない場合には前記データ値を前記第２のセットに追加することを特徴とする。
【００１４】
本発明の方法は、前記少なくとも１つの追加的データ要素を選択する際に、前記第２のセットに追加された各データ値を使用不能としてタグ付けし、前記データ値が既に前記第２のセット内に存在する場合には、前記データ値が使用不能としてタグ付けされているか否かを判断し、前記データ値が使用可能でないときには、前記データ値を使用不能としてタグ付けし、前記データ値が使用可能である場合には、前記データ値を前記第２のセットに追加することを特徴とする。
【００１５】
本発明の方法は、前記第１のシグネチャ及び第２のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素間で排他的論理和を実行することを特徴とする。
【００１６】
本発明の方法は、前記第１のシグネチャ及び第２のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に追加することを特徴とする。
【００１７】
本発明の方法は、前記第１のシグネチャ及び第２のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に乗算することを特徴とする。
【００１８】
本発明の故障利用攻撃を検出する装置は、複数のブラインディング値を格納する記憶装置、第１の群のデータ要素、及び、前記第１の群の少なくとも１つのデータ要素と前記ブラインディング値のうちの少なくとも１つとの間で排他的論理和を実行することによって生成された少なくとも１つの追加的データ要素を有するデータ要素からなる第１のセットを生成し、また、前記第１のセットの各データ要素と前記複数のブラインディング値のうちの選択した１つとの間の排他的論理和に対応するデータ要素からなる第２のセットを生成する計算手段、前記第１のセットのデータ要素の各々の間で可換演算を実行することによって第１のシグネチャを生成し、また、前記第２のセットのデータ要素の各々の間で可換演算を実行することによって第２のシグネチャを生成するシグネチャ手段、並びに、前記第１のシグネチャと第２のシグネチャとを比較して故障利用攻撃を検出する比較器を備えることを特徴とする。
【００１９】
本発明の装置は、前記第１のセットの少なくとも１つのデータ要素に基づく演算を実行する関数器をさらに備え、前記関数器は、秘密鍵に基づく暗号化または復号化の演算を実行するように構成されていることを特徴とする。
【００２０】
本発明の別の態様によれば、上記装置を備える集積回路、ＩＣカードまたはＩＣカードリーダが提供される。
【００２１】
本発明の上記及びその他の目的、特徴、態様並びに効果は、添付図面を参照して、限定ではなく例証として示されている実施形態の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００２２】
【図１】故障利用攻撃を検出してサイドチャネル攻撃から保護する一実施形態による回路を示すブロック図である。
【図２】図１の回路に用いられるデータ値を示す図である。
【図３】故障利用攻撃を検出してサイドチャネル攻撃から保護する他の実施形態による回路を示すブロック図である。
【図４】図３の回路に用いられるデータ値を示す図である。
【図５】故障利用攻撃を検出してサイドチャネル攻撃から保護する更に他の実施形態による回路を示すブロック図である。
【図６】図５の回路に用いられるデータ値を示す図である。
【図７】データセットを生成する手順を示すフローチャートである。
【図８】故障利用攻撃を検出する回路を備える電子装置を示すブロック図である。
【発明を実施するための形態】
【００２３】
明確にするために、本発明の理解に役立つステップおよび構成要素のみが示されており、それらについて詳細に説明する。具体的には、１つ以上の故障注入の検出時に、集積回路をリセットし、または、集積回路を休止状態にする回路系は詳述されておらず、本発明は、そのような回路に適用可能である。さらに、保護される集積回路の主要な機能は詳細に説明されておらず、本発明は、暗号化または復号化等の何らかの敏感な機能、または、機密データを含む他の機能を実施する集積回路に適合する。
【００２４】
図１は、例えば、暗号鍵等の機密データを含むアルゴリズムを実行する関数器１０２を備える回路１００（装置）を示す。本実施の形態において、関数器１０２は、入力ライン１０４上で鍵Ｋを受取る。
【００２５】
データ値Ｄ1 〜ＤN からなる群は、ブラインディング部１０８へのライン１０６上に供給され、ブラインディング部１０８は、自身への入力ライン１１０に供給されたブラインディング値Ｒに基づいて、それらのデータ値に対してブラインディングアルゴリズムを適用する。ブラインディング値Ｒは、例えば、擬似乱数値である。次いで、ブラインディングされたデータ値Ｄ1'〜ＤN'が、関数器１０２へのライン１１２上に供給される。関数器１０２は、ブラインディングされたデータ値Ｄ1'〜ＤN'を用いるアルゴリズムを実行して結果Ｃを出力し、その結果Ｃは、暗号化若しくは復号化されたデータブロック、または他の値とすることができる。
【００２６】
ブラインディングされたデータ値Ｄ1'〜ＤN'は、関数器１０２で用いられる間、例えば、レジスタ（図１には図示せず）に格納される。関数器１０２によるアルゴリズムの実行中の様々な段階において、及び／またはこのアルゴリズム実行の終了時に、ブラインディングされたデータ値Ｄ1'〜ＤN'は、シグネチャ部１１６へのライン１１４上に出力される。また、元のデータ値Ｄ1 〜ＤN は、ライン１１８でシグネチャ部に供給される。
【００２７】
シグネチャ部１１６は、元のデータ値Ｄ1 〜ＤN に基づいてシグネチャＳ1 を生成するとともに、ブラインディングされたデータ値Ｄ1'〜ＤN'に基づいてシグネチャＳ2 を生成する。そして、シグネチャＳ1 及びＳ2 は、比較器１２０によって比較され、比較器１２０は、これらのシグネチャが一致するか否かを示す出力を出力ライン１２２に与える。
【００２８】
ブラインディング部１０８によって適用されたブラインディングアルゴリズムは、例えば、ブラインディング値Ｒとデータ値Ｄ1 〜ＤN の各々との間に適用されたＸＯＲ関数である。しかし、故障利用攻撃がない場合に、データ値からなる両群に適用されるシグネチャ関数を選択して、同じ結果を得るには問題がある。例えば、図２は、この問題の実例を示す。
【００２９】
図２は、第１の行２００において、Ｎが９に等しく、かつＤ1 〜Ｄ9 がそれぞれ、１２、１、０、１２８、２４５、０、１、２及び８に等しい場合のデータ値Ｄ1 〜ＤN の例を示す。このシグネチャを決める関数が、全てのデータ値の加算であると仮定すると、Ｄ1 〜Ｄ9 のシグネチャは３９７に等しくなる。図２の第２の行２０２は、ブラインディングされたデータ値Ｄ1'〜Ｄ9'を示し、これらのデータ値は、この例において、データ値Ｄ1 〜Ｄ9 の各々と値０１との間にＸＯＲ演算を適用することによって得られる。この結果、データ値Ｄ1'〜Ｄ9'はそれぞれ、１３、２、１、１２９、２４４、１、０、３及び９に等しくなる。しかし、故障がないと仮定すると、データ値Ｄ1'〜Ｄ9'の合計、ひいてはシグネチャＳ2 は４０２に等しくなる。従って、故障がないにもかかわらず、シグネチャＳ1 とシグネチャＳ2 との不一致が生じる場合、このシグネチャスキームは有効ではない。
【００３０】
図３は、故障利用攻撃を検出してサイドチャネル攻撃から保護する回路３００（装置）を示す。回路３００は、図１の回路と同じ構成要素の多くを備え、これらの構成要素はここでは詳細に説明しない。具体的には、この回路３００は、関数器１０２、ブラインディング部１０８、シグネチャ部１１６及び比較器１２０を備える。
【００３１】
回路３００は、入力ライン３０４でデータ値Ｄ1 〜ＤN を受取り、また、入力ライン３０６で複数のブラインディング値Ｒ1 〜ＲL を受取るプリブラインディング部３０２を更に備える。プリブラインディング部３０２は、データ値Ｄ1 〜ＤM からなるデータセットを生成する。データセットＤ1 〜ＤM は、データ値Ｄ1 〜ＤN と、１つの追加データ値ＤM 、または、複数の追加データ値ＤN+1 〜ＤM とを有する。データ値Ｄ1 〜ＤM は、ライン３０８でブラインディング部１０８へ供給されるとともに、ライン３１０でシグネチャ部１１６へ供給される。
【００３２】
ブラインディング部１０８によってＸＯＲブラインディング関数が適用された場合に、その結果が、新たな値を導入することなく、データ値Ｄ1 〜ＤM の順列になり、それに伴って、シグネチャ部１１６が、何らかの可換関数を用いて、有効なシグネチャを生成できるように、データセットＤ1 〜ＤM は生成される。このことは、例えば、図４を参照して詳細に説明するように実現される。
【００３３】
図４は、データセットＤ1 〜ＤM のデータ値の例を含むテーブルを示す。このテーブルの一番上の行は、データ値Ｄ1 〜ＤN を示し、この場合、それぞれ、十進値１２、１、０、１２８、２４５、０、１、２及び８の二進等値に等しい９つの値Ｄ1 〜Ｄ9 を有する。これらのデータ値を、群Ａと呼ぶことにする。この例においては、ブラインディング値Ｒ1 〜ＲL が、それぞれ、十進値０１及び０２の二進等値に等しい２つの値Ｒ1 及びＲ2 を有すると仮定する。
【００３４】
プリブラインディング部３０２は、データ群Ａの値の各々と第１のブラインディング値０１とのＸＯＲに等しいデータ値“Ａ＋１”からなる新たな群を生成する（符号“＋”は、本願明細書において、関数ＸＯＲを示す）。この新たな群は、図４のテーブルの第２の行に示されており、第２の行の値は、１３、０、１、１２９、２４４、１、０、３及び９である。また、プリブラインディング部３０２は、データ群Ａの値の各々と第２のブラインディング値０２とのＸＯＲに等しいデータ値“Ａ＋２”からなる新たな群も生成する。この新たな群は、図４のテーブルの第３の行に示されており、第３の行の値は、１４、３、２、１３０、２４７、２、３、０及び１０である。
【００３５】
図４の例においては、データ値“（Ａ＋１）＋２”からなる追加的な群も生成される。これは、“Ａ＋３”に等しくて、データ群Ａの値の各々と値０３とのＸＯＲに等しい。図４の第４の行に示されている値は、１５、２、３、１３１、２４６、３、２、１及び１１である。この群は、ブラインディング値Ｒ1 〜ＲL の各々に対応するデータ値からなるセットのみが生成されるいくつかの実施形態の場合には、必ずしも生成されるとは限らない。
【００３６】
例えば、ブラインディングされた値Ｒ1 〜ＲL のうちの２つからなる可能性がある各組合せに対応する行もまた、この組合せが、既に存在する行のブラインディング値に等しい場合を除いて生成される。図４の例においては、（Ａ＋１）＋２＝Ａ＋３が、既に生成されている行のいずれかとは等しくない。しかし、追加的なブラインディング値Ｒ２＝０３も用いられている場合には、（Ａ＋１）＋３はＡ＋２に等しく、（Ａ＋１）＋２はＡ＋３に等しく、また、（Ａ＋２）＋３はＡ＋１に等しいので、行Ａ＋１、Ａ＋２及びＡ＋３のみが生成されることになる。
【００３７】
従って、図４のテーブルは、それぞれ、ライン３０８及びライン３１０で、ブラインディング部１０８及びシグネチャ部１１６へ供給される値Ｄ1 〜ＤM を表す。ブラインディングがこのテーブルに適用された場合、その結果は、新たな値を何ら加えることがない、単なる行の置換となる。具体的には、例えば、値Ｒ1 及びＲ2 から擬似乱数的に選択されたブラインディング値Ｒが０１に等しい場合、第１の行は、Ａ＋１になり、一方、第２の行は、Ａに等しい（Ａ＋１）＋１になる。同様に、第３の行は、Ａ＋３に等しい（Ａ＋２）＋１になり、第４の行は、Ａ＋２に等しい（Ａ＋３）＋１に等しくなる。
【００３８】
データ値Ｄ1 〜ＤN のブラインディングされたバージョンは、関数器１０２によって用いられる。図４の例においては、ブラインディング値が０１か０２かにより、それらのブラインディング値は、第２の行または第３の行の値となる。
【００３９】
図５は、故障利用攻撃を検出してサイドチャネル攻撃から保護する回路５００を示す。
【００４０】
回路５００は、図１の回路と同じ構成要素の多くを備え、それらの構成要素は、ここでは詳細に説明しない。図１の実施形態に対して、図５の実施形態の回路５００は、データ値Ｄ1 〜ＤN を追加的なプリシグネチャ部５０４へ供給するライン５０２と、関数ユニット１０２とシグネチャ部１１６との間に配置され、シグネチャ生成前に、ブラインディングされたデータ値を処理する追加的なプリシグネチャ部５０６とを更に備える。次に、図５の回路５００の動作を、図６を参照して説明する。
【００４１】
図６は、図５の回路に適用された場合の図４と同じ数値の例を示す。プリシグネチャ部５０４は、図４で生成されるのと同じ値Ｄ1 〜ＤM からなるテーブルを生成する。一方、プリシグネチャ部５０６は、ブラインディングされた値Ｄ1'〜ＤN'に基づいて、新たなテーブルを生成する。このテーブルの各行は、図４のテーブルと同様に、換言すれば、ブラインディング値の各々を系統的に適用することによって生成される。図６の例においては、ライン１１０上で受取るブラインディング値が０２であり、それに伴って、値Ｄ1'〜ＤN'は、値Ｄ1 〜ＤN の各々と値０２とのＸＯＲに対応すると仮定する。従って、符号Ａ’が付いた図６のテーブルの第１の行は、Ａ＋２に等しく、これは、図４のテーブルの第３の行と同じである。図６のテーブルの第２の行は、Ａ’＋１に等しく、これは、Ａ＋３、換言すれば、図４のテーブルの第４の行に等しい。図６のテーブルの第３の行は、Ａに等しいＡ’＋２、換言すれば、図４のテーブルの第１の行に等しい。そして、図６のテーブルの第４の行は、Ａ＋１に等しい（Ａ’＋１）＋２、換言すれば、図４のテーブルの第２の行に等しい。
【００４２】
従って、図６のテーブルの値は、図４のテーブルの値の置換であり、そのため、シグネチャ部１１６は、可換シグネチャアルゴリズムを、データ値の両セットに適用することによって、故障を有効に検出することができることは明らかである。
【００４３】
図３の実施形態と比較した場合の図５の実施形態の利点は、複数の故障利用攻撃の使用をより困難にするということである。具体的には、図３を標的とする複数の故障利用攻撃は、プリブラインディング部３０２及び関数器１０２を攻撃することができるのに対して、図５においては、そのような攻撃は、関数器１０２に加えて、プリシグネチャ部５０４及びプリシグネチャ部５０６の両方を標的にしなければならない。
【００４４】
図３または図５のシグネチャ部１１６によって適用されたシグネチャは、データ値の順序が結果に影響を及ぼさないような可換関数である。そのような関数の実例は、値Ｄ1'〜ＤM'の各々、全ての値Ｄ1'〜ＤM'の合計、または、全ての値Ｄ1'〜ＤM'の乗算の間に適用されたＸＯＲ関数である。別な手法として、これらの関数のうちの１つ以上の組合せまたは変形を用いることもできる。
【００４５】
セットＤ1 〜ＤM に存在する追加的な値ＤN+1 〜ＤM の数は、繰り返される値を除去することによって少なくすることができる。例えば、図４の例において、第２の行の値“０”及び“１”は、シグネチャ比較の有効性を低下させることなく、完全に除去することができる。次に、どのデータ値を、セットＤ1 〜ＤM の初期値Ｄ1 〜ＤN に加えることができるかを判断する方法の例を、図７のフローチャートを参照して説明する。
【００４６】
図７は、データ値ＤN+1 〜ＤM を生成する方法を示す。この例において、Ｄｎは、群Ｄ1 〜ＤN のｎ番目の値を示し、Ｒp は、値Ｒ1 〜Ｒp からなるセットのｐ番目の値を示し、そのうちの最初のＬ個の値Ｒ1 〜ＲL は、Ｒがそこから選択されるブラインディング値のセットであり、値ＲL+1 〜Ｒp は、次のＸＯＲ計算の結果、すなわち、Ｒ1 ＋Ｒ(L+1) 、Ｒ1 ＋Ｒ(L+2) 、…Ｒ1 ＋Ｒp 、Ｒ2 ＋Ｒ(L+1) 、Ｒ２＋Ｒ(L+2) 、…Ｒ2 ＋Ｒｐ、…Ｒ(L-1) ＋ＲL に等しい追加的な組合せである。セットＲ1 〜Ｒp におけるどのような繰り返し値も、各値が一度だけ現れるように除去することができ、それにより、処理時間を低減できるようになる。文字Ｓは、値Ｄ1 〜ＤM からなるセットを示すのに用いられ、このセットは、当初は、値Ｄ1 〜ＤN だけを含む。
【００４７】
上記方法の最初のステップＳ１において、変数ｎおよびｐは共に１に設定される。
【００４８】
次いで、ステップＳ２において、変数ＱはＤn ＸＯＲＲｐに等しく設定される。これは、当初、Ｄ1 と第１のブラインディング値Ｒ1 とのＸＯＲに等しい。
【００４９】
次のステップＳ３においては、ＱがセットＳの要素であるか否か、換言すれば、この値がＤ1 〜ＤN の中に存在するか否かが判断される。存在しない場合には（Ｓ３：ＮＯ）、次のステップはＳ４であり、ＱがセットＳに加えられ、この値が使用不能であることを示すタグが値Ｑに関連付けられる。このタグは、例えば、メモリ内のこの値に関連付けられたフラグ、または、この値が使用不能であることを示す何らかの他の手段とすることができる。
【００５０】
ステップＳ３において、ＱがＳの要素であると判断された場合には（Ｓ３：ＹＥＳ）、ステップＳ５において、Ｓのこのデータ値が使用可能であるか否かがチェックされる。換言すれば、このデータ値が既に使用不能としてタグ付けされているか否かがチェックされる。使用可能でない場合（Ｓ５：ＮＯ）、次のステップは、上述したようなステップＳ４であり、ＱがセットＳに加えられ、また、使用不能としてタグ付けされる。ステップＳ５において、Ｓのデータ値が、使用不能としてタグ付けされていないと判断された場合には（Ｓ５：ＹＥＳ）、次のステップはＳ６であり、データ値ＱはセットＳに加えられず、その代わりに、Ｓのこの値は使用不能としてタグ付けされる。
【００５１】
ステップＳ４及びＳ６の後、次のステップはＳ７であり、ｐがＰに等しいか否かが判断される。等しくない場合には（Ｓ７：ＮＯ）、ステップＳ８において、ｐはインクリメントされ、動作手順はステップＳ２へ戻る。ステップＳ７において、ｐがＰに等しいと判断された場合には（Ｓ７：ＹＥＳ）、次のステップはＳ９となる。
【００５２】
ステップＳ９においては、ｎがＮに等しいか否かが判断される。等しくない場合には（Ｓ９：ＮＯ）、ステップＳ１０において、ｎがインクリメントされ、動作手順は、ステップＳ２へ戻る。ｎがＮに等しい場合には（Ｓ９：ＹＥＳ）、プロセスは終了する。
【００５３】
図８は、マイクロプロセッサ８０２と、メモリ８０４と、入力値をマイクロプロセッサ８０２へ供給する入力ライン８０６とを備える電子装置８００を示す。マイクロプロセッサ８０２は、出力ライン８０８上に出力値を生成する。更に、例えば、本願明細書に記載されているようなプリブラインディング部３０２またはプリシグネチャ部５０４及び５０６と、シグネチャ部１１６と、比較器１２０とを備える故障検出回路８１０が、マイクロプロセッサ８０２の出力に結合されて設けられている。この故障検出回路８１０は、シグネチャ間の不一致により、故障利用攻撃が検出された場合に、マイクロプロセッサ８０２へ戻る出力ライン８１２上に警告信号を生成する。この警告信号は、例えば、マイクロプロセッサ８０２のリセットを起動し、及び／または一旦、特定のカウント値に達した場合に、マイクロプロセッサ８０２の動作を恒久的に停止させるカウンタ（図８には図示せず）をインクリメントする。
【００５４】
電子装置８００は、例えば、スマートカード等のＩＣ（Integrated Circuit）カード、クレジットカード支払い端末等のＩＣカードリーダ、セットトップボックス、ＰＣ若しくはラップトップ用ハードディスクドライブ、ＰＣ若しくはラップトップ、自動販売機、または、機密情報を扱うその他の装置である。
【００５５】
本願明細書に記載された実施形態の効果は、シグネチャの生成のために、本願明細書に記載されているようなデータ値Ｄ1 〜ＤM からなるセットを生成することにより、ＸＯＲ演算を用いて、それらの値をブラインディングした結果が、それらの値の置換をもたらすということである。このことは、故障利用攻撃を検出するための類似のシグネチャを生成するのに用いることができるシグネチャアルゴリズムの幅広い選択につながる。
【００５６】
本発明の多数の具体的な実施形態を説明してきたが、当業者には、多くの変形及び変更を適用できることは明白である。
【００５７】
例えば、当業者には、本願明細書に記載された実施形態を、故障を検出するのにシグネチャ変化が用いられる広範囲の回路に適用できることは明白である。
【００５８】
更に、当業者には、拡張されたセットＤ1'〜ＤM'は、多数の追加的な値ＤN+1'〜ＤM'を有するが、いくつかのケースでは、１つだけ、またはごくわずかの追加的な値が与えられることは明白である。
【００５９】
更に、本願明細書に記載された実施形態は、ソフトウェア、ハードウェアまたはそれらの組合せで実施することができる。加えて、様々な実施形態に関連して説明した特徴は、代替的な実施形態において、どのような組合せでも組合わせることができる。
【符号の説明】
【００６０】
１００，３００，５００  回路（装置）
１０２  関数器
１０８  ブラインディング部
１１６  シグネチャ部
１２０  比較器
３０２  プリブラインディング部
５０４，５０６  プリシグネチャ部
【図１】
2011109662.tif 000003
【図２】
2011109662.tif 000004
【図３】
2011109662.tif 000005
【図４】
2011109662.tif 000006
【図５】
2011109662.tif 000007
【図６】
2011109662.tif 000008
【図７】
2011109662.tif 000009
【図８】
2011109662.tif 000010