SWEET32: 64 ビットブロックの TLS 暗号に対する誕生日攻撃 (CVE-2016-2183)

概要

Red Hat Product Security チームは、特定の設定で SSL/TLS プロトコル内のブロック暗号に対する衝突攻撃が発生する可能性がある問題を認識しています。この問題は 中程度の影響 として評価され、CVE-2016-2183 が割り当てされました。現在、Red Hat 製品に必要な更新やアクションはありません。詳細は 解決法 のセクションを参照してください。

背景情報

ブロック長が 64 ビットの古いブロック暗号が CBC モードで使用されると衝突攻撃を受ける可能性があります。3DES を共通鍵暗号として使用し、すべてのバージョンの SSL/TLS プロトコルをサポートする暗号スイートが影響を受けます (例: ECDHE-RSA-DES-CBC3-SHA)。Red Hat Enterprise Linux 6 および 7 に同梱されたバージョンの OpenSSL では、DES ベースの暗号スイートの優先度は AES-128 (PFS 暗号スイート) や AES-256 をサポートする暗号スイートよりも低くなります。そのため、サーバーが明示的に AES-128 および AES-256 を無効にする場合のみ DES 暗号が選択されます。Red Hat Enterprise Linux 5 に同梱されたバージョンの OpenSSL では、DES ベースの暗号スイートの優先度は AES-256 よりも低く、AES-128 よりも高くなります。そのため、サーバーが明示的に AES-256 ベースの暗号スイートを無効にする場合のみ DES が選択されます。

ブロック暗号の安全性は鍵長 (k) によります。そのため、ブロック暗号に対して 2k 通りの鍵の値を徹底して検索し、攻撃するのが最良な攻撃と言えます。しかし、CBC のような暗号モードを使用して大量のデータの暗号化にブロック暗号が使用された場合、ブロック長 (n) も安全性に若干関係します。

CBC モードで暗号化する場合、データの 2n/2 個のブロックが同じ鍵で暗号化された後に 2 つの暗号ブロック間で衝突が想定される簡単な誕生日攻撃が存在します。出力での衝突は入力が同じであることを意味します。このデータを複数の条件と組み合わせると (以下の説明を参照)、暗号化されたデータのプレーンテキストを取得することが可能になります。

攻撃の実現性

  1. SSL/TLS で使用される 64 ビットブロックの暗号は DES/3DES のみです。概要の説明どおり、3DES が含まれる暗号スイートは他の暗号スイート (例: AES-128) よりも優先度が低くなります。

  2. 64 ビットブロックの暗号を攻撃するには、最低でも 32 GB のデータを取得する必要があります。SSL/TLS の場合では、単一の SSL/TLS セッションが対象になります (SSL/TLS は新しいセッションで共通鍵を再度ネゴシエートします)。そのため、長期間維持される https 接続が脆弱になる可能性があります。

  3. 多くのコンテキストで、2 つのプレーンテキストブロック間の xor のみを取得しても攻撃で実質的な影響を与えるには不十分です。しかし、以下の条件を満たす場合は攻撃を開始することが可能です。

    • 固定の機密情報が繰り返し送信される場合

    • プレーンテキストの一部が知られている場合

論文に掲載された PoC (Proof of Concept) による攻撃では、すべての通信でサーバーとクライアントとの間で認証トークンが渡されることを仮定しています (トークンは基本的な認証で使用されたクレデンシャルのクッキーを利用可能)。攻撃者は攻撃された元の Web サイトで悪意のある Java スクリプトを実行します。その後、BEAST のような攻撃を実行してクッキーを入手します。

軽減策

  1. SSL/TLS 設定で AES の優先度を DES よりも高くします。Red Hat Enterprise Linux 6 および 7 に同梱されたバージョンの OpenSSL ではすでに優先度がこのように設定されています。
  2. Red Hat Enterprise Linux 5 に同梱されたバージョンの OpenSSL では、3DES の優先度が AES-256 よりも低く、AES-128 よりも高くなっています。そのため、AES-256 ベースの暗号スイートをサーバーで無効にしないでください。
  3. OpenSSL を使用するサーバーでは、AES-128 および AES-256 暗号スイートを無効にしないでください。Red Hat Enterprise Linux に含まれるバージョンの Apache は、DES/3DES ベースの暗号スイートよりも AES が優先されるデフォルトの暗号文字列を使用します。

解決策

  1. これは DES/3DES 暗号の設計に関連した問題で、実装上の問題ではありません。
  2. デフォルトの暗号リストに 3DES よりも優先度が高く設定された強力な暗号スイートが複数あるため、この問題は Red Hat Enterprise Linux 5、6、および 7 に含まれるすべての暗号ライブラリー (OpenSSL、NSS、および GnuTLS) に直接影響しません。
  3. Red Hat Enterprise Linux 5 では、サーバーで AES-256 ベースの暗号スイートを無効にしないでください。Red Hat Enterprise Linux 6 および 7 では、サーバーで AES-128 または AES-256 ベースの暗号スイートを無効にしないでください。

アップストリームでのセキュリティー修正:

OpenSSL:

OpenSSL はこの問題の重大度を「低度」として評価しました。1.0.2 ブランチで 3DES 暗号スイートを HIGH カテゴリーから MEDIUM に変更し、今後のリリースでは 3DES 暗号スイートはデフォルトで無効になります。

NSS:

Mozilla はすべての暗号スイートでデータを制限しています。

関連する問題

アップストリームの OpenVPN も Sweet32 攻撃の影響を受ける可能性があり、CVE-2016-6329 によって追跡されています。Red Hat の OpenVPN 実装はこの問題の影響を受けません。

参考情報

https://access.redhat.com/security/cve/CVE-2016-2183
https://sweet32.info/

Was this helpful?

We appreciate your feedback. Leave a comment if you would like to provide more detail.
It looks like we have some work to do. Leave a comment to let us know how we could improve.
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.