Bleichenbacher 攻撃
Bleichenbacher 攻撃 とは何ですか?
Bleichenbacher 攻撃1998 年に Daniel Bleichenbacher が発表した適応的選択暗号文攻撃。サーバが PKCS#1 v1.5 パディングの正当性を漏えいすると RSA 平文を復元できる。
Daniel Bleichenbacher は 1998 年の CRYPTO で、RSA-PKCS#1 v1.5 暗号化を用いる SSL ハンドシェイクへのこの攻撃を発表しました。サーバは意図せずパディングオラクルとして振る舞い、区別可能なあらゆる応答(TLS アラートコード、接続リセット、あるいはタイミング)が、改変された暗号文がバイト列 0x00 0x02 で始まる値に復号されるかどうかを攻撃者に教えてしまいます。RSA は乗法準同型であるため、攻撃者は捕捉した暗号文を選んだ値 s で乗じて結果を送信し、「パディングが正当」という各回答を使って可能な平文の集合を絞り込みます。およそ 100 万回の問い合わせの後、区間は単一の値へ収束し、RSA で暗号化された事前マスタが復元されます。これは秘密鍵に一切触れることなく行われ、攻撃者はセッションを復号したり RSA 署名を偽造したりできるようになります。
PKCS#1 v1.5 のアンパディングは一定時間実装を拒むため、この欠陥はなかなか根絶できません。これは DROWN(CVE-2016-0800) として再来し、SSLv2 オラクルを用いて現代の TLS セッションを破りました。さらに ROBOT(Return Of Bleichenbacher's Oracle Threat、2017) として再現し、研究者の Böck、Somorovsky、Young は F5(CVE-2017-6168)、Citrix、Cisco などが依然として脆弱であることを発見し、Facebook と PayPal に対して実証しました。対策は、正しいパディングと不正なパディングで同一のエラー処理を行うこと、RSA-OAEP を優先すること、RSA 鍵交換の暗号スイートを無効化すること、そしてハンドシェイクから RSA 暗号化を完全に排除した TLS 1.3 を採用することです。
flowchart TD
A[Attacker captures RSA ciphertext c] --> B["Pick multiplier s, send c·s^e mod n"]
B --> C{Server padding check}
C -->|"Starts 0x00 0x02 → valid"| D[Narrow plaintext interval]
C -->|"Invalid → distinct response"| E[Discard this s]
D --> F{Interval = 1 value?}
E --> B
F -->|No| B
F -->|Yes| G[Premaster secret recovered]● 例
- 01
1990 年代の Web サーバで、パディング誤りのアラート差から SSL 事前マスタを復元する。
- 02
DROWN と ROBOT は現代の TLS 実装に対し同じオラクルを再利用する。
● よくある質問
Bleichenbacher 攻撃 とは何ですか?
1998 年に Daniel Bleichenbacher が発表した適応的選択暗号文攻撃。サーバが PKCS#1 v1.5 パディングの正当性を漏えいすると RSA 平文を復元できる。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
Bleichenbacher 攻撃 とはどういう意味ですか?
1998 年に Daniel Bleichenbacher が発表した適応的選択暗号文攻撃。サーバが PKCS#1 v1.5 パディングの正当性を漏えいすると RSA 平文を復元できる。
Bleichenbacher 攻撃 からどのように防御しますか?
Bleichenbacher 攻撃 に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
Bleichenbacher 攻撃 の別名は何ですか?
一般的な別名: ミリオンメッセージ攻撃。