[PR] あなたが Kindle で読みたいその本、Kindle に対応したら Twitter でお知らせします。

Firefox で SSL/TLS の暗号化アルゴリズムを変更する

Posted on

ここ最近、SSL/TLS の勉強をしています。いろいろなサイトの暗号化アルゴリズムを確認していると、RC4 のストリーム暗号がよく使われていることに気づきました。なぜだろうと思って調べてみると、「SSL/TLS で BEAST を恐れて RC4 を優先するのは危ない」にその経緯が詳しくまとまっていました。

通常の発想では、従来より脆弱性が指摘されている RC4 よりは AES を優先にするべきとなるところですが、最近はむしろ SSL/TLS では RC4 を優先すべきという論調が増えていました。というのは、ここ 1 ~ 2 年のうちに SSL/TLS において AES を含むブロック暗号を CBC モードで使っている際に有効な BEAST 攻撃や Lucky13 攻撃などが報告されてきており、その対策として RC4 への移行が促されてきたからです。

無線 LAN の WEP が脆弱であることは広く知られていますし、それを支える RC4 にも脆弱性が指摘されています(解読されたわけではなく、理論上考えられていたよりも弱く、解読される危険性が高まったということ)。できることなら、不安の残る暗号化アルゴリズムは使いたくありません。

暗号化アルゴリズムの決定メカニズム

SSL/TLS で使われる暗号化アルゴリズムは、ハンドシェイクプロトコルの最初にクライアントが送信してきた利用可能なアルゴリズムの一覧をもとにサーバが決定しています。

  1. 私は○○と△△と□□の 3 つのアルゴリズムが使えますよ(ブラウザ)
  2. では、○○のアルゴリズムを使いましょう(サーバ)

会話にするとこんな感じです。プロトコル上は、1 番が Client Hello で 2 番が Server Hello です。 Client Hello でアルゴリズムの一覧を送るときに RC4 を除外すれば使われないことになります。

Firefox 24 の場合、36 種類の暗号化アルゴリズムが使えます。 Wireshare でパケットを調べれば分かりますが、本題から逸れるのでまた別の機会に書きます。

about:config で RC4 を無効にする

ここから先は Firefox の about:config をいじるので自己責任で。ロケーションバーに about:config と入力し、検索バーから "rc4" で絞り込みます。 Firefox 24 だと以下の 6 つが見つかります。

  • security.ssl3.ecdh_ecdsa_rc4_128_sha
  • security.ssl3.ecdh_rsa_rc4_128_sha
  • security.ssl3.ecdhe_ecdsa_rc4_128_sha
  • security.ssl3.ecdhe_rsa_rc4_128_sha
  • security.ssl3.rsa_rc4_128_md5
  • security.ssl3.rsa_rc4_128_sha

これらをすべて false にします。右クリックから切り替えを選ぶか、ダブルクリックしてください。これらの設定はすぐに反映されるので、true / false を切り替えて SSL のページにアクセスしてみてください(変わらないときはキャッシュをクリア)。

Google の場合、RC4 が無効の場合は AES 暗号が使われるようです。

SSL の技術情報

どのアルゴリズムを優先するかはサーバ側で自由に決められます。 Apache だと SSLCipherSuite ディレクティブ、Nginx だと ssl_ciphers ディレクティブで設定できます。ロードバランサや SSL アクセラレータでも当然設定できます。

まとめ

ほかにも DES 暗号や Camellia 暗号などさまざまな暗号化アルゴリズムが存在します。 Firefox は簡単に変更できますので、いろいろ試してみるとおもしろいです。普通の人はブラウザの鍵マークを気にするくらいだと思いますが、その裏側はとても奥が深くてたのしいです。