生存報告

主に情報セキュリティ関連のエントリをたまに書いて、存命であることを報告するページ。

3DESの扱いが変わってきた

3DESに関して最近確認したことなどを記述します。

システムを運用する方、脆弱性を調査する方などに参考にしていただければ。

背景

2016年8月に、3DESおよび64ビットのブロック暗号に対するSWEET32攻撃が報告されました。 このOpenSSLのブログでは、3DESの強度の評価を“HIGH”から“MEDIUM”に下げるとアナウンスされています。

脆弱性スキャナの対応

脆弱性スキャナの1つであるNessusでも評価の変更があったようで、2016年12月頃から3DESを中程度の強度の暗号として挙げるようになりました。

f:id:tosebro:20161226011450p:plain

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  

結果

結果は以下のようになりました。

  • PCは、IEは最新版のみ、その他のブラウザは問題なさそう。
  • スマホは、iOSは問題なさそう、Androidは4.4未満は接続不可。
  • ガラケーは接続不可。そもそもTLSv1.0までしか対応していない。

サイズが大きいですが結果のスクリーンショットを貼っておきます。

f:id:tosebro:20161226020444p:plain:w300

条件をゆるくしてTLSv1.0を有効にして試すと、IEAndroidの古いバージョンでも接続可能という結果になりました。 でもTLSの1.0は1.0でPCI DSSで引っかかったりしているので、また別の問題が……

まとめ

3DESに関する暗号強度の評価の変化、脆弱性スキャナによる評価について調査しました。また、無効化した場合の影響範囲について調査しました。

暗号アルゴリズムの危殆化はずっとついて回る問題なので、面倒ですが継続的に追っていくしかないですね。

その他

CRYPTRECはそろそろ更新されるんだろうか。