説明

サイドチャネル攻撃に対抗する方法

【課題】
本発明は、サイドチャネル攻撃に対抗する方法に関する。当該方法は、中間変数をマスクするためのブロック暗号アルゴリズムを実行することから成り、このブロック暗号アルゴリズムは、1つ以上の非線形関数を有する。
【解決手段】
この課題は、前記1つ以上の非線形関数のうちの少なくとも1つの非線形関数が、マッチ・イン・プレース関数を使用して実行されることによって解決される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロック暗号に対するサイドチャネル攻撃に対抗する方法及び限定的でないものの、特にマッチ・イン・プレース(登録商標)関数を使用する対抗の方法に関する。
【背景技術】
【0002】
最も広く使用されるアルゴリズム「新暗号規格(AES)」のような、今日使用される多くの存在する暗号アルゴリズムは、差分電力解析(DPA)に対して脆弱である。この差分電力解析は、サイドチャネル攻撃である。このサイドチャネル攻撃は、暗号化用の暗号化アルゴリズムで使用される秘密鍵をリカバーするために最初に暗号化アルゴリズムを実行するときのマイクロプロセッサの電力消費を測定し、次いで統計解析を実行する。秘密鍵が特定されると、暗号化された情報を復号することが可能である。
【0003】
マイクロプロセッサの電磁放射が、暗号化用の暗号化アルゴリズムで使用される秘密鍵を特定するために測定されて利用されてもよい。
【0004】
差分電力解析に対して秘密鍵アルゴリズムを保護するための通常技術は、全ての中間変数をランダムマスクでマスクすることから成る。このとき、当該マスクされたデータ及びランダムデータが、別々に処理され、結局は当該秘密鍵アルゴリズムの最後で再結合される。単一地点でマイクロプロセッサの電力消費を解析することを試みる攻撃者が、ランダム値(ランダムデータ値及びランダムマスク値)を取得する。したがって、このようなマスキングは、1次差分電力解析に対して安全である。
【0005】
マスキング対抗手段は、付与された攻撃されやすい変数を保護するために使用されるランダムマスクの数を特徴とする。d個のランダムマスクを有するランダム処理は、d次マスキングと呼ばれる。d次マスキングは、(d+1)次のサイドチャネル解析、つまりd+1個の変数の処理を同時に要求する攻撃によってだけ破壊され得る。当該対抗手段を破壊するために要求される実行数は、次数dと共に指数関数的に増大する。したがって、この次数dは、良好な安全規準である。しかしながら、実際には、最も効率のいい対抗手段は、次数d=1だけである。
【0006】
マスクされたデータを復号するための2次差分電力解析攻撃が可能であることが分かっている。したがって、完全に安全なデータ暗号化を得るためには、より良好な対抗手段が要求される。
【0007】
対抗手段が、さらに発展されている。サイドチャネル攻撃に対する最近の対抗手段のうちの1つの対抗手段は、次数d=2による対抗手段である。
【0008】
あらゆるマスキング対抗手段にとって、その主な困難性は、アルゴリズムの非線形部分を保護することである。新暗号規格(AES)にとって、当該アルゴリズムの非線形部分は、本質的にSBOX関数である。使用される技術は、サブルーチンとして実行される比較アルゴリズムを使用して全体のSBOX関数をSBOXのルックアップごとに繰り返すことにある。この比較アルゴリズムは、SBOX入力ごとに呼び出される。当該対抗手段が、あらゆる2次サイドチャネル攻撃に耐え得ることを示すことが可能である。
【0009】
しかしながら、このようなマスキング対抗手段は、効率が著しく良くない。何故なら、このマスキング手段は、実行中に多数の演算を要求し、実行中にマイクロプロセッサの多くのメモリをも使用するからである。
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明の課題は、上述した欠点のうちの少なくとも幾つかの欠点を解消又は緩和することにある。
【課題を解決するための手段】
【0011】
この課題は、本発明により、サイドチャネル攻撃に対する対抗手段の方法によって解決される。この方法は、中間変数をマスクするためのブロック暗号アルゴリズムを実行することから成る。この場合、1つ以上の非線形関数を有する当該ブロック暗号アルゴリズムは、当該非線形関数のうちの少なくとも1つの非線形関数が、マッチ・イン・プレース関数を使用して実行される。
【0012】
本発明の方法は、この方法の効率を向上させるためにマッチ・イン・プレース関数を使用する。マッチ・イン・プレース関数を使用すると、サイドチャネル攻撃に対して有効な対抗手段を提供するために要求される演算回数が削減される。さらに、本発明の方法を実施するために要求されるメモリが、既知の方法に比べて少ない。
【0013】
当該マッチ・イン・プレース関数は、ビットをランダム化したマッチ・イン・プレース関数でもよい(MIP(data; adr,b))。
【0014】
当該ビットをランダム化したマッチ・イン・プレース関数は:
【数1】

として定義されてもよい。
この場合、adrは、メモリ内の1つのアドレスである。dataは、メモリ内の1つのアドレスに記憶される1つの変数である。bは、このdataの変数がメモリ内のこのアドレスに存在する実際のデータに等しいときに戻される1つの値である。このdataの変数がメモリ内のこのアドレスに存在する実際のデータに等しくないときは、bの補数が戻される。bは、1ビットの値でもよい。
【0015】
以下の関係が、存在してもよい:
【数2】

この場合、
【数3】

は、bの補数である。
【0016】
非線形関数のうちの少なくとも1つの関数は:
【数4】

によって定義されるcompareb関数でもよい。
この場合、xは、compareb関数の第1入力変数である。yは、compareb関数の第2入力変数である。bは、xがyに等しいときに戻される1つの値である。その結果:
変数xをメモリ内の1つのアドレスadrに書き込み、
【数5】

によって定義されたビットをランダム化したマッチ・イン・プレース関数を実行し、そしてMIP(y; adr,b)を戻すことによって、compareb関数が実行され得る。
【0017】
当該非線形関数は、SubByte演算部内に含まれてもよい。この非線形関数は、AES暗号アルゴリズムのSubByte演算部内に含まれてもよい。
【0018】
さらに、本発明のブロック暗号アルゴリズムは、1つ以上の線形関数を有してもよい。当該1つ以上の線形関数のうちの少なくとも1つの線形関数が、この線形関数のXORをとる変数によってマスクされてもよい。
【0019】
当該ブロック暗号アルゴリズムは、新暗号規格(AES)のアルゴリズムでもよい。
【0020】
本発明のさらなる側面によれば、上述した方法のうちの任意の1つの方法による方法を実行するために構成されているコンピュータプログラムから成るコンピュータ読み取り可能媒体が提供される。
【0021】
本発明のさらなる側面によれば:
【数6】

のステップから成る、2次マスクされた入力から2次マスクされたSボックス関数を計算する方法が提供される。
この場合、bは、1つのレジスタを指し示す1つのランダムビットを示す1つの変数である。aは、ステップ(a)−(c)が実行されなければならない回数を定義する1つのインデックスを示す1つの変数である。r,rは、一対の入力マスクである。
【数7】

は、マスクされた1つの値である。
この場合、
【数8】

である。
,sは、一対の出力マスクである。adrは、自由なメモリアドレスである。cmpは、1つのレジスタを指し示す1つのビット変数であり且つ関数MIP(r; adr; b)の1つの出力である。Rcmpは、マイクロプロセッサの1つのレジスタの1つのレジスタアドレスである。一般に、このマイクロプロセッサ内の少なくとも2つのレジスタR及びRが使用される(つまり、cmpは、0又は1であり得る。cmp=0のときに、第1レジスタRが指し示される/アドレス付けされる。cmp=1のときに、第2レジスタRが指し示される/アドレス付けされる。)。Rは、マイクロプロセッサの1つのレジスタの1つのレジスタアドレスである。一般に、このマイクロプロセッサ内の少なくとも2つのレジスタR及びRが使用される(つまり、bは、0又は1であり得る。b=0のときに、レジスタRが指し示される/アドレス付けされる。b=1のときに、レジスタRが指し示される/アドレス付けされる。)。MIP(r; adr; b)は:
【数9】

として定義されるビットをランダム化したマッチ・イン・プレース関数である。
【0022】
本発明のさらなる側面によれば、2次マスクされたSボックス関数を計算する上述した方法を実行するために構成されているコンピュータプログラムから成るコンピュータ読み取り可能媒体が提供される。
【0023】
本発明は、例示され且つ図面によって示された1つの実施の形態の説明によってより良好に理解される。
【図面の簡単な説明】
【0024】
【図1】AES暗号用の疑似コードを示す。
【図2】AES暗号用の疑似コードを示す。
【図3】メモリ転送(プリプロセッサフェーズ)の数、XORの数、メモリ転送(メインフェーズ)の数、及びcompareb関数を最初に実行するために要求されるメモリとcompareb関数を実行するために要求されるメモリとの数から成る本発明のテーブルを示す。
【図4】XORの数、メモリ転送の数、及びcompareb関数を実行するための本発明の方法を使用する完全な第2Rivain-Dottax-Prouff(RDP2)アルゴリズムに対して要求されるメモリから成るテーブルを示す。
【発明を実施するための形態】
【0025】
AES暗号アルゴリズムにおける本発明の方法の用途を詳しく説明する。しかしながら、本発明の方法は、AES暗号アルゴリズムで使用することに限定されないことが理解される。本発明の方法は、ブロック暗号アルゴリズムで使用され得る。
【0026】
AES暗号アルゴリズムは、「ステート」と呼ばれるバイトsi,jの4x4アレイで動作する。暗号化のため、(最後のサブパート以外の)AES暗号アルゴリズムの各サブパートが、以下の4つのステージから成る:
1.AddRoundKey:ステートの各バイトが、鍵スケジュール:
【数10】

から導かれるラウンド鍵ki,jでXORをとられる。
2.SubBytes:ステートの各バイトが、8ビットのSボックス関数:
【数11】

を使用して更新される。
Sボックス関数は:
【数12】

として定義される。
この場合、Affは、GF(2)上のアフィン関数であり、
【数13】

は、(0→0による)GF(2)上の逆関数である。
3.ShiftRows:ステートのバイトが、特定のオフセットによって行ごとに周期的にシフトされる。最初の行が変更されないままである。
4.MixColumns:ステートのバイトが、以下のコラム:
【数14】

による変更されるコラムである。
【0027】
128ビットキーによるAES暗号用の疑似コードが、図1中に示されている。ワードアレイ「W」が、鍵スケジュールアルゴリズムによって生成されるラウンド鍵(ki,j)を有する。
【0028】
暗号化のため、(最後の鍵以外の)いずれのラウンド鍵が、以下の演算から成る:
1.InvShiftRowsは、ShiftRows演算(暗号化のステージ3)の逆である。ステートのバイト(段落[0026]中で定義されているような、AES暗号で使用される一組の中間変数)が、特定のオフセットによって行ごとに周期的にシフトされる。当該バイトの最初の行が変更されないままである。
2.InvSubBytesは、SubBytes演算(暗号化のステージ2)の逆である。Sボックスの逆関数(S−1):
【数15】

が、このステートの各バイトに適用される。
3.AddRoundKey:この演算は、この演算自体の逆に等しい。
4.InvMixColumnsは、MixColumns演算(暗号化のステージ4)の逆である。このステートのバイトが、以下のコラム:
【数16】

による変更されたコラムである。
逆暗号用の疑似コードが、図2中に示されている。
【0029】
最後に、ラウンド鍵スケジュール(ki,j)が、以下の演算に基づく:
1.SubWordが、1つの4バイト入力ワードをとり、Sボックス(S(x))を4バイトの各々に対して適応させる。
2.RotWordは、入力として1ワード[a;a;a;a]をとり、[a;a;a;a]を戻すための周期的な置換を実行する。
3.Xor with Rconは、入力として32ビットの1ワード及びxorをとり、このxorは、ラウンド定数ワードアレイRcon[i]=[(02)i−1;00;00;00]、ラウンド1≦i≦10を伴う。我々は、鍵スケジュールの全ての記術に対して[5]を引用する。
【0030】
冒頭で説明したように、マスキング対抗手段の原理は、あらゆる中間変数を1つ以上のランダムマスクでマスクすることである。次数d=2によるマスキング対抗手段の場合、2つのマスクが使用される。これらのマスクは、全体で3つのシェアを与える。さらに詳しく言うと、(AESでは1バイトとして示される)任意の状態変数pが、3つのシェア(p;p;p)に分割される:
【数17】

この場合、シェアp及びpは、マスクと呼ばれる。
【0031】
先の関係が、暗号化アルゴリズムの実行にわたって保持されるように、3つのシェアp、p及びpが処理されなければならない。留意すべきは、
【数18】

のように、ラウンド鍵のあらゆるバイトkが、同様に3つのシェア(k;k;k)に分割されなければならない点である。
【0032】
ブロック暗号の線形部分は処理しやすい。以下の方程式(1)が成立する場合、関数fが線形であると言える:
【数19】

【0033】
このとき、このような線形関数に対して:
【数20】

のような、3つのシェア(p;p;p)が入力として与えられた場合、f(p)、f(p)及びf(p)を別々に計算し、方程式(1)を立てて:
【数21】

を得ることで十分である。
したがって、3つの出力シェアf(p)、f(p)及びf(p)が、出力f(p)の有効な分割である。AES暗号に対しては、AddRoundKey、ShiftRows及びMixColumnsの演算が、線形関数であり、したがって当該方法で処理され得る。しかしながら、(AESの場合のSボックス関数のような)SubByte演算は、非線形であり、異なって処理されなければならない。
【0034】
AESの場合のSボックス関数のような非線形演算を処理するため、アルゴリズムが、以下のように定義され得る:
【数22】

留意すべきは、AESに対してはn=m=8である点である。このアルゴリズムは、好ましくは以下のように定義されたマスクされた関数comparebを有する:
【数23】

この場合、x及びyは、compareb関数の入力変数である。
【0035】
2次のマスクされた入力から2次のマスクされたSボックス関数を計算することは、以下のように実行されてもよい:
入力: マスクされた1つの値は、
【数24】

である。この場合、r;rは、一対の入力マスクである。
【数25】

は、一対の出力マスクである。
出力: 当該マスクされたSボックス関数が、
【数26】

を出力する。
【数27】

【0036】
この場合、
【数28】

は、compareb関数の入力変数である。
【数29】

の場合、
【数30】

である。このcmpは、
【数31】

を要求されたものとして与える。
【0037】
この特別な実施の形態では、当該compareb関数を実行するときは中止しなければならない。すなわち、compareb(x;y)関数は、好ましくは
【数32】

を直接計算することによって実行されてはならない。何故なら、上記アルゴリズムでは、当該計算は、
【数33】

を計算することに等しいからである。
【数34】

と組み合わせられた
【数35】

は、2次を漏洩させる。
【0038】
【数36】

に関する任意の1次サイドチャネル漏洩を阻止するためのcompareb関数を実行する方法を説明する。
【0039】
compareb関数を再度示すと:
【数37】

として定義される。
【0040】
当該compareb関数を実行する方法は、ランダムアクセスメモリ内の2個のビットのテーブルTを要求する。このテーブルTは、以下のように予備処理される:
【数38】

この予備処理が、予備処理ステップを完了させる。
【0041】
この予備処理の最後に、テーブルTが:
【数39】

を満たす。
このとき、compareb関数は:
【数40】

のように実行される。
この場合、計算中の全ての中間変数が、
【数41】

から独立している。このことは、
【数42】

に関する任意の1次サイドチャネル漏洩を阻止する。
【0042】
compareb関数の上述した実行は、従来の技術において知られている。不都合にも、このcompareb関数の上述した実行は、非効率である。このcompareb関数のアルゴリズムは、ランダムアクセスメモリの2個のビットを要求する。しかしながら、実際には、ランダムアクセスメモリの2個のバイトを使用することが、より便利である。何故なら、さもなければ、ビットアクセス技術が使用される必要があり、このビットアクセス技術は、安全に実行するためには煩わしいからである。予備処理が、2+1個のメモリ転送を要求する。このような予備処理は、RDP2アルゴリズムに対する全ての呼び出し前に実行されなければならない。このとき、compareb関数に対する全ての呼び出しが、2つのXOR演算及び1つのメモリ転送を要求する。したがって、n=8によるAESに対しては、このcompareb関数が、予備処理中にランダムアクセスメモリの256バイト及び257回のメモリ転送を要求する。全体では、このときに、RDP2アルゴリズムは、6・2個のXOR演算と、3・2+1個のメモリ転送と、n+1個のランダムビットの生成とを要求する。
【0043】
本発明による方法は、compareb関数の異なる実行に基づき、特にマッチ・イン・プレース関数を使用する実行に基づく。
【0044】
あらゆるプロセッサが、メモリ内の或るアドレスadrの或るデータを読み書きする通常の命令data←read(adr)及びwrite(data; adr)を有する。マッチ・イン・プレース技術では、プロセッサが、以下のように作用する追加の関数MIP(data; adr)を有する:
【数43】

【0045】
換言すれば、データが、当該メモリ位置adrで適合され、このアドレスadrの値が、このメモリ位置から決して離れない。
【0046】
本発明では、以下のように定義された、MIP関数のビットをランダム化したバージョンである追加の関数MIPが提供される:
【数44】

【0047】
好ましくは、以下の関係が存在する:
【数45】

【0048】
当該MIP関数を使用すると、compareb関数が、以下のように簡単に実行され得る。この場合、adrは、メモリ内の自由な1つのアドレスである。
【数46】

xが、メモリ内のアドレスadrに書き込まれると、compareb関数によって要求されるように、MIP(y; adr; b)関数が、x=yのときにbを戻し、x≠yのときに
【数47】

を戻す。
【0049】
当該MIP関数を使用すると、2次のマスクされた入力から2次のマスクされたSボックス関数を計算することが以下のようになる:
入力: マスクされた値
【数48】

、一対の出力マスクs
【数49】

、自由な1つのメモリアドレスadr。
出力: マスクされたSボックス関数の出力
【数50】

【数51】

【0050】
MIP関数に基づく当該MIP関数の実行が、当初のcompareb関数と同じ特性を満たす。すなわち、全ての中間変数が、
【数52】

に依存しない。
【0051】
留意すべきは、ランダム化された関数MIP(y; adr; b)が好ましい点である。この代わりに、関数MIP(y; adr)が、(最初にMIP(y; adr)を計算し、次いで)
【数53】

を戻すことによって)使用される場合は、当該実行は不安定である。何故なら、中間変数MIP(y; adr)が、
【数54】

から独立していないからである。
【0052】
図3は、compareb関数の当初の実行の効率と本発明による(つまり、MIP関数を使用する)compareb関数の実行の効率とを比較するテーブルを示す。本発明によるcompareb関数を実行するためには、より少ない演算及びより少ないランダムアクセスメモリで済むことが明らかである。
【0053】
図4は、実行される当初のマスキングアルゴリズムの効率と本発明にしたがって実行される(つまり、MIP関数を使用する)マスキングアルゴリズムの効率とを比較するテーブルを示す。n=8によるAESに対しては、本発明は、(2の代わりに)ランダムアクセスメモリの1バイト、(1536の代わりに)1024回のXOR及び(769の代わりに)512回のメモリ転送を要求する。XOR及びメモリ転送が、同じコストを有する場合、本発明のバリエーションは、当初の実行より33%速い。したがって、同じ水準の安全性に対しては、本発明は、より少ないランダムアクセスメモリで済むより速い対抗手段を提供する。
【0054】
特許請求の範囲で規定されたような本発明の範囲から離れることなしに、本発明の説明された実施の形態に対する様々な変更及びバリエーションが、当業者にとって明白である。本発明は、特定の好適な実施の形態に関連して説明されているものの、請求項に規定された本発明は、このような特定の実施の形態に不当に限定されるべきではないことが分かる。

【特許請求の範囲】
【請求項1】
サイドチャネル攻撃に対抗する方法であって、当該方法は、中間変数をマスクするためのブロック暗号アルゴリズムを実行することから成り、このブロック暗号アルゴリズムは、1つ以上の非線形関数を有する当該方法において、
前記1つ以上の非線形関数のうちの少なくとも1つの非線形関数が、マッチ・イン・プレース関数を使用して実行される、ことを特徴とする方法。
【請求項2】
前記マッチ・イン・プレース関数は、ビットをランダム化したマッチ・イン・プレース関数(MIP(data; adr,b))である、ことを特徴とする請求項1に記載の方法。
【請求項3】
前記ビットをランダム化したマッチ・イン・プレース関数は:
【数1】

として定義され、
adrは、1つのメモリ内の1つのアドレスであり、dataは、1つのメモリ内の1つのアドレスに記憶され得る1つの変数であり、bは、1つの値であり、この値は、前記dataがメモリ内の前記アドレスadrに存在する実際のデータに等しいときは戻され、前記dataがメモリ内の前記アドレスadrに存在する実際のデータに等しくないときは、bの補数が戻される、ことを特徴とする請求項2に記載の方法。
【請求項4】
【数2】

【数3】

は、bの補数である、ことを特徴とする請求項3に記載の方法。
【請求項5】
前記少なくとも1つの非線形関数は:
【数4】

によって定義されたcompareb関数から成り、
xは、前記compareb関数の第1入力変数であり、yは、前記compareb関数の第2入力変数であり、bは、xがyに等しいときに戻される1つの値であり、
【数5】

は、xがyに等しくないときに戻される1つの値である結果、
メモリ内の1つのアドレスadrに前記変数xを書き込むことによって、
【数6】

として定義されたビットをランダム化したマッチ・イン・プレース関数を実行することによって、そしてMIP(y; adr,b)を戻すことによって、前記compareb関数が実行され得る、請求項2に記載の方法。
【請求項6】
前記非線形関数は、SubByte演算中に構成される、請求項1に記載の方法。
【請求項7】
前記ブロック暗号アルゴリズムは、1つ以上の線形関数をさらに有し、前記1つ以上の線形関数のうちの少なくとも1つの線形関数が、当該関数の変数のXORをとることによって暗号化される、請求項1に記載の方法。
【請求項8】
前記ブロック暗号アルゴリズムは、新暗号規格(AES)のアルゴリズムである、請求項1に記載の方法。
【請求項9】
コンピュータプログラムから成るコンピュータ読み取り可能媒体において、
前記コンピュータプログラムは、請求項1に記載の方法を実行するために構成されている、当該コンピュータ読み取り可能媒体。
【請求項10】
【数7】

のステップから成る、2次のマスクされた入力から2次のマスクされたSボックス関数を計算する方法において、
bは、1つのレジスタを指し示す1つのランダムビットを示す1つの変数であり、aは、ステップ(a)−(c)が実行されなければならない回数を規定する1つのインデックスを示す1つの変数であり、r,rは、一対の入力マスクであり、
【数8】

は、マスクされた1つの値であり、
【数9】

であり、s,sは、一対の出力マスクであり、adrは、自由な1つのメモリアドレスであり、cmpは、1つのレジスタを示し且つ関数MIP(r; adr; b)の1つの出力である1つのビット変数であり、Rcmp及びRはそれぞれ、1つのマイクロプロセッサの1つのレジスタのレジスタアドレスであり、
前記MIP(r; adr; b)は:
【数10】

として定義されたビットをランダム化したマッチ・イン・プレース関数である、当該方法。
【請求項11】
コンピュータプログラムから成るコンピュータ読み取り可能媒体において、
前記コンピュータプログラムは、請求項10に記載の方法を実行するために構成されている、当該コンピュータ読み取り可能媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2013−29835(P2013−29835A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2012−164539(P2012−164539)
【出願日】平成24年7月25日(2012.7.25)
【出願人】(509096201)クロッカス・テクノロジー・ソシエテ・アノニム (33)
【Fターム(参考)】