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はpadding-oracle攻撃やタイミング攻撃を無効化できる
- ChaCha20やPoly1305はモバイルデバイスでパフォーマンスに優れる
このアルゴリズムの安全性については詳しくないため、これを無効化すべきかどうかは不明。
情報量が少ないので、他のブラウザではあまり実装されていなさそうな気がする。
とりあえず今回は保留し、禁止しないこととする。
特定のアルゴリズムを禁止
アプリケーション起動時のオプションで、ブラックリストをHex表記で記述する。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --cipher-suite-blacklist=0xc007,0xc011,0x0005,0x0004
番外編:Opera12の場合
設定→セキュリティ→セキュリティプロトコル→詳細を開き、チェックボックスで指定するだけ。
Google Chromeもこうなってくれると嬉しい。
ちなみに、最近はTLS1.1, 1.2への対応も進んでいると思うので、BEAST攻撃を考慮してSSL3とTLS1を無効にしよう…と思ったら、はてなが非対応だった。
ぜひ改善してほしいと思う。