Key-Exchange
Diffie-Hellman 密鑰交換 - 為什麼需要模運算?
有人可以解釋為什麼需要在 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} $ 實際上(計數比儲存更容易)。
為什麼模運算必須用素數完成?
有幾個原因(為什麼更喜歡素數):