本節では,RSAに対する電力解析の原理を解説する[MDS99b]. 対処方法についてはIII.3.3.5.3.3節を参照されたい.
剰余冪演算は公開鍵暗号を実装する際には極めて重要な技術である.剰余冪演算を行う最も代表的なアルゴリズムは「平方乗算法(square-and-multiply algorithm)」である.また,楕円曲線暗号においてはこれによく似た「倍加算法(double-and-add algorithm)」を用いる.平方乗算法としては次の二つのアルゴリズムが代表的である.これを図III.20,III.21に示す.図III.20は最上位のゼロでないビットから始まり下位のビットに向かって演算が進んでいく.逆に図III.21は最下位のゼロでないビットから始まり上位のビットに向けて演算が進んでいく.図III.21では図III.20に比べて余分なメモリを必要とする.
文献[MDS99b]において示されている後述の3つの攻撃法はこれら二つのアルゴリズムのいずれにも原理的には適用可能である.とりわけMESD及びSEMDは平方乗算法に対しての攻撃であるが,この演算方法は公開鍵暗号に対しては何らかの形で実装されているので適用は可能である.ZEMD攻撃を成功させるには攻撃者がスマートカード内でどのような手法で演算が行われているのかを知っている必要があるが,とりうる演算手法はそれほど多くはないので,あらゆる可能性のある演算方法を想定してこの攻撃を適用することにより,攻撃を成功させることは可能であろう.
ここで述べられる攻撃の目的は,スマートカード内に秘密に保管される秘密の冪指数
を導出することである.攻撃者はスマートカードの動作を完全に制御することが可能であるとする.つまり,スマートカードは秘密鍵
を出力する以外のあらゆる攻撃者の命令に従うものとする.スマートカードに最も必要とされる機能は「内部認証(internal authenticate)」,即ち入力
に対して,
を出力する機能である.スマートカードの中にはオペレーションを行う際にPIN(Personal Identification Number)の入力を要求するものもあるが,ここではそれについては考慮しない.さらに攻撃者の計測回数に関しても制限しない.これらは現実の実装の観点から見て正当な仮定と言える.
まずはじめに,単純に乗算命令による電力信号とカードから出力される電力信号との相関をとることにより,
を決定することが可能かどうかを見てみよう.
これにより冪乗演算全体に要する電力信号の相関を調査することにより,単一の剰余乗算もしくは剰余平方を区別することが可能かを見ることができる.ここで,剰余乗算の電力信号を
,剰余冪演算の電力信号を
とする.このとき,相関信号
は次のように計算できる.
実際のスマートカードにおいて入力値を固定し,5000回の出力の測定値を測定ノイズ除去のために平均化した結果を測定する実験で,この攻撃の可能性が検証されている[MDS99b].
あらかじめ既知の冪係数について測定した場合と,未知の冪係数について測定した場合の電力信号と相関信号を観測した場合に,剰余乗算と剰余平方の位置がどのように現れるかを調べたところ,確かにこれらの計算が実行されている部分で,電力相関信号はピークを形成しているが,これら二つの間で大きな相違を見ることは出来ない.つまり,ここで述べられている電力相関の測定は剰余乗算と剰余平方のいずれが行われているのかを特定するためには用いることができない.だが,これらの測定により平方情報アルゴリズムに要する時間情報が決定できることは興味深い.この情報は電力攻撃とタイミング攻撃をともに用いる可能性を示している.相関信号は全ての中間処理のタイミングを明らかに出来るので,この攻撃は単純な時間攻撃に比べ非常に強力であるといえる.
この攻撃の大前提は未知の冪指数を用いた実行された冪演算の電力信号と,既知の冪指数を用いて実行された冪演算の電力信号をを互いに比較することにより,攻撃者は二つの冪指数のビットの違いを測定して秘密鍵を解き明かすことが可能であるということである.実際には,平方乗算アルゴリズムの中間データの結果が電力信号に大きな影響を及ぼすので,この比較は単純ではない.単純な電力差分解析は秘密冪指数を用いて
個のランダムな値を冪乗させ,それらの電力信号
を収集することにより開始する.同様に,公開冪指数に対しても
個の電力信号
を測定する.これらを用いて電力差分解析(DPA)バイアス信号
は次のように構成できる.
中間データに依存する
と
の分布は同じ値に平均化される.つまりデータに依存するサンプル点
においては次が成立する.
だが,冪指数に依存するサンプル点
では,剰余乗算が行われるか剰余平方が行われるかに従って異なる値(
)に平均化されるはずであり,従ってDPAバイアス信号
もゼロでない値となるであろう.これを用いて以下のように平方と乗算の位置を抽出することが可能である.
SEMD攻撃の可能性を実験で検証した結果が報告されている[MDS99b].実験では,法および冪指数を64ビットと短いビット長を用いている.短いビット長の冪指数を用いた場合,より多くの電力信号をデジタルオシロスコープに収めることが出来るため,一回の測定で,より長いビットに対して攻撃を行うことが出来る.実際のサイズ(例えば1024ビットなど)の冪指数に対しては一度の測定で冪指数の一部だけが攻撃可能である.一度に攻撃可能なビット長は攻撃者の持つデジタルオシロスコープの解像度(メモリ)に依存する.測定結果を観察したところ,DPAバイアス信号は,平方と乗算とで異なる処理の行われている部分において,DPAバイアス信号が強く増幅されていることが分かった.出力に対して適切なフィルタリングを行うことにより,この相違点は簡単に特定可能であり,SEMD攻撃の有効性は実証されている.つまり,スマートカードシステムを実装する際にはSEMD攻撃への対応を考慮することが重要であろう.
MESD攻撃のアルゴリズムは図III.22に示される.アルゴリズムの第一ステップは任意の値
を選択し,
を秘密指数
を用いて冪乗させ,対応する平均電力信号
を収集することである.次に,アルゴリズムは
の第一ビットから順に最後のビットまで進んでいく.
番目のビットを攻撃するために,攻撃syは
番目のビットが
か
であると推測し,それぞれの予想値を用いて冪演算をカードに実行させる.攻撃者は既に
番目までのビットを推測していると仮定すると,
番目までのビットによる演算の中間データは測定結果と予想結果は一致するだろう.従って
番目のビットの予想が正しければ,中間結果の予想は
番目でも一致するはずであり,もし予想が正しくなければ結果は異なってくるはずである.この相違は相関電力を調べることで確認できる.
を
を用いて冪乗するのに要する平均電力信号を,
の
番目のビットが1である場合
,0である場合
とする.二つのDPAバイアス信号は次のように計算できる.
実際のスマートカードを用いて,この攻撃の有効性を検証したところ,SNRは明らかにSEMD攻撃に比べ向上している.SNRが高いということはMESD攻撃の実現に要する試行測定回数が少なくてすむことを示す.また,攻撃者は一度だけDPAバイアス信号を計算すればよい.例えば,攻撃者は全てのビットが1であると予測するとする.予測が正しければバイアス信号は
のまま続き,予測がずれた時点で
以外の値になる.このテクニックにより攻撃アルゴリズムの実行時間は効率的に削減される.実際,この測定結果は冪指数一ビットにつき200回の試行により測定された.MESD攻撃は可能な状況では,カードを実装する際にこの攻撃を考慮する必要がある.
ZEMD攻撃は図III.23に示される.ZEMD攻撃は第1ビットから順に最終ビットまで実行される.このアルゴリズムでは変数
が徐々に秘密指数に等しくなっていく.それぞれの繰り返しで,冪のある1ビットを求めることができ,
は次々に更新されていく.アルゴリズムを
回目に繰り返したとき,
の
番目のビットまでは正確であると仮定する.アルゴリズムは
番目のビットが
であると仮定し,それが正しいかどうかをDPAバイアス信号を用いて推測していく.DPAバイアス信号はランダムな入力
を選び,消費電力をシミュレーションにより求めることにより決定する.消費電力は冪指数のハミング重みにより推測可能である.
実験による検証で,実際にZEND攻撃成功させるためには,200個程度のランダムな電力信号の測定で十分であることが報告されている[MDS99b].