RSA 和 Diffie-Hellman 有什麼區別?
我在很多網站上都讀過同樣的東西:RSA 用於使用伺服器和客戶端的公鑰和私鑰進行通信,而 Diffie-Hellman 只是用於交換相同的密鑰,然後將用於兩者加密和解密。但它們都依賴於相同的數學。
例如:Quora 上的這個問題:
然後,當我讀到 RSA 也共享一個主密鑰和預主密鑰時,我感到很困惑。如本答案所述。
這裡的問題是:RSA 是使用公鑰和私鑰來加密整個對話,還是僅用於加密密鑰,然後加密取決於該對稱密鑰?如果它用於使用與 Diffie-Hellman 中相同的數學來加密密鑰,那麼有什麼區別呢?
在實踐中,在 TLS 等情況下,作為混合密碼系統的一部分,將使用公鑰加密來加密用於加密實際消息的秘密。這樣做是因為非對稱加密比對稱加密慢得多。
但是,還有其他密碼系統和應用程序直接使用公鑰加密。例如,勒索軟體並不關心加密某些東西需要多長時間,它從不擁有解密密鑰中受益匪淺。
還有一些密碼日誌記錄方案直接使用公鑰加密:
由於審計日誌的取證價值,在日誌系統中提供妥協彈性和僅附加屬性以防止主動攻擊者至關重要。不幸的是,現有的對稱安全日誌記錄方案無法公開驗證,也無法解決需要公開審計的應用程序……
因此,公鑰加密是用於密鑰交換還是用於數據本身,實際上是工具在哪裡使用的問題。
RSA 和 Diffie-Hellman 基於不同但相似的數學問題。雖然它們都使用模冪運算,但它們的確切作用/工作原因是不同的。當您查看如何攻擊每一個時,這一點很明顯:RSA受到整數分解的威脅,而DH受到離散對數的威脅。
另外:DH是一種“密鑰交換”算法,不同於“公鑰加密”;它允許您和另一個人相互獲得相同的資訊,而其他人則不能。它或多或少等同於對隨機消息使用公鑰加密。這與公鑰加密形成對比,您可以選擇雙方都知道的消息。
請注意,Diffie-Hellman 可以變成公鑰加密。
tl;博士
兩者都使用模冪來提供主要功能(RSA 的加密/簽名生成,DH 的密鑰協議),但根本問題,密鑰對生成和輸入/輸出的安全屬性不同