0

TLS ソケット接続を作成したい。TLSにはキーを交換する方法がいくつかあることは知っています。RSA、Diffie-Hellman など。他の形式の鍵交換ではなく、Diffie-Hellman 鍵交換の使用を強制するにはどうすればよいですか?

Diffie-Hellman 鍵交換を使用すると、中間者攻撃に対して脆弱になることがわかっています。RSA を使用する場合、MITM を防止するサーバー認証があります。しかし、私が懸念していることの 1 つは、RSA を使用すると前方秘匿性が妨げられることです。

私は何をすべきか?

4

1 に答える 1

3

鍵交換方法を指定するには、その鍵交換方法をサポートする暗号スイートを選択します。

SSLSocketを使用して(またはSSLEngine)の暗号スイートを使用できsetEnabledCipherSuitesます。

サポートされている暗号スイートの表と、Oracle JRE でデフォルトで有効になっている暗号スイートの表は、SunJSSE プロバイダーのドキュメントで入手できます。

匿名暗号スイート ( _DH_anon_) は、MITM 攻撃に対して脆弱なものです。

_DH_RSA_または暗号スイートは_DH_DSA_、MITM 攻撃を防ぐために、(鍵交換自体ではなく) DH 鍵交換の認証にも RSA または DSA を使用します。さらに、エフェメラルDH 暗号スイート (_DHE_または_ECDHE_楕円曲線バリアントを含むもの) は、Perfect Forward Secrecy を提供します。(いずれにせよ、Sun JSSE プロバイダは非一時的_DH_RSA_または_DH_DSA_暗号化スイートをサポートしていません。)

于 2013-02-07T19:47:00.807 に答える