在 Diffie-Hellman 中重用素數 p、g 和 a 有什麼問題嗎?
假設我總是在 DH 中重複使用 p、g 和 a,並且有人監視我的通信。有沒有辦法這個人可以利用它對我進行某種攻擊?
我相信重用 p 和 g 不是一個大問題,但是我不太確定 a。
在 Diffie-Hellman 的開創性論文中描述了 Diffie-Hellman Key Exchange * (DHKE),我們讓 Alice 和 Bob 想要進行密鑰交換,而 Oscar 是壞人(論文中沒有提到奧斯卡)。在 DHKE 設置中
- $ p $ 是 Alice、Bob 和 Oscar 已知的公共素數模數。
- $ g $ 是 Alice、Bob 和 Oscar 已知的公共基數,不必是素數。
這 $ a $ 和 $ b $ 是 Alice 和 Bob 在每個會話中生成的隨機值(不一定是素數)。生成密鑰後,他們可以刪除 $ a $ 和 $ b $ . 它們不會被轉移為 $ a $ 或者 $ b $ ,它們被轉移為 $ g^a $ 和 $ g^b $ .
- 這被稱為ephemeral-ephemeral DHKE(或標準 DHKE)
標準 DHKE,易受中間人攻擊(主動攻擊者用自己的公鑰替換兩個公鑰並創建兩個通道)。為了緩解您需要像在 TLS 中一樣的身份驗證。
ephemeral-ephemeral DHKE 具有前向保密性,每個會話生成一個新密鑰並在會話結束時丟棄。如果交換的密鑰被刪除,攻擊者就沒有簡單的方法來找到它們。
作為中間的被動人,奧斯卡認為 $ g^a $ , $ g^b $ 並想計算 $ g^{ab} $ . 這稱為Diffie-Hellman 問題,對於某些群體來說,這是一個難題。
訪問 $ a $ 或者 $ b $ , Oscar 必須解決離散對數問題 (DLP)和DLP 執行的通用算法 $ O(\sqrt{p}) $ . 為了防止通用離散對數攻擊 $ p $ 被選擇一個安全的素數 $ p = 2q+1 $ 在哪裡 $ q $ 是另一個主要反對者Pohlig-Hellman。有關密鑰大小,請參見keylength.com。
- 還有靜態短暫的 DHKE ,其中一方總是選擇一個新的隨機 $ a $ 一個是固定的 $ b $ .
- 還有static-static DHKE ,雙方都用fixed $ a $ 和 $ b $ .
所以你的情況:
它是靜態靜態或靜態短暫的。
**簡而言之:**沒問題 $ p $ 和 $ g $ . 但奧斯卡沒有得到 $ a $ 和 $ b $ 作為中間的被動人。如果您再次使用,他將看到相同的值 $ g^a $ 和 $ g^b $ ,但是,您將沒有前向保密。
注意: 靜態 DHKE已從 TLS 1.3 中刪除。
- 實際上,在 DHKE 中,密鑰是建立而不是交換的。