Number-Theory

對於 Diffie-Hellman,g 必須是生成器嗎?

  • February 2, 2015

由於最近有一些關於 Diffie-Hellman 的問題,我今天早上在想:必須 $ g $ 在 Diffie-Hellman 中是生成器嗎?

回想一下 Diffie-Hellman 的數學:

給定公共參數 $ p $ (一個大素數)和 $ g $ (總是被稱為發電機 $ \mathbb{Z}^*_p $ ).

  1. 愛麗絲選擇 $ a $ 隨機發送 $ A \gets g^a \mod{p} $ 給鮑勃。
  2. 鮑勃選擇 $ b $ 隨機發送 $ B \gets g^b \mod{p} $ 給愛麗絲。
  3. 愛麗絲計算 $ S \gets B^a \mod{p} $
  4. Bob 計算 $ S \gets A^b \mod{p} $

從上面的數學,我看不出有什麼需要 $ g $ 成為一個生成器,所以數學應該可以工作,即使 $ g $ 不是發電機。

就安全性而言,顯然有 $ g $ 做一個發電機最好 $ |g| $ (或順序 $ g $ ) 將是最大的 $ g $ 確實是發電機。這是選擇的唯一理由嗎 $ g $ 成為發電機?

首先,我們討論的是乘法,所以我們在 $ \mathbb{Z}_p^* $ , 不是 $ \mathbb{Z}_p $ .

根據定義,任何整數 $ g \in \mathbb{Z}p^* $ 是…的生成器 $ g $ ,即集合 $ g^k \mod p $ 對於所有整數值 $ k $ . 的順序 $ g $ 是最小的 $ k \geq 1 $ 這樣 $ g^k = 1 \mod p $ .

為了健全(Alice 和 Bob 最終使用相同的共享密鑰),任何 $ g $ 會做。

為了安全起見,我們需要順序 $ g $ 是足夠大的素值的倍數,通常表示為 $ q $ . 沒有必要 $ g $ 產生整個 $ \mathbb{Z}p^* $ . 沒有必要的順序 $ g $ 正是** $ q $ .

如果 Diffie-Hellman 的目標安全級別是“ $ t $ 位”(即係統將抵抗攻擊至少達到計算工作量 $ 2^t $ ), 然後 $ p $ 必須足夠大(有關估計,請參閱此站點,但粗略地說,您需要一個 1024 位整數 $ t = 80 $ ) 和大小 $ q $ 必須至少 $ 2t $ 位。此外,DH 私鑰 ( $ a $ 和 $ b $ ) 必須是至少隨機且均勻生成的整數 $ 2t $ 位。沒有必要 $ a $ 和 $ b $ 在整數模之間均勻生成 $ q $ ,只是它們是在足夠大的範圍內生成的(這與 DSA 不同,在 DSA 中,我們需要隨機 $ k $ 必須在 $ [1, q-1] $ 範圍)。

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