Key-Exchange

Diffie-Hellman 密鑰交換 - 為什麼需要模運算?

  • December 19, 2021

有人可以解釋為什麼需要在 Diffie-Hellman 密鑰交換中進行模運算嗎?

假設我們在沒有模運算的情況下進行 DH ( $ A = g^a, B = g^b $ )。那行不通,因為對數( $ a = \log_gA $ ) 容易計算嗎?為什麼模運算必須用素數完成?

我知道這是一個基本問題,對不起。我了解協議,但不了解易於計算和不易於計算的數學。我想我們需要 $ A = g^a \bmod p $ 而不僅僅是簡單的 $ A = g^a $ , 因為 $ \log_gA \bmod p $ 很難計算…如果沒有 $ \bmod p $ ?

提前謝謝了。

那行不通,因為對數( $ a=\log_gA $ ) 容易計算嗎?

是的,除其他外。

  • 我們知道如何有效地計算實數上的對數(因此這將不具有安全性)。
  • 我們不能從無限範圍(所有自然數)中隨機均勻抽樣,這意味著你不能隨機抽取一個自然數,因為每個自然數都會有 $ 0 $ 被抽中的機率。這使得密鑰生成變得困難(是的,在技術上可以限制這裡的長度)。
  • 我們無法儲存,更不用說傳輸如此龐大的數字。例如假設 $ g=3 $ 現在選擇一個標準大小的 DH 指數 $ a $ 長度為 2048 位。 $ g^a $ 現在會有 $ 1.5\cdot 2^{2048} $ 位長。我們不能儲存它。我們甚至不能指望 $ 2^{192} $ 實際上(計數比儲存更容易)。

為什麼模運算必須用素數完成?

有幾個原因(為什麼更喜歡素數):

  • 它給了我們很好的數學性質。 $ \mathbb F_p $ 是一個,即每個元素都有一個乘法逆元,而 $ \mathbb Z_n $ 是一個,其中並非每個元素都有乘法逆元。
  • 它可以防止後門。如果你選擇一個複合值,知道這些因素的人計算對數的時間會明顯更容易。選擇素數可以確保如果您重用參數,任何人都知道任何因素。

引用自:https://crypto.stackexchange.com/questions/50745