為什麼不使用比 2048 位大得多的 Diffie/Hellman 素數?
此處的搜尋表明 2048 位的 D/H 素數是“安全的”?我們怎麼知道這是真的?使用可悲的零售筆記型電腦(英特爾 N5000 Silver),可以找到 60,000 位素數並在大約一周內對其進行測試!在自定義 D/H 加密程序中使用 60,000 位素數,並使用相同的可悲零售筆記型電腦,100K 字節消息的加密(或解密)只需幾秒鐘。
因此,資源密集型部分正在尋找長素數……之後加密或解密是快速和準確的。
為什麼不在 D/H 中使用非常長的素數?
此處的搜尋表明 2048 位的 D/H 素數是“安全的”?我們怎麼知道這是真的?
實際上,我們不知道 - 我們不知道具有任何特定大小素數的 Diffie-Hellman 是安全的
$$ 1 $$. 也就是說,我們不知道 Diffie-Hellman 問題很難,也就是說,如果攻擊者看到這些值 $ g^x \bmod p $ , $ g^y \bmod p $ ,並且還知道值 $ g, p $ , 找到共同值可能是一個簡單的問題 $ g^{xy} \bmod p $ . 現在,對於正確選擇的值 $ p $ 長度為 2048 位(也是一個很好的值 $ g $ 和 $ x, y $ 從好的發行版中選擇),好吧,很多聰明的人都考慮過,沒有人知道方法。現在,每個人都有可能錯過了一些東西,但是在密碼學中通常總是如此。
所以,你問,為什麼我們不去極端保守並使用巨大的(比如,60,000 位)素數?嗯,主要是因為成本:
- 60,000 位素數意味著 60,000 位 = 7.5kbyte 密鑰共享 - 每次都需要交換。為每個新交換交換 15k 數據的成本比我們希望的要高。
- 所花費的時間 - 你說 DH 操作“只需幾秒鐘”;但是,如果您在一個每秒建立數万個連接的大型 TLS 伺服器上,那麼每個連接“幾秒鐘”就相當重要了。
$$ 1 $$:“安全素數”一詞最常用於表示特定含義;這是一個素數 $ p $ 與價值 $ (p-1)/2 $ 也是素數。我假設您並不打算使用“安全”的特定含義,而您的真正意思是“安全”
你的印像似乎是 $ \approx 2,000 $ bit DH prime (可能)是不安全的,但是 $ \approx 60,000 $ bit DH prime 顯然是安全的。我不知道這得到了多大的支持。我提到這一點是因為 DH 在小特徵的 galois 領域上取得了巨大的突破 $ \approx 15 $ 年(我相信目前的密碼分析記錄類似於 $ p\approx 2^{30,000} $ ,至少當人們假設 $ \mathsf{GF}(p) $ 具有特徵 2)。
如果在大特徵 galois 場(甚至素數場)的情況下發生類似的突破,這將動搖雙方的信心 $ p $ 和 $ \log_2p\approx 2,000 $ 和 $ \log_2p\approx 60,000 $ . 這就是說,要使您的“非常安全”的 DH 主要參數有意義,您需要同時
- 足夠偏執,以至於您相信潛伏攻擊的技術水平已經有了很大的改進,即針對 $ \log_2 p\approx 2,000 $ 是可行的,但
- 對 DH 有足夠的信心,以至於您認為在小特徵情況下極其有效的攻擊不會擴展到素數領域情況。
我看不出同時持有這兩種觀點的真正理由。如果您發現有限域 DH 粗略(公平),請切換到基於橢圓曲線或後量子假設的 DH 之類的東西。如果您相信有限域 DH,請使用密碼分析證明很難的參數。