説明

故障利用攻撃の検出方法及び検出装置

【課題】故障利用攻撃を検出する方法及び装置を提供する。
【解決手段】複数のブラインディング値を提供し、第1の群のデータ要素、及び、第1の群の少なくとも1つのデータ要素とブラインディング値のうちの少なくとも1つとの間で排他的論理和を実行することによって生成された少なくとも1つの追加的データ要素を有する第1のセットを生成するとともに、第1のセットの各データ要素と複数のブラインディング値のうちの選択した1つとの間の排他的論理和に対応するデータ要素からなる第2のセットを生成し、第1のセットのデータ要素の各々の間で可換演算を実行することによって第1のシグネチャを生成するとともに、第2のセットのデータ要素の各々の間で可換演算を実行することによって第2のシグネチャを生成し、第1のシグネチャと第2のシグネチャとを比較して故障利用攻撃を検出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、故障利用攻撃(Fault Attack)を検出するための方法及び装置に関し、具体的には、シグネチャに基づく検出を実現するための方法及び装置に関する。
【背景技術】
【0002】
集積回路は、認証キー、シグネチャ等の扱うデータのセキュリティの観点から、または、暗号化アルゴリズム若しくは復号化アルゴリズム等の利用するアルゴリズムの観点から敏感であると考えられる回路系を備えることができる。そのような情報は、秘密にされることが要求され、つまり、該情報は、第三者または未許可の回路に伝達されるべきではなく、また、第三者または未許可の回路によって検出可能であってはならない。
【0003】
情報の処理中に使用される集積回路のゾーンを検出する際には、該集積回路によって扱われる情報を侵害する共通のプロセスが存在する。このことのために、集積回路は、作動され、または、機能的環境に置かれ、符号化すべきデータパケットが入力に導かれる。データが処理されている間、集積回路の表面にはレーザ光が照射されて、集積回路の機能に故障が注入される。並行して、集積回路の出力を解析することにより、データを処理する集積回路のゾーンを判断することができる。それらのゾーンを突き止めると、侵害者は、処理されている機密データを判断するために、それらのゾーンに攻撃を集中させることができる。
【0004】
シグネチャは、故障利用攻撃から集積回路を保護する一つの方法をもたらす。シグネチャは、アルゴリズムによって用いられる1つ以上のデータ値に基づいて生成される。そして、シグネチャは、同じデータ値がそのアルゴリズムによって用いられた後に、その同じデータ値に対して生成される。2つのシグネチャの違いが、攻撃の発生を示すことになる。一旦、検出回路がそのような攻撃を検出した場合、検出回路は、集積回路をリセットする、及び/またはカウンタをインクリメントする等の対抗手段を講じ、それにより、一旦、ある一定数の障害が検出されたときに、この集積回路は恒久的に休止状態になる。
【0005】
サイドチャネル攻撃は、例えば、ある回路の消費電力を測定することを伴う違う種類の攻撃である。ブラインディング(Blinding)は、サイドチャネル攻撃から回路を保護する一つの方法をもたらす。ブラインディングは、擬似乱変数を用いて、非破壊的な方法で、アルゴリズムの入力を変えることを含む。
【発明の概要】
【発明が解決しようとする課題】
【0006】
同じ群のデータ値を用いてシグネチャを生成して故障利用攻撃を検出することができ、また、ブラインディングを実行して、サイドチャネル攻撃をより困難にすることができる装置を提供することが望ましい。しかしながら、これらの機能を兼ね備える有効な装置を実施するには難しい点がある。
【0007】
本発明の目的は、従来技術における1つ以上の問題に少なくとも部分的に対処することが可能である故障利用攻撃を検出するための方法及び装置を提供することにある。
【課題を解決するための手段】
【0008】
本発明の故障利用攻撃を検出する方法は、複数のブラインディング値を提供するステップ、第1の群のデータ要素、及び、前記第1の群の少なくとも1つのデータ要素と前記ブラインディング値のうちの少なくとも1つとの間で排他的論理和を実行することによって生成された少なくとも1つの追加的データ要素を有するデータ要素からなる第1のセットを生成するステップ、前記第1のセットの各データ要素と前記複数のブラインディング値のうちの選択した1つとの間の排他的論理和に対応するデータ要素からなる第2のセットを生成するステップ、前記第1のセットのデータ要素の各々の間で可換演算を実行することにより、第1のシグネチャを生成するステップ、前記第2のセットのデータ要素の各々の間で可換演算を実行することにより、第2のシグネチャを生成するステップ、並びに、前記第1のシグネチャと第2のシグネチャとを比較して、故障利用攻撃を検出するステップを備えることを特徴とする。
【0009】
本発明の方法は、前記少なくとも1つの追加的データ要素を生成する際に、前記第1の群のデータ要素の各データ要素と前記複数のブラインディング値の各々との間で排他的論理和を実行することにより、データ要素からなる複数の追加的群を生成し、少なくとも1つの追加的群のうちの少なくとも1つのデータ値を選択して、少なくとも1つの追加的データ要素を生成することを特徴とする。
【0010】
本発明の方法は、前記データ要素からなる少なくとも1つの追加的群を生成する際に、前記第1の群のデータ要素の各データ要素と前記ブラインディング値のうちの2つの各組合せとの間で排他的論理和を実行することを特徴とする。
【0011】
本発明の方法は、前記第1のセットの各データ要素と前記複数のブラインディング値のうちの選択した1つとの間で排他的論理和を実行することにより、前記第1のセットの各データ要素をブラインディングすることによって、データ要素からなる前記第2のセットは生成されることを特徴とする。
【0012】
本発明の方法は、前記第1の群の各データ要素と前記複数のブラインディング値のうちの選択した1つとの間で排他的論理和を実行し、且つ、前記ブラインディングされた群のデータ要素のうちの少なくとも1つのデータ要素と前記ブラインディング値のうちの少なくとも1つとの間で排他的論理和を実行することにより、前記第1の群のデータ要素をブラインディングして、データ要素からなるブラインディングされた群を生成することによって、データ要素からなる前記第2のセットは生成されることを特徴とする。
【0013】
本発明の方法は、前記少なくとも1つの追加的データ要素を選択する際に、ブラインディングされた各群の各データ値に対して、前記データ値が既に前記第2のセット内に存在するか否かを判断し、前記データ値が前記第2のセット内に存在しない場合には前記データ値を前記第2のセットに追加することを特徴とする。
【0014】
本発明の方法は、前記少なくとも1つの追加的データ要素を選択する際に、前記第2のセットに追加された各データ値を使用不能としてタグ付けし、前記データ値が既に前記第2のセット内に存在する場合には、前記データ値が使用不能としてタグ付けされているか否かを判断し、前記データ値が使用可能でないときには、前記データ値を使用不能としてタグ付けし、前記データ値が使用可能である場合には、前記データ値を前記第2のセットに追加することを特徴とする。
【0015】
本発明の方法は、前記第1のシグネチャ及び第2のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素間で排他的論理和を実行することを特徴とする。
【0016】
本発明の方法は、前記第1のシグネチャ及び第2のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に追加することを特徴とする。
【0017】
本発明の方法は、前記第1のシグネチャ及び第2のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に乗算することを特徴とする。
【0018】
本発明の故障利用攻撃を検出する装置は、複数のブラインディング値を格納する記憶装置、第1の群のデータ要素、及び、前記第1の群の少なくとも1つのデータ要素と前記ブラインディング値のうちの少なくとも1つとの間で排他的論理和を実行することによって生成された少なくとも1つの追加的データ要素を有するデータ要素からなる第1のセットを生成し、また、前記第1のセットの各データ要素と前記複数のブラインディング値のうちの選択した1つとの間の排他的論理和に対応するデータ要素からなる第2のセットを生成する計算手段、前記第1のセットのデータ要素の各々の間で可換演算を実行することによって第1のシグネチャを生成し、また、前記第2のセットのデータ要素の各々の間で可換演算を実行することによって第2のシグネチャを生成するシグネチャ手段、並びに、前記第1のシグネチャと第2のシグネチャとを比較して故障利用攻撃を検出する比較器を備えることを特徴とする。
【0019】
本発明の装置は、前記第1のセットの少なくとも1つのデータ要素に基づく演算を実行する関数器をさらに備え、前記関数器は、秘密鍵に基づく暗号化または復号化の演算を実行するように構成されていることを特徴とする。
【0020】
本発明の別の態様によれば、上記装置を備える集積回路、ICカードまたはICカードリーダが提供される。
【0021】
本発明の上記及びその他の目的、特徴、態様並びに効果は、添付図面を参照して、限定ではなく例証として示されている実施形態の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0022】
【図1】故障利用攻撃を検出してサイドチャネル攻撃から保護する一実施形態による回路を示すブロック図である。
【図2】図1の回路に用いられるデータ値を示す図である。
【図3】故障利用攻撃を検出してサイドチャネル攻撃から保護する他の実施形態による回路を示すブロック図である。
【図4】図3の回路に用いられるデータ値を示す図である。
【図5】故障利用攻撃を検出してサイドチャネル攻撃から保護する更に他の実施形態による回路を示すブロック図である。
【図6】図5の回路に用いられるデータ値を示す図である。
【図7】データセットを生成する手順を示すフローチャートである。
【図8】故障利用攻撃を検出する回路を備える電子装置を示すブロック図である。
【発明を実施するための形態】
【0023】
明確にするために、本発明の理解に役立つステップおよび構成要素のみが示されており、それらについて詳細に説明する。具体的には、1つ以上の故障注入の検出時に、集積回路をリセットし、または、集積回路を休止状態にする回路系は詳述されておらず、本発明は、そのような回路に適用可能である。さらに、保護される集積回路の主要な機能は詳細に説明されておらず、本発明は、暗号化または復号化等の何らかの敏感な機能、または、機密データを含む他の機能を実施する集積回路に適合する。
【0024】
図1は、例えば、暗号鍵等の機密データを含むアルゴリズムを実行する関数器102を備える回路100(装置)を示す。本実施の形態において、関数器102は、入力ライン104上で鍵Kを受取る。
【0025】
データ値D1 〜DN からなる群は、ブラインディング部108へのライン106上に供給され、ブラインディング部108は、自身への入力ライン110に供給されたブラインディング値Rに基づいて、それらのデータ値に対してブラインディングアルゴリズムを適用する。ブラインディング値Rは、例えば、擬似乱数値である。次いで、ブラインディングされたデータ値D1'〜DN'が、関数器102へのライン112上に供給される。関数器102は、ブラインディングされたデータ値D1'〜DN'を用いるアルゴリズムを実行して結果Cを出力し、その結果Cは、暗号化若しくは復号化されたデータブロック、または他の値とすることができる。
【0026】
ブラインディングされたデータ値D1'〜DN'は、関数器102で用いられる間、例えば、レジスタ(図1には図示せず)に格納される。関数器102によるアルゴリズムの実行中の様々な段階において、及び/またはこのアルゴリズム実行の終了時に、ブラインディングされたデータ値D1'〜DN'は、シグネチャ部116へのライン114上に出力される。また、元のデータ値D1 〜DN は、ライン118でシグネチャ部に供給される。
【0027】
シグネチャ部116は、元のデータ値D1 〜DN に基づいてシグネチャS1 を生成するとともに、ブラインディングされたデータ値D1'〜DN'に基づいてシグネチャS2 を生成する。そして、シグネチャS1 及びS2 は、比較器120によって比較され、比較器120は、これらのシグネチャが一致するか否かを示す出力を出力ライン122に与える。
【0028】
ブラインディング部108によって適用されたブラインディングアルゴリズムは、例えば、ブラインディング値Rとデータ値D1 〜DN の各々との間に適用されたXOR関数である。しかし、故障利用攻撃がない場合に、データ値からなる両群に適用されるシグネチャ関数を選択して、同じ結果を得るには問題がある。例えば、図2は、この問題の実例を示す。
【0029】
図2は、第1の行200において、Nが9に等しく、かつD1 〜D9 がそれぞれ、12、1、0、128、245、0、1、2及び8に等しい場合のデータ値D1 〜DN の例を示す。このシグネチャを決める関数が、全てのデータ値の加算であると仮定すると、D1 〜D9 のシグネチャは397に等しくなる。図2の第2の行202は、ブラインディングされたデータ値D1'〜D9'を示し、これらのデータ値は、この例において、データ値D1 〜D9 の各々と値01との間にXOR演算を適用することによって得られる。この結果、データ値D1'〜D9'はそれぞれ、13、2、1、129、244、1、0、3及び9に等しくなる。しかし、故障がないと仮定すると、データ値D1'〜D9'の合計、ひいてはシグネチャS2 は402に等しくなる。従って、故障がないにもかかわらず、シグネチャS1 とシグネチャS2 との不一致が生じる場合、このシグネチャスキームは有効ではない。
【0030】
図3は、故障利用攻撃を検出してサイドチャネル攻撃から保護する回路300(装置)を示す。回路300は、図1の回路と同じ構成要素の多くを備え、これらの構成要素はここでは詳細に説明しない。具体的には、この回路300は、関数器102、ブラインディング部108、シグネチャ部116及び比較器120を備える。
【0031】
回路300は、入力ライン304でデータ値D1 〜DN を受取り、また、入力ライン306で複数のブラインディング値R1 〜RL を受取るプリブラインディング部302を更に備える。プリブラインディング部302は、データ値D1 〜DM からなるデータセットを生成する。データセットD1 〜DM は、データ値D1 〜DN と、1つの追加データ値DM 、または、複数の追加データ値DN+1 〜DM とを有する。データ値D1 〜DM は、ライン308でブラインディング部108へ供給されるとともに、ライン310でシグネチャ部116へ供給される。
【0032】
ブラインディング部108によってXORブラインディング関数が適用された場合に、その結果が、新たな値を導入することなく、データ値D1 〜DM の順列になり、それに伴って、シグネチャ部116が、何らかの可換関数を用いて、有効なシグネチャを生成できるように、データセットD1 〜DM は生成される。このことは、例えば、図4を参照して詳細に説明するように実現される。
【0033】
図4は、データセットD1 〜DM のデータ値の例を含むテーブルを示す。このテーブルの一番上の行は、データ値D1 〜DN を示し、この場合、それぞれ、十進値12、1、0、128、245、0、1、2及び8の二進等値に等しい9つの値D1 〜D9 を有する。これらのデータ値を、群Aと呼ぶことにする。この例においては、ブラインディング値R1 〜RL が、それぞれ、十進値01及び02の二進等値に等しい2つの値R1 及びR2 を有すると仮定する。
【0034】
プリブラインディング部302は、データ群Aの値の各々と第1のブラインディング値01とのXORに等しいデータ値“A+1”からなる新たな群を生成する(符号“+”は、本願明細書において、関数XORを示す)。この新たな群は、図4のテーブルの第2の行に示されており、第2の行の値は、13、0、1、129、244、1、0、3及び9である。また、プリブラインディング部302は、データ群Aの値の各々と第2のブラインディング値02とのXORに等しいデータ値“A+2”からなる新たな群も生成する。この新たな群は、図4のテーブルの第3の行に示されており、第3の行の値は、14、3、2、130、247、2、3、0及び10である。
【0035】
図4の例においては、データ値“(A+1)+2”からなる追加的な群も生成される。これは、“A+3”に等しくて、データ群Aの値の各々と値03とのXORに等しい。図4の第4の行に示されている値は、15、2、3、131、246、3、2、1及び11である。この群は、ブラインディング値R1 〜RL の各々に対応するデータ値からなるセットのみが生成されるいくつかの実施形態の場合には、必ずしも生成されるとは限らない。
【0036】
例えば、ブラインディングされた値R1 〜RL のうちの2つからなる可能性がある各組合せに対応する行もまた、この組合せが、既に存在する行のブラインディング値に等しい場合を除いて生成される。図4の例においては、(A+1)+2=A+3が、既に生成されている行のいずれかとは等しくない。しかし、追加的なブラインディング値R=03も用いられている場合には、(A+1)+3はA+2に等しく、(A+1)+2はA+3に等しく、また、(A+2)+3はA+1に等しいので、行A+1、A+2及びA+3のみが生成されることになる。
【0037】
従って、図4のテーブルは、それぞれ、ライン308及びライン310で、ブラインディング部108及びシグネチャ部116へ供給される値D1 〜DM を表す。ブラインディングがこのテーブルに適用された場合、その結果は、新たな値を何ら加えることがない、単なる行の置換となる。具体的には、例えば、値R1 及びR2 から擬似乱数的に選択されたブラインディング値Rが01に等しい場合、第1の行は、A+1になり、一方、第2の行は、Aに等しい(A+1)+1になる。同様に、第3の行は、A+3に等しい(A+2)+1になり、第4の行は、A+2に等しい(A+3)+1に等しくなる。
【0038】
データ値D1 〜DN のブラインディングされたバージョンは、関数器102によって用いられる。図4の例においては、ブラインディング値が01か02かにより、それらのブラインディング値は、第2の行または第3の行の値となる。
【0039】
図5は、故障利用攻撃を検出してサイドチャネル攻撃から保護する回路500を示す。
【0040】
回路500は、図1の回路と同じ構成要素の多くを備え、それらの構成要素は、ここでは詳細に説明しない。図1の実施形態に対して、図5の実施形態の回路500は、データ値D1 〜DN を追加的なプリシグネチャ部504へ供給するライン502と、関数ユニット102とシグネチャ部116との間に配置され、シグネチャ生成前に、ブラインディングされたデータ値を処理する追加的なプリシグネチャ部506とを更に備える。次に、図5の回路500の動作を、図6を参照して説明する。
【0041】
図6は、図5の回路に適用された場合の図4と同じ数値の例を示す。プリシグネチャ部504は、図4で生成されるのと同じ値D1 〜DM からなるテーブルを生成する。一方、プリシグネチャ部506は、ブラインディングされた値D1'〜DN'に基づいて、新たなテーブルを生成する。このテーブルの各行は、図4のテーブルと同様に、換言すれば、ブラインディング値の各々を系統的に適用することによって生成される。図6の例においては、ライン110上で受取るブラインディング値が02であり、それに伴って、値D1'〜DN'は、値D1 〜DN の各々と値02とのXORに対応すると仮定する。従って、符号A’が付いた図6のテーブルの第1の行は、A+2に等しく、これは、図4のテーブルの第3の行と同じである。図6のテーブルの第2の行は、A’+1に等しく、これは、A+3、換言すれば、図4のテーブルの第4の行に等しい。図6のテーブルの第3の行は、Aに等しいA’+2、換言すれば、図4のテーブルの第1の行に等しい。そして、図6のテーブルの第4の行は、A+1に等しい(A’+1)+2、換言すれば、図4のテーブルの第2の行に等しい。
【0042】
従って、図6のテーブルの値は、図4のテーブルの値の置換であり、そのため、シグネチャ部116は、可換シグネチャアルゴリズムを、データ値の両セットに適用することによって、故障を有効に検出することができることは明らかである。
【0043】
図3の実施形態と比較した場合の図5の実施形態の利点は、複数の故障利用攻撃の使用をより困難にするということである。具体的には、図3を標的とする複数の故障利用攻撃は、プリブラインディング部302及び関数器102を攻撃することができるのに対して、図5においては、そのような攻撃は、関数器102に加えて、プリシグネチャ部504及びプリシグネチャ部506の両方を標的にしなければならない。
【0044】
図3または図5のシグネチャ部116によって適用されたシグネチャは、データ値の順序が結果に影響を及ぼさないような可換関数である。そのような関数の実例は、値D1'〜DM'の各々、全ての値D1'〜DM'の合計、または、全ての値D1'〜DM'の乗算の間に適用されたXOR関数である。別な手法として、これらの関数のうちの1つ以上の組合せまたは変形を用いることもできる。
【0045】
セットD1 〜DM に存在する追加的な値DN+1 〜DM の数は、繰り返される値を除去することによって少なくすることができる。例えば、図4の例において、第2の行の値“0”及び“1”は、シグネチャ比較の有効性を低下させることなく、完全に除去することができる。次に、どのデータ値を、セットD1 〜DM の初期値D1 〜DN に加えることができるかを判断する方法の例を、図7のフローチャートを参照して説明する。
【0046】
図7は、データ値DN+1 〜DM を生成する方法を示す。この例において、Dは、群D1 〜DN のn番目の値を示し、Rp は、値R1 〜Rp からなるセットのp番目の値を示し、そのうちの最初のL個の値R1 〜RL は、Rがそこから選択されるブラインディング値のセットであり、値RL+1 〜Rp は、次のXOR計算の結果、すなわち、R1 +R(L+1) 、R1 +R(L+2) 、…R1 +Rp 、R2 +R(L+1) 、R+R(L+2) 、…R2 +R、…R(L-1) +RL に等しい追加的な組合せである。セットR1 〜Rp におけるどのような繰り返し値も、各値が一度だけ現れるように除去することができ、それにより、処理時間を低減できるようになる。文字Sは、値D1 〜DM からなるセットを示すのに用いられ、このセットは、当初は、値D1 〜DN だけを含む。
【0047】
上記方法の最初のステップS1において、変数nおよびpは共に1に設定される。
【0048】
次いで、ステップS2において、変数QはDn XORRpに等しく設定される。これは、当初、D1 と第1のブラインディング値R1 とのXORに等しい。
【0049】
次のステップS3においては、QがセットSの要素であるか否か、換言すれば、この値がD1 〜DN の中に存在するか否かが判断される。存在しない場合には(S3:NO)、次のステップはS4であり、QがセットSに加えられ、この値が使用不能であることを示すタグが値Qに関連付けられる。このタグは、例えば、メモリ内のこの値に関連付けられたフラグ、または、この値が使用不能であることを示す何らかの他の手段とすることができる。
【0050】
ステップS3において、QがSの要素であると判断された場合には(S3:YES)、ステップS5において、Sのこのデータ値が使用可能であるか否かがチェックされる。換言すれば、このデータ値が既に使用不能としてタグ付けされているか否かがチェックされる。使用可能でない場合(S5:NO)、次のステップは、上述したようなステップS4であり、QがセットSに加えられ、また、使用不能としてタグ付けされる。ステップS5において、Sのデータ値が、使用不能としてタグ付けされていないと判断された場合には(S5:YES)、次のステップはS6であり、データ値QはセットSに加えられず、その代わりに、Sのこの値は使用不能としてタグ付けされる。
【0051】
ステップS4及びS6の後、次のステップはS7であり、pがPに等しいか否かが判断される。等しくない場合には(S7:NO)、ステップS8において、pはインクリメントされ、動作手順はステップS2へ戻る。ステップS7において、pがPに等しいと判断された場合には(S7:YES)、次のステップはS9となる。
【0052】
ステップS9においては、nがNに等しいか否かが判断される。等しくない場合には(S9:NO)、ステップS10において、nがインクリメントされ、動作手順は、ステップS2へ戻る。nがNに等しい場合には(S9:YES)、プロセスは終了する。
【0053】
図8は、マイクロプロセッサ802と、メモリ804と、入力値をマイクロプロセッサ802へ供給する入力ライン806とを備える電子装置800を示す。マイクロプロセッサ802は、出力ライン808上に出力値を生成する。更に、例えば、本願明細書に記載されているようなプリブラインディング部302またはプリシグネチャ部504及び506と、シグネチャ部116と、比較器120とを備える故障検出回路810が、マイクロプロセッサ802の出力に結合されて設けられている。この故障検出回路810は、シグネチャ間の不一致により、故障利用攻撃が検出された場合に、マイクロプロセッサ802へ戻る出力ライン812上に警告信号を生成する。この警告信号は、例えば、マイクロプロセッサ802のリセットを起動し、及び/または一旦、特定のカウント値に達した場合に、マイクロプロセッサ802の動作を恒久的に停止させるカウンタ(図8には図示せず)をインクリメントする。
【0054】
電子装置800は、例えば、スマートカード等のIC(Integrated Circuit)カード、クレジットカード支払い端末等のICカードリーダ、セットトップボックス、PC若しくはラップトップ用ハードディスクドライブ、PC若しくはラップトップ、自動販売機、または、機密情報を扱うその他の装置である。
【0055】
本願明細書に記載された実施形態の効果は、シグネチャの生成のために、本願明細書に記載されているようなデータ値D1 〜DM からなるセットを生成することにより、XOR演算を用いて、それらの値をブラインディングした結果が、それらの値の置換をもたらすということである。このことは、故障利用攻撃を検出するための類似のシグネチャを生成するのに用いることができるシグネチャアルゴリズムの幅広い選択につながる。
【0056】
本発明の多数の具体的な実施形態を説明してきたが、当業者には、多くの変形及び変更を適用できることは明白である。
【0057】
例えば、当業者には、本願明細書に記載された実施形態を、故障を検出するのにシグネチャ変化が用いられる広範囲の回路に適用できることは明白である。
【0058】
更に、当業者には、拡張されたセットD1'〜DM'は、多数の追加的な値DN+1'〜DM'を有するが、いくつかのケースでは、1つだけ、またはごくわずかの追加的な値が与えられることは明白である。
【0059】
更に、本願明細書に記載された実施形態は、ソフトウェア、ハードウェアまたはそれらの組合せで実施することができる。加えて、様々な実施形態に関連して説明した特徴は、代替的な実施形態において、どのような組合せでも組合わせることができる。
【符号の説明】
【0060】
100,300,500 回路(装置)
102 関数器
108 ブラインディング部
116 シグネチャ部
120 比較器
302 プリブラインディング部
504,506 プリシグネチャ部

【特許請求の範囲】
【請求項1】
故障利用攻撃を検出する方法であって、
複数のブラインディング値を提供するステップ、
第1の群のデータ要素、及び、前記第1の群の少なくとも1つのデータ要素と前記ブラインディング値のうちの少なくとも1つとの間で排他的論理和を実行することによって生成された少なくとも1つの追加的データ要素を有するデータ要素からなる第1のセットを生成するステップ、
前記第1のセットの各データ要素と前記複数のブラインディング値のうちの選択した1つとの間の排他的論理和に対応するデータ要素からなる第2のセットを生成するステップ、
前記第1のセットのデータ要素の各々の間で可換演算を実行することにより、第1のシグネチャを生成するステップ、
前記第2のセットのデータ要素の各々の間で可換演算を実行することにより、第2のシグネチャを生成するステップ、並びに、
前記第1のシグネチャと第2のシグネチャとを比較して、故障利用攻撃を検出するステップ
を備えることを特徴とする方法。
【請求項2】
前記少なくとも1つの追加的データ要素を生成する際に、
前記第1の群のデータ要素の各データ要素と前記複数のブラインディング値の各々との間で排他的論理和を実行することにより、データ要素からなる複数の追加的群を生成し、
少なくとも1つの追加的群のうちの少なくとも1つのデータ値を選択して、少なくとも1つの追加的データ要素を生成することを特徴とする請求項1に記載の方法。
【請求項3】
前記データ要素からなる少なくとも1つの追加的群を生成する際に、
前記第1の群のデータ要素の各データ要素と前記ブラインディング値のうちの2つの各組合せとの間で排他的論理和を実行することを特徴とする請求項2に記載の方法。
【請求項4】
前記第1のセットの各データ要素と前記複数のブラインディング値のうちの選択した1つとの間で排他的論理和を実行することにより、前記第1のセットの各データ要素をブラインディングすることによって、データ要素からなる前記第2のセットは生成されることを特徴とする請求項1から3のいずれかに記載の方法。
【請求項5】
前記第1の群の各データ要素と前記複数のブラインディング値のうちの選択した1つとの間で排他的論理和を実行し、且つ、前記ブラインディングされた群のデータ要素のうちの少なくとも1つのデータ要素と前記ブラインディング値のうちの少なくとも1つとの間で排他的論理和を実行することにより、前記第1の群のデータ要素をブラインディングして、データ要素からなるブラインディングされた群を生成することによって、データ要素からなる前記第2のセットは生成されることを特徴とする請求項1から3のいずれかに記載の方法。
【請求項6】
前記少なくとも1つの追加的データ要素を選択する際に、
ブラインディングされた各群の各データ値に対して、前記データ値が既に前記第2のセット内に存在するか否かを判断し、前記データ値が前記第2のセット内に存在しない場合には前記データ値を前記第2のセットに追加することを特徴とする請求項1から5のいずれかに記載の方法。
【請求項7】
前記少なくとも1つの追加的データ要素を選択する際に、
前記第2のセットに追加された各データ値を使用不能としてタグ付けし、
前記データ値が既に前記第2のセット内に存在する場合には、前記データ値が使用不能としてタグ付けされているか否かを判断し、前記データ値が使用可能でないときには、前記データ値を使用不能としてタグ付けし、前記データ値が使用可能である場合には、前記データ値を前記第2のセットに追加することを特徴とする請求項6に記載の方法。
【請求項8】
前記第1のシグネチャ及び第2のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素間で排他的論理和を実行することを特徴とする請求項1から7のいずれかに記載の方法。
【請求項9】
前記第1のシグネチャ及び第2のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に追加することを特徴とする請求項1から7のいずれかに記載の方法。
【請求項10】
前記第1のシグネチャ及び第2のシグネチャを生成する際に、前記データ要素からなる対応するセットの各データ要素を一緒に乗算することを特徴とする請求項1から9のいずれかに記載の方法。
【請求項11】
故障利用攻撃を検出する装置であって、
複数のブラインディング値を格納する記憶装置、
第1の群のデータ要素、及び、前記第1の群の少なくとも1つのデータ要素と前記ブラインディング値のうちの少なくとも1つとの間で排他的論理和を実行することによって生成された少なくとも1つの追加的データ要素を有するデータ要素からなる第1のセットを生成し、また、前記第1のセットの各データ要素と前記複数のブラインディング値のうちの選択した1つとの間の排他的論理和に対応するデータ要素からなる第2のセットを生成する計算手段、
前記第1のセットのデータ要素の各々の間で可換演算を実行することによって第1のシグネチャを生成し、また、前記第2のセットのデータ要素の各々の間で可換演算を実行することによって第2のシグネチャを生成するシグネチャ手段、並びに、
前記第1のシグネチャと第2のシグネチャとを比較して故障利用攻撃を検出する比較器
を備えることを特徴とする装置。
【請求項12】
前記第1のセットの少なくとも1つのデータ要素に基づく演算を実行する関数器をさらに備え、前記関数器は、秘密鍵に基づく暗号化または復号化の演算を実行するように構成されていることを特徴とする請求項11に記載の装置。
【請求項13】
請求項11または請求項12に記載の装置を備えることを特徴とする集積回路。
【請求項14】
請求項13に記載の集積回路を備えることを特徴とするICカード。
【請求項15】
請求項13に記載の集積回路を備えることを特徴とするICカードリーダ。



【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate