SSLの暗号強度

公開鍵は共通鍵を交換するためだけに使っていて、実際の通信の暗号強度は共通鍵に依存するよってことは一応知ってたんだけど、その共通鍵の方式とか鍵長はどうやって決まるの、っていうと、ちっともわかってなかったので調べてみた。
プロトコルとしては、client heloでブラウザが通信可能ないくつかの暗号化方式を宣言、その中からサーバ側が適当なものを選んで決定される。apacheの場合、ssl.confあたりにあるSSLCipherSuiteによって、サーバ側で受け入れ可能な方式を決定している。SSLCipherSuiteに指定する値は、opensslの「暗号スイートリスト」。この値だけを見ても、どの方式が許可されているかはわからない。実際に許可する値を調べるには、

root@pentaho# openssl ciphers -v 'ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL'

とやる。-vの後ろに指定しているのが、暗号スイートリストであり、これは、Ubuntu8.04/apache-2.2.8のdefault。最初にALLで使えるもの全部有効にして、!ADHを無効、+HIGHで優先度を上げる、という具合に指定しているらしい。コロンで囲まれた文字列は、メタ文字列であり、例えば'HIGH'は128bitを超える方式を表している。

root@pentaho# openssl ciphers -v 'HIGH'                                     [~]
ADH-AES256-SHA          SSLv3 Kx=DH       Au=None Enc=AES(256)  Mac=SHA1
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
ADH-AES128-SHA          SSLv3 Kx=DH       Au=None Enc=AES(128)  Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1
AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
ADH-DES-CBC3-SHA        SSLv3 Kx=DH       Au=None Enc=3DES(168) Mac=SHA1
EDH-RSA-DES-CBC3-SHA    SSLv3 Kx=DH       Au=RSA  Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA    SSLv3 Kx=DH       Au=DSS  Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA            SSLv3 Kx=RSA      Au=RSA  Enc=3DES(168) Mac=SHA1
DES-CBC3-MD5            SSLv2 Kx=RSA      Au=RSA  Enc=3DES(168) Mac=MD5

となって、AESと3DESのみに絞られていることがわかる。IE6とapacheは通常RC4-128bitで接続しているが、

SSLCipherSuite "HIGH"

としてやると、3DESでの接続となる。
さらに、3DESも無効にしてやると、

root@pentaho# openssl ciphers -v 'HIGH:!3DES'                               [~]
ADH-AES256-SHA          SSLv3 Kx=DH       Au=None Enc=AES(256)  Mac=SHA1
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
ADH-AES128-SHA          SSLv3 Kx=DH       Au=None Enc=AES(128)  Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1
AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1

AESだけになるのだが、この状態ではIE6は接続できない。
こんな状況のせいか、Firefox 3.0.3でいろんなサイトに繋いでみても、AESで繋がるところは意外に少なそう。||yodobashi.com||RC6 128bit||amazon.com||RC4 128bit||ana.co.jp||AES 256bit||kokunaisen.com||AES 256bit