TL

差分電力解析(DPA)と電磁解析の原理

スマートカードやIoTの鍵が波形だけで抜かれる仕組みが腑に落ちる。SPA/DPA/CPAが消費電力と中間値の相関をどう統計的に突くか、漏洩モデルの数理とマスキング・ハイディング対策までを原理から正確に解説。

応用サイドチャネル電力解析DPACPA電磁解析マスキング最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.CMOS回路の消費電力は処理中のデータに依存する。攻撃者は鍵候補ごとに中間値を予測し、その予測と実測波形の相関を取って正しい鍵だけを浮かび上がらせる。電磁解析(EMA)も放射磁界を測る点が違うだけで原理は同じ。
  • 2.DPAは差分平均、CPAはピアソン相関係数で鍵を絞る。漏洩はハミング重み/距離モデルで近似でき、正しい鍵バイトでのみ相関が立つ。鍵空間を1バイト(256候補)単位で分割攻撃するため、全数探索より桁違いに速い。
  • 3.対策は2系統。マスキングは中間値を乱数で割り、観測量と秘密の相関を統計的に断つ。ハイディングは消費電力を平準化・ランダム化してSN比を下げる。原理上どちらも完全防御ではなく、次数を上げた高次DPAとのいたちごっこになる。

なぜ消費電力が秘密を映すのか

差分電力解析(DPA)と電磁解析(EMA)は、暗号アルゴリズムの数学ではなく、それを実行する半導体の物理的副産物から鍵を盗む攻撃です。出発点は CMOS 論理回路の性質にあります。CMOS のゲートは、信号が安定している間はほとんど電流を流さず、ビットが 0→1 や 1→0 に遷移する瞬間にだけ充放電電流(動的電力)が流れます。つまりある時点の消費電力は、その時点で回路が処理しているデータのビット遷移数に依存します。

このため、デバイスの消費電力を時系列で測った波形(パワートレース)には、内部で計算されている中間値の情報が漏れ出します。EMA は電流が作る放射磁界をプローブで測るもので、測る物理量が電圧降下か磁界かの違いだけで、「処理データと相関する物理量を観測する」という原理は電力解析とまったく同じです。EMA はチップ表面の局所をプローブで狙えるため、特定の回路ブロックだけを空間分解能つきで観測でき、しばしば電力解析より SN 比が高くなります。

脅威モデル:攻撃者はデバイスを手元で回せる

この攻撃の前提は、攻撃者が対象デバイスを物理的に支配し、自由に暗号処理を走らせて波形を取得できることです。スマートカード、TPM、IoT 機器、ハードウェアウォレットのように手元に持ち込める対象が典型です。鍵はメモリから直接読めなくても、鍵を使う計算の電力波形からなら抜けます。これはサイドチャネル攻撃全体に共通する、暗号文だけを見る古典的解読とは別軸の脅威モデルです。

SPA:波形を1本読むだけで鍵が見える

最も単純なのが SPA(Simple Power Analysis)で、1本ないし数本の波形を直接目視・解析して秘密を読みます。狙い目は、秘密ビットによって実行する演算そのものが変わる実装です。

古典例が RSA の冪剰余の素朴な square-and-multiply です。指数ビットが 0 なら二乗のみ、1 なら二乗のあと乗算を追加で行うため、波形上に「二乗だけの区間」と「二乗+乗算の区間」が長さの違うパターンとして並び、その並びを読むだけで秘密指数のビット列が判明します。

指数ビット列を波形から直読する(SPA)
  S = 二乗 (square)、M = 乗算 (multiply)
  波形: S S M  S      S M  S M ...
  解釈:  1     0       1    1   ...  ← M が続けば「そのビットは1」

SPA の対策は、秘密ビットに依存して演算の種類・回数を変えないことです。RSA なら Montgomery ladder や、ビットが 0 でも捨てる乗算を必ず実行する always-multiply で、波形を秘密と無関係な一様パターンにします。これは定数時間プログラミングで言う「秘密依存の分岐を作らない」規律を、消費電力の次元に拡張したものです。

DPA:統計が雑音に埋もれた差を掘り出す

SPA はパターンが波形に直接見えるほど特徴的でないと使えません。これに対し DPA(Differential Power Analysis、Kocher ら 1999)は、1本では雑音に埋もれて見えない数ミリボルト級の差を、多数の波形を統計処理して浮かび上がらせます。波形を読む必要がないため、SPA 耐性のある実装でも破れるのが脅威です。

鍵となる発想は 分割統治 です。AES のような共通鍵暗号では、最初のラウンドで 中間値 = SBox(平文バイト xor 鍵バイト) のように、1バイトの鍵だけで決まる中間値が計算されます。攻撃者は平文を知っているので、鍵バイトの 256 通りを総当たりし、各候補について中間値を予測できます。16バイト鍵を 16×256 = 4096 回の検定に落とせるため、2^128 の全数探索とは比較にならない速さになります。

オリジナルの DPA は 差分平均 で攻ります。中間値のあるビット D を選び、鍵候補ごとに次を行います。

DPA(差分平均、単一ビット選択関数 D)
1. N 本の波形 T_i と、対応する平文 P_i を収集
2. 鍵候補 k について各平文の予測ビット D(P_i, k) を計算
3. 波形を D=1 のグループと D=0 のグループに二分
4. 差分トレース = (D=1 群の平均波形) - (D=0 群の平均波形)
5. 正しい k では予測が実際のビットと一致するため、
   そのビットが処理される時刻に差分のスパイク(ピーク)が立つ
6. 誤った k では予測がデタラメで両群が均され、差分は平坦

正しい鍵候補でのみ予測と物理現実が噛み合い、誤った候補では予測がランダムに分散して差が打ち消し合う――この選択関数の当否で相関の有無が分かれる点が DPA の核心です。

CPA:ハミング重みモデルと相関係数

現在の主流は CPA(Correlation Power Analysis、Brier ら 2004)で、DPA の単一ビット差分を漏洩モデルとの相関係数に置き換えて精度を上げたものです。前提となるのが漏洩モデルで、ある中間値 v が消費する電力を近似します。

  • ハミング重みモデル:消費電力 ∝ HW(v)(v の 1 のビット数)。レジスタやバスがプリチャージされる構造で成り立ちやすい。
  • ハミング距離モデル:消費電力 ∝ HD(v_old, v_new) = HW(v_old xor v_new)(更新前後で遷移したビット数)。レジスタが前値を上書きする構造に適合。CMOS は遷移で電流が流れるため、実機ではこちらが当たることが多い。

攻撃者は鍵候補 k ごとに中間値 v(k) を予測し、その予測電力 HW(v(k)) と実測波形の各時点の値とのピアソン相関係数を計算します。

CPA(ピアソン相関)
  予測電力ベクトル H[i] = HW(中間値(P_i, k))   (i=1..N)
  実測電力ベクトル W[i,t] = 時刻 t の波形値

  各鍵候補 k・各時刻 t で相関係数を計算:
    r(k,t) = Σ(H[i]-H̄)(W[i,t]-W̄)
             / sqrt( Σ(H[i]-H̄)^2 · Σ(W[i,t]-W̄)^2 )

  正しい k: 中間値が実際に処理される時刻 t* で |r| が突出
  誤った k: モデルと実測が無相関 → r ≈ 0

正しい鍵バイトでのみ、ある時刻 t* で相関係数の絶対値が際立って高くなり、それが正解の指標になります。CPA が DPA より優れるのは、ハミング重み全体(0〜8)を使うため単一ビットより情報量が多く、必要波形数が少なくて済む点と、相関係数という正規化量で異なる時点・候補を公平に比較できる点です。波形数 N を増やすほど雑音項は平方根で減衰し、正解の相関ピーク / 誤答の相関 という SN 比が改善するため、十分な N があれば原理的に必ず鍵が立ちます。

「波形を見ても分からない」は安全の証明にならない

SPA で目視できなくても、DPA/CPA は数千〜数十万本の波形を集めて統計で破れます。攻撃に要する波形数の指標が MTD(Measurements To Disclosure:鍵を特定するのに必要な波形数) で、対策の良し悪しはこの MTD をどれだけ引き上げるかで定量評価されます。「目視で読めない」ことと「統計でも漏れない」ことは別物で、後者は実測しなければ言えません。

対策1:マスキング(相関を数理的に断つ)

対策は大きくマスキングハイディングに分かれます。マスキングは、中間値を乱数で攪乱し、観測量と秘密の統計的相関を切る手法です。秘密の中間値 v を、毎回ランダムなマスク m で v' = v xor m(ブール masking)や v' = (v + m) mod 2^n(算術/加法 masking、AES の有限体逆元では v · m の乗法 masking も使う)のように分割し、v そのものは回路上のどこにも現れないようにします

ポイントは、マスク m が毎実行ごとにランダムなので、攻撃者が予測する中間値 v(k) と、実際に処理される v xor m の相関が1次の統計量(平均)では消えることです。CPA の予測電力はマスクを知らない以上、マスクされた実測と相関しません。これを 1次マスキング と呼び、1次(単一時点)の DPA/CPA を原理的に無効化します。

ブールマスキングの考え方(AES の SBox 入力に適用)
  通常:   x = 平文 xor 鍵        → 攻撃者は x を予測でき相関が立つ
  マスク: x' = x xor m  (m は乱数)
          以後すべて x' で計算し、最後に m を打ち消す
  → 各実行で x' はランダムに散らばり、x との1次相関が消える
  ※ SBox など非線形演算はマスクをそのまま通せないため、
    マスク済みSBoxテーブルの再計算など専用の構成が要る

ただしマスキングは万能ではありません。高次 DPA は、複数の時点(マスク m を扱う時点と v xor m を扱う時点)の電力を**掛け合わせる(中心化積など)**ことでマスクの効果を相殺し、相関を復活させます。d 次マスキング(秘密を d+1 個のシェアに分割)は d 次までの解析に耐えますが、(d+1) 次解析には弱い――これはShamir 秘密分散で秘密を複数シェアに分けるのと同じ発想を、サイドチャネル防御に持ち込んだものです。次数を上げるほど攻撃に必要な波形数は指数的に増え(雑音の下で MTD が跳ね上がる)ますが、実装コストも乗算回数とともに増大します。

対策2:ハイディング(SN比を物理的に下げる)

ハイディングは、漏洩自体は残しつつ、消費電力を秘密と無関係にならす/ばらつかせて、攻撃の SN 比を下げる手法です。マスキングがアルゴリズム層で相関を消すのに対し、こちらは主にハードウェア層で雑音側を厚くします。

マスキングは相関を数理的に断ち、ハイディングはSN比を下げる。どちらも攻撃の必要波形数(MTD)を引き上げるが、原理上の完全防御ではない。
対策の系統効果の与え方代表的な手法原理上の限界
マスキング中間値を乱数で分割し相関を消すブール/算術マスキング、d次マスキング(d+1)次の高次DPAで相関が復活する
ハイディング(振幅)消費電力の振幅を平準化しSN比を下げるデュアルレール論理(WDDL)、定電流ロジック完全な平準化は不可能、波形数を増やせば抽出可
ハイディング(時間)演算の発生時刻を撹乱し波形を揃わせないランダム遅延挿入、命令シャッフリング、クロック揺らぎアラインメント補正・相互相関で再同期されうる

ハイディングには2方向あります。振幅方向は、デュアルレール・プリチャージ論理(WDDL など)で各ビットとその補数を常に対で遷移させ、ハミング重みに依らず遷移数を一定化して、データ依存の電力差そのものを縮めます。時間方向は、ランダム遅延の挿入、独立な演算の順序シャッフリング、クロック周波数のジッタ付与によって、同じ中間値が処理される時刻を毎回ずらします。CPA は「全波形で同じ時刻 t に同じ演算が来る」前提に立つため、時間方向の攪乱で波形が揃わなくなると相関ピークが時間軸方向にぼやけて立ちにくくなります。

ハイディングは再同期で剥がされうる

時間方向のハイディングは強力に見えますが、攻撃者は波形の特徴的なパターンを目印に**アラインメント(再同期)**したり、相互相関で遅延を推定して波形を揃え直したりできます。ランダム遅延が取りうる範囲が狭ければ、総当たり的にシフトを試して整列させ、ハイディングを実質的に剥がせます。振幅方向のデュアルレール論理も、配線容量の差で完全な平衡は実現できず、残留する微小な不均衡を多数の波形で突かれます。どの対策も MTD を上げるだけで、攻撃可能性をゼロにはしない――これが原理上の限界です。

多対策の併用と実務の考え方

実機の防御は単独では成立せず、マスキングとハイディングを重ねるのが定石です。マスキングで1次相関を消し(高次解析を強制し)、その上でハイディングにより各次数の解析の SN 比を下げて必要波形数を実用上不可能な水準まで押し上げます。さらに、鍵の使用回数に上限を設けてリーク予算を制限したり、フォールトと組み合わせた解析(DPA とフォールト注入の併用)にも備えたりします。

実務者の観点では、これはブロック暗号や RSA の選定の問題ではなく、それを動かすハードウェアと実装の問題だと理解するのが第一歩です。鍵を扱うなら、サイドチャネル対策が施され第三者評価(Common Criteria や FIPS 140-3 の物理セキュリティ要件)を受けた専用デバイス(スマートカードチップ、セキュアエレメント、HSM)に処理を逃がします。自前ファームウェアで対策を組むなら、対策の有無を**実波形での T 検定(TVLA:Test Vector Leakage Assessment)**で検証し、固定入力群とランダム入力群で電力分布に有意差が出ないことを確認します。定数時間プログラミングの dudect が時間軸でやることを、電力軸で実測検証する発想です。

試験・面接で問われる要点

(1) 電力/電磁が漏れる根本は CMOS のビット遷移時に動的電力が流れること。EMA は測る物理量が磁界なだけで原理は同じ。(2) SPA は1波形を直読(RSA の square-and-multiply のビット列)、DPA/CPA は多波形を統計処理して雑音下の差を抽出。(3) CPA は ハミング重み/距離モデルで中間値の電力を予測し、鍵候補ごとのピアソン相関が立つバイトが正解。鍵空間を1バイト単位に分割攻撃するから速い。(4) マスキングは乱数で相関を断つが高次DPAに弱く、ハイディングはSN比を下げるが再同期で剥がれうる。どちらもMTDを上げるだけで完全防御ではない。(5) 検証は TVLA(電力分布のT検定)

セキュリティ Article

差分電力解析(DPA)と電磁解析の原理を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

サイドチャネル

比較で見る軸

難易度: advanced / カテゴリ: セキュリティ / タグ数: 6

導入後に効く点

DPAは差分平均、CPAはピアソン相関係数で鍵を絞る。漏洩はハミング重み/距離モデルで近似でき、正しい鍵バイトでのみ相関が立つ。鍵空間を1バイト(256候補)単位で分割攻撃するため、全数探索より桁違いに速い。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
セキュリティ
タグ数
6

判断チェックリスト

  • 自社の用途が「サイドチャネル / 電力解析」に近いか確認する。
  • 強みである「CMOS回路の消費電力は処理中のデータに依存する。攻撃者は鍵候補ごとに中間値を予測し、その予測と実測波形の相関を取って正しい鍵だけを浮かび上がらせる。電磁解析(EMA)も放射磁界を測る点が違うだけで原理は同じ。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

サイドチャネル電力解析DPACPA電磁解析サイドチャネル電力解析DPA
参考: 公式情報