Encryption

混沌能為密碼學提供什麼?

  • October 4, 2021

基於混沌的密碼學面臨很多批評,然而,有人認為它可以提供許多密碼原語,例如流密碼、分組密碼、散列函式、公鑰密碼。

撇開密碼學中應用程序混亂的所有缺陷不談,混亂至多不是一個可用於流密碼的偽隨機生成器(如果這可能的話)?

注意:我在徘徊為什麼有些人認為它適用於許多密碼原語。

$$ Edit $$換句話說:在一系列偽隨機源(如 LFSR)上建構整個密碼學分支是否可行? 或者

例如,對於分組密碼,混沌不是可以用於生成隨機序列,這些隨機序列是為我們建構我們建構為流密碼或分組密碼的密碼而分離的?

或者

一些作者說混沌適用於 prng,但它未能提供經過批准的密碼原語。提議的密碼中的混沌角色不只是一個prng嗎?

在一系列偽隨機源上建構整個密碼學分支是否可行?

理論上,是的。如果有一個從混沌系統建構的高效且密碼安全的偽隨機數生成器,那麼它可以作為合理實用的對稱密碼學甚至簽名的基礎。

問題是我們不知道這樣的事情。從混沌系統建構的 PRNG,甚至具有令人信服的安全論據¹,與現代 CSPRNG² 相比效率相形見絀(除非我們將“混沌系統”的定義擴展到超出通常的迭代連續函式 $ \mathbb R $ ,或其離散近似值)。


一個(加密安全)偽隨機數生成器,在它的現代定義中,是一個足夠強大的工具來建構所有其他對稱加密功能:CPACCA(2) -安全密碼、分組密碼消息驗證碼認證加密雜湊……一些例子:

  • 密碼可以從 (CS)PRNG 構造,方法是使用密鑰和真正隨機的隨機 IV 來播種 PRNG,並通過 PRNG 的輸出與明文³ 的 XOR 構造密文。安全性直接來自 PRNG,這是構造密碼的一種很好且常見的方法,它有一個名稱:流密碼
  • 通過使用 PRNG 構造輪函式,可以從 PRNG 構造塊密碼作為Feistel 密碼。塊的密鑰、輪數和右半部分為 PRNG 提供種子,其輸出是與左半部分進行異或的值。

如果 PRNG 是,這些結構顯然是密碼安全的。但除了流密碼之外,它們在實踐中並未使用,主要是出於效率原因。常見的 CSPRNG 由分組密碼或/和散列構成,而不是相反。


從 PRNG 建構公鑰加密原語是否可行?

是的簽名。我們可以從安全 PRNG 建構安全雜湊,然後通過各種方法從雜湊中建構安全簽名,包括SPHINCS。通過這條路線,任何有效的 PRNG 都會導致一個合理的簽名方案。

對於加密和密鑰交換,我懷疑是否已知具有安全證明甚至令人信服的論據的方法。我不相信通過更直接的路線從連續混沌系統建構非對稱加密的嘗試⁴。


¹我們不能要求數學意義上的證明,因為我們沒有任何 CPRNG 的安全證明。但我們不想接受通過預定義隨機性測試的事實作為安全論據,例如NIST SP800-22rev1adieharder。一個實驗測試至少應該是:熟練的人類密碼學家不可能知道 PRNG 的設計,在經典電腦的幫助下,將帶有真正隨機性的 PRNG 的輸出與真正的隨機性區分開來。我們希望從 PRNG 的某些參數(如狀態大小或/和輪數)的最小值開始將其擴展到這種不可能性,而實際使用的參數設置得更大。

² 如ChaCha以密鑰和IV為種子,全零明文派生出來的。

³ 解密與明文和密文交換類似,只是加密提取IV並使其成為密文的前導碼,而解密則從前導碼中提取IV。

⁴ 一種這樣的嘗試(付費專區)使用切比雪夫多項式 $ T_r $ 大度 $ r $ . 私鑰是 $ r $ ,匹配的公鑰是 $ T_r(x) $ 對於一些公共固定隨機選擇的實數 $ x\in[-1,1] $ . 對於任何整數 $ s>0 $ 它擁有 $ T_r(T_s(x))=T_s(T_r(x)) $ 並且(忽略如何計算的問題)允許模擬Diffie-Hellman 密鑰交換,以及來自該ElGamal 加密。當我第一次閱讀它時,我不相信沒有論證的安全性斷言,以及可行性的某些方面(例如,對於實數值,整數的精度為 2048 位) $ r $ 和 $ s $ 可以選擇隨機的 910 位整數,而不是文章中最多 133 個素數的乘積)。

更新:發現密碼系統不安全,請參閱這篇文章(付費專區)。在很晚的一本關於基於混沌的密碼學(paywalled) 的書中,關於公鑰密碼學(paywalled)的這一章中仍然會介紹它,並承認不安全。我發現它說明了整個學術領域的狀況。這是最好的情況:大多數關於安全的主張,都是用相對薄弱的論據提出的,從來沒有被認真調查過,也沒有被證明是錯誤的。

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