ELBのSSLセキュリティポリシーからRC4が除外されました

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

2/12に、AWSのディスカッションフォーラムにて以下のアナウンスが行われました。

ELBにSSL証明書を組み込む際、Cipherの選択を行います。そこで設定するSSLセキュリティポリシーがアップデートされ、SSL CiphersからRC4を除外した「ELBSecurityPolicy-2015-02」がデフォルトで選択されることになりました。

SSL/TLS通信についてのおさらい

ここでSSL/TLS通信について、WebブラウザとWebサーバの関係性に絞ってざっくりとおさらいしてみましょう。

Network_diagram_Untitled_-_Cacoo

 

  • (1)まずユーザーPCはWebブラウザでWebサーバに接続します。このやり取りでどのようなプロトコル(SSLやTLSなど)で暗号化通信を行うのかが確定されます。
  • (2)WebサーバはユーザーPCにサーバ証明書と、後ほど使う公開鍵を送付します。ユーザーPCはこのサーバ証明書を検証し、サーバが本来アクセスしたいサイトであるとの身元確認を行います。
  • (3)サーバの身元が確認出来たら、ユーザーPCは共通鍵を生成し、(2)で受け取った公開鍵を使って共通鍵を暗号化して、Webサーバに送ります。Webサーバは自分が持っている秘密鍵で共通鍵を復号します。
  • (4)これでWebサーバとユーザーPCは同じ共通鍵を共有出来たので、通信の暗号化と復号をこの共通鍵を使って行います。

今回除外されたRC4は、この(4)の部分、実際の通信を暗号化する共通鍵暗号の方式です。

なぜRC4が除外されたのか

共通鍵方式は、データを64ビットや128ビットなど固定長に分割して暗号化する「ブロック暗号方式」と、秘密鍵から生成した擬似乱数(乱数に見えるけど実際はある計算によって求められている乱数ぽい数値)で暗号化する「ストリーム暗号方式」があります。AESやCamellia、3DESなどはブロック暗号方式で、RC4はストリーム暗号方式です。

しかしRC4は生成される擬似乱数に偏りがあり、通信データを収集することで解読出来る可能性があると指摘されました。この辺の詳しい話はCRYPTECの技術報告書をご覧ください。

上記の通り、通信データを収集してしまえば攻撃可能になるため、対策としては「RC4を使わない」しかありません。

設定方法

これまで[ELBSecurityPolicy-2014-10]を適用していた場合は、以下の通り[ECDHE-RSA-RC4-SHA]と[RC4-SHA]が有効になっています。

EC2_Management_Console

これを[ELBSecurityPolicy-2015-02]に変更することで、[ECDHE-RSA-RC4-SHA]と[RC4-SHA]が無効になります。

EC2_Management_Console 2

まとめ

今時RC4しか対応していないWebブラウザなんてありませんので、RC4無効は推奨されるべきです(もちろん動作テストはしましょう)

これを機にSSL/TLSの暗号化設定を見直しされてはいかがでしょうか。