3DESの扱いが変わってきた
3DESに関して最近確認したことなどを記述します。
システムを運用する方、脆弱性を調査する方などに参考にしていただければ。
背景
2016年8月に、3DESおよび64ビットのブロック暗号に対するSWEET32攻撃が報告されました。 このOpenSSLのブログでは、3DESの強度の評価を“HIGH”から“MEDIUM”に下げるとアナウンスされています。
脆弱性スキャナの対応
脆弱性スキャナの1つであるNessusでも評価の変更があったようで、2016年12月頃から3DESを中程度の強度の暗号として挙げるようになりました。
Here is the list of medium strength SSL ciphers supported by the remote server : Medium Strength Ciphers (> 64-bit and < 112-bit key) TLSv1 EDH-RSA-DES-CBC3-SHA Kx=DH Au=RSA Enc=3DES-CBC(168) Mac=SHA1 ECDHE-RSA-DES-CBC3-SHA Kx=ECDH Au=RSA Enc=3DES-CBC(168) Mac=SHA1 DES-CBC3-SHA Kx=RSA Au=RSA Enc=3DES-CBC(168) Mac=SHA1
上記のように3DESがMedium Strength Ciphers(CVSS 4.3)として検出されています。 説明文では「< 112-bit」と書いているのに3DESが挙がってきたので、ロジックが変わったのか、それとも誤検知?と思って調べてみると、3DESを決め打ちでMEDIUMとしていました。 以下、該当ファイル(ssl_funcs.inc)の抜粋です。
# 3DES to Medium because of CVE-2016-2183. if ("Enc=3DES-CBC" >< desc) return CIPHER_STRENGTH_MEDIUM;
CVE-2016-2183はSWEET32のCVEなので、これを受けての変更であることが分かります。 なおNessusの該当プラグインの更新日付は2015年だったので、脆弱性の検出ロジック自体に変更はありませんでした。
その他のスキャナはというと、よくSSL/TLSのチェックに使われるQualysのSSL Server Testでは、本エントリの執筆時点で脆弱とはしていませんでした(適当なサーバのスキャン結果を見て確認)。sslscanでは3DESがハイライトされるようになりました。
他に影響しそうなものとしてはASV Scanなどがあります。一概には言えませんが、仮に現時点でPass判定でも近い将来はFail判定になるでしょう。
なので、現行のシステムは、計画的に3DESからAES等への移行をすすめる必要があると考えています。
3DESを無効化したときの影響
暗号スイートを無効化すると気になるのは影響範囲です。古いブラウザだと接続できなくなる可能性があります。 手元の環境と前述のQualys SSL Server Testでシミュレーションしてみました。
環境
設定ファイルも抜粋しておきます。
SSLProtocol TLSv1.2 SSLCipherSuite HIGH:!DH:!3DES
この状態で、有効な暗号スイートを確認しました。
Supported Server Cipher(s): Preferred TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve P-256 DHE 256 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve P-256 DHE 256 Accepted TLSv1.2 256 bits AES256-GCM-SHA384 Accepted TLSv1.2 256 bits AES256-SHA256 Accepted TLSv1.2 256 bits AES256-SHA Accepted TLSv1.2 256 bits CAMELLIA256-SHA Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve P-256 DHE 256 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve P-256 DHE 256 Accepted TLSv1.2 128 bits AES128-GCM-SHA256 Accepted TLSv1.2 128 bits AES128-SHA256 Accepted TLSv1.2 128 bits AES128-SHA Accepted TLSv1.2 128 bits CAMELLIA128-SHA
結果
結果は以下のようになりました。
サイズが大きいですが結果のスクリーンショットを貼っておきます。
条件をゆるくしてTLSv1.0を有効にして試すと、IEやAndroidの古いバージョンでも接続可能という結果になりました。 でもTLSの1.0は1.0でPCI DSSで引っかかったりしているので、また別の問題が……
まとめ
3DESに関する暗号強度の評価の変化、脆弱性スキャナによる評価について調査しました。また、無効化した場合の影響範囲について調査しました。
暗号アルゴリズムの危殆化はずっとついて回る問題なので、面倒ですが継続的に追っていくしかないですね。
その他
CRYPTRECはそろそろ更新されるんだろうか。