本節では,AES候補に対する電力解析の解析原理, 各AES候補に対する適用例について解説する[BS99,CJ+99a,DR99]. 対処方法についてはIII.3.3.5.3.2節を参照されたい.
単純電力解析について,Kocherが提案した攻撃法では攻撃者は全ての入力値ま たは出力値を必要とする.しかし現実のアプリケーションを考慮した場合,攻 撃者が全ての入力値または出力値を知ることはほぼ不可能であるので,この攻 撃法は現実的ではない.しかし,入力値または出力値に関する情報を得る必要 がない攻撃法[BS99] も提案されている.以下にその具体的な攻撃法を示 す.なお,解析の対象となるプロトコルについて,プロトコル内のサブプロト コルは同一の順序で実行され,プロトコルの実行に要するクロックサイクルが 常に一定であると仮定する.
攻撃者の第一目標は,得られた電力消費グラフの中で鍵スケジュール部に関係 する部分を特定することであり,その攻撃は二つのステップに分けられる.
鍵スケジュール部に関係するサイクルを特定する際に問題となるのは,鍵スケ ジュール部に関係するサイクル候補として,莫大なサイクル数の中から上述の 攻撃が可能な程度のサイクル数にどうやって絞り込むかということである.し かし,例えばDESでは,16のラウンドがほぼ認識可能なので,これはそれほど 重大な問題ではないと思われる.
攻撃者の第二(最終)目標は,上述の攻撃により特定したサイクルから秘密鍵を 取り出すことである.スマートカードは,その性能上,全てのサブ鍵をRAMに 保持しておくことは困難であるので,暗号化処理において各サブ鍵は用いられ る直前にそれぞれRAMへ書き込まれる.書き込み処理時における電力消費量は, "1"を書き込んだ回数に関係するので,サブ鍵の書き込み処理時の電力消費 量からサブ鍵に含まれる"1"の個数が判明する.つまり,サブ鍵の書き込み 処理時の電力消費量を観測することにより,サブ鍵のハミング重みが計測され る.8ビットのハミング重み計測一回当たり平均2.54ビットの情報が取り出さ れる.このハミング重み計測には,多くの誤りが含まれている可能性があるが, 単一のスマートカード(同一の秘密鍵)での消費電力観測を多くの回数行い,平 均化することで誤りを減少させることができる.
秘密鍵の取り出しについて,話を具体的にするためDESの場合を取り上げる.
DESは56ビットの秘密鍵,16のラウンドを持ち,ラウンド
において,48ビットの秘密鍵
は6ビットのサブ鍵
に分割される.(各ラウンドにおいて生成されるサブ鍵の数は8である.)一度
にスマートカード内のRAMへ書き込む単位を8ビットと仮定すると,RAMに保持
される8ビットのハミング重み計測を各ラウンドにつき6回行うことができる.
つまり,攻撃者は16ラウンドにわたるサブ鍵のハミング重み計測により,秘密
鍵の各ビットを変数とする(56変数の) 96個の線形方程式を得ることができる.
得られた方程式を解くことにより56の変数の値,つまり秘密鍵が判明する.こ
の攻撃法の問題点として,得られた方程式の解が不定になる可能性が存在する
ことと,ハミング重み計測誤りを効率良く検出することが挙げられるが,前者
について,DESの構造上,得られた方程式の解は唯一解であり,後者について,
例えば以下の二つの方法が考えられる.
電力差分解析は,算術演算や論理演算等の処理において,スマートカードの消
費電力パターンと入力ビットに何らかの相関があることを利用した電力解析攻
撃である.簡単化のため,入力
ビット
の中で
が処理
における消費電力
と相関を持つとする.
の値によ
り処理
における消費電力は次式で表される.
![\begin{eqnarray*}
P_I(0) &=& E_{op_2,\ldots,op_n}[P(I,0,op_2,\ldots,op_n)] \\
P_I(1) &=& E_{op_2,\ldots,op_n}[P(I,1,op_2,\ldots,op_n)]
\end{eqnarray*}](img257.gif)
ここで,
は
以外の入力
を全
通り入力したときの平均である.処理
における消費電力
と
が相
関を持つとは,言い換えると,
である.以下,
とする.
が雑音に比べて十分大きい場合,電力差分解析
は非常に強力な攻撃となる.
基本的に電力差分解析は以下の三つのステップに分けられる.
予想値
が正しい場合,
となり,
逆に誤っている場合,
は0に近づく.
多くのスマートカードではCMOSが使われており,その特性として,チップ上で 何らかの変化が生じた場合だけ電力が消費され,状態を維持するための消費電 力は少ない.
スマートカードにおいて,以下に示す処理が特徴的な電力消費パターンを示す.
また,一般にスマートカードは,内部あるいは外部のクロックにより駆動され, 通常は全ての動作が次のクロックが立ち上がる前に終了する.なお,チップ上 のノイズ生成器等はクロックに関係なく連続的にランダムにかつ小さく電力消 費を行う.
クロックは,電力を消費する一連のイベントをチップ内部のマイクロ命令に従っ て駆動する.1つのクロックサイクルの間の一連のイベントを決定するのはチッ プ内部の状態であり,これを関連状態(relevant state)と呼ぶこととする.
クロックのエッジからのチップ全体の瞬間電力消費は,各々のイベントの瞬間 電力消費の組み合わせで得られる.しかし各イベントの消費電力はカップリン グ効果ばかりでなく,基盤やレイアウト,気温や電圧等にも依存するため,複 雑である.また電力ばかりでなく,そのタイミングも複雑である.簡単化のた め,ここではとりあえず電力消費の総和が各イベントの電力消費の総和である と仮定する.
何らかの固定コードの実行パスの中のある命令のあるサイクルを考える.
を制御がこのサイクルに到達する際の関連状態(relevant state)の集合,
を
このサイクルの中で起こりうる全てのイベント空間とする.各
及び
について,
を状態
においてイベント
が起きたと
き
,そうでないとき
となる2値関数とする.
を状態
にお
いてクロックのエッジからイベント
が起きるまでの遅延とし,さらに
をイベント
が起きたときの電力消費インパルスの時間
に関する
関数とする
(このときイベントが起きる時間が
であり,また
に対し
である).
このときこのチップのこのサイクルの状態
,クロッ
クのエッジからの時間
における電力消費関数
は以下のように表せ
る.
数式(III.6)はこのサイクルにおいて電力消費関数と状態
が強い関係
にあることを示している.電力差分解析ではこの電力消費の非対称性を利用す
る.特に安価なスマートカードでは状態空間が小さく,この非対称性は顕著と
なるため攻撃に弱くなる.
|
対処法の実装 | |||||||||
| Mars | ○ | △ | × | |||||||
| RC6 | ○ | △ | × | |||||||
| Rijndael | △ | × | ○ | |||||||
| Serpent | ○ | × | ○ | |||||||
| Twofish | ◎ | × | △ | |||||||
| 記号の意味 |
|
|
||||||||
各暗号方式で行われている基本的な処理のうち,ビット毎の論理演算,加算, 減算,及び乗算処理は,消費電力が計測されやすく,また単純電力解析に対す る対策を講じることが困難である(特に乗算は非常に困難である).従ってこれ らの処理を用いないことが望ましい.
以下に,各暗号方式で行われている処理とともに,それぞれの単純電力解析, 電力差分解析との関係を列挙する.
行われている処理
テーブル検索(table-lookup),シフト演算,ビット毎の論理演算,加算,減算,乗算
vs. SPA
Marsでは,ハミング重み計測により,鍵スケジュール部に関係するサイクルに
おいてRAMに書き込まれる8ビットの内,平均2.54ビットの情報が取り出される
が,RAMに書き込まれる各ビットがスマートカード内の秘密鍵と直接的に対応
していないため,スマートカード内の秘密鍵を求めることは困難である.また,
ハミング重み計測に誤りが生じた場合,得られた情報をスマートカード内の秘
密鍵の特定に用いることはさらに困難である.
vs. DPA
Marsにおけるホワイトニング鍵はTwofishと同じ方法で得ることができる.し
かし鍵スケジュール部が複雑であるために,全てのサブ鍵を得るために攻撃さ
れるべき中心ラウンド数は膨大な数になる.各々の次の展開ボックスに対し,
排他的論理和の鍵が電力差分解析で攻撃可能であり,かつ乗算鍵がbit-by-bit
電力差分解析で攻撃可能でなければならない.
行われている処理
シフト演算,ビット毎の論理演算,加算,減算,
上における
二乗演算
vs. SPA
RC6では,Marsと同様の理由によりスマートカード内の秘密鍵を求めることは
困難である.
vs. DPA
加算入力および出力ホワイトニング鍵はbit-by-bit電力差分解析で取り出すこ
とが可能である.また,加算ラウンド鍵も同様に取り出すことができる.鍵ス
ケジュールが複雑であるため,全てのサブ鍵を得るためには全てのラウンドを
攻撃しなければならない.
行われている処理
テーブル検索(table-lookup),シフト演算
vs. SPA
Rijndaelでは,Marsと同様の理由によりスマートカード内の秘密鍵を求めるこ
とは困難であるが,RAMに書き込まれる各ビットとスマートカード内の秘密鍵
との関係がMarsやRC6に比べてより直接的であるので,MarsやRC6よりは容易で
あると考えられる.
vs. DPA
電力差分解析では128ビットのRijndaelの全てのサブ鍵が得られたあとに排他
的論理和がなされる0ラウンド鍵が得られる.Rijndaelの提案者は34バイトの
スマートカードであれば電力差分解析に耐えると主張している.しかし,現在
のところそのようなスマートカードは存在しない.
行われている処理
シフト演算,ビット毎の論理演算
vs. SPA
Serpentでは,Marsと同様の理由によりスマートカード内の秘密鍵を求めるこ
とは困難である.
vs. DPA
SerpentはDESと同じくある種の電力差分解析(すなわち,鍵の排他的論理和の
あとのS-ボックスの探索)に対して弱い.鍵スケジュールの仕方により,マス
ター鍵を得るには始めの2ラウンドのサブ鍵があれば十分であることが明らか
である.
行われている処理
テーブル検索(table-lookup),シフト演算,加算
vs. SPA
Twofishの鍵スケジュール部は複雑であるので,ハミング重み計測からスマー
トカード内の秘密鍵の直接的な情報を得ることは困難である.
vs. DPA
[CJ+99a] にはTwofishに対して行った電力差分解析の実験の様子が示されて
いる.ここではホワイトニング鍵(128ビット)をまず求め,これをもとにマス
ター鍵(128ビット)の候補を絞り込む手法が採られている.ホワイトニングプ
ロセスには特徴的な電力消費パターンが存在するため特定が容易である.この
ためホワイトニング鍵については電力差分解析によりたった100個の電力サン
プルから全てのビットが正しく得られたという.さらに,Twofishの仕様に基
づきマスター鍵を絞り込む場合,ホワイトニング鍵がわかっていればその候補
は
個以下に減らすことができるという.これは全探索が困難でない個数
である.