公開日:2020/09/14 最終更新日:2020/09/14

JVNTA#95716145
TLS 1.2 およびそれ以前の Diffie-Hellman 鍵交換に対する攻撃手法について (Raccoon Attack)

概要

TLS (Transport Layer Security) 1.2 およびそれ以前の鍵交換手順で Diffie-Hellman が使われる場合に対し、中間者攻撃により pre-master secret を解読する攻撃手法 (Raccoon Attack) が報告されています。

影響を受けるシステム

  • TLS 1.2 およびそれ以前の  Diffie-Hellman 鍵交換を行うシステム

詳細情報

TLS (Transport Layer Security) 1.2 およびそれ以前の鍵交換手順で Diffie-Hellman が使われる場合に対し、中間者攻撃により pre-master secret を解読する攻撃手法 (Raccoon Attack) が報告されています。

TLS の暗号化通信では、共有鍵暗号系アルゴリズムによる暗号化を行います。クライアント側とサーバ側で同一の暗号化鍵を共有するために、TLS 通信の最初の手順として互いに生成した乱数に基づくデータをやりとりし、その値に基づき暗号化鍵生成に必要となる情報(pre-master secret)を共有します。この後、それぞれが pre-master secret を使って暗号化鍵を生成します。
pre-master secret を得るための手順としては RSA や Diffie-Hellman など複数の手順が規定されており、サーバとクライアントのやりとりにおいて適切な手順が使われます。また、相手から受け取った情報から pre-master secret を生成する過程では、ハッシュ関数が複数回実行されます。

攻撃者は、中間者攻撃により pre-master secret を共有するための通信データを盗聴し、クライアント側が提示するデータを取得します。次にクライアント側を騙って、サーバ側に対し新たな TLS セッション開始を複数回仕掛けます。クライアント側から受け取る乱数に応じてサーバ側で実行されるハッシュ関数の回数が異なるため、サーバ側からの応答速度も変化します。攻撃者はこれらサーバ側からの応答速度の違いを計測し、それを元に pre-master secret を解読します。

詳細は、報告者が公開している情報を参照してください。

想定される影響

プロトコルバージョン 1.2 あるいはそれ以前の TLS セッションにおいて Diffie-Hellman 鍵交換を行っており、さらに複数の TLS セッションにおいて同一の DH パラメタを使用している場合、中間者攻撃を行う第三者によって、暗号化された通信内容の一部を解読される可能性があります。

対策方法

  • TLS 1.3 のみを使う
  • TLS 1.2 およびそれ以前では Diffie-Hellman 鍵交換を用いない
  • TLS 1.2 およびそれ以前の Diffie-Hellman 鍵交換では、DH パラメタをセッション毎に変更する

参考情報

  1. Raccoon Attack
  2. Pull Request #462 -- tlswg/tls13-spec (GitHub)
    Preserve leading zeros in Diffie-Hellman secrets.
  3. Japan Vulnerability Notes JVNVU#91973538
    OpenSSL における暗号通信を解読可能な脆弱性 (Raccoon Attack)

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia