為什麼離散對數模複合模不流行且未在標準中定義?
經典的離散對數問題是找到 $ x $ 這樣 $ g^x\equiv h\bmod p $ 在哪裡 $ p $ 是一個素數並且 $ g $ 是乘法群模的生成器 $ p $ .
這種方法的缺點似乎是知識 $ \lambda(p) $ 在哪裡 $ \lambda $ 是 Carmichael Lambda 函式。
相反,假設我們有 $ g^x\equiv h\bmod q $ 在哪裡 $ q $ 是複合的 $ \lambda(q) $ 是隱藏的,因為分解很困難。
仍然可以在 Alice 和 Bob 身邊執行 Diffie-Hellman,因為 $ (g^x)^y\bmod q $ 可以在不知道的情況下計算 $ \lambda(q) $ 因此在不知道因式分解的情況下 $ q $ .
這種方案包括分解作為一個額外的障礙,以防離散對數模素數被破壞,那麼為什麼這在標準中不流行和定義呢?
請注意,如果離散對數模素數被破壞,則無法使用 $ q $ 長度相同 $ p $ . 如果我們使用相同的長度,我們只會獲得更小的安全性。 $ q $ 長度必須更大,但關鍵是它不能是素數。也許 $ q $ 是產品 $ \log p $ 質數每個長度 $ \log p $ 位。
該問題的另一種表述是“假設一個預言機解決 DLP 模數,我們可以解決 DLP 模一個太大而無法分解的複合嗎?” 如評論中所述,每個因素也相當大。
這種方案包括分解作為一個額外的障礙,以防離散對數模素數被破壞,那麼為什麼這在標準中不流行和定義呢?
實際上,它不會是“額外的屏障”,而是額外的攻擊途徑。畢竟,針對離散對數問題的標準攻擊仍然適用於復合模數。此外,攻擊者有可能分解模數,然後以每個素數為模解決離散對數問題。質數遠小於全模數,因此這些子問題相對容易解決;困難主要是因式分解的努力。
您在改寫時說“如果我們有一個 Oracle 解決了以素數為模(但不是複合)的離散日誌問題怎麼辦”,好吧,因為我們沒有跡象表明存在這樣的 Oracle,我們不必太擔心它。在任何情況下,您的構造都將其更改為“如果我們有一個解決分解問題的 Oracle”(因為一旦我們分解,解決離散對數模較小的主要因素相對容易)。
另一方面,這並不能回答“為什麼標準不這樣做?”的問題。嗯,標準不是我寫的,所以不能在那裡給出權威的答案;但是我會注意到,想出一個無所事事的小組變得相當困難;也就是說,我們非常確定一個組實際上是安全的,並且沒有人有後門。
對於素數模數,設計一個最終生成“好”素數的確定性過程相當容易;也就是說,我們知道大素數子群(並且不易受到特殊數域篩選算法的影響);有了這個,我們相當有信心,它的設計沒有考慮到特殊的漏洞。
相比之下,我們沒有這麼好的方法來生成一個確定的過程,該過程生成一個複合數的未知分解(並且已知難以分解),並且還有一個大的粗糙
$$ 1 $$具有已知生成器的子群。我們可能會做的是依靠一些可信的權威來為我們生成一個。 好吧,“受信任的”部分對很多人來說是一個交易破壞者。在提出我們的加密參數時,沒有人會同意任何人的信任。而且,是的,“信任”是正確的詞;經銷商可以通過多種方式生成複合模數,他們可以解決離散對數問題,但其他人不能(主要是通過使用他們可以解決離散對數問題的不同素數,然後將它們相乘)一起藏東西)。
$$ 1 $$: 粗略,我的意思是沒有小的主要因素。這不是標準術語(因此是此腳註);這是“平滑”的明顯反義詞(僅由小因素組成)。