ほとんどの銀行では、128ビットまたは256ビットの暗号化を使用しています。これは何を意味しているのでしょうか?SSLで使用される鍵が128ビットであることを意味しているのでしょうか?
もしそれがSSLの鍵の長さであれば、128ビットのRSA鍵は簡単に解読できます。RSAのサイトでは、1024ビット以上の鍵を推奨しています。
非対称鍵長(RSAのような)と暗号鍵長(AESやRC4のような)は全く異なります。 官民非対称暗号で使われるRSAの鍵は1024ビット以上が望ましい。 AESやRC4などの暗号鍵は128ビット以上が望ましいとされています。 何が違うのでしょうか? RSAは広く公開鍵Nとeを誰もが知ることができます。Nは2つの大きな素数の積になります。 ここで、Nは2つの大きな素数の積です。この合成数Nを因数分解できれば、秘密鍵を導き出すことができ、公開鍵で暗号化されたメッセージを解読することができます。
因数分解は、量子コンピュータ以外では多項式時間でできない難しい問題ですが、素朴なブルートフォースよりもうまく因数分解できる数論のトリックがあります。 自明のことですが、Nの因数を探すとき、1からNまでのすべての整数で割ろうとするのではなく、2以外のすべての偶数を飛ばしたり、素因数だけで割ろうとしたり、sqrt(N)に達したところで止めたりすることができます。現実の世界では、楕円曲線法のような技術が、1つのCPUで数分で~260ビットの合成数を因数分解することができます。
一方、AESやRC4は対称性のある暗号です。 メッセージを復号するには、乱数の鍵が必要です。 128ビットの暗号鍵をブルートフォースで解読するには、2128 ~ 1038 の異なる鍵を、うまくいく鍵が見つかるまで試さなければなりません。 つまり、1秒間に1兆個(10^12)の鍵をチェックできるとすると、ほとんどの鍵をチェックするまでに10^19年かかることになります。 なお、256ビットの鍵をブルートフォースするのは2^128倍大変です(10^57年かかる)。
そこで、銀行サイトにログインし、google-chromeでhttpsの情報をクリックすると、次のように表示されます。
home.ingdirect.comへの接続は128ビット暗号化されています。
この接続はTLS 1.0を使用しています。
接続はRC4_128、メッセージ認証にMD5、鍵交換機構にRSAを使用して暗号化されています。
次に、証明書の詳細情報をクリックして、証明書のフィールドである「subject's Public Key"」を見ると、2048ビットのモジュラス(Nは2つの大きな素数のモジュラス)を使用していることがわかります。
懸念すべきは、暗号化の安全性だけではなく、その実装も重要です。世の中にはsslのセキュリティを完全に回避するような攻撃もあります。
Blackhat Presentation on defeating SSLを参照してください。