我們可以做多素數 Diffie-Hellman 嗎?
做 Multi-Prime DH 的正確方法是什麼(如果有的話)?
從安全的角度來看,這樣做有什麼好處嗎?
Multi-Prime 與多參與者無關。
多重質數是當我們使用兩個或多個質數並將它們相乘以獲得DH中的模數部分。
找到四個 4096 位安全素數並將它們相乘比找到單個 16384 位安全素數要快。
問題是多素數是否會產生有效且安全的密鑰交換過程。如果是這樣,獲得好的g和p的程序是什麼。
通過 Multi-Prime DH,我假設您的意思類似於 Multi-Prime RSA。
在 Multi-Prime RSA 中,我們選擇具有三個(或更多)素因子的模數;因為私鑰的持有者知道分解,他可以使用更小的素數模量(和更小的指數)計算(使用 CRT 優化),產生適度的加速。
鑑於這就是 Multi-Prime RSA,那麼 Multi-Prime DH 會是什麼?我假設這是我們選擇具有兩個(或更多)素因子的模數的地方。如果我們知道主要因素,那麼我們可以使用 CRT 優化(類似於它在 RSA 中的工作方式)在 DH 操作中獲得兩倍的速度(假設兩個主要因素)。
那麼,如果這是好處,那麼壞處是什麼?如果攻擊者學習了分解,他可以使用它來單獨攻擊模數的每個素數;這將大大改善這項預期的工作。
那麼,我們得出什麼結論?好吧,這將是對一側的適度優化(因子 2)(我們不能假設雙方都知道分解),冒著對手學習它的風險(在這種情況下,它會大大降低安全級別)。
因此,我不能推薦它。
更新:在重新考慮時,我確實看到了一種可能有意義的情況;如果您正在生成短暫的 Diffie Hellman 組(這很不尋常,但是我遇到了支持它的知識淵博的人);在這種情況下,搜尋(比如說)兩個 2048 位素數比搜尋單個 4096 位素數要簡單得多。此外,在那種情況下,我們不必擔心是否 $ p-1 $ 有小因素(因為對應的值 $ \phi(n) $ ,對手不會知道)。系統的安全性將取決於保理的難度 $ n $ (因為該分解過程將主導離散對數問題以較小的素數為模所花費的時間)。因此,在這種極端情況下,這將是有道理的。