IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アイデミア フランスの特許一覧

<>
  • 特開-改善された感染対策 図1
  • 特開-改善された感染対策 図2
  • 特開-改善された感染対策 図3
  • 特開-改善された感染対策 図4
  • 特開-改善された感染対策 図5
  • 特開-改善された感染対策 図6
  • 特開-改善された感染対策 図7
  • 特開-改善された感染対策 図8
  • 特開-改善された感染対策 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022183112
(43)【公開日】2022-12-08
(54)【発明の名称】改善された感染対策
(51)【国際特許分類】
   H04K 3/00 20060101AFI20221201BHJP
【FI】
H04K3/00
【審査請求】未請求
【請求項の数】16
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022086049
(22)【出願日】2022-05-26
(31)【優先権主張番号】2105447
(32)【優先日】2021-05-26
(33)【優先権主張国・地域又は機関】FR
(71)【出願人】
【識別番号】519260337
【氏名又は名称】アイデミア フランス
(74)【代理人】
【識別番号】110001173
【氏名又は名称】弁理士法人川口國際特許事務所
(72)【発明者】
【氏名】ローラン・カステルノヴィ
(72)【発明者】
【氏名】ギヨーム・バルブ
(72)【発明者】
【氏名】ルック・ベッタレ
(72)【発明者】
【氏名】トーマス・シャブリエ
(72)【発明者】
【氏名】ニコラス・ディバンド
(72)【発明者】
【氏名】クリストフ・ジロー
(72)【発明者】
【氏名】ネイサン・リボウド
(57)【要約】      (修正有)
【課題】故障注入攻撃に対する新規のタイプの感染対策方法を提供する。
【解決手段】新規の対策方法は、注入された誤りを、増幅する前に判定するのではなく、入力データEに対して暗号操作OPEを実行することによって取得した2つの中間暗号C、Cに、同じ拡散関数fdiffを適用する。それゆえ、誤りは、同じ中間暗号の中で増幅され、拡散の後に感染暗号g、gと称される。その場合、中間暗号0を感染暗号0としてマッピングしない拡散関数を使用することが可能である。拡散されていない暗号のビットから再構成された暗号もまた生成される。これらの感染暗号と再構成された暗号Crecとを、XOR10、11で組み合わせることにより、出力暗号Sを提供する。この手法により、ペア及び関連する特定の拡散関数を、単純に重複実行することで、対策によって提供される保護を、所望の数の故障の注入に適応させることが可能になる。
【選択図】図4
【特許請求の範囲】
【請求項1】
入力メッセージ(E)を出力メッセージ(S)へと暗号処理するための方法であって、プロセッサによって実施される、
-中間メッセージ(C)の1つ以上のペア(p)を取得するために、前記入力メッセージ(E)に対して同じ暗号操作(OPE)を数回実行するステップと、
-各ペアに関して、2つの感染メッセージ(g2i、g2i+1)を取得するために、前記ペアの2つの前記中間メッセージ(C2i、C2i+1)に単一の拡散関数(fdiff-i)を適用するステップと、
-前記出力メッセージ(S)を取得するために、前記感染メッセージを、前記暗号操作の前記実行から得られた1つ以上の第1のメッセージ(c)からビットを選択することによって取得された、再構成されたメッセージ(Crec)と組み合わせるステップと、を含む、方法。
【請求項2】
前記拡散関数(fdiff-i)が、中間メッセージのペア(p)ごとに異なる、請求項1に記載の方法。
【請求項3】
或る1つのペア(p)の前記拡散関数(fdiff-i)が、前記ペアに固有の第1のパラメータ(i)、例えば、前記ペアの一意識別子に基づく、請求項2に記載の方法。
【請求項4】
前記ペア(p)の前記拡散関数(fdiff-i)が、新たな入力メッセージから新たな出力メッセージを取得するために変化する、第2のパラメータに基づく、請求項1~3のいずれか一項に記載の方法。
【請求項5】
各中間メッセージ(C)が、前記暗号操作(OPE)の前記実行のうちの1つから直接得られた第1のメッセージ(c)である、請求項1~4のいずれか一項に記載の方法。
【請求項6】
各中間メッセージ(C)が、前記暗号操作(OPE)の前記実行から直接得られた前記第1のメッセージ(c)のうちのいくつか又は全てを、対応する連結プロファイルに従って連結しているメッセージである、請求項1~4のいずれか一項に記載の方法。
【請求項7】
2つの異なるペア(p)の前記中間メッセージ(C)が、全ての前記第1のメッセージ(c)を連結している単一のマスターメッセージ(CM)内での、前記第1のメッセージの異なるローテーション(R)によって互いに異なっている、請求項6に記載の方法。
【請求項8】
前記中間メッセージ(C)が、第1のメッセージ(c)の別個のペアで形成される、請求項6に記載の方法。
【請求項9】
2~dの任意のnに関して、最大でも
【数1】
個の互いに素な連結プロファイルのペアが、n個の第1のメッセージのグループに関して対称であり、d+1が、前記暗号操作の総実行回数であり、[x]が、x以下の最大整数であり、連結プロファイルのペアは、前記ペアの2つの連結プロファイルが、前記連結内の同じメッセージ位置を使用して、n個の第1のメッセージの前記グループに由来する前記第1のメッセージを位置付ける場合に、n個の第1のメッセージの前記グループに関して対称であると言われる、請求項6に記載の方法。
【請求項10】
前記再構成されたメッセージ(Crec)が、
【数2】
個の互いに素な連結プロファイルのペアが対称である場合、前記グループの前記第1のn個のメッセージ(c)のうちの1つ以上のみによって形成されない、請求項9に記載の方法。
【請求項11】
前記組み合わせるステップが、種々の前記感染メッセージ(g)と前記再構成されたメッセージ(Crec)との間に、排他的論理和論理演算子(10、11)を適用することを含む、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記組み合わせるステップが、前記再構成されたメッセージ(Crec)を前記感染メッセージのうちの1つ(g)と組み合わせる、最初の初期サブステップ(10)と、前記初期サブステップの結果を他の前記感染メッセージ(g)と組み合わせる、1つ以上の後続サブステップ(11)とを含む、請求項11に記載の方法。
【請求項13】
前記再構成されたメッセージ(Crec)が、前記暗号操作(OPE)の前記実行のうちの1つから直接得られた前記第1のメッセージ(c)のうちの1つである、請求項1~12のいずれか一項に記載の方法。
【請求項14】
前記再構成されたメッセージ(Crec)が、前記暗号操作(OPE)の前記実行から直接得られた前記第1のメッセージ(c)のうちのいくつか又は全てに由来するビットで形成される、請求項1~12のいずれか一項に記載の方法。
【請求項15】
暗号処理デバイス(40)であって、
-中間メッセージ(C)の1つ以上のペアを取得するために、入力メッセージ(E)に対して単一の暗号操作(OPE)を数回実行し、
-各ペアに関して、2つの感染メッセージ(g2i、g2i+1)を取得するために、前記ペアの前記2つの中間メッセージ(C2i、C2i+1)に単一の拡散関数(fdiff-i)を適用し、
-出力メッセージ(S)を取得するために、前記感染メッセージを、前記暗号操作の前記実行から得られた1つ以上の第1のメッセージ(c)からビットを選択することによって取得された、再構成されたメッセージ(Crec)と組み合わせるように構成されている、プロセッサ(41)を備える、暗号処理デバイス(40)。
【請求項16】
暗号処理デバイスによって実行されると、請求項1~14のいずれか一項に記載の方法を前記暗号処理デバイスに実行させるプログラムを記憶している、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータセキュリティの分野に関する。より詳細には、暗号方法、暗号処理、又は暗号操作のセキュリティ保護に関する。
【背景技術】
【0002】
特定のデータ処理方法は、特にデータの暗号処理(例えば、暗号化又は復号化)の状況において、1つ以上の暗号秘密又は暗号鍵に基づく、暗号アルゴリズムを使用する。暗号操作の例としては、メッセージのデジタル署名、あるいは、「暗号文」、「暗号化されたメッセージ」、又は単に「暗号」と称される出力データ(バイナリデータ)としての、メッセージの暗号化が挙げられる。他の例としては、「平文」メッセージと称される出力データとしての、暗号の復号化が挙げられる。暗号操作の主要なクラスとしては、対称暗号化/復号化、若しくは秘密鍵アルゴリズム(例えば、AES、DES)、非対称暗号化/復号化、若しくは公開鍵及び秘密鍵アルゴリズム(例えば、RSA、DSA)、及びハッシュ関数(例えば、MD5及びSHA-3)が挙げられる。
【0003】
暗号秘密又は暗号鍵は、アクセス可能であってはならない。更には、暗号処理は一般に、暗号プロセッサを装備しているセキュアな暗号システム、セキュアエレメント(secure element;SE)などのシステム、すなわち、信頼機関によって設定されている規則及びセキュリティ要件に従ってデータを保持することが可能な、セキュアなハードウェアプラットフォームにおいて使用される。セキュアエレメントは、組み込まれていても(組み込みSE又はeSE)、又は取り外し可能であってもよく、特に、スマートカード、UICCカード(又は、eUICC)を含む。
【0004】
これらの方法は、システムのセキュリティを回避しようとする、悪意のあるユーザによる攻撃の対象となる。
【0005】
これらの攻撃には、データ処理方法の通常の実行を意図的に混乱させることにより、その方法の出力において、通常予期されているものとは異なるが、暗号アルゴリズムで使用されている秘密データについての情報を明らかにするデータ(メッセージ)を取得することを伴う、故障発生タイプの攻撃が含まれる。これらの攻撃は、システムのハードウェア構成要素(暗号プロセッサ)又はソフトウェアに関与し得る。
【0006】
それゆえ、このタイプの攻撃に対抗するための対策が提案されてきた。
【0007】
暗号アルゴリズムの冗長実行、及び本実行の結果と冗長実行の結果との比較に主に基づいた、検出対策が既知である。比較に誤りがある場合には、その方法は中断され、セキュリティアクションが引き起こされる。しかしながら、これらの対策は、比較ステップ自体への攻撃に対しては脆弱である。
【0008】
この比較を不要なものにするために、他の感染対策が提案されてきた。それらは、暗号化又は復号化されたメッセージを悪意のあるユーザによって利用可能にさせないように、故障の影響を拡散させる。
【0009】
図1は、既知の感染対策の原理を概略的に示す。入力メッセージEに対する暗号操作OPEを重複実行することにより、故障攻撃が存在しない場合には2つの同一メッセージ、いわゆる「第1のメッセージ」、c、cを取得することが可能となる。それらのメッセージは、実施される操作に応じて、暗号化されたメッセージ又は平文メッセージとなり得る。明瞭性のために、以下では主に「暗号」について言及するものとする。
【0010】
暗号操作の2つの実行に由来する暗号c、cに対する、XOR(排他的論理和)10は、注入された誤り「e」(故障が存在しない場合はゼロ)を算出し、これは、0(誤りなし)を0としてマッピングし、あらゆる他のバイナリ入力値(ゼロではない、注入された誤り)を異なる出力値としてマッピングする、拡散関数fdiffによって拡散され、すなわち、修正及び増幅される(これが誤りの拡散である)。
【0011】
拡散関数は決定論的であり、関数のパラメータが固定されているため、同じ入力に対しては常に同じ出力を生成する。拡散関数は更に、高いエントロピーを有するものであり、すなわち、入力の僅かな修正に対して出力を大幅に修正する。
【0012】
次いで、拡散された誤りediff(ゼロ又はその他)が、暗号のうちの一方(c)に追加され(XOR11)、出力Sにおいて、感染した暗号が提供される。
【0013】
また、この感染対策は、暗号計算が正しく(誤りが注入されることなく)実行された場合には、暗号結果が正しくなり、そうではない場合には、その暗号結果が先験的に攻撃者によって使用されることが可能とならないように、暗号結果に感染させる。
【0014】
この感染対策設定は、少なくとも以下の理由により、満足のいくものではない。
【0015】
一方では、多重故障注入攻撃に対して耐性がない。それゆえ、多重故障注入攻撃に対して耐性がある感染対策を有することが有用であろう。また、所望の保護レベルに容易に適応させることが可能な、そのような対策を有することも好ましいであろう。
【0016】
他方では、拡散関数に対する(0が0としてマッピングされる)制約は、使用可能な拡散関数を著しく減少させるが、これは、それらの拡散関数が、大部分が既に文字通り破壊されているためである。
【0017】
それゆえ、既知の感染対策を改善することが、一般に必要とされている。
【発明の概要】
【0018】
この目的において、本発明は特に、入力メッセージを出力メッセージへと暗号処理するための方法であって、プロセッサによって実施される、
-中間メッセージの1つ以上のペアを取得するために、入力メッセージに対して単一の暗号操作を数回実行するステップと、
-各ペアに関して、2つの感染メッセージを取得するために、そのペアの2つの中間メッセージに単一の拡散関数を適用するステップと、
-出力メッセージを取得するために、それらの感染メッセージを、暗号操作の実行から得られた1つ以上の第1のメッセージからビットを選択することによって取得された、再構成されたメッセージと組み合わせるステップとを含む、方法を提供する。
【0019】
暗号操作の性質に応じて、その実行から得られる第1のメッセージ、並びに、中間メッセージ、感染メッセージ、及び再構成されたメッセージは、全てが暗号化されている場合もあり、又は、全てが平文メッセージに対応している場合もある。
【0020】
それに応じて、本発明はまた、暗号処理デバイスであって、
-中間メッセージの1つ以上のペアを取得するために、入力メッセージに対して単一の暗号操作を数回実行し、
-各ペアに関して、2つの感染メッセージを取得するために、そのペアの2つの中間メッセージに単一の拡散関数を適用し、
-出力メッセージを取得するために、それらの感染メッセージを、暗号操作の実行から得られた1つ以上の第1のメッセージからビットを選択することによって取得された、再構成されたメッセージと組み合わせるように構成されているプロセッサを備える、暗号処理デバイスにも関する。
【0021】
それゆえ、暗号操作を2回又は3回実行して、(すなわち、単一のペアの)2つの感染メッセージ(例えば、暗号)を、再構成されたメッセージと組み合わせるか、あるいは、暗号操作を4回又は5回実行して、4つの感染メッセージ(すなわち、2つの拡散関数に関連付けられた2つのペア)を、再構成されたメッセージと組み合わせるか、あるいは、より一般的には、暗号操作を2d回又は2d+1回(dは1以上の整数)実行して、2d個の感染メッセージ(d個の拡散関数に関連付けられたd個のペア)を、再構成されたメッセージと組み合わせることが可能である。
【0022】
中間メッセージのペアに対して同じ拡散関数を適用し、その後続けて、例えばXORを介してそれらを組み合わせることにより、故障が存在しない場合、拡散関数の影響を打ち消すことが可能となる。また、メッセージ(例えば、暗号)0を「感染」メッセージ0としてマッピングすることを目的とした制約も解除される。その結果、利用可能な拡散関数の数が増大する。
【0023】
中間メッセージの各ペアは、故障攻撃に対する保護を提供する点に留意されたい。それゆえ、本発明は、(関連付けられている拡散関数で)処理される中間メッセージのペアの数を単純に増倍させることによって、耐性でなければならない故障攻撃の数に応じてスケーリングすることができる。
【0024】
本発明の実施形態のオプションの特徴が、添付の請求項において定義されている。これらの特徴のうちの一部は、方法を参照して以下で説明されているが、それらの特徴は、デバイスの特徴へと移し替えることもできる。
【0025】
一実施形態では、拡散関数は、中間メッセージのペアごとに異なる。それゆえ、感染メッセージのk個のペアに関して、k個の異なる拡散関数が使用されている。
【0026】
一実施形態では、或る1つのペアの拡散関数は、そのペアに固有の第1のパラメータ、例えば、そのペアの一意識別子に基づく。この識別子は特に、拡散関数の入力において、中間メッセージと連結させることができる。それゆえ、全てのペアに関して単一の拡散アルゴリズムを使用することが可能であり、その際には、この識別子のみが、ペア間で異なることになる。この規定により、計算の複雑性が簡略化される。
【0027】
別の実施形態では、これらのペアの拡散関数は、新たな入力メッセージから新たな出力メッセージを取得するために変化する、第2のパラメータに基づく。それゆえ、ペアの拡散関数は、対策の実行ごとに変化することにより、いくつかの実行にわたる故障注入攻撃に対しての、対策の堅牢性が改善される。
【0028】
一実施形態では、拡散関数は、1つ以上の鍵、例えば、前述の第1のパラメータ及び/又は第2のパラメータに基づく、擬似乱数生成器(pseudorandom number generator;PRNG)である。当然ながら、他のタイプの拡散関数、例えばハッシュ関数を使用することもできる。
【0029】
第1の実施形態では、各中間メッセージは、暗号操作の実行のうちの1つから直接得られた、第1のメッセージである。この規定は、1つ以上の故障注入に対する、対策の簡易な実装を提供する。
【0030】
第2の実施形態では、各中間メッセージは、暗号操作の実行から直接得られた第1のメッセージのうちのいくつか又は全てを、対応する連結プロファイルに従って連結しているメッセージである。この規定により、上記の第1の実施形態と比較して、一定の数の故障注入に対する、暗号操作の実行回数を低減することが可能となる。
【0031】
特定の実施形態では、2つの異なるペアの中間メッセージは、全ての第1のメッセージを連結している単一のマスターメッセージ内での、第1のメッセージの異なるローテーションによって、互いに異なっている。
【0032】
代替的実施形態では、中間メッセージは、第1のメッセージの別個のペアで形成される。例えば、第1の中間メッセージは、暗号操作の最初の2つの実行から得られた、2つの第1のメッセージで形成され、第2の中間メッセージは、暗号操作の第2及び第3の実行から得られた、2つの第1のメッセージで形成される、などとなり、最後の中間メッセージは、暗号操作の最後及び最初の実行から得られた、2つの第1のメッセージで形成される。この実施形態は、各ペアに関する異なる拡散関数が、不要なものになることを可能にする。
【0033】
一般に、最大でも
【数1】
個の互いに素な連結プロファイルのペアが、n個の第1のメッセージのグループに関して対称である場合には、各ペアに関する異なる拡散関数を不要にすることが可能であり、[x]は、x以下の最大整数である。連結プロファイルのペアは、その2つの連結プロファイルが、連結内の同じメッセージ位置を使用して、n個の第1のメッセージのグループに由来する第1のメッセージを位置付ける場合に、n個の第1のメッセージのグループに関して対称であると言われる。この制約は、2~dの任意のnに関して確認することができ、d+1は、暗号操作の総実行回数である。
【0034】
実際に、この構成により、同一の中間メッセージを
【数2】
個のペアが有し、それゆえ、最終的な組み合わせの間に、それらが打ち消し合うことを防ぐことが可能となる。それゆえ、n個の故障の注入に対する堅牢性が保証される。
【0035】
特定の実施形態では、再構成されたメッセージは、
【数3】
個の互いに素な連結プロファイルのペアが対称である場合、そのグループのn個の第1のメッセージのうちの1つ以上のみによって形成されるのではない。換言すれば、再構成されたメッセージ内には、連結プロファイルの
【数4】
個のペアの対称性には含まれない、少なくとも1つの第1のメッセージの存在が必要とされる。このことにより、n個の故障注入攻撃に対する、対策の堅牢性が改善される。好ましくは、この規定は、偶数nについて満たされる。優先的には、更に偶数dについて満たされる。
【0036】
一実施形態では、組み合わせるステップは、種々の感染メッセージと再構成されたメッセージとの間に、排他的論理和(又は、XOR)論理演算子を適用することを含む。
【0037】
優先的には、組み合わせるステップは、再構成されたメッセージを感染メッセージのうちの1つと組み合わせる(例えば、XOR)、最初の初期サブステップと、その初期サブステップの結果を他の感染メッセージと組み合わせる、1つ以上の後続サブステップとを含む。後続サブステップのそれぞれは、従前のサブステップの結果を別の感染メッセージ/暗号と組み合わせることが可能である。また、全ての感染メッセージも、段階的に組み合わされる。変形例として、他の感染メッセージを、初期サブステップの結果と組み合わせる前に、互いに組み合わせることもできる。
【0038】
再構成されたメッセージを組み合わせることから開始することにより、中間メッセージのペアの数よりも多くの故障を注入する特定の攻撃に対する、対策の耐性が改善される。
【0039】
一実施形態では、再構成されたメッセージは、暗号操作の実行のうちの1つから直接得られた、第1のメッセージのうちの1つである。このことにより、計算が簡略化される。
【0040】
一変形例では、再構成されたメッセージは、暗号操作の実行から直接得られた第1のメッセージのうちのいくつか又は全てに由来するビットで形成され、例えば、中間メッセージ間での、又はそのようなメッセージのペア間での、ビットの均等かつ交互の分布によって形成される。
【0041】
各中間メッセージが、暗号操作の実行のうちの1つから直接得られた第1のメッセージである一実施形態では、再構成されたメッセージは、少なくとも2つの異なるペアの(すなわち、異なる拡散関数によって処理される)第1のメッセージに由来するビットで形成することができる。
【0042】
例えば、再構成されたメッセージは、それぞれのペアの第1のメッセージに由来するビットで形成される。
【0043】
好ましい方式では、再構成されたメッセージの、少なくとも1つ以上のバイト又は各バイトが、少なくとも2つの異なるペアの第1のメッセージに由来するビットで形成される。このことは特に、少なくとも8つのペアが生成される場合に適用される。
【0044】
それゆえ、このことにより、同じペアの2つの実行の間に、同一の故障を介して、故障に感染した暗号が拡散又は修正されることなく、攻撃者により回収されることが防止される。それゆえ、システムのセキュリティが改善される。
【0045】
上記から、再構成されたメッセージの各ビットは、第1のメッセージのうちの1つに由来するものであり、そのビットが由来する第1のメッセージ内でのビットの位置と同じ位置を、再構成されたメッセージ内で占めることが理解されるはずである。実際に、故障が存在しない場合に出力メッセージとして提供されるのは、最初の再構成されたメッセージである。
【0046】
本発明の別の態様は、暗号処理デバイスのプロセッサによって実行されると、上記で定義されたような方法を暗号処理デバイスに実行させるプログラムを記憶している、非一時的コンピュータ可読媒体に関する。
【0047】
本発明による方法の少なくとも一部は、コンピュータによって実施することができる。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(マイクロプログラム、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態を取り得るものであり、これらは全て、本明細書では「回路」、「モジュール」、又は「システム」として総称することができる。更には、本発明は、任意の有形表現媒体に含まれているコンピュータプログラム製品の形態を取ることもでき、このコンピュータプログラム製品は、その媒体に組み込まれている、コンピュータによって使用することが可能なプログラムコードを有する。
【0048】
本発明を、ソフトウェアとで実装することができると想定すると、本発明は、プログラマブルデバイスに提供されるコンピュータ可読コードの形態で、任意の好適な媒体上に組み込むことができる。有形媒体又は非一時的媒体は、ハードディスクドライブ、磁気テープデバイス、又は固体メモリデバイスなどの、記憶媒体を含み得る。一時的媒体は、電気信号、電子信号、光信号、音響信号、磁気信号、又は電磁信号、例えば、高周波信号又はRF(radiofrequency;無線周波数)信号などの、信号を含み得る。
【図面の簡単な説明】
【0049】
本発明の他の特定の特徴及び利点は、非限定的な実施形態の例を示す添付の図によって例示される、以下の説明においてより明らかとなるであろう。
【0050】
図1】既知の感染対策の原理を概略的に示す。
【0051】
図2】本発明が実装される暗号システムを形成している、データ処理デバイスを概略的に示す。
【0052】
図3図2に示されるような本発明の実装のための、暗号処理デバイスの一実施例を構成するスマートカードを示す。
【0053】
図4】本発明による改善された感染対策の一般的原理を概略的に示す。
【0054】
図5】本発明による改善された対策の第1の実施形態を概略的に示す。
【0055】
図6】1つの故障の注入に対して耐性のある、図5の対策の変形例を示す。
【0056】
図7】2つの故障の注入に対して耐性のある、改善された感染対策の変形例を示す。
【0057】
図8】d個の故障(dは1以上の整数)の注入に対して耐性のある、改善された感染対策を示す。
【0058】
図9】本発明による改善された対策の第2の実施形態を概略的に示す。
【発明を実施するための形態】
【0059】
本発明は、故障注入攻撃に対して、暗号処理デバイスをセキュリティ保護するための、新規のタイプの感染対策を提案する。
【0060】
この新規の対策は、注入された誤りを、増幅する前に判定するのではなく、入力メッセージに対して暗号操作を実行することによって取得された2つの中間メッセージに、単一の拡散関数を適用する。それゆえ、誤りは、中間メッセージ自体の中で増幅され、拡散の後に感染メッセージと称される。
【0061】
それゆえ、中間メッセージ0を「感染」メッセージ0としてマッピングすることを目的とした、拡散関数の制約を克服することが可能である。その結果、利用可能な拡散関数の選択肢が増大する。
【0062】
暗号操作の実行から得られたメッセージのビットから再構成される、メッセージもまた生成される。
【0063】
感染メッセージと再構成されたメッセージとを、XORで組み合わせることにより、出力メッセージを提供する。中間メッセージのペア及び関連する拡散関数による、この操作は、この取り合わせを毎回異なる拡散関数で単純に重複実行することによって、対策を所望の保護レベルに、すなわち、その対策が抵抗しなければならない注入故障の数に、スケーリングすることを可能にする。
【0064】
暗号処理は、平文メッセージを入力として受け取ることができ、またそれゆえ、暗号化されたメッセージ又は「暗号」を出力として生成することができる。これは、例えば、暗号化又はデジタル署名のタイプの暗号操作に関する場合である。この場合、中間メッセージ、感染メッセージ、及び再構成されたメッセージもまた暗号化される。
【0065】
変形例として、暗号処理は、暗号化されたメッセージを入力として受け取ることができ、またそれゆえ、復号化されたメッセージ又は「平文」メッセージを出力として生成することができる。これは、例えば、復号化タイプの暗号操作に関する場合である。この場合、中間メッセージ、感染メッセージ、及び再構成されたメッセージもまた平文メッセージである。
【0066】
以降での言葉を明確化するために、主に「暗号」タイプの、第1のメッセージ、中間メッセージ、感染メッセージ、再構成されたメッセージ、及び出力メッセージについて言及するが(この場合、入力メッセージは「平文」である)、本発明はまた、暗号化された入力メッセージの復号化から得られる、「平文」タイプのメッセージの場合にも適用される。一般に、当業者は、具体的に示されている「暗号」の代わりに、任意のタイプのメッセージ(平文、又は暗号化されているもの)に、以下の教示を適用することが可能である。
【0067】
図2は、本発明が実装される暗号システムを形成している、データ処理デバイス40を概略的に示す。このデバイス40は、一方では、例えばバス43によってランダムアクセスメモリ42に関連付けられ、かつ他方では、例えばバス45を介して不揮発性メモリ44(例えば、EEPROMタイプのもの)に関連付けられている、マイクロプロセッサ41を備える。バス43とバス45とは、1つの同じバスとすることもできる。マイクロプロセッサ41は、セキュアな暗号プロセッサとすることができる。
【0068】
データ処理デバイス40、具体的にはデータ処理デバイスが内蔵しているマイクロプロセッサ41は、通信インタフェース50によって、外部デバイスとデータを交換することができる。
【0069】
図2は、外部デバイス(図示せず)から受信され、通信インタフェース50からマイクロプロセッサ41に送信される、入力データXの伝送を概略的に示している。同様に、外部デバイスに向けた、マイクロプロセッサ41から通信インタフェース50への、出力データYの伝送が示されている。この出力データYは、一般に入力データXに対する、本システムの内部の秘密データ60、例えばメモリに記憶されている秘密鍵を使用した、マイクロプロセッサ41によるデータの処理に由来するものである。
【0070】
入力データX及び出力データYは、本発明による暗号処理アルゴリズムの入力データE及び出力データSとすることができ、典型的には、入力における平文メッセージ(又は、代替的には暗号)、及び出力における暗号化されたメッセージ(又は、代替的には平文メッセージ)である。変形例として、データX、Y、及びE、Sが、全体的に又は部分的に異なるような、デバイス40における入力データX及び/又は暗号Sに対する他の処理操作を予見することもできる。
【0071】
この図では、入力データと出力データとは、2つの異なる矢印で表されているが、マイクロプロセッサ41とインタフェース50との間の通信を容易にする物理的手段を、唯一の手段によって、例えばシリアル通信ポート又はバスによって提供することもできる。
【0072】
マイクロプロセッサ41は、本発明に準拠した方法をデータ処理デバイス40が実行することを可能にする、ソフトウェア(又は、コンピュータプログラム)を実行することができ、その実施例が、図4図9に関連して以下で示される。このソフトウェアは、例えばメモリ44内に記憶されている、マイクロプロセッサ41の一連のコマンド命令から成る。
【0073】
変形例として、マイクロプロセッサ41/不揮発性メモリ44/ランダムアクセスメモリ42の取り合わせを、特定用途向け回路によって置き換えることができ、この回路は、その場合、本発明による方法の様々なステップを実施するための手段を備える。
【0074】
データ処理デバイス40としては、組み込み型(組み込みSE、又はeSE)であっても、組み込み型ではなくてもよいセキュアエレメント、例えば、スマートカード、UICCカード(又は、組み込みユニバーサル集積回路カードを表す、eUICC)、又はSIMカード(又は、eSIM)が挙げられる。
【0075】
図3は、図2に示されるような本発明の実装のための、暗号処理デバイスの一実施例を構成するスマートカードを示す。この場合、通信インタフェース50は、例えば、スマートカードの接点によって作り出されている。スマートカードは、図2に示されるような、マイクロプロセッサ41、ランダムアクセスメモリ42、及び不揮発性メモリ44を内蔵している。
【0076】
このスマートカードは、例えば、ISO7816規格に準拠しており、マイクロプロセッサ(又は、CPU)41とランダムアクセスメモリ42とを組み合わせた、セキュアなマイクロコントローラを装備している。
【0077】
変形例として、暗号処理デバイスは、USBスティック、文書又は紙情報媒体内に含めることができ、それらの文書又は紙情報媒体は、そのシートのうちの1つに、非接触通信手段に関連付けられているマイクロ回路を含む。好ましい方式では、それは、携帯用又はポケット用電子エンティティである。当然ながら、本発明はまた、パーソナルコンピュータ又はサーバに装備されている暗号処理デバイスにも適用される。
【0078】
そのような暗号処理デバイスは、例えば、処理(例えば、暗号化又は署名)するべきバイナリメッセージEを受け取り、暗号Sを返すことができる。
【0079】
以下の実施例では、主に、メッセージEを暗号化するためのAES(Advanced Encryption Standard;高度暗号化標準)タイプの暗号操作OPEについて言及する。メッセージEのサイズは、例えば、L=128ビット(すなわち、16バイト)である。
【0080】
当然ながら、本発明は、暗号化及び/又は署名であるか否かに関わりなく、任意のタイプの暗号操作に適用される。同様に、本発明は、入力メッセージEの任意の(ビット単位の)サイズL、優先的には整数(1以上)のバイトに適用される。
【0081】
図4は、本発明による改善された対策の一般的原理を概略的に示す。
【0082】
先行技術の手法とは対照的に、拡散関数によって修正するために、注入された誤り「e」を取得することは、もはや求められていない。本発明によれば、注入された誤りは、それにも関わらず拡散されるが、入力メッセージEに対する暗号操作の実行から直接取得された第1の暗号c及びcに(関数Fを介して)由来する、中間暗号C及びC自体の中で拡散される。
【0083】
例えばXOR10、XOR11を介した、種々の暗号の最終的な再結合は、それらの暗号のうちの1つにおいて拡散された誤りを、再注入することを可能にする。
【0084】
ここでは、中間暗号C及びCのペアを取得するために、入力データEに対して、同じ暗号操作OPEの実行を数回見出すことができるが、より一般的には、以降で開示されるように、中間メッセージの1つ以上のペアが取得される。簡易な方式では、また実施形態によれば、中間暗号は単純に、暗号操作の実行から直接得られた第1の暗号とすることができ、すなわち、C=c及びC=cであるか、あるいは、これらの実行から得られた第1の暗号を、組み合わせるか、混合するか、又は連結している(「||」は連結演算子である)ものとすることができ、例えば、C=c||c、及びC=c||cである。
【0085】
次いで、中間暗号の各ペアに対して、拡散処理が実行される。
【0086】
同じ拡散関数が、そのペアの2つの中間暗号に適用される。このことにより、2つの感染暗号g、gを取得することが可能となる。特に、任意のタイプの拡散関数を使用することが可能であり、特に、中間暗号0を感染暗号0としてマッピングしないものを使用することが可能である。以下で開示されるように、中間暗号のいくつかのペアを生成することが可能である場合、拡散関数は、中間暗号のペアごとに異なる。
【0087】
次いで、感染暗号g、gは、暗号操作の実行から得られた1つ以上の第1の暗号(ここでは、c及びc)のビット、オプションとして、それらの暗号を連結している中間暗号を介して回収されたビットの選択に由来する(Rec関数)、再構成された暗号Crecと組み合わされる。そのようにして、出力暗号Sが取得される。
【0088】
図に示されるように、感染暗号と再構成された暗号とは、典型的には、排他的論理和(又は、XOR)論理演算子を使用して組み合わされ、これにより操作が簡略化される。変形例として、「+」演算子と、その逆の「-」演算子とを使用して、これらの種々の暗号を組み合わせることも可能であり、Crec+g-gである。
【0089】
また、図には、この組み合わせが最初に、再構成された暗号を感染暗号のうちの一方(ここでは、XOR10によってg)と組み合わせて、その後続けて、その結果を他方の感染暗号(ここでは、XOR11によってg)と組み合わせることも示されている。
【0090】
この図における対策が、故障注入攻撃に対する保護を提供する場合には、暗号の組み合わせのこの順序は、更に、XORの一方を攻撃する第2の故障からも保護する。
【0091】
拡散関数fdiffは、好ましくは、同じ長さの暗号に対する組み合わせ操作(XOR)を実行することが可能となるように、長さLの(ビット数の)感染暗号を返す。拡散関数が、Lよりも大きい長さを有する感染暗号を返す場合には、暗号とのXOR(組み合わせ)は、共通の長さ(組み合わされる2つの暗号内に存在しているビット)に対して実行される。
【0092】
一実施形態では、拡散関数fdiffは、1つ以上の鍵又は「パラメータ」に基づく、擬似乱数生成器(PRNG)、例えば3ラウンドのAESである(それゆえ、PRNGはAESベースである)。当然ながら、典型的にはハッシュ関数を含めた、他のタイプの拡散関数を使用することもできる。
【0093】
擬似乱数生成器は、完全にランダムな値と殆ど区別できない可能性が高い、感染暗号を生成することが可能であるという点で、暗号処理操作に適している。そのようなPRNG生成器としては、Yarrow、Fortuna、Blum Blum Shub、ISAAC生成器、又は更に、複数ラウンドのAESが挙げられる。
【0094】
第1のいわゆる「ペア」鍵又はパラメータは、そのペアに固有のものであり、例えば、そのペアの一意識別子である。このことにより、同じ拡散アルゴリズムを使用して、ペアごとに異なる拡散関数を取得することが可能となる。このペア鍵は、中間暗号の単一のペアを有する実装形態の場合には、オプションである。
【0095】
第2のいわゆる「実行」鍵又はパラメータは、対策の実行ごとに修正され、すなわち、新たな入力メッセージから新たな出力メッセージをそれぞれ取得するために変化し、すなわち、対策の新たな実行のたびに変化する。このことにより、本発明に、同じ拡散アルゴリズムを使用して、対策のいくつかの実行にわたる堅牢性が付与される。例として、暗号システムによって生成される、ランダム値とすることができる。好ましくは、対策の同じ実行の間は、全ての拡散関数に関して同じ実行鍵が使用される。このことにより、ランダム値の生成を、対策の実行による単一のランダム値に限定することが可能となる。
【0096】
当然ながら、2つの鍵を、単一の鍵(例えば、2つの鍵の連結の結果)の形態で、一体に操作することもできる。
【0097】
前述のように、本発明は、各中間暗号(より一般的には、メッセージ)が、暗号操作の実行のうちの1つから直接得られた第1の暗号である実施形態を提案している。図4の関数Fは、この場合、恒等式:C=cである。これらの実施形態が、図5図8によって示されている。
【0098】
図5によって示されている対策は、対策が実行されるたびに実行鍵が変更される限り、オプションとして対策のいくつかの実行にわたって、故障注入に対して耐性がある。
【0099】
暗号操作OPE、例えばAESが、長さLの入力データEに対して2回実行される結果として、2つの第1の暗号c、cが取得され、長さLの中間暗号の単一のペア(C=c、C=c)を形成する。恒等関数Fにより、用語「第1の暗号」と用語「中間暗号」とは同義である。
【0100】
単一の拡散関数fdiff、例えば、3ラウンドのAESなどのPRNGが、2つの中間暗号C=c、C=Cに適用される結果として、好ましくは長さLの、2つの感染暗号g、gが取得される。拡散関数fdiffは、中間暗号のうちの一方が含み得る潜在的な誤りを増幅する。
【0101】
再構成された暗号が、2つの第1の暗号のうちの一方で形成され、ここでは、Rec(c、c)=cである。また、再構成関数Recは、この場合、その入力のうちの一方の恒等関数である。それゆえ、単一の故障の注入に対する感染対策のための、プロセッサ占有時間が短縮される。
【0102】
次いで、感染暗号g、gと、再構成された暗号Crec=cとを組み合わせて、長さLの出力暗号Sを取得する。図示のように、この組み合わせは、XOR10、XOR11を使用して実行することができ、
【数5】
である。好ましくは、以下のステップが実行される:
【数6】
【0103】
この構成では、cを導入する前に感染暗号を互いに組み合わせるのではなく、再構成された暗号cは、最初に、感染暗号g及びgのうちの一方と組み合わされる。このことは更に、XORの一方を攻撃する追加的誤りの注入に対しての、保護を提供する。
【0104】
図6は、故障の注入に対して耐性のある、改善された感染対策の変形例を示す。この場合も同様に、この対策は、実行鍵が提供され、対策が実行されるたびに変更される限り、そのいくつかの実行に対する攻撃(単一の故障の注入)に対して耐性がある。
【0105】
前出の図と同様に、暗号操作OPE、例えばAESが、長さLの入力データEに対して2回実行される結果として、長さLの中間暗号のペア(C=c、C=c)が取得される。恒等関数Fにより、用語「第1の暗号」と用語「中間暗号」とは同義である。
【0106】
同じ拡散関数fdiffが、それらに適用される結果として、2つの感染暗号g、gが取得される。
【0107】
2つの暗号C=c、C=cはまた、再構成関数Recを使用して、第1の暗号c、cからビットを選択することによって、長さLの再構成された暗号Crecを形成するように処理される。操作OPEの実行から直接取得された第1の暗号が、ここで組み合わされる場合には、その結果は、関数Fが恒等式であるため、中間暗号C、Cと同一である。
【0108】
再構成された暗号Crecの各ビットは、第1の暗号c、cのうちの一方に由来するものであり、そのビットが由来する第1の暗号内でのビットの位置と同じ位置を、再構成された暗号内で占めている。換言すれば、Crec(i)=c(i)又はc(i)であり、x(i)は、暗号xにおけるインデックスiのビットbを表している。一般に、長さLの暗号xは、ビット{bL-1、bL-2、...、b、b、b}で形成されている。
【0109】
図6のこの変形例では、再構成された暗号Crecは、そのペアの2つの第1の暗号に由来するビットで形成されており、すなわち、Crec(i)がcに由来し、Crec(j)がcに由来するような、少なくとも1つのi及び1つのjが存在している。
【0110】
再構成関数は、好ましくは(必須ではないが)、各cから同じ数のビットを公平に使用する。
【0111】
いくつかの選択スキームを想到することができる。例えば、Crecのビットのうちの半分は、第1の暗号c、cのそれぞれに由来する。しかしながら、例えば、再構成された暗号Crecを形成する1つ以上のバイト又は全てのバイト内に、各暗号c、cの少なくとも1つのビットを提供する、別のビット分布を想到することもできる。
【0112】
例として、2ビットのうちの1ビットが、暗号c、cの一方又は他方に由来し得る。例えば、L/2>i≧0(Lは暗号の長さ)のいずれにおいても、Crec(2i)=c(2i)、及びCrec(2i+1)=c(2i+1)であり、また、ブール記法では、以下のようにも記述される:
【数7】
∧はAND演算子であり、
【数8】
は排他的論理和演算子(XOR)である。ビットの他の分布が、半分に分割されていても、想到することができる。例えば、
【数9】
であり、より一般的には、
【数10】
であり、ここで、
【数11】
である。
【0113】
故障の注入が存在しない場合、Crec=c=cが求まる。故障の注入が存在する場合、Crecは、c及び/又はcとは異なっている可能性が高い。
【0114】
次いで、感染暗号g、gと、再構成された暗号Crecとを組み合わせて、出力暗号Sを取得する。図示のように、この組み合わせは、XOR10、XOR11を使用して生成することができ、
【数12】
である。好ましくは、以下のステップが実行される:
【数13】
【0115】
この構成では、Crecを導入する前に感染暗号を互いに組み合わせるのではなく、再構成された暗号Crecは、最初に、感染暗号g及びgのうちの一方と組み合わされる。
【0116】
図7は、対策の実行に対する2つの故障の注入に対して耐性のある、改善された感染対策の変形例を示す。この対策は、実行鍵が提供され、対策が実行されるたびに変更される場合、そのいくつかの実行に対する故障注入攻撃に対して耐性がある。
【0117】
暗号操作OPE、例えばAESが、入力データEに対して4回実行される結果として、4つの第1の暗号c~c、4つの中間暗号C=c~C=cが取得され、中間暗号の2つのペア(c、c)及び(c、c)、すなわち一般には、ペア「p」に関して(c2i、c2i+1)を形成する。当然ながら、この連続インデックスによるペアの編成は、説明の簡略化を目的とする例示的なものに過ぎない。恒等関数Fにより、用語「第1の暗号」と用語「中間暗号」とは同義である。
【0118】
各ペア「p」に関して、そのペアの2つの暗号(c2i、c2i+1)に、単一の拡散関数fdiff-iが適用される。それゆえ、4つの感染暗号g~gが取得される。
【0119】
diff-0は、第1のペアpに関する拡散関数であり、fdiff-1は、第2のペアpの拡散関数である。上述のように、これらの拡散関数は、例えば、異なる鍵を使用する3ラウンドのAESなどの、PRNG、特にAESベースのPRNGとすることができる。
【0120】
いくつかの実施形態では、拡散関数は、ペア鍵及び実行鍵に基づく。例として、ペア鍵及び/又は実行鍵を、拡散関数の入力において、暗号と連結するか又はXORを取ることができる。このことにより、連結された入力、又はXORが取られた入力に対して、同じ拡散アルゴリズムを実行しながらも、ペアごとに異なり、かつ対策の実行ごとに異なる拡散関数を、容易に取得することが可能となる。
【0121】
暗号のペアごとに異なる鍵に基づく、擬似乱数生成器の使用は、本発明の一実施形態に過ぎない。一般に、拡散関数は、暗号のペアごとに異なる。更には、それはまた、対策の実行ごとに変化する。
【0122】
4つの暗号c~cはまた、再構成関数Recを使用して処理されるが、その目的は、暗号c~cからビットを選択することによって、再構成された暗号Crecを形成することである。再構成された暗号Crecの各ビットは、暗号c0~c3のうちの1つに由来するものであり、そのビットが由来する暗号内でのビットの位置と同じ位置を、再構成された暗号内で占めている。換言すれば、Crec(i)=c(i)又はc(i)又はc(i)又はc(i)である。
【0123】
セキュリティ上の理由から、再構成された暗号Crecは、優先的には、少なくとも2つの異なるペアからの暗号に由来するビットで形成され、2つの異なる暗号のみに由来するものではない。
【0124】
暗号の2つのペアのみを提示しているこの図の場合、再構成された暗号Crecは、それぞれのペアの暗号に由来するビットで形成されている。
【0125】
再構成関数は、対抗するべき攻撃に基づいて選択することができる。例として、AES-128暗号操作に対するDFA(Differential Fault Analysis;差分故障解析)タイプの攻撃は、その暗号の4バイトを修正し、これらの修正を悪用することに基づくものである。
【0126】
一般的な方式では、攻撃は一般に、暗号の1バイト、数バイト、又は更に全てのバイトへの修正を悪用する。
【0127】
この状況では、再構成された暗号Crecの少なくとも1つ以上のバイト又は各バイトが、少なくとも2つの異なるペア、又は更に、3つ以上のペア、若しくは可能である場合には全てのペア(例えば最大8つのペア)の暗号に由来するビットで形成されるように、再構成関数を選択することができる。このことにより、暗号の単一のペアに対応している操作OPEの実行に、同じ故障を注入する特定の攻撃に対して、対策をセキュリティ保護することが可能となる。
【0128】
上述のように、いくつかの選択/再構成スキームを想到することができる。
【0129】
再構成関数は、好ましくは(必須ではないが)、各cから、又は各ペアpから、同じ数のビットを公平に使用する。例えば、Crecのビットの4分の1は、暗号c~cのそれぞれに由来し得る。変形例として、Crecのビットの半分は、各ペアpの暗号に由来し得る。しかしながら、例えば、再構成された暗号Crecを形成する1つ以上のバイト又は各バイト内に、暗号c~cのそれぞれの少なくとも1つのビットを提供する、別のビット分布を想到することもできる。
【0130】
例として、4ビットのうちの1ビットが、暗号c~cのそれぞれに由来し得る。例えば、
【数14】
である。
この実施例は、同じペアの2つの暗号に由来する2つの連続ビットを使用しない、再構成関数の場合を示している。
【0131】
ビットの他の分布が、4つに分割されていても、想到することができる。例えば、
【数15】
であるが、また、
【数16】
であり、
より一般的には、
【数17】
であり、
【数18】
である。
【0132】
堅牢性を改善する一実施形態では、(i及びjの任意の値に関して)a∧aj≠i=0は、単一の暗号のみからビットが回収されることを保証するものである。
【0133】
オプションとして組み合わせることが可能な、別の実施形態では、a∨a≠0及びa∨a≠0(Vはブール演算子OR)は、各ペアから少なくとも1ビットが取得されることを保証するものである。
【0134】
故障の注入が存在しない場合、Crec=c=c=c=cが求まる。故障の注入が存在する場合、Crecは、c~cとは異なっている可能性が高い。
【0135】
次いで、感染暗号g~gと、再構成された暗号Crecとを組み合わせて、出力暗号Sを取得する。図示のように、この組み合わせは、XOR10、XOR11を使用して生成することができ、
【数19】
である。
【0136】
当然ながら、感染暗号は、異なる順序で使用することもできる。更には、異なるペアに由来する感染暗号を交互にすることが好ましい場合には、単一のペアの2つの暗号で最初のXORを生成し、次いで、他のペアの2つの暗号で最後のXORを生成することも同様に可能である。
【0137】
好ましくは、以下のステップが実行される:
【数20】
【0138】
この構成では、Crecを導入する前に2つ以上の感染暗号を互いに組み合わせるのではなく、再構成された暗号Crecは、最初に、感染暗号g~gのうちの1つと組み合わされる。再構成された暗号Crecが、初期サブステップの間に感染暗号のうちの1つと組み合わされ、次いで、いくつかの連続する後続サブステップの間に、他の感染暗号のそれぞれが、従前のサブステップの結果と組み合わされる。
【0139】
図7のこの実施形態は、本発明による改善された対策を、(その対策が有効となる、故障の注入の数の観点で)所望のセキュリティレベルにスケーリングすることができる点を示している。このスケーリングは、中間暗号の新たなペアpを追加するために、操作OPEの実行を重複させることによって、及び、新規の専用の拡散関数fdiff-iを使用することによって実行される。
【0140】
また、任意の数の故障の注入に対して耐性がある、改善された感染対策を得ることも可能である。
【0141】
それゆえ、図8は、対策の単一の実行に対するd個の故障(dは1以上の整数)の注入に対して耐性のある、改善された感染対策を示す。それゆえ、この感染対策は、セッション鍵の生成などの機序に、特に良好に適している。
【0142】
更には、この対策は、実行鍵が提供され、対策が実行されるたびに変更される場合、そのいくつかの実行に対する故障注入攻撃に対して耐性がある。
【0143】
dの最大値は、保護するべきOPEアルゴリズムに、及び/又は、対象とする攻撃のタイプに依存し得る。例えば、AESは、32ビットの不正な暗号を対象とする攻撃の影響を受けやすいため、dに関する最大値は31である。換言すれば、この最大値は、攻撃の対象となり得る暗号の最小ビット数から、1を減じたものである。
【0144】
暗号操作OPE、例えばAESが、入力データEに対して2d回実行される結果として、操作OPEの実行に直接由来する2d個の第1の暗号c~c2d-1に等しい、2d個の中間暗号C~C2d-1が取得される。それらは、暗号のd個のペア(c、c)、(c、c)...(c2d-2、c2d-1)、すなわち一般には、ペアpに関して(c2i、c2i+1)を形成する。当然ながら、この連続インデックスによるペアの編成は、説明の簡略化を目的とする例示的なものに過ぎない。この場合も同様に、恒等関数Fにより、用語「第1の暗号」と用語「中間暗号」とは同義である。
【0145】
操作OPEの多重実行は、全体的若しくは部分的に、同時及び/又は順次とすることができる。
【0146】
各ペアp(0≦i<d)に関して、そのペアの2つの暗号(c2i、c2i+1)に、単一の拡散関数fdiff-i、例えば、ペア鍵K(i≠jである任意のi、jに関して、K≠K)及びオプションとして実行鍵(ランダム値)を使用する3ラウンドのAESなどの、PRNGが適用される。それゆえ、1つのペア当たり2つの感染暗号g2i~g2i+1が取得され、すなわち、合計で2d個の感染暗号g~g2d-1が取得される。
【0147】
拡散関数について上述された説明はまた、この実施形態にも適用される。例えば、暗号のペアごとに異なる鍵Kに基づく、擬似乱数生成器の使用は、本発明の一実施形態に過ぎない。一般に、拡散関数は、暗号のペアごとに異なる。使用される1つ以上の拡散関数は、PRNGとすることができるが、1つ以上の他の拡散関数は、1つ以上の他のタイプ、例えばハッシュ関数とすることもできる。また、ペア鍵及び/又は実行鍵を、拡散関数の入力において、中間暗号と連結するか又はXORを取ることもできる。
【0148】
2d個の暗号c~c2d-1はまた、再構成関数Recを使用して処理されるが、その目的は、暗号c~c2d-1からビットを選択することによって、再構成された暗号Crecを形成することである。再構成された暗号Crecの各ビットは、暗号c~c2d-1のうちの1つに由来するものであり、そのビットが由来する暗号内でのビットの位置と同じ位置を、再構成された暗号内で占めている。換言すれば、Crec(i)=c(i)であり、j=0~2d-1である。
【0149】
セキュリティ上の理由から、再構成された暗号Crecは、優先的には、少なくとも2つの異なるペアからの暗号に由来するビットで形成され、2つの異なる暗号のみに由来するものではない。
【0150】
特定の一実施形態では、再構成された暗号Crecは、それぞれのペアの暗号に由来するビットで形成されている。このことにより、操作OPEの異なる実行に注入された誤りのうちの一部を、再構成された暗号内に、統計的に混合することが可能となる。
【0151】
再構成関数は、対抗するべき攻撃に基づいて選択することができる。例として、AES-128暗号操作に対するDFA(差分故障解析)タイプの攻撃は、(AESにおけるMixColumns操作のサイズにより)暗号の4バイトを修正し、これらの修正を悪用することに基づくものである。
【0152】
一般的な方式では、攻撃は一般に、暗号の1バイト、数バイト、又は更に全てのバイトへの修正を悪用する。
【0153】
この状況では、再構成された暗号Crecの少なくとも1つ以上のバイト又は各バイトが、少なくとも2つの異なるペア、又は更に、3つ以上のペア、若しくは可能である場合には全てのペア(例えば、1バイト当たり最大8つのペア)の暗号に由来するビットで形成されるように、再構成関数を選択することができる。このことにより、暗号の或る1つのペアに対応している操作OPEの実行に、同じ故障を注入する特定の攻撃に対して、対策をセキュリティ保護することが実際に可能となる。
【0154】
上述のように、いくつかの選択/再構成スキームを想到することができる。
【0155】
再構成関数は、好ましくは(必須ではないが)、各cから、又は各ペアpから、同じ数のビットを公平に使用する。例えば、Crecのビットの1/2dは、暗号c~c2d-1のそれぞれに由来し得る。変形例として、Crecのビットの1/dは、各ペアpの暗号に由来し得る。しかしながら、例えば、再構成された暗号Crecを形成する1つ以上のバイト又は各バイト内に、暗号c~c2d-1のそれぞれの少なくとも1つのビットを提供する、別のビット分布を想到することもできる。
【0156】
例として、2dビットごとに1ビットが、暗号c~c2d-1のそれぞれに由来し得る。dが、2のべき乗ではない場合には、特定の暗号に関して、他の暗号と比較して余分のビットを選択することができる。
【0157】
典型的には、dが、2のべき乗である場合には、以下の再構成関数を使用することができ、
【数21】
ここでx<<yは、xのビットを、左にy位置(ビット)シフト(ローテーション)させるものである。
【0158】
当業者は、少なくとも2つの別個のペアの暗号に由来するビットの選択、オプションとして、同じバイト内、いくつかのバイトのそれぞれ、又は更に、再構成された暗号の各バイトの、ビットの選択を保証する、再構成関数を特定することが可能である。
【0159】
例えば、
【数22】
であり、
【数23】
である。
【0160】
堅牢性を改善する一実施形態では、(全てのi及びjに関して)a∧aj≠i=0である。
【0161】
更には、少なくとも1つのビットが、n(例えば、n=2)個の別個の暗号のペアから選択されることを保証するために、少なくともn個の異なるiの値に関して、a∨ad+i≠0とする。この条件は、aの全てのビットに適用されるが、変形例として、所望される制約に応じて、aの特定のバイト、いくつかのバイト、いくつかのバイトのそれぞれ、又は各バイトに適用することもできる。
【0162】
故障の注入が存在しない場合、Crec=ci、i=0...2d-1が求まる。故障の注入が存在する場合、Crecは、c~c2d-1とは異なっている可能性が高い。
【0163】
次いで、感染暗号g、g2d-1と、再構成された暗号Crecとを組み合わせて、出力暗号Sを取得する。図示のように、この組み合わせは、XOR10、XOR11を使用して生成することができ、
【数24】
である。
【0164】
当然ながら、感染暗号は、異なる順序で使用することもできる。更には、異なるペアに由来する感染暗号を交互にすることが好ましい場合には、単一のペアの2つの暗号で、2つの連続するXORを実行することも同様に可能である。
【0165】
好ましくは、以下のステップは、Crecを導入する前に2つ以上の感染暗号を互いに組み合わせるのではなく、最初に、再構成された暗号Crecを感染暗号g~g2d-1のうちの1つと組み合わせて、次いで、それぞれの連続する組み合わせの結果を、他の感染暗号のそれぞれと組み合わせることによって実行される。
【0166】
図5図8によって示されている感染対策は、1つの実行に対するd個の故障の注入に対して耐性があるが、それらは、いくつかの実行にわたって同程度のセキュリティを保証するものではない(1つの故障に対する保護のみである)。
【0167】
図9に関連して以降で提示される実施形態は、特に、1つの実行に対するd個の故障の注入に対して、及び、対策のいくつかの実行に対するd個の故障の注入の繰り返しに対して、強化されたセキュリティを提供する。dの最大値(dは1以上の整数)は、図8を参照して上述した通りである。
【0168】
更には、これらの実施形態は、以下で説明されるように、操作OPEの実行及び拡散関数の数が、実質的に(2dと比較して、d又はd+1まで)低減されるため、より複雑ではないという利点を有する。
【0169】
これらの実施形態では、各中間暗号Cは、暗号操作の実行から直接得られた第1の暗号cのうちのいくつか又は全てを、組み合わせるか若しくは連結している暗号である。換言すれば、関数F(図4)は、恒等関数ではなく、第1の暗号cの全て又は一部を組み合わせるものである。
【0170】
暗号操作OPE、例えばAESが、長さLの入力データEに対してd+1回実行される結果として、操作OPEの実行に直接由来するd+1個の第1の暗号c~cが取得される。第1の暗号の混合関数Fにより、中間暗号のk個のペア(C、C)、(C、C)...、又は一般には、ペアpに関して(C2i、C2i+1)を生成することが可能となる。当然ながら、この連続インデックスによるペアの編成は、説明の簡略化を目的とする例示的なものに過ぎない。
【0171】
操作OPEの多重実行は、全体的若しくは部分的に、同時及び/又は順次とすることができる。
【0172】
kはdに依存しており、dが偶数である場合には、k=d/2であり、dが奇数である場合には、k=(d+1)/2である。また、dが偶数である場合には、関数Fは、ペアへと編成される中間暗号を生成する。dが奇数である場合には、関数Fは、ペアへと編成されるd+1個の中間暗号を生成する。d=2である場合には、上記の実施形態に関する図5又は図6と同様に、中間暗号の1つのペアが求まる。d=3又は4である場合には、上記の実施形態に関する図7と同様に、中間暗号の2つのペアが求まる。
【0173】
関数Fは、第1の暗号c~cの全て又は一部の連結から、中間暗号Cを生成し、これらは、中間暗号ごとに異なっている。
【0174】
関数Fは、操作OPEのn個の(2つ以上の)実行に対する(それゆえ、2つ以上のcにおける)同じ故障の注入の結果として、過度に多くの同一の中間暗号のペアが取得され、最終的なXOR10、XOR11を介してそれらの打ち消しがもたらされることがないように、選択することができる。この保護は、適切な連結を選択することによって可能であり、同じ拡散関数fdiff-iが、中間暗号の全てのペアではないにせよ、いくつかのペアに関して使用されることを可能にするという利点を提供する。
【0175】
例えば、d=3(それゆえ、k=2個のペア)に関しては、操作OPEの4つの実行が実施される結果として、c~cが取得される。長さ(d+1)Lの、4(2k)個の中間暗号を、以下のように形成することができる:
=c||c||c||c
=c||c||c||c
=c||c||c||c
=c||c||c||c
【0176】
変形例として、中間暗号を、第1の暗号の別個のペア(スライディングペア)で単純に形成することも可能である。典型的には、d+1個の第1の暗号で構成されている、循環キューを巡覧していくことが可能である。
=c||c
=c||c
=c||c
=c||c
【0177】
テーブルの各行は、連結プロファイルを定義するものであり、各暗号cは、連結内での暗号位置を有している。
【0178】
各ペア(d、k)に関する、そのような連結テーブルを、デバイスのメモリ内に提供することができる。
【0179】
これらのテーブルの例は、最大でも
【数25】
個の互いに素な連結プロファイルのペアが、n個の第1のメッセージのグループに関して対称であることによる、より一般的な手法を示している。連結プロファイルのペアは、その2つの連結プロファイルが、連結内の同じメッセージ位置を使用して、n個の第1のメッセージのグループに由来する第1のメッセージを位置付ける場合に、n個の第1のメッセージのグループに関して対称であると言われる(プロファイルは、そのグループのn個の第1のメッセージのうちの一部のみを含み得るものであり、それらの全てを含むのではない)。この条件は、2~dの全てのnの値に関して検証される。[x]は、x以下の最大整数である点に留意されたい。
【0180】
それゆえ、このことにより、2つの中間暗号が同一であり、その結果、対応する感染暗号が、最終的な組み合わせの間にペアとなって打ち消し合う、
【数26】
個のペアを有することが回避される。それゆえ、
【数27】
個の感染暗号が、この組み合わせの間に打ち消し合わないことが保証され、2k個の故障の注入に対する堅牢性が保証される。
【0181】
例えば、d=16に関しては、17個の第1の暗号cと、16個の中間暗号Cとが取得される。それゆえ、2(n)個の第1の暗号に関して対称である連結プロファイルのペアが2つ以上存在しないことを検証することによって、中間暗号を取得するための連結プロファイルが、2つの故障の注入(n=2)の影響を受けにくいことを検証することが可能である。逆の場合には、2つの対応する実行に対する2つの故障により、2つの対称のペアに関する4つ(以上)の同一の中間暗号が取得されるため、XOR組み合わせの間に、対応する感染暗号を(同一の拡散関数の場合)打ち消すことが可能となるであろう。最大でも12個の故障により、他の12個のXORを短絡させることが可能となり、追加的な故障により、Crecを介して、未感染の暗号の故障を取得することが可能となるであろう。それゆえ、15個の故障は、対策を回避するために十分であろう。
【0182】
また、3(n)個の第1の暗号に関して対称である連結プロファイルのペアが2つ以上存在しないことを検証することによって、連結プロファイルが、3つの故障の注入(n=3)の影響を受けにくいことも検証される。同様に、4つの故障の注入(n=4)に関しても、4(n)個の第1の暗号に関して対称である連結プロファイルのペアが3つ以上存在しないことを検証することによって、検証される。以下、最大でd個の故障の注入(n=d)に関して検証される。
【0183】
仮に、連結プロファイルの
【数28】
個(以上)のペアが、n個の第1の暗号のグループに関して対称であった場合には、中間暗号の1つ以上のペアを既存のペアに追加することによって、所望の堅牢性を提供することが可能であり、その場合、1つのペアの中間暗号は、2つの別個のプロファイルに従って、グループの暗号のうちの少なくとも1つを、グループにない第1の暗号のうちの少なくとも1つと組み合わせている。
【0184】
例えば、そのグループにcが属しており、cが属していない場合には、中間暗号c||cと中間暗号c||cとで形成されているペアを追加することができる。
【0185】
連結操作を簡略化する一変形例では、図に示されているように、暗号混合関数Fは、暗号操作の実行から直接得られた全ての第1の暗号c~cを連結して、(長さ(d+1)Lビットの)マスター暗号CMを生成する、連結モジュールCONCATを含む。
【0186】
次いで、中間暗号を取得するために、同じマスター暗号に2k個の操作Rを適用することができる。
【0187】
例えば、操作Rは、(循環キューとして動作する)CM内の2つの暗号を選択するための、スライディングウィンドウとすることができる。それゆえ、Rは、c及びcを選択してC(C=c||c)を形成し、Rは、c及びcを選択してC(C=c||c)を形成する、などとなる。
【0188】
変形例として、操作Rは、マスター暗号CMの、Lビット(各暗号cの長さ)の倍数でのローテーション操作とすることもできる。
【0189】
例えば、中間暗号Cを取得するためのローテーションRは、マスター暗号CMのビットをjLビット左にシフトする(すなわち、暗号ciをjだけシフトする)ことを含み得る。それゆえ、ローテーションRは、恒等式:C=CMである。
【0190】
別の実施例では、R2j=Idであり、及びR2j+1は、恒等式とは異なる、Lビットの倍数によるマスター暗号CMのビットの任意のローテーション(それゆえ、1つ以上の暗号cのローテーション)である。それゆえ、中間暗号の各ペアpに関して、マスター暗号C2i=CMと、暗号c~cの別の連結に由来する中間暗号C2i+1が存在している。
【0191】
これらの、ローテーションによる暗号の異なる混合は、操作OPEのいくつかの実行に対する同一の故障の場合に、同一の中間暗号が存在しないことを保証するものではないため、適用するべき拡散関数は、互いに異なるものとすることができる。特にペア鍵に基づく、またオプションとして実行鍵に基づく、拡散関数の例が上記で示されている。
【0192】
各ペアp(0≦i<k)に関して、そのペアの2つの中間暗号(C2i、C2i+1)に、単一の拡散関数fdiff-iが適用される。それゆえ、1つのペア当たり2つの感染暗号g2i~g2i+1が取得され、すなわち、合計で2k(dが偶数である場合にはd、dが奇数である場合にはd+1)個の感染暗号g~g2k-1が取得される。それゆえ、感染暗号は、2つずつ打ち消し合う。
【0193】
拡散関数について上述された説明はまた、この実施形態にも適用される。例えば、暗号のペアごとに異なる鍵Kに基づく、擬似乱数生成器の使用は、本発明の一実施形態に過ぎない。一般に、拡散関数は、暗号のペアごとに異なる。使用される1つ以上の拡散関数は、PRNGとすることができるが、1つ以上の他の拡散関数は、1つ以上の他のタイプ、例えばハッシュ関数とすることもできる。また、ペア鍵及び/又は実行鍵を、拡散関数の入力において、中間暗号と連結するか又はXORを取ることもできる。
【0194】
いくつかの実施形態では、ペアのサブセットに対して単一の拡散関数を使用することが可能であり、これは、2つ以上のサブセットに対して可能である(拡散関数は、サブセットごとに異なる)。この場合、ペアの各サブセットにおいて使用される連結プロファイルは、上記で開示されたように、n個の故障の注入の影響を受けにくい点を保証することが可能である(nは、当該のサブセットを構成する中間暗号の数によって制限される)。
【0195】
拡散関数が、Lの倍数の長さ(例えば、上記の実施例では2L又は(d+1)Lビット)の暗号の入力を受け取る実施形態では、それらは、好ましくは、長さLビットの感染暗号を生成する点に留意されたい。それゆえ、使用される拡散関数は、(中間暗号を形成する)入力された暗号の倍数(実施例では、2又はd+1)を吸収することが可能でなければならない。それゆえ、典型的には、ハッシュ関数を使用することができる。
【0196】
当然ながら、拡散関数の出力は、Lビットよりも長い場合もあり、その場合、組み合わせ(XOR10及びXOR11)は、最下位ビットLに作用する。
【0197】
図9の実施例では、第1の暗号cが、XOR10による最終的な組み合わせを目的とする、再構成された暗号Crecとして使用されている。操作OPEの実行回数に関わりなく、任意の他の第1の暗号cを、代わりに使用することもできる。
【0198】
recに関する単一の第1の暗号の使用は、図のダイヤグラムを簡略化する。
【0199】
変形例として、再構成された暗号Crecは、第1の暗号c~cの全て又は一部のビットを選択することによって形成することもできる。再構成関数Recについて上述された説明はまた、この実施形態にも適用される。
【0200】
例えば、前述のスライディングペアによる変形例では、再構成された暗号Crecは、同じ拡散関数を共有する各ペアの中間暗号(又は、より一般的には、全ての中間暗号)に由来する、ビット又はバイト又は暗号から形成される。
【0201】
【数29】
個の互いに素な連結プロファイルのペアが、対称であることが検出されている場合には、再構成されたメッセージを、そのグループのn個の第1のメッセージのうちの1つ以上のみで形成されないように選択することが可能である。例えば、連結プロファイル間の対称性に関与しない第1の暗号を選択することが可能である。この制約は、任意のnの値に対して適用することができ、又は、nが偶数である場合にのみ適用することもできる。同様に、任意のdの値に対して適用することができ、又は、dが偶数である場合にのみ適用することもできる。そうではない場合、単一の第1の暗号をCrecとして使用することが可能である。
【0202】
故障の注入が存在しない場合、Crec=ci=0...dが求まる。故障の注入が存在する場合、Crecは、c~cとは異なっている可能性が高い。
【0203】
再構成が、第1の暗号c~c内のビットを選択することによって実行することができる場合には、中間暗号が、いくつかの実施形態で第1の暗号c~cの全て又は一部を連結しているものである限り、この選択を、1つの(又は、複数の)中間暗号Cから実施することもまた可能である点に留意されたい。
【0204】
次いで、感染暗号g、g2k-1と、再構成された暗号Crecとを組み合わせて、出力暗号Sを取得する。図示のように、この組み合わせは、XOR10、XOR11を使用して生成することができ、
【数30】
【0205】
当然ながら、感染暗号は、異なる順序で使用することもできる。更には、異なるペアに由来する感染暗号を交互にすることが好ましい場合には、単一のペアの2つの感染暗号で、2つの連続するXORを実現することも同様に可能である。
【0206】
好ましくは、以下のステップは、Crecを導入する前に2つ以上の感染暗号を互いに組み合わせるのではなく、最初に、再構成された暗号Crecを感染暗号g~g2k-1のうちの1つと組み合わせて、次いで、それぞれの連続する組み合わせの結果を、他の感染暗号のそれぞれと組み合わせることによって実行される。
【0207】
本発明は、特定の実施形態を参照して上記で開示されてきたが、本発明は、これらの特定の実施形態に限定されるものではなく、本発明の範囲内で見出される修正が、当業者には明らかとなるであろう。
【0208】
数多くの他の修正及び変形が、上記の例示的実施形態を参照することによって、当業者に課せられることになるが、それらの実施形態は、例としてのみ与えられているものであり、本発明の範囲を限定するものではなく、本発明の範囲は、添付の請求項によってのみ決定される。特に、異なる実施形態の異なる特徴は、該当する場合、交換することができる。
【0209】
請求項では、用語「含む(comprising)」は、他の要素又はステップを排除するものではなく、不定冠詞「a」又は「an」は、複数を排除するものではない。異なる特徴が、互いに異なる従属請求項内に列挙されているという単なる事実は、これらの特徴の組み合わせが、有利に使用され得ないことを示すものではない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【外国語明細書】