コンテンツにスキップ

SWEET32 Attack on 64-bit Block Ciphers

64ビットブロック暗号に対するSWEET32攻撃

説明

この脆弱性は、サーバーがSWEET32攻撃の影響を受けやすいことを示しています。この攻撃は、3DESなどの64ビットブロック暗号における誕生日のパラドックスを悪用し、約32GBのトラフィックを収集した後に暗号化されたデータから平文を復元します。

SWEET32(64ビットブロック暗号に対する誕生日攻撃)は、大量のデータを暗号化するために同じ暗号鍵が使用される場合に発生します。誕生日のパラドックスにより、約2^32ブロック後に同一の暗号文ブロックが出現することが統計的に保証され、平文の復元を可能にする数学的な関係が明らかになります。

攻撃の仕組み:

  1. 攻撃者は、被害者の認証Cookieを含む数百万件のHTTPSリクエストをトリガーします。
  2. ネットワークトラフィックがキャプチャされ、同一の8バイトの暗号化されたブロックがないか分析されます。
  3. 衝突が発生した場合、CBCモードの数学的性質により、XOR演算を介して機密データが復元可能になります。
  4. このプロセスが複数の衝突にわたって繰り返され、機密情報全体が抽出されます。

前提条件:

  • 3DESやその他の64ビットブロック暗号が使用されていること。
  • 長時間のTLSセッション(18時間以上)。
  • 大量のリクエスト処理能力(約2,900リクエスト/秒)。
  • ネットワークレベルでのトラフィックキャプチャ能力。

シナリオ例: ある銀行アプリケーションが、永続的なHTTPS接続で3DES暗号を使用しているとします。攻撃者はJavaScriptを注入し、18時間にわたって数百万回のリクエストを実行して700GBの暗号化されたトラフィックをキャプチャします。統計分析によりブロックの衝突が判明し、被害者のセッションCookieが露呈して、アカウントが完全に制御されることになります。

この攻撃は、64ビットブロック暗号が最新のアプリケーションにとって根本的に安全ではなく、セッションハイジャック、データ漏洩、および規制コンプライアンス違反を引き起こす理由を示しています。

推奨事項

SWEET32攻撃を軽減するためには以下の対策を実施してください:

主な防御策 - 64ビット暗号の無効化:

# Nginx設定
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:!3DES:!DES';
# Apache設定  
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:!3DES:!DES

追加の軽減策:

  • 3DESを完全に排除したTLS 1.3へアップグレードする。
  • 積極的なキー更新(rekeying)により接続時間を制限する(3DESの場合は64MBごと)。
  • 接続あたりのリクエスト量を制限する(Apache/Nginxのデフォルトは100リクエスト)。
  • 潜在的な攻撃を示す過剰なトラフィックパターンを監視する。
  • 暗号スイートの優先順位において、レガシーな64ビットの代替よりもAES暗号を優先する。

テストコマンド:

# サーバー構成をテストする
openssl s_client -connect example.com:443 -cipher '3DES'

# 3DESが無効になっていることを確認する (失敗するはずです)
nmap --script ssl-enum-ciphers -p 443 example.com

リンク

標準

  • SOC2_CONTROLS:
    • CC_6_7
    • CC_7_1
  • CCPA:
    • CCPA_1798_150
  • GDPR:
    • ART_32
  • HIPAA_CONTROLS:
    • SECURITY252
    • SECURITY212
    • SECURITY213
  • PCI_STANDARDS:
    • REQ_4_1
    • REQ_6_2
    • REQ_11_3