ダウングレード攻撃
暗号化通信を確立するときの交渉に割り込み、古いバージョンのプロトコルや弱い暗号スイートを使うように仕向けて、解読しやすい暗号化通信を行わせる攻撃。
イマシルちゃんの解説
ダウングレード攻撃は、通信相手同士が使う方式を決めるやり取りに介入し、本来より弱い方式を選ばせる攻撃だよ。
例えばTLSの接続に失敗すると、互換性のために古いバージョンで接続し直す実装があるんだ。
攻撃者は最初の接続をわざと失敗させ、この動作を悪用することがあるよ。
古い方式に弱点が残っていれば、通信内容を盗み見られる危険が高まるの。
暗号を使っているだけでは安心できないんだね。
弱い方式を使えない設定にしたり、不適切な切替えを検知して接続を止めたりすることが大切だよ。
この解説はわかりやすかったですか?
より深い解説
定義
ダウングレード攻撃は、通信の当事者が、本来は安全なバージョンや方式を使えるにもかかわらず、中間者が交渉の内容を改ざんしたり、交渉を妨害して失敗させたりすることで、安全性の低い方式を選ばせる攻撃である。SSL/TLSのほか、無線LANやメールのSTARTTLSなど、暗号の方式を交渉で決めるプロトコルが狙われる。
暗号スイート
TLSで使う暗号の組合せを、暗号スイートという。ハンドシェイクで、クライアントが使える一覧を示し、サーバが1つを選ぶ。
| 要素 | 例 |
|---|---|
| 鍵交換 | ECDHE、RSA |
| 認証(署名) | RSA、ECDSA |
| 共通鍵暗号と利用モード | AES-128-GCM、ChaCha20-Poly1305、(古いもの:RC4、3DES) |
| ハッシュ関数 | SHA-256、SHA-384 |
主な手口と事例
| 手口 | 内容 |
|---|---|
| 暗号スイートの書換え | クライアントの一覧から強い暗号を取り除き、弱い暗号(輸出用の短い鍵など)だけを残す |
| バージョンのロールバック | 交渉をわざと失敗させ、クライアントが古いバージョンで接続し直す動作(フォールバック)を悪用する。POODLE攻撃は、SSL 3.0 に戻させて、その弱点を突いた |
| STARTTLSの除去 | メールの通信で、サーバの「STARTTLSが使える」という応答を消し、暗号化せずに通信させる |
対策
- サーバとクライアントで、古いバージョン(SSL 3.0、TLS 1.0、TLS 1.1)と弱い暗号スイートを無効にする
- TLS 1.3を使う。ハンドシェイクの内容全体に署名し、改ざんを検出できる。また、ダウングレードを検出する仕組みもある
- HTTPSでは、HSTSで、ブラウザに常にHTTPSで接続させる
似た攻撃との区別
| 攻撃 | 内容 |
|---|---|
| ダウングレード攻撃 | 交渉に介入して、弱い方式を使わせる |
| 総当たり攻撃 | 暗号化された通信を記録し、鍵の候補を総当たりで試して解読する |
| SSLストリッピング | HTTPSへの移動を妨げ、利用者にHTTPのまま通信させる |