Google ChromeのSSL/TLS暗号化アルゴリズム設定

Google Chromeで某サイトにSSL/TLSで接続した際、暗号化アルゴリズムにRC4が使われていた。
RC4は暗号強度が十分でないので無効化したいが、設定を見ても見つからず。
Googleで調べた所、以下のサイトがヒットした。

SSL/TLS の暗号アルゴリズムの決定メカニズムをパケットレベルで追いかけてみる

Wiresharkでブラウザの使う可能性のあるアルゴリズムを拾い出し、 起動時のオプションでブラックリストを指定すれば良いようだ。

Google ChromeのSSL/TLSで使用されるアルゴリズムのリスト取得

というわけで、早速パケットキャプチャしてみた。
この時のGoogle Choromeのバージョンは36.0.1985.125m
client helloの中から、以下のリストを取得した。

Cipher Suites (20 suites)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
Cipher Suite: Unknown (0xcc14)
Cipher Suite: Unknown (0xcc13)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)
Cipher Suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)

使用を禁止するアルゴリズム

RC4を使っているアルゴリズムを禁止したいので、以下を禁止したい。

Cipher Suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)
Cipher Suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)
Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)

ちなみに、UnknownとなっているCipher Suiteも気になったので調べてみた。

Cipher Suite: Unknown (0xcc14)
Cipher Suite: Unknown (0xcc13)

chromiumのソースコードでは以下のように定義されている。 https://chromium.googlesource.com/chromium/src/net/+/master/third_party/nss/ssl/sslproto.h

#define TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305	0xCC13
#define TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305	0xCC14
ChaCha20やPoly1305については情報が少ないが、以下のサイトが一番参考になりそうだった。 http://googleonlinesecurity.blogspot.in/2014/04/speeding-up-and-strengthening-https.html

簡単に書くと、↓ということらしい。

  • ChaCha20はpadding-oracle攻撃やタイミング攻撃を無効化できる
  • ChaCha20やPoly1305はモバイルデバイスでパフォーマンスに優れる

このアルゴリズムの安全性については詳しくないため、これを無効化すべきかどうかは不明。
情報量が少ないので、他のブラウザではあまり実装されていなさそうな気がする。
とりあえず今回は保留し、禁止しないこととする。

特定のアルゴリズムを禁止

アプリケーション起動時のオプションで、ブラックリストをHex表記で記述する。

"C:\Program Files\Google\Chrome\Application\chrome.exe" --cipher-suite-blacklist=0xc007,0xc011,0x0005,0x0004
この後、Cipher Suitesを確認した所、RC4のアルゴリズムが使われなくなっていることが確認できた。

番外編:Opera12の場合

設定→セキュリティ→セキュリティプロトコル→詳細を開き、チェックボックスで指定するだけ。
Google Chromeもこうなってくれると嬉しい。 Opera12の場合

ちなみに、最近はTLS1.1, 1.2への対応も進んでいると思うので、BEAST攻撃を考慮してSSL3とTLS1を無効にしよう…と思ったら、はてなが非対応だった。
ぜひ改善してほしいと思う。

関連記事


  1. Spring Security + ThymeleafでAjaxリクエストにCSRF対策トークンを適用
  2. 一部のパスだけSpring SecurityのCSRF対策を無効化する
  3. Let's EncryptでDebian+ApacheをSSL/TLS化
  4. SRIによってCDN上のスクリプト改ざんを検知する
  5. OpenSSL+パスワードでファイルの暗号化/復号処理
  6. TrueCryptのレビューレポートを読んでみた
  7. 2013年 クレジットカード情報流出事件

comments powered by Disqus