2013-02-07 94 views
0

我想創建一個TLS套接字連接。我知道TLS有幾種交換密鑰的方法,例如。 RSA,Diffie-Hellman等。我如何強制使用Diffie-Hellman密鑰交換而不是其他形式的密鑰交換?如何強制使用Diffie Hellman密鑰交換

我知道如果使用Diffie-Hellman密鑰交換,它很容易受到中間人攻擊。使用RSA時,我們有防止MITM的服務器認證。但我擔心的一個問題是,使用RSA禁止前向保密。

我該怎麼辦?

+0

看看這個:http://stackoverflow.com/questions/12846017/java-ssl-tls-with-anonymous- diffie-hellman –

+0

你「知道」是錯誤的。 Ephemeral Diffie-Hellman密碼套件*可以*認證服務器,防止MITM攻擊,同時提供前向保密。 – erickson

回答

3

指定密鑰交換方法是通過選擇一個支持該密鑰交換方法的密碼套件來完成的。

您可以使用setEnabledCipherSuitesSSLSocket(或SSLEngine)上的密碼套件。

SunJSSE provider documentation中提供了支持的密碼套件表以及默認情況下使用Oracle JRE啓用的表。

匿名密碼套件(_DH_anon_)是易受MITM攻擊的套件。

_DH_RSA__DH_DSA_密碼套件也使用RSA或DSA來驗證DH密鑰交換(不是用於密鑰交換本身),以防止MITM攻擊。另外,對於橢圓曲線變體,DH密碼套件(包含_DHE__ECDHE_的那些)提供了完全向前保密。 (非短暫_DH_RSA__DH_DSA_密碼套件不被太陽JSSE提供支持反正)

相關問題