説明

サイドチャネル攻撃からの保護

本発明は、暗号化機構に関し、かかる暗号化機構を組み込んだ暗号化装置に関する。暗号化機構は、新しいタイプのマスキング機構を組み込むことによって、知られている暗号化機構よりも、サイドチャネル攻撃に対してよりよい抵抗を提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サイドチャネル攻撃から暗号化装置を保護するための方法に関し、かかる方法を埋め込む暗号化装置に関する。
【背景技術】
【0002】
当技術分野で知られているように、暗号化装置は、暗号化機構を実施する装置である。暗号化装置の例は、スマートカード、USBキー、ドングル、携帯端末装置(別名、PDA)、移動体電話、パーソナルコンピュータ(別名、PC)などを含む。かかる暗号化装置は、特に、ユーザの電子商取引を保護するために使用される。表現「電子商取引」は、その最も広い意味で解釈されるべきである。すなわち、電子商取引は、金融取引に限定されず、任意のインターネット取引、電気通信ネットワークなどを介して発生する任意の取引なども含む。電子商取引を保護することは、デジタル署名された電子文書、復号電子文書、第三者および/または認証ユーザとの折衝セッションキーの暗号化機構を含み得る。上の4つの暗号化機構は、当技術分野でよく知られている。これらは限定的ではなく(その他の暗号化機構が存在する)、必須ではない(例えば、暗号化装置はデジタル署名機構内に埋め込まれているとは限らない)。
【発明の開示】
【発明が解決しようとする課題】
【0003】
暗号化機構は入力と出力とを有する。例えば、暗号化機構は、平文からなる入力と、暗号文からなる出力とを有する場合がある。初めて暗号化装置が設計された際、人々は、かれらの暗号化機構に唯一可能な攻撃は、入力および出力の攻撃であると思った。しかし、暗号化装置は、いわゆる「サイドチャネル攻撃」も可能であることが判明した。サイドチャネル攻撃は、暗号化装置が、正規の入出力手段以外の入出力手段を有するという事実に依存する。例えば、不正規の入力手段の使用は、暗号化装置を加熱することによって、そのクロックを修正すること(例えば、推奨される限度より上に加速すること)によって、紫外線、X線、または超音波の下に置くことによって、振動させること、またはそうでない場合、機械的に影響を与えることなどによって、暗号操作を変更することを含み得る。かかる変更は、入念に設計されることが可能であり(例えば、カウンタが減少されようとするまさにそのときにグリッチ(glitch)が導入され得る)または無作為であってもよい(例えば、目的は単に無作為の障害を引き起こし、機密情報を漏らす可能性がある障害の結果を分析することであり得る)。不正規の出力手段の使用は、暗号化装置の電力消費量を分析すること(例えば、電子部品は、「2乗だけ」などの簡単な演算よりも、「2乗および乗算」などの複雑な演算を実行するためにより多くの電力を要求する)、暗号化装置によって生み出された電磁場を分析すること、暗号化装置によって放たれた音を分析することなどを含み得る。よく知られているサイドチャネル攻撃は、単純電力解析(Simple Power Analysis)(SPA)、電力差分解析(Differential Power Analysis)(DPA)、故障差分解析(Differential Fault Analysis)(DFA)を含む。
【課題を解決するための手段】
【0004】
暗号化機構は、暗号化装置内に安全に記憶されると想定される少なくとも1つの秘密Dを必要とする機構からなる。Dはいかなる攻撃を介しても暗号化装置の外に漏れるべきではない。当技術分野で知られている方法において、Dはn桁の2進数の形(d、d、...dn−1で表されることが可能であり、dは(0からn−1の間の各整数iに関する)ビットである。本明細書の残りの部分で、欧州特許条約に従って請求項内で括弧の中に置かれた参照符号によりあいまいさをもたらさないために、数学における常として、指数Dは(d、d、...dn−1の代わりに{d、d、...dn−1と示されることになる。
【0005】
数学の一部門である抽象代数学では、モノイド(M、⊥)は、代数的集合として定義され、集合は結合的2項演算(associative binary operation)⊥の下で閉じられ(closed under)ており、集合は単位元を有する。グループと反対に、モノイドでは、すべての要素が逆元を有するとは限らない。演算⊥はまた、その他の記号を用いて表されることも可能である。例えば、演算⊥は加法演算(記号+)として、乗法演算(記号)などとして表されることが可能である。この表現は、単に名目的であり、モノイドの属性に影響を与えない。本明細書の残りの部分で、モノイドは乗法演算を用いて表されることになり、欧州特許条約に従って請求項内で括弧の中に置かれた参照符号によりあいまいさをもたらさないために、(M、)の代わりに{M、}と示されることになる。
【0006】
モノイドは暗号化において広く行きわたっている。暗号化分野で最も行きわたったモノイドは、多くの逆元(例えば、280の逆元)を有する大きなモノイドである。例えば、RSAアルゴリズムの場合、ほとんどすべての要素は可逆である(例外は、特に、pおよびqの倍数である)。Mは、モノイド{M、}の集合Mのすべての可逆元を含む集合を示す。
【0007】
本明細書の残りの部分で、すべてのモノイドは、すべての要素が交換可能なモノイドである可換モノイド(abelian monoids)である。
【0008】
特にサイドチャネル攻撃に敏感な暗号化機構は、一定の値vに等しい(すなわち、v=0またはv=1)各dに関して、XおよびYZを計算し(X、YおよびZはモノイド{M、}の3要素である)、その他の値に等しい各d(d=1−v)に関して、はTを計算する(Tはモノイド{M、}の要素である)機構を含む。かかる機構の例は、RSA冪剰余(modular exponentiation)を含む。
【0009】
は2乗演算と呼ばれ、XXを意味する。
【0010】
はX...Xを意味し、Xはn回現れる。
【0011】
注記:加法的記法を用いたモノイドでは、Xは2Xと書かれることになり、X+Xを意味することになる。同様に、XはnXと書かれることになり、X+X+...+Xを意味することになり、Xはn回現れる。
【0012】
Zは乗法演算と呼ばれる。
【0013】
本発明は、サイドチャネル攻撃に対して上述の特に敏感な暗号化機構の抵抗を改善する。かかる機構の例は、楕円曲線小数点乗算(elliptic curve point multiplications)、およびRSA演算またはDiffie Hellman鍵確立(key establishment)を実行する場合に使用される冪剰余を含む。本発明はまた、暗号化機構を保護するために要求される処理量も制限する。本発明は、特定のタイプのマスキング機構(別名、目隠し機構(blinding mechanism))を導入することによってこれを行う。
【0014】
本発明およびその利点は、添付の図面を参照して、以下の明細書内でより詳細に説明される。
【発明を実施するための最良の形態】
【0015】
図1は、冪剰余からなる暗号化機構の例を説明する。この種の冪剰余は、特に、RSAアルゴリズムおよびDiffie Hellmanアルゴリズムを用いて実施される。
【0016】
ステップ2から分かるように、指数Dの各ビットdに関して、係数2乗(modular squaring)が実行される(サブステップ2.i)。dが1に等しい場合、剰余乗算(modular multiplication)が実行される(サブステップ2.ii)。
【0017】
Dは、通常、乱数から算出される。一般に、Dのハミング重み(hamming weight)はおよそn/2である。したがって、一般に、図1の方法は、n回の係数2乗演算と、約n/2回の剰余乗算とを必要とする。
【0018】
当技術分野で知られているように、このタイプの暗号化機構は、SPAなど、最も単純なサイドチャネル攻撃に対してさえ非常に敏感である。実際に、乗法演算の実行および2乗演算の実行の間、電力消費量は同じではない。したがって、暗号機構を実施する暗号化装置上にプローブを置き、電力消費量を測定し、電力追跡内で乗算と2乗を区別し、それにより、すべてのビットdの値を識別することが可能である。指数Dは、その場合、攻撃者によって回復される。
【0019】
図2は「平衡冪剰余アルゴリズム」として当技術分野で知られている、サイドチャネル攻撃からの第1のレベルの保護を含む暗号化機構の例を説明する。
【0020】
この方法は、dが0に等しい場合、擬似乗算が実行される第3のステップiiiが加えられる点を除いて、図1の方法に類似する。この第3のステップの結果、ビットが0に等しいにせよ、1に等しいにせよ、電力消費量は非常に近接する。
【0021】
n回の乗法演算とn回の2乗演算とが存在するため、この方法の複雑さは増大される。しかし、上で示されたように、基本的なサイドチャネル攻撃に対するその抵抗も同様に改善される。
【0022】
残念ながら、この方法は、SE攻撃(セーフエラー攻撃(safe error attack))として知られている、もう1つのサイドチャネル攻撃に依然として非常に敏感である。実際に、擬似乗算の間、暗号化機構が妨害される場合、乗算は失敗するが、擬似乗算は最終結果に使用されないため、最終結果は依然として影響を受けない。したがって、攻撃者は、この例では、0に等しいビットである擬似ビットを見つけ、すべてのその他のビットが1に等しいことを推測することが可能であり、その結果、秘密の値Dは回復されている。
【0023】
図3は、「Joye & Al.冪剰余アルゴリズム」として当技術分野で知られ、JoyeおよびYenによってCHES2002で開示された、サイドチャネル攻撃からの第2のレベルの保護を含む、知られている暗号化機構の例を説明する。これはMontgomeryラダーアルゴリズム(Ladder algorithm)に基づく。
【0024】
図3の暗号化機構は、図2の暗号化機構の制限を克服することを目指す。
【0025】
このため、もはや擬似演算は存在しない。代わりに、(最後のラウンドを除いて)すべての乗算の結果が最終結果において使用される。したがって、機構を妨害することは、常に誤った出力につながる。
【0026】
この暗号化機構の複雑さは、図2の複雑さと同じである(n回の乗法演算、n回の2乗演算)。
【0027】
しかし、この暗号化機構は、依然としてDPA攻撃に敏感である。当技術分野で知られているように、DPA攻撃では、攻撃者が入力Xの値を設定することができる場合、攻撃者は、dの値について推測し、選択されたサンプル数全体にわたって電力消費量内の相関関係を調査することによりその値を検証することによって、ステップiおよびiiの次の中間値の値を予測することが可能である。
【0028】
図3の暗号化機構など、知られている技術を改善することが本発明の目的である。
【0029】
図4に示されるように、図3の教示をマスキング機構と組み合わせることは可能であろう。マスキングは入力要素を乱数で乗算することであり得、それにより、DPA攻撃の予測ステップを不可能にする。残念ながら、図4に示される技術は、およそ4n回の演算を要求し、当該技術をこれまでの技術よりも2倍遅いものにする。図4に示される技術はまた、冪剰余も2回実行する。最初は、マスキングされた入力に関して、もう1つの時期は、マスキングに使用されるマスクに関する。この二重冪剰余により、秘密指数Dは2度使用され、これは機構を潜在的に弱める。
【0030】
本発明による暗号化機構は、n桁の2進数{d、d、...dn−1として表され得る秘密Dを必要とする。暗号化機構は、Xに等しい出力要素OUTを計算するように構成され、Xはモノイド{M、}の要素である。機構は、第1の変数VARと第2の変数VARとを含む。暗号化機構は、各ステップMULの間、暗号化装置がVAR1−diVARdiを計算するようにn個のステップ{MULi=n−1..0と、各ステップSQの間、暗号化装置がVARdiVARdiを計算するようにn個の別のステップ{SQi=n−1..0とを含む。各ステップSQは、0からn−1の間の任意のiに関してステップMULの後で実行され、各ステップMULi−1は、1からn−1の間の任意のiに関してステップMULの後で実行される。機構は、
a.ランダム要素MSK_INPUTを生成するステップと、
b.要素Xとランダム要素MSK_INPUTとを使用することによってマスキングされた要素MASKED_Xを作成するステップと、
c.マスキングされた要素MASKED_Xを使用して、上述のステップ{MULi=n−1..0と{SQi=n−1..0とを必要とする、マスキングされた出力要素MASKED_OUTを計算するステップと、
d.秘密Dを必要とせずに、ランダム要素MSK_INPUTから出力マスクMSK_OUTPUTを計算するステップと、
e.マスキングされた出力要素MASKED_OUTと出力マスクMSK_OUTPUTとを使用して、出力要素OUTを計算するステップと
を含むことを特徴とし、
ステップdはステップaとステップeの間の任意のときに発生し、ステップa、b、c、eは連続的である。
【0031】
図5から分かるように、出力マスクの計算は、マスキングされた出力要素の計算と共に実行することが可能である。図6から分かるように、この計算は(図のステップ4に示されるように、後に、または前に)連続的に実行することも可能である。この計算を並行して、例えば、図7に示されるように、2つの異なるスレッド内で、実行することも可能である(ステップ3aおよび3bを参照)。
【0032】
マスキング演算の結果、攻撃者はマスクを知らず、中間結果に関して推定する可能性を有さないため、DPA攻撃はもはや適用可能ではない。
【0033】
要素Xは、もう1つの機構によって暗号化機構に供給された入力要素であり得、または暗号化機構内で生成されることも可能である。例えば、タイムスタンプ機構からなる暗号化機構では、現在の時間は、機構内で安全に決定され、次いで、機構内でデジタル署名されることが可能である。
【0034】
同様に、出力要素OUTは、暗号化機構によってもう1つの機構に通信されることが可能であり、出力要素OUTは、暗号化機構内部に維持されることが可能であり、または暗号化機構内で後処理されて、後処理された形でもう1つの機構に送られることが可能である。
【0035】
好ましい実施形態では、本発明による暗号化機構は、ランダム要素MSK_INPUTがM(上から分かるように、Mの逆元の集合)に属すようなものである。MSK_INPUTが値Rに等しい場合、R−1によって、モノイド{M、}の演算に関するRの逆元を示す。関数f:MASKED_X→MASKED_OUTが、f(RX)=g(R)f(X)であるように関数gが存在するようなものである暗号化機構の場合、XおよびRを乗算することによって要素XにマスクMSK_INPUTを適用して、出力要素を取得する目的でマスキングされた出力に適用するために出力マスク(g(R))−1を計算することが可能である。いくつかの事例では、(g(R))−1は、g(R−1)に等しい場合がある。かかる実施形態では、逆元R−1は、したがって、出力マスクMSK_OUPUTを計算するために使用され得る。
【0036】
本発明による好ましい暗号化機構は、出力マスクMSK_OUTPUTの計算が、各ステップR_SQの間、暗号化装置がMSKMSKを計算するように、n個のステップ{R_SQi=n−1..0を含むことが可能であり、MSKはモノイド{M、}の要素であり、初期値MSKは乱数Rの逆元から取得されており、最終値MSKは、マスキングされた出力MASKED_OUTの値からマスキングを取る(unmask)ために使用される出力マスクMSK_OUTPUTである。これは、関数gの計算がステップR_SQを必要とすることによって実行され得るように、関数gに関連する機構に関して特に有利である。
【0037】
より詳細には、本発明による好ましい実施形態では、MSKは、n−1から0までに等しいiに関して、MSKi+1MSKi+1に等しい可能性がある。これは、関数g:MSK→MSKに関連する機構に関して特に有利であり、n−1から0までに等しいiに関して、MSK=MSKi+1MSKi+1である。
【0038】
好ましい暗号化機構では、マスキングされた要素MASKED_XはXRに等しく、出力要素OUTはMASKED_OUTMSKに等しく、MSKはR−1に等しく、第1の変数VARの初期値はランダム要素の値Rに設定されており、第2の変数VARの初期値はマスキングされた要素MASKED_Xの値に設定されており、各ステップMULは、VAR1−diVARdiを計算して、結果をVAR1−di内に記憶することであり、各ステップSQは、VARdiVARdiを計算して、結果をVARdi内に記憶することである。
【0039】
図5は、
1.乱数が生成される第1のステップ。これは、例えば、暗号化機構を実施する暗号化装置内に埋め込まれたハードウェア乱数生成器(hardware random number generator)によって行われることが可能である。実際に、乱数は、可能な限り予測不可能であることが好ましく、これは、当技術分野で知られているようなハードウェア手段を用いて最もよく達成される。
2.変数VAR、VARおよびMSKが初期化される第2のステップ、
3.マスキングされた出力(ループの最終ラウンドの後のVAR値)がマスキングされた要素から計算され、出力マスクMSKが計算される、第3のステップ、
4.出力マスクMSKを用いてマスキングされた出力からマスキングが取られ、暗号化機構を起動した実体に戻される、第4のステップ
を含む、本発明の好ましい実施形態の例を説明する。
【0040】
暗号化機構は、入力として要素Xと秘密Dとを使用する。好ましい実施形態では、秘密Dは安全に記憶され、したがって、暗号化機構が起動されるたびに暗号化機構に引きわたされなくてよい。要素Xは、一般に、入力パラメータとして暗号化機構に引きわたされるが、(例えば、暗号化機構内で利用可能なクロックに基づくタイムスタンプを伴う上の説明から分かるように)暗号化機構自体によって決定されることも可能である。
【0041】
本発明は、上で説明されたように、秘密Dを記憶して、暗号化機構を実施する暗号化装置にも関する。本発明は、より詳細には、スマートカードタイプの暗号化装置に関する。
【0042】
本発明は、最新技術の暗号化機構と比較して追加要件がほとんどないため、スマートカードなどの埋め込みシステムに関して特に有利である。本発明はRSAアルゴリズムに大変適している。実際に、本発明は、伝統的な暗号化機構と比較して鍵素材に関する追加情報を要求しない。特に、本発明は、暗号化機構に利用可能にされるRSA鍵ペアの公開指数を要求しない。
【0043】
本発明は、任意の追加のパラメータを要求せず、したがって、静的モードでセッション鍵を確立するために特に非常に便利であるため、Diffie Hellmanアルゴリズムに関して同様に有利である。
【0044】
本発明は、より強力なプロセッサ(または、暗号化アルゴリズムが部分的にもしくは完全にハードウェア内で実施される場合、暗号プロセッサ)を要求することになる、指数に関する、または要素Xに関する追加マスクを要求しないという点で、上の両方のアルゴリズムに関しても有利である。
【0045】
図5の好ましい実施形態の複雑さは、およそ2n回の2乗演算およびn回の乗算、すなわち、最も近い方法(図3のMontgomeryラダー)よりも50%だけ多い、約3n回のCPU集中演算を必要とし、さらに多くのRAMを要求しない(最高で50%)。
【0046】
入力マスクとして使用されるいくつかのランダム要素に関して、ステップSQ_RDは(指数iの一定の値i_weakに関して)MSKi_weak=1をもたらす可能性があり、その場合、すべての後続の値(MASKi_weak−1、MSKi_weak−2、など)は同様に1に等しくなる点に留意されたい。この状況は出力マスクを有さないことに相当する(マスキングされた出力と出力とは等しい)ため、この状況は弱い出力マスクに対応する。しかし、この脆弱性は利用するのが困難であり、発生する可能性は非常に少ない。弱いマスクにつながるランダム要素の可能性は非常に低い。例えば、RSA2048の場合、弱いランダム要素を選ぶ可能性は多くて1.910−7であることが推定される。可能性は、RSA鍵の値に依存し、実際には、多くの場合、上の値よりさらに低い。可能性は、いくつかのランダム逆元を選び、それらを一緒に乗算することによって任意に小さくされ得る(すべての要素が弱い場合だけ、要素の積は弱くなることになる)。
【図面の簡単な説明】
【0047】
【図1】サイドチャネル攻撃からのいかなる保護も伴わない典型的な暗号化機構を表す図である。
【図2】「平衡冪剰余アルゴリズム(balanced modular exponentiation algorithm)」として当技術分野で知られている、サイドチャネル攻撃からの第1のレベルの保護を用いた暗号化機構を表す図である。
【図3】「Joye & Al.冪剰余アルゴリズム」として当技術分野で知られている、サイドチャネル攻撃から第2のレベルの保護を用いた暗号化機構を表す図である。
【図4】冪剰余のための可能なマスキング機構を表す図である。
【図5】サイドチャネル攻撃からのより高いレベルの保護を提供する、本発明による好ましい暗号化機構を表す図である。
【図6】図5の機構の改変形態を示す図である。
【図7】図5の機構の改変形態を示す図である。

【特許請求の範囲】
【請求項1】
n桁の2進数{d、d、...dn−1として表され得る秘密Dを必要とし、Xに等しい出力要素OUTを計算するように構成されている暗号化機構にして、Xがモノイド{M、}の要素であり、当該機構が、第1の変数VARと第2の変数VARとを含み、各ステップMULの間、暗号化装置がVAR1−diVARdiを計算するように、当該暗号化機構がn個のステップ{MULi=n−1..0を含み、各ステップSQの間、暗号化装置がVARdiVARdiを計算するように、当該暗号化機構がn個のその他のステップ{SQi=n−1..0を含み、各ステップSQが、0とn−1の間の任意のiに関してステップMULの後で実行されており、各ステップMULi−1が、1とn−1の間の任意のiに関してステップMULの後で実行されている、暗号化機構であって、
a.ランダム要素MSK_INPUT(R)を生成するステップと、
b.要素Xとランダム要素MSK_INPUTとを使用することによってマスキングされた要素MASKED_X(VAR)を作成するステップと、
c.マスキングされた要素MASKED_Xを使用して、上述のステップ{MULi=n−1..0と{SQi=n−1..0とを必要とする、マスキングされた出力要素MASKED_OUT(VAR)を計算するステップと、
d.秘密Dを必要とせずに、ランダム要素MSK_INPUTから出力マスクMSK_OUTPUT(MSK)を計算するステップと、
e.マスキングされた出力要素MASKED_OUTと出力マスクMSK_OUTPUTとを使用して、出力要素OUTを計算するステップと
を含むことを特徴とし、
ステップdがステップaとステップeの間の任意のときに発生し、ステップa、b、c、eが連続的である、暗号化機構。
【請求項2】
ランダム要素MSK_INPUT(R)がモノイド{M、}の演算に関する逆元(R−1)を有し、逆元が出力マスクMSK_OUTPUTを計算するために使用可能である、請求項1に記載の暗号化機構。
【請求項3】
出力マスクMSK_OUTPUTの計算が、各ステップR_SQの間、暗号化装置がMSKMSKを計算するように、n個のステップ{R_SQi=n−1..0を含み、MSKがモノイド{M、}の要素であり、初期値MSKがランダム要素MSK_INPUTの逆元(R−1)から取得されており、最終値MSKがマスキングされた出力MASKED_OUTの値からマスキングを取るために使用される出力マスクMSK_OUTPUTである、請求項1に記載の暗号化機構。
【請求項4】
MSKが、n−1から0までに等しいiに関して、MSKi+1MSKi+1に等しい、請求項3に記載の暗号化機構。
【請求項5】
マスキングされた要素MASKED_XがXRに等しく、出力要素OUTがMASKED_OUTMSKに等しく、MSKがRの逆元に等しく、第1の変数VARの初期値がランダム要素の値(R)に設定されており、第2の変数VARの初期値がマスキングされた要素MASKED_Xの値に設定されており、各ステップMULがVAR1−diVARdiを計算して、結果をVAR1−di内に記憶することであり、各ステップSQがVARdiVARdiを計算して、結果をVARdi内に記憶することである、請求項4に記載の暗号化機構。
【請求項6】
請求項1から5のいずれかに記載の暗号化機構を実施することを特徴とする、秘密Dを記憶する暗号化装置。
【請求項7】
請求項1から5のいずれかの請求項に記載の暗号化機構を実施することを特徴とする、秘密Dを記憶するスマートカード。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2009−537025(P2009−537025A)
【公表日】平成21年10月22日(2009.10.22)
【国際特許分類】
【出願番号】特願2009−502237(P2009−502237)
【出願日】平成19年3月23日(2007.3.23)
【国際出願番号】PCT/IB2007/000728
【国際公開番号】WO2007/116262
【国際公開日】平成19年10月18日(2007.10.18)
【出願人】(504326572)アクサルト・エス・アー (31)
【Fターム(参考)】