1. 程式人生 > >DH 與RSA的區別

DH 與RSA的區別

library supports 算法 參數 for 簽名 公鑰 chang 幫助

有一朋友這樣問到“dh是密鑰協商交換用的,為什麽只有在服務器上有dh.pem文件,而客戶端裏沒有,我就不明白了,客戶端與服務器都有rsa公私鑰了,可以傳輸對稱密鑰了,為什麽還需要dh算出對稱密鑰呢?”

我們先一下,Open×××的man幫助是如何說dh選項的。
--dh file
File containing Diffie Hellman parameters in .pem format (required for --tls-server only).

Set file=none to disable Diffie Hellman key exchange (and use ECDH only). Note that this requires peers to be using an SSL library that supports ECDH TLS cipher suites(e.g. OpenSSL 1.0.1+, or mbed TLS 2.0+).

Use openssl dhparam -out dh2048.pem 2048 to generate 2048-bit DH parameters. Diffie Hellman parameters may be considered public.

1、使用階段不同:DH用於TLS握手期間,RSA是用於數據通信階段。

2、如果沒有這個選項,啟動Open×××服務器會出錯 Options error: You must define DH file (--dh)

那麽什麽是Diffie-Hellman參數文件?
迪菲·赫爾曼密鑰交換(Diffie–Hellman key exchange,簡稱「D–H」) 是一種安全協議。它可以讓雙方在完全沒有對方任何預先信息的條件下通過不安全信道創建起一個密鑰。這個密鑰可以在後續的通訊中作為對稱密鑰來加密通訊內容。這個DH參數不是安全敏感的,所以只要在Open×××服務器有一份就可以了,而且即使被第三方拿到了,也無所謂。

如果想深入一些,可以這樣來理解:

1、RSA和DH都基於非對稱算法。

2、RSA: 常用的示例是Alice向Bob發送消息,並使用Bob的公鑰加密消息。向Bob發送消息。鮑勃用他的私鑰解密。驗證簽名以確保Alice發送簽名。該消息將成為對稱加密密鑰。這是用於保護連接的內容。

3、DH Diffie Hellman交換依賴於生成秘密值的兩個單獨實體。通過一些數學算法,他們都能夠產生共同的密鑰值。這是一個對稱密鑰。

4、使用RSA,可以進行加密和簽名的密鑰對。使用DH,只執行加密,沒有簽名機制。

DH 與RSA的區別