(58)【調査した分野】(Int.Cl.,DB名)
前記非線形処理が、レジスター内における結果のサンプリングの直前に、同一の組み合わせブロックにおいて前記線形処理の後に適用されることを特徴とする、請求項1〜8のいずれか一項に記載の回路。
【背景技術】
【0002】
電子回路の働きは電力消費量、計算時間、又は電磁放射のような物理量を通じて、それらの動作中に観測され得る。
【0003】
これらの物理量は、計算の構成および、回路内で取り扱われるデータの双方に依存する。処理されたデータに関する情報は、従って隠れたチャンネル又は補助チャンネルと呼ばれる前記量の観測により回路の外部に対して間接的に利用できる。
【0004】
これらの物理量の消散は、特に暗号法によって保護された機密データを処理するシステムの安全性を危険にさらし得る。従って、機密データが対称暗号アルゴリズムを用いることによって保護される場合、保護のロバスト性は暗号鍵を秘密に保つ能力にある。物理量の消散は、第三者が適切な攻撃を実行することにより、前記鍵を得ること、およびその結果として機密データへのアクセスを可能にし得る。前記回路により消散された物理量の観測による攻撃は、通常単に観測による攻撃と形容される。これ以降、記述の中で、第三者向けではないデータにアクセスするために、観測法による攻撃を用いる第三者は攻撃者と呼ばれ、消散した物理量は漏れ又は隠れたチャンネルと呼ばれる。
【0005】
今日、保護された回路により処理されたデータにアクセスできるようにする、強力な観測攻撃が存在する。
【0006】
従って、P.C.Kocher, J.Jaffe and B.Jun entitled “Timing Attack on Implementations of Diffie−Hellman”(表題:Diffie−Hellmanの実装に対するタイミング攻撃), RSA, DSS and Other Systems, Proceedings(会議記録)of CRYPTO’96, volume 1109 LNCS, pages 104−113, Springer−Verlag, 1996の論文において記述されているように、回路のデータ処理時間を表わす漏れの観測による攻撃が存在する。
【0007】
回路の電力消費量の観測による攻撃もまた、例えば、DPAタイプの方法を使用することにより、攻撃者によって用いられることができ、これらのタイプの攻撃はP.C.Kocher, J.Jaffe and B.Jun entitled “Differential Power Analysis”(表題:微分電力解析), Proceedings(会議記録)of CRYPTO’99, volume 1666 LNCS, pages 388−397, Springer−Verlag, 1999の論文において記述されている。
【0008】
これらの方法は、暗号法による数学的水準において与えられた安全性を脅かすことを可能にする。
【0009】
処理時間の、時間に関係するアルゴリズムのバランスをとることは、比較的簡単である。電力消費の波形の瞬間的な観測に対して回路を保護することは、より困難である。
【0010】
隠れたチャンネルに関する攻撃に対して電子回路を保護するために、様々な対策方法がある。それらの特性はとりわけ、例えばその頭字語FIPSが“Federal Information Processing Standardization(連邦情報処理規格)”を表わす、アメリカのFIPS規格140(American FIPS standard 140)のような、国際的な水準において定義される共通の基準によって、又は規格によって規定されている。
【0011】
幾つかの対策は、攻撃が成功するために必要な測定値の数を単に増加させる。そのようなものは、例えば計算論理と並行して実行される、機能的でないノイズ発生器を用いた対策方法に関する場合である。例えば、ランダムに初期化された疑似乱数発生器PRNGは、この目的に役立つことができる。この場合、攻撃者によって集められたあらゆる測定値は、隠れたチャンネルに重ねられるノイズにより妨害される。攻撃は、対策の技術に関して期待される信号対雑音比(S/N比)が有効であるように増幅するために、より多くの測定を実際に行なう必要があるという理由で、より複雑になる。
【0012】
別の対策技術は、隠れたチャンネルをマスキングすることにより、観測による攻撃に対して保護し、保護されるべき処理の間、通常はマスクと呼ばれる確率変数又は疑似確率変数mを含む。前記変数は、計算結果が前記マスクに依存せず、それに頼る隠れたチャンネルを通じた情報の漏れに依存するような方法で用いられる。
【0013】
従って、マスキングに基づく対策技術は、マスクの変数mを有する暗号化回路内を流れる極秘データを交互配置することにより実行され、この交互配置は、隠れたチャンネルが攻撃者によって解析されるのを防ぐために用いられる。極秘データ又は変数xは、共に完全に予測可能な複数の変数に対応し、秘密事項と共に非ゼロの相互情報を共有する。この技術は、極秘データxの表現を、これ以降の記述の中で頭字語XORによっても示される、排他的ORタイプの演算を示す演算
【数1】
を用いて鍵mを適用することにより、xのVernam暗号化に対応する量
【数2】
の方に修正することに帰する。
【0014】
マスクは各回路に固有の識別特長によって条件付けられ、その場合、鍵の漏洩は前記マスクにより暗号化される。この固有の特徴は、回路の複製が漏洩をモデル化するために使用され得る、いわゆる「タイプ分け」(“cataloguing”)攻撃を回避する。
【0015】
ランダム・マスキングを含む通常の対策技術は、例えば、DPAタイプの攻撃又は、“Correlation Power Analysis”(「相関電力解析」)を表わすCPAタイプの攻撃のような、一次の攻撃レジスターの予測に対する直接的攻撃に耐える。それらは、例えば回路内のデータ処理経路を倍増することにより実行される。
【0016】
この倍増は、マスキングされない実装と比較して、回路の複雑さの大幅な増加を示唆する。
【0017】
さらに、これらの対策は2以上の次数の攻撃に耐えにくい。一例として、二次攻撃は漏洩の分散量が感応変数xに依存するという事実を利用する。分散量の推定は、
【数3】
もまた使われるときに、2つの場合における情報の漏洩を組み合わせるか、又はマスクとマスキングされたデータが同時に使われるとき、ペア
【数4】
の組み合わされた分布を推定することにより行なわれる。分散量の推定に基づく二次の攻撃は、“zero−offset”(「ゼロ・オフセット」)攻撃と呼ばれ、それはE.Peeters, F.Standaert, N.Donckers and J−J.Quisquarter entitled Improved Higher Order Side−Channel Attacks with FPGA ecperiments,(表題:FPGA実験を伴う改善された高次側チャンネル攻撃)Josyula R.Rao and Berk Sunar editors, Cryptographic Hardware and Embedded Systems(暗号ハードウェアおよび組み込まれたシステム)−Proceedings(会議記録)of CHES, volume 3659 LNCS, pages 309−323, Springer−Verlag, 2005の論文において記載されている。
【発明の概要】
【発明が解決しようとする課題】
【0018】
本発明の一つの目的は、特に上述の欠点を緩和することである。
【課題を解決するための手段】
【0019】
このために、本発明の主題はマスキングにより保護された暗号化回路であり、前記回路は少なくとも1つの鍵k
rcを用いた2進ワードを暗号化する手段、前記ワードに線形処理および非線形処理を適用する手段、前記ワードをマスキングする手段を含む。2進ワードは、マスクk
riを用いることによって非線形処理の上流で脱マスキングされ、そしてマスクk
r+1iを用いることによって前記処理の下流でマスキングされ、マスクk
riおよびk
r+1iは回路の各実例に固有の、一組のマスクの部分を形成する。
【0020】
本発明の1つの態様によれば、非線形処理、非線形処理の上流における脱マスキング、および線形処理の下流におけるマスキングは、ROMタイプのメモリ内に実装される。
【0021】
マスクk
riは例えば、k
r+1i=P(k
ri)およびk
0i=k
iであるような、主要マスクk
iから推定される二次マスクであり、関数P(x)はxの要素を置換するための関数に相当し、ROMメモリは不変のままである。
【0022】
1つの実施形態において、関数P(x)は環状置換であり、添え字r+1の二次マスクは、選ばれたビット数dのマスクk
riを環状に置換することにより、添え字rの二次マスクから推測される。
【0023】
別の実施形態において、主要マスクk
iは長さWであって、長さSの整数の部分マスクからなり、二次マスクk
riは前記部分マスクの置換により生成される。
【0024】
二次マスクの部分マスクは、例えば次の式:
【数5】
を用いて選ばれ、
ここで、
rはラウンド数、
iはランダムに引き出された4ビットの数、
Qは2つの連続する二次マスクk
riとk
r+1iの間の置換割合を制御するための整数、
Sはビットで表わされる部分マスクの長さ、
Wはビットで表わされる主要マスクの長さ、
mod()は、mod(a,b)=a modulo bのような定義された関数であり、aおよびbは整数である。
【0025】
本発明の1つの態様によれば、主要な暗号化マスクk
iは、回路内に記憶された一組の主要マスクから、マスクk
iをランダムに選ぶことにより規則的に変更される。
【0026】
本発明の別の態様によれば、回路内に記憶された主要マスクのグループは、回路ごとに異なる。
【0027】
主要マスクのグループは、構成要素に固有のマスクを生成する回路を用いて得られる。
【0028】
1つの実施形態において、2つのマスクk
riとk
r+1iの間のハミング(Hamming)距離は、実質的にS/2に等しい。
【0029】
マスクk
iのハミング重量は、例えば実質的にW/2に等しい。
【0030】
本発明の1つの態様によれば、非線形処理はSボックスを用いて実行される。
【0031】
非線形処理は、例えばレジスター内における結果のサンプリングの直前に、同一の組み合わせブロックにおいて線形処理の後に適用される。
【0032】
回路は、例えばFPGA内に実装される。
【0033】
主要マスクのグループは、例えばFPGA回路構成ファイルの変更を用いて得られる。
【0034】
回路は、例えば非線形処理に対応する回路の部分を実装する、主要マスクとテーブルのグループを更新できるようにする、動的再構成手段を含む。
【0035】
1つの実施形態において、回路はASIC内に実装される。
【0036】
本発明は、特に非線形処理を取り扱う回路の部分に関して、マスキングによる保護の実行を通じ、回路の複雑さを大きくは増加させないという利点をとりわけ有する。本発明はまた、縮小された大きさの所定のマスクのグループを使うことを可能にする利点を有し、前記グループは、同じ生成の列から得られる複数の回路の間で、保護を固有にするように、回路ごとに異なることができる。
【0037】
本発明のその他の特徴および利点は、制限されない例示として与えられる以下の記述から、および添付図を踏まえて明らかになるであろう。
【発明を実施するための形態】
【0039】
図1は、マスキングにより保護されているFeistel関数の例を示す。
【0040】
当業者に知られているマスキングの原理は、感応変数xの表現を冗長表現へと変更することにある。この表現は少なくとも2つの部分を含み、1つの部分は
【数6】
で示されるマスキングされた極秘データに対応し、もう1つの部分はマスクmに対応する。それらが定義されるバイナリ・ガロア(Galois)域における、これら2つの部分の合計は、次の特性を用いることによって変数xを検索できるようにする。
【数7】
【0041】
一例として、DES又はAESのようなブロック暗号化アルゴリズムにおいて、データのブロックを暗号化するための演算結果は、複数ラウンド(rounds)の反復から導かれる。1つの「ラウンド」(“round”)は、1つが線形でもう1つが非線形であり、置換による変換とも呼ばれる、少なくとも2タイプの変換が実行されている計算サイクルである。
【0042】
線形変換の目的は、以下に示す所定の規則により、その入力において与えられる記号又は記号のグループを混合すること、およびそうして拡散を作り出すことである。
【0043】
置換による変換は通常、Sボックスと呼ばれる置換テーブルを用いて行なわれ、暗号構造の線形性を壊すのを助ける。このタイプの変換を用いることにより、記号又は記号のグループは混乱を作り出すために、別の記号又は記号のグループによって置き換えられる。
【0044】
従って、
【数8】
部分のペアは
【数9】
のペアへと変換され、関数round()はラウンドの関数演算を示し、一方でm’は新たなラウンドのマスクである。
【0045】
各ラウンドの線形部分は単純に2倍にされる。前記部分の関数L()の線形性は、
【数10】
を意味する。
【0046】
この線形性は、それゆえ変換後の新たなマスクとして、マスクm
L=L(m)を用いることを可能にする。
【0047】
他方で、非線形部分すなわちSボックスにおけるマスキングの実行は、実装費用に関して大幅な増大を引き起こす。この変換を考慮に入れ、そしてS(x)を
【数11】
から検索できるようにするマスクm
NLは、
【数12】
となるように決定されなければならない。
【0048】
このために、m
NLは関数S’()を用いて、
【数13】
となるように表わされ得る。
【0049】
関数S’()は従って関数S()の2倍と多い入力を有する。それゆえ、非線形関数S()に対するマスキングの実行は、Sの複雑さの二乗を加えることに帰する。
【0050】
暗号化回路におけるマスキングの実行を例示するため、
図1はマスキングによって保護されたFeistel関数の例を示す。このタイプの関数はとりわけ“Data Encryption Block”(「データ暗号化ブロック」)を表わす、DESタイプのブロック暗号化用に使われる。
【0051】
極秘データxのマスキングの実行は、前に説明したように2つの部分100、101を必要とする。
【0052】
第一の部分100は
【数14】
の部分に対して行なわれる処理に対応し、第二の部分101はmの部分に対して行なわれる処理に対応する。
【0053】
極秘データの暗号化は、その後にS()関数であるSボックスと、線形関数L()の適用とが続く、暗号化されるべきブロックへの鍵kの適用により行なわれる。
【0054】
回路の2つの経路100、101によって処理される複数のデジタル信号は、各経路に対してレジスター102、103を使用することにより同期化される。
【0055】
第一の経路100は、マスキングされた極秘データxを含む部分、すなわち
【数15】
を処理する。暗号鍵kはXORゲート106を用いることにより適用される。その結果生じる信号は、
【数16】
に対応する。Sボックス107は次に、線形関数L108がそれに適用される信号
【数17】
を得ることを可能にする。
【0056】
第二の経路101は、マスクmに対応する部分を処理する。前に説明したように、マスキングされた信号に対する非線形関数S()107の適用は、通常それが第二の部分の処理において考慮されることを意味する。従って、式(4)により定義される関数S’()は、2つのSボックスおよび2つのXORゲート109、112を用いて実行される113。その関数は入力として、第一の経路100において、一方でマスクm105および、他方で暗号鍵kの適用の結果生じる信号
【数18】
をとる。適用S’()から生じる信号116は、第1の経路100の線形関数108を考慮に入れるように、それに線形関数L()114を適用している。関数S’()は、それが観測による攻撃に対して守られるように、ROMタイプのメモリ内に実装され得る。実際に、例えばそのようなメモリにおける電力消費量の変動を観測することは、とりわけ困難である。
【0057】
そのような実装がマスキングによって保護され、関数S’()につながれた活動の観測は、観測することが困難であるにしても、セキュリティ・ループホールは特に二次の攻撃に対して、それを脆弱にする。例えば、攻撃者は2つの注目すべき回路分岐点において、電力消費量を観測するための2つのゾンデを、例えば各経路の2つの入力レジスターの出力118、119に置くことが可能である。分散量の推定に基づく、すなわち“zero−offset”(「ゼロ・オフセット」)タイプの攻撃は、この場合に非常に有効である。
【0058】
図2は本発明がそれに基づくマスキングによって保護される、暗号化回路の一例を示す。前述のような二次の攻撃を、有利なことに不可能にする如何なるマスキング経路も、もはや存在しないことに注意されたい。
【0059】
前に説明したように、暗号化回路のマスキングされない部分がメモリ内に含まれるとき、前記メモリの内部の変数を攻撃することは困難である。言い換えれば、メモリは情報の漏洩に対して保護された、ブラックボックスとして考えられる。入力又は出力だけが攻撃を受けやすい。記述されている回路の目的の1つは、適度の複雑さのカスタマイズされたマスキング方法を用いて、メモリ内における実装を利用することである。
【0060】
さらに、メモリの使用が適切でないとき、計算素子は、非線形部分を出来る限りレジスターの出力から遠くに置くようなやり方で命令され得る。一例として、相関攻撃はそれが回路の組み合わせ論理内において深く行なわれるとき、その分だけ、逆に効果が少ない。
【0061】
図2の例は、“Substitution Permutation Network”(「置換順列ネットワーク」)を表わすSPNのネットワークの使用に基づく回路における、本発明の一実施例を示す。このタイプのネットワークは、Shannon S−Pネットワークとも呼ばれる。この例において、2つのラウンドにおける暗号化が考えられる。k
riおよびk
rcで示される添え字rの2進ワードは、それぞれマスキング鍵および暗号鍵として用いられる。
【0062】
一例として示されている回路は複数の段、すなわち第一ラウンドに相当する段である入力段、第二ラウンドに相当する段、および出力段に分解され得る。暗号化されるべきデータは入力として、例えば4×8ビットの部分語へと細分された32ビットワードの形で、入力段に与えられる。入力のマスキングは、32ビット長を有する鍵k
0iを用いることにより適用され、前記鍵は4×8ビットの部分マスクk
0i[0]、k
0i[1]、k
0i[2]、k
0i[3]へと細分され、前記部分マスクは4つのXORゲート200、201、202、203を用いることにより、4×8ビットの部分語に適用される。
【0063】
第一ラウンドの入力において、レジスター204は入力として、鍵k
0iによるマスキングから生じる4×8ビットの部分語をとる。このレジスターは様々なバイナリフローの同期化を可能にし、1つのフローは1つの入力における8ビットの部分語に対応する。k
0c[0]、k
0c[1]、k
0c[2]、k
0c[3]と称される4×8ビットの部分鍵へと細分された第一の暗号鍵k
0cは、前記レジスター204の出力として与えられる、マスキングされた部分語に対して、4つのXORゲート206、206、207、208の所で適用される。鍵k
0cは第一の暗号化ラウンドと関連する。k
0iによりマスキングされ、k
0cにより暗号化されたデータの4つの部分語は、次に例えばROMタイプのメモリ内に実装される、4つの処理ブロック209、210、211、212によってそれぞれ処理される。ROMメモリ内における関数、とりわけ非線形関数の実装の複雑さは、入力の数と共に指数関数的に増加することに注意されたい。暗号アルゴリズムはこの制約を包含し、実装の複雑さを最小限にするため、暗号化されるべきワードを、非線形関数のレベルにおいて、より小さいサイズの部分語として処理する。
【0064】
各処理ブロックの入力において、8ビットの部分語はXORゲート214を用いて4×8ビットの部分マスクk
0i[0]、k
0i[1]、k
0i[2]、k
0i[3]を適用することにより、脱マスキングされる。次に非線形関数が適用され、Sボックス213はそれを実行するために使われることができる。
【0065】
各処理ブロックの出力の上流では、極秘データが4つの部分マスクk
1i[0]、k
1i[1]、k
1i[2]、k
1i[3]へと細分されたマスクk
1iにより、第一ラウンド段の出力においてマスキングされるように、出力においてデータをマスキングするためにXORゲート215が用いられる。線形変換L
0()が、そのラウンドの出力において適用され、これは処理ブロック内のマスキングに対して考慮される必要がある。このために、マスクk
i1の変更されたマスクL
0−1(k
i1)を用いることにより、マスキングが行なわれる。これは4×8ビットの変更された部分マスクL
0−1(k
i1[0])、L
0−1(k
i1[1])、L
0−1(k
i1[2])、L
0−1(k
i1[3])へと細分され、変換L
0−1()は線形変換L
0()216の逆数に対応する。
【0066】
処理ブロック209、210、211、212の出力において、変換L
0()は前記ブロックからの出力として与えられる2進ワードに適用される。第一の暗号化ラウンドの結果は、線形変換216の出力における2進部分語に対応し、前記部分語はマスクk
1iによりマスキングされた極秘データに対応し、それゆえ観測による攻撃に対して保護される。
【0067】
第二ラウンドの入力は、第一ラウンドの出力であり、第一ラウンドの線形変換216から生じる4×8ビットの部分語に対応する。これら4つの部分語は、様々なバイナリフローの同期化を可能にするレジスター217に対する入力として与えられる。
【0068】
k
1c[0]、k
1c[1]、k
1c[2]、k
1c[3]と称される4×8ビットの部分鍵へと細分された、第二ラウンドに固有の第二暗号鍵k
1cは、レジスター217からの出力として与えられる、マスキングされた部分語に対して、4つのXORゲート218、219、220、221の所で適用される。
【0069】
k
1iによりマスキングされ、k
1cにより暗号化されたデータの4つの部分語は、次に例えばROMタイプのメモリ内に実装される、4つの処理ブロック222、223、224、225によってそれぞれ処理される。各ブロックの入力において、データはXORゲートを用いて鍵k
1iを適用することにより脱マスキングされる。
【0070】
次に非線形関数が適用され、それを実行するため各ブロックにおいてSボックスが使用され得る。各処理ブロックの出力において、極秘データがマスクk
i2により第二ラウンド段の出力の所でマスキングされるように、XORゲートが出力においてデータをマスキングするために使われる。このために、マスキングは変更されたマスクL
1−1(k
i2)を用いて行なわれ、変換L
1−1()は線形変換L
1()226の逆数に対応する。
【0071】
変換L
1()は、処理ブロック209、210、211、212からの出力として与えられる、2進部分語に対して適用される。第二の暗号化ラウンドの結果は、線形変換226の出力における2進部分語に対応し、前記部分語はマスキングされた極秘データに対応し、それゆえ観測による攻撃に対して保護される。
【0072】
このタイプの実装の利点は、ラウンド1に対するk
0cによる暗号化とk
0iによるマスキング、およびラウンド2に対するk
1cによる暗号化とk
1iによるマスキングを逆にできることである。
【0073】
実装の複雑さを軽減し、常に同じROMメモリを使用するために、主要マスクの置換により1つの段から別の段へと使用される、実装マスクを推測することが提案される。例えば、k
iが主要マスクである場合、二次マスクk
0i、k
1i、およびk
2iが次のように主要マスクから推測され得る。
k
0i=k
i
k
1i=P(k
0i)
k
2i=P(k
1i)
関数P(bin)は置換関数、例えば2進ワードbinの環状置換を表わす。さらに、主要マスクk
iは主要マスクの所定のグループからランダムに引き出され得る。主要マスクに基づくマスク置換の一例は、
図3を用いて明細書の中で与えられている。
【0074】
主要マスクのグループの小さいサイズは、有利なことに構成要素に固有の、すなわち回路の各実例に固有のカスタマイズされたマスクの使用を可能にする。この識別特徴の適用は、漏洩が従って回路に対して固有なものとなり、もはや回路のタイプに対してではないため、「タイプ分け」(“cataloguing”)型の攻撃範囲を減らすことを可能にする。もはや固有のマスク経路が存在しないため、例えば“zero−offset”(「ゼロ・オフセット」)タイプの攻撃のような、“high−order differential power analysis”「(高次微分電力解析)」の表現から由来する頭字語である、高次の攻撃HO−DPAに戻される。それゆえ、(マスキングされた変数、マスク)のペアをもはや考慮することは出来ない。
【0075】
図3はマスキングにより保護されたAESアルゴリズムの実装を例示する。
【0076】
AESが“Advanced Encryption Standard”(「先進の暗号化標準」)を表わすAESブロック暗号化アルゴリズムは、とりわけバイナリ・メッセージを秘密に保つ点において強力である。保護されるべきメッセージは固定されたサイズの2進ワードにより処理され、前記ワードは128、192、又は256ビットになり得る。暗号鍵の長さはWであり、Wは処理されるワードの長さに等しい。そのアルゴリズムは3つの処理局面を含み、各局面は1つ以上のラウンドからなる。第一の局面R1は初期化ラウンドに相当し、第二の局面R2は同じ構造を繰り返し使用するNラウンドに相当し、第三の局面R3は最終ラウンドに相当する。AESアルゴリズムに固有のこれら3つの局面の原理は、当業者に知られている。
【0077】
本回路は例えばFPGA又はASIC回路である。
【0078】
本発明に従うマスキングによる保護は、隠れたチャンネルの観測による攻撃に対して3つの局面R1,R2、およびR3を実行する、AES暗号化回路を保護するために導入され得る。
【0079】
乱数発生器300は、nがマスキングのエントロピーを表わす、例えばnビットの2進ワードiを生成するために用いられる。明細書内にこれ以降記載される例において、nは4ビットに対して表わされる。
【0080】
カウンターCTR301は、現在のラウンド数に対応する変数rを増加させる。
【0081】
保護された回路は、暗号化されるべきワードの長さに等しい、又はこの例においては128ビットである長さの一定のマスクのグループを特に記憶できるようにする、メモリ領域303を含む。
【0082】
ランダムに生成される数i300は、主要マスクk
iを記憶されたマスクのグループ303から選択できるようにする。その結果、n=4、16に対して、異なる主要マスクk
iがランダムに選択され得る。
【0083】
さらに、構成要素内に記憶された主要マスクは、差別化された保護を得るため、および「タイプ分けによる攻撃」を避けるため、1つの製品の構成要素は別の製品の構成要素に対して異なり得る。
【0084】
長さWの主要マスクk
iは、長さSの整数の部分マスクで構成され、WはSの倍数である。例えば、長さW=128ビットのマスクk
iは、例えばS=8ビットの16個の部分マスクを含み、前記部分マスクはk
0i[0]、k
0i[1]、...、k
0i[15]と称される。
【0085】
例えば、主要マスクを構成する部分マスクを置換するために、二次マスクが主要マスクから生成され得る。従って、単一の主要マスクから、異なる二次マスクが各ラウンドに対して使用され得る。
【0086】
攻撃に対するロバスト性を増すために、1つの構成要素と別の構成要素とに対して異なる主要マスクk
iのグループが存在し、それは前記構成要素間で差別化されたマスキング保護を実行するためである。変数iはランダムであり、各暗号化の前に生成され得る。
【0087】
一旦主要マスクk
iが選ばれると、添え字r+1の二次マスクは、置換Pを用いて選ばれたビット数dのマスクk
riを環状に置換することにより、添え字rの二次マスクから推測され、添え字0のマスクはk
0i=k
iであるように初期化される。
【0088】
dは例えばd=Sビット、すなわち部分マスクに対応する長さであるように選ばれ得る。
【0089】
整数の部分マスクにより置換された、添え字rのマスクを持つこともまた可能である。従って、マスクk
r+1iが次の式:
【数19】
を用いて生成されることができ、
ここで、
rはラウンド数、
iは発生器300によりランダムに引き出された4ビットの数、
Qは2つの連続する二次マスクk
riとk
r+1iとの間の、置換割合を確認できるようにする整数、
Sはビットで表わされる部分マークの長さ、
Wはビットで表わされるマスクk
iの長さ、
mod()は、mod(a,b)=a modulo bであるように定義された関数で、aおよびbは整数である。
【0090】
主要マスクは、例えば新たなiの値をランダムに引くことにより、暗号化手順の間に変更され得る。
【0091】
有利なことに、例えばk
riとk
r+1iとの間のハミング(Hamming)距離が、実質的にS/2に等しいと保証することにより、二次マスク同士が相互に無関係であるように、主要マスクk
iを選択することによって、観察による攻撃に対する抵抗力は最適化され得る。
【0092】
マスクの平均した釣り合いもまた保護の強化を可能にし、前記釣り合いは、二次マスクの、および従って主要マスクのハミング(Hamming)重量が、実質的にW/2に等しいと保証することによって得られる。
【0093】
図の例において、暗号化されるべきワードは128ビットのワードであり、そしてレジスターのベース302における暗号化装置への入力として表わされている。処理されるべきワードは、次にXORゲート304を用いて、置換されない鍵k
0i=k
iの適用によりマスキングされる。マスキングの結果は、次に第二のXORゲート305を用いて、k
0cと称される長さWの暗号鍵の適用により暗号化される。
【0094】
k
0iによりマスキングされ、k
0cにより暗号化されたワードは、レジスター306内に記憶され、前記レジスターは第二の処理局面R2を行なう回路の部分の入力に対応し、前記局面は反復の暗号化ループに対応し、1回の反復は1つの処理ラウンドに対応する。レジスター306内に記憶されたワードは、128ビットを16×8ビットの部分語に細分する、制御モジュール307により処理される。制御モジュールの別の機能は、ラウンドの開始時にデータを脱マスキングするために用いられるマスクk
iを選択することであり、1つのラウンドは添え字rの各反復に対して適用される。16×8ビットの部分語は非線形関数モジュール308を用いて処理され、前記モジュールは例えばROMタイプのメモリ内に実装される。これらのモジュールはその入力に与えられる部分語の脱マスキング309を行ない、例えばSボックスを用いてそれらに非線形処理310を適用し、そして前記処理の結果にマスキング311を行なう。処理されるべき各8ビット部分語用の非線形関数モジュール308が存在する。その結果、
図3の例に対する16の非線形関数モジュールがある。
【0095】
添え字rのラウンドに対して、これらのモジュールは入力の脱マスキング309用に部分マスクk
ri[0]、k
ri[1]、...、k
ri[15]を使用し、出力のマスキング311用に部分マスクk
r+1i[0]、k
r+1i[1]、...、k
r+1i[15]を用いる。例えば、16個のSボックスは、部分マスクk
ri[]によりマスキングされ、そして部分マスクk
r+1i[]により脱マスキングされるために、前もって計算され得る。
【0096】
非線形処理モジュールの出力における16の部分語は、次にその機能が特に前記ワードを128ビットのワードへと連結することである、第二の制御モジュール312に向けて送られる。
【0097】
128ビットのワードは、次に2つの線形処理モジュールにより処理され、第一のモジュールは通常「行シフト」(“shift rows”)の表現により記述される、行の混合313を実行し、第二の処理は通常「列シフト」の表現により記述される、列の混合314を実行する。これら2つの線形処理は関数L
r()によってモデル化され得る。
【0098】
鍵k
rcを用いる暗号化は、XOR関数315を用いて前記線形処理から生じる128ビットのワードに適用される。
【0099】
128ビットのマスクk
intiの適用316は、同じSボックスを1つのラウンドから別のラウンドにかけて使うことができるように、k
rcによる暗号化から生じるワードに対して行なわれる。マスクk
intiの記憶303は次の式:
【数20】
を用いることにより、事前に計算した後に行なわれる。
【0100】
従って事前に計算された128ビットのワードk
intiが、メモリ16内に存在する。
【0101】
局面R2の処理はN回繰り返して実行される。第二の局面R2のNラウンドが実行されたとき、最終局面R3は、線形の行混合処理313と線形の列混合処理314との間で抽出される、128ビットのワードに対して実行される。
【0102】
抽出されたワードに対してXOR関数317により適用される鍵k
fincを用いた最後の暗号化の後で、最後の脱マスキングが、XOR関数318を用いて128ビットのマスクk
finiを適用することにより行なわれる。
【0103】
16個で128ビットのマスクk
finiは、次の式:
【数21】
を用いることにより事前に計算された後で、保護回路内への記憶303が行なわれる。ここで、関数L’
r−1()は行混合処理313の逆数を表わす。
【0104】
最終行の最後、すなわち処理局面R3の最後に得られるワードは、AES暗号化の最終結果に対応する。得られた暗号化メッセージは、出力レジスター319内へ書き込まれる。
【0105】
図4は、その中に非線形処理がラウンドの最後に位置する、マスキングにより保護された暗号化回路の一例を示す。
【0106】
非線形処理に対応する回路の部分が、メモリ内ではなく論理ゲート内に実装されるとき、前記処理の上流での脱マスキング関数および下流でのマスキング関数は攻撃の対象になり得る。
【0107】
これらの攻撃に対して回路を保護するために、1つの解決策は1つのラウンドの非線形処理をロジック・コーンの最後、すなわち登録された結果のサンプリングの直前に置くことである。そのとき、計算はそれらの時間分散により広げられ、攻撃の有効性は限定される。
【0108】
図4の例は、この原理を実行する、マスキングにより保護された暗号化回路の一例を示す。
【0109】
この例示的回路は
図2によって与えられているものと類似している。暗号化はFeistel構造を用いて行なわれ、そして1つの入力段、ラウンド1およびラウンド2と呼ばれる2つのラウンド段、次に1つの出力段の実行のおかげで行なわれる。
【0110】
図2で一例として与えられた回路とは異なり、例えばSボックスを用いて実行された非線形処理は、ロジック・コーンの最後に置かれる。線形処理は従って1つのラウンドの最初に置かれる。それゆえ、第一ラウンドに対応する段において、最初の拡散関数L
1()に対応する線形処理の適用401が行なわれる。第二ラウンドに対応するステージにおいて、拡散関数L
0()に対応する線形処理の適用402が行なわれる。
【0111】
最初の拡散関数の逆数L
1−1()の適用400が入力段の出力において行われ、最後の拡散関数L
1()の適用403が出力段の入力において行われる。
【0112】
1つのラウンドの開始時の電力消費量をモデル化することは困難であるのに対して、それはラウンドの最後における環境条件により大きく依存させられる。