サイドチャネル攻撃(Side Channel Attack)とは、
暗号アルゴリズムやシステムの理論的な弱点ではなく、
「処理中に漏れる物理的な情報」から秘密情報を盗み出す攻撃です。
例えば、パスワードや暗号鍵そのものを解読するのではなく、
CPUの動作や電力消費などを観察して推測します。
代表的なサイドチャネル攻撃
| 攻撃手法 | 利用する情報 | 内容 |
|---|---|---|
| タイミング攻撃 | 処理時間 | 暗号処理にかかる時間の違いから秘密鍵を推測 |
| キャッシュ攻撃 | CPUキャッシュ | CPUキャッシュのヒット・ミスを観測し秘密情報を推測 |
| 電力解析(Power Analysis) | 消費電力 | ICカードや組み込み機器の電力変化から暗号鍵を解析 |
| 電磁波解析 | 電磁波 | CPUから発生する電磁波を測定して情報を取得 |
| 音響解析 | 動作音 | キーボードやCPUの微細な音から情報を推測 |
| 分岐予測攻撃 | CPU内部状態 | CPUの予測実行機能を悪用してメモリ内容を盗み出す |
イメージ
例えば、ATMカードのICチップで暗号処理をしているとします。
暗号鍵は外部から読めません。
しかし、
- 正しいビットを計算すると電力消費が少し増える
- 間違ったビットでは電力消費が少し違う
この違いを数万回測定すると、
鍵:101101001...
という秘密鍵を復元できる場合があります。
有名な例
Spectre
2018年に公表されたCPUの脆弱性です。
CPUの「投機的実行」を利用し、
CPU
↓
キャッシュに秘密データが残る
↓
キャッシュアクセス時間を測定
↓
秘密データを取得
という攻撃でした。
Meltdown
こちらも2018年に公表されたCPUの脆弱性です。
本来アクセスできないOSカーネル領域を一時的に読み込み、
その痕跡をキャッシュから解析します。
なぜ暗号が破られるの?
例えばパスワード比較を
if (input[i] != password[i])
return false;
のように書くと、
1文字目が違う → すぐ終了
5文字目が違う → 少し時間がかかる
となります。
攻撃者は何百万回も測定すると、
1文字目は正しい
2文字目も正しい
...
と推測できてしまいます。
そのため、暗号ライブラリでは比較時間が入力内容に依存しない「定数時間(constant-time)」実装がよく用いられます。
対策
- Constant-Timeアルゴリズム(処理時間を一定にする)
- キャッシュ利用を考慮した実装
- CPUのマイクロコード・OSの更新(Spectre/Meltdown対策)
- 暗号演算専用ハードウェアの利用
- 電力・電磁波対策(シールド、ノイズ付加)
- 秘密情報を扱う処理を分離・隔離する
一言でいうと
サイドチャネル攻撃とは、
「計算結果」ではなく、「計算するときに漏れる時間・電力・キャッシュ・電磁波などの副次的な情報(サイドチャネル)」を利用して、秘密情報を盗み出す攻撃です。
暗号アルゴリズム自体が安全でも、実装やハードウェアの振る舞いから情報が漏れるため、ソフトウェア・ハードウェアの両方で対策が重要になります。


コメント