Encryption

ChaCha20 的安全性如何?

  • October 1, 2018

我想實現一個流密碼來加密我的 Python 程式碼中非常敏感的數據。我聽說過 ChaCha20 算法和 PyCryptodome 庫 ,但它的安全性如何?

  • 奧馬松等人。表明 ChaCha6 可以受到時間複雜度的攻擊 $ 2^{139} $ 和ChaCha7 $ 2^{248} $ .
  • 石等人。給出了基於二階微分的攻擊 $ 2^{136} $ 對於 ChaCha6 和 $ 2^{246.5} $ 對於ChaCha7。
  • Maitra,選擇的 IV 密碼分析和攻擊的時間複雜度表明它可以減少到 $ 2^{239} $ 對於ChaCha7。
  • Choudhuri 和 Maitra 得出結論,ChaCha12 足以使用非線性輪函式和線性近似的混合模型來對抗差分密碼分析的 256 位密鑰……

$$ \begin{array} {|l|l|} \hline Attack & Evaluation \ \hline \text{Differential Analysis } & \text{No attack found}\ \text{Rotational Cryptanalysis} & \text{No attack found}\ \text{Boomerang Attack} & \text{No attack found} \ \text{Linear Cryptanalysis} & \text{No attack found}\ \text{Distinguishing Attack} & \text{No attack found}\ \text{Guess and Determine Analysis} & \text{No attack found}\ \text{Time-Memory-Data Tradeoff Attack } & \text{Protected}\ \text{Practically ChaCha Algebraic Attack} & \text{No attack found} \ \text{Attacks on Initialization Process} & \text{No attack found}\ \text{Single Power Analysis } & \text{Protected}\ \text{Practically Difference Power Analysis } & \text{Protected Practically}\ \text{Cache Timing Attack} & \text{No attack found}\ \text{Fault Injection Analysis } & \text{Protected Practically}\ \hline \end{array} $$

上表和結果來自KDDI Research, Inc

  • 簡單的力量攻擊;儘管旋轉很容易受到強力攻擊,但他們提出掩蔽作為對策。
  • 差分功率分析;他們證明了對手可以獲得所有密鑰,除了 $ k_1 $ 可以在 $ 2^{32} $ ,提出掩蔽作為對策。
  • 故障注入攻擊;他們聲稱初始矩陣 $ X $ 或矩陣 $ X^{(20)} $ 如果在添加上執行注入,將輸出。

針對這種攻擊的對策是分離變數;也就是說,不同的變數儲存加法的輸入和輸出。考慮添加 $ z \leftarrow x+y $ . 即使跳過了加法,加法也會返回變數 z 的初始值。因此,對手無法獲得變數的值 $ x $ 和 $ y $ . 算法 9 顯示了使用基於變數分離的對策的實現。

我們應該注意,原始碼級別的變數分離不起作用

他們的文件中包含了截至 2017 年的所有攻擊。我在 2018 年找不到一個。

ChaCha20 是一個“原語”,換句話說,它只是安全密碼系統的一個組成部分(PyCryptodome 是原語的集合)。所以在某種程度上,從程序員的角度來看,它根本不安全。使用如此低級的東西是危險的。

為了實施安全的加密系統,您需要的不僅僅是加密。使用CryptographyPyNaCl 之類的東西- 他們已經為您完成了所有工作。

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