サイドチャネル攻撃
暗号処理を行う装置の消費電力、処理時間、電磁波などの物理的な情報を測定し、装置内部の秘密情報(暗号鍵など)を推定する攻撃。
イマシルちゃんの解説
金庫のダイヤルを回すとき、正しい番号のところで「カチッ」って小さな音がする……なんて話、聞いたことないかな?
金庫を壊さなくても、音を聞くだけで番号がわかっちゃうんだ。
サイドチャネル攻撃は、まさにこれ!
暗号を計算している機械の電気の使い方や、計算にかかる時間をこっそり測って、
中にしまってある秘密の鍵を当てちゃうんだ。暗号そのものは破らずに、横道から攻めるんだよ!
より深い解説
定義
サイドチャネル攻撃は、暗号のアルゴリズムそのものの弱点を突くのではなく、暗号を実装した装置が動作するときに漏れ出す物理的な情報(サイドチャネル情報)を観測して、秘密鍵などを推定する攻撃である。ICカード、スマートフォン、暗号モジュールなどが対象になる。
主な種類
| 攻撃 | 利用する情報 | 内容 |
|---|---|---|
| 電力解析攻撃 | 消費電力 | 暗号処理中の消費電力の変化を測る。単純電力解析(SPA)と、多数の測定を統計的に処理する差分電力解析(DPA)がある |
| タイミング攻撃 | 処理時間 | 入力によって処理時間がわずかに変わることを利用する |
| 電磁波解析攻撃 | 電磁波 | 装置から漏れる電磁波を測る。ディスプレイなどの電磁波から表示内容を盗むテンペスト攻撃も、この仲間 |
| 故障利用攻撃 | 誤った出力 | 電圧の変動やレーザー照射などで、わざと計算を誤らせ、その結果から鍵を推定する |
| キャッシュ攻撃 | キャッシュの状態 | CPUのキャッシュへのアクセス時間の違いから、ほかのプロセスの秘密情報を推定する |
| 音響解析 | 音 | 装置の動作音やキーの打鍵音から情報を推定する |
なぜ情報が漏れるのか
例:暗号の計算で、鍵のビットが1のときだけ、ある処理(乗算など)を行う実装の場合
- 鍵のビットが1のとき:処理を行うので、時間がかかり、電力も多く使う
- 鍵のビットが0のとき:処理を行わないので、短時間で終わる
消費電力の波形や処理時間を観測すると、鍵のビットの並びがそのまま読み取れてしまう。
対策
対策の基本は、秘密の値によって、外から観測できる振る舞いが変わらないようにすることである。
| 対策 | 内容 |
|---|---|
| 処理時間の一定化 | 鍵の値にかかわらず、同じ時間で処理が終わるように実装する(定数時間実装) |
| 消費電力の平準化 | ダミーの処理を加えたり、回路を工夫したりして、電力の変化を小さくする |
| マスキング | 処理する値に乱数を混ぜ、観測した値と秘密の値の関係を隠す |
| 電磁波の遮蔽 | 装置をシールドで覆う |
| 異常の検知 | 電圧や温度の異常、光の照射を検知したら、処理を止めたり、秘密情報を消去したりする |
外部からの物理的な解析や改ざんに対する耐性を耐タンパ性といい、ICカードや暗号モジュールに求められる。
ほかの攻撃との区別
| 攻撃 | 内容 |
|---|---|
| サイドチャネル攻撃 | 装置の物理的な情報から、内部の秘密情報を推定する |
| キーロガー | 利用者のキー入力を記録して盗む |
| スミッシング | SMSで偽のサイトに誘導して、情報を盗む |
| 中間者攻撃 | 通信経路の途中に入り込み、通信を盗聴・改ざんする |
消費電力などの物理量の測定から秘密を推定する、という点が、サイドチャネル攻撃を見分けるポイントである。