Differential-Analysis

為什麼變數旋轉在密碼原語中不常見?

  • February 16, 2021

我見過的大多數密碼原語都以常數旋轉。RC5 做了一些不同的事情:

RC5 圖,Feistel 密碼。 一側作為旋轉量送入另一側。

對於字長 $ w=2^n $ , 你可以拿最後一個 $ n $ 值的位作為旋轉量。還有更複雜的變體,例如 RC6 中使用的變體。

要為這些值命名: $ A \lll B $ .

一些好東西:

  • 旋轉速度很快
  • 提供一些擴散
  • 具有一些非線性特性
  • 與其他操作結合時可以很強大

一些不好的事情:

  • 奇偶校驗 $ A $ 被保留
  • 差異 $ A $ 被保留
  • 只有幾位 $ B $ 被使用
  • 差異 $ B $ 可能沒有效果(或幾乎沒有效果)
  • 如果差異較小 $ A $ 大部分(或全部)為 0 或 1
  • 與對齊的差異較小 $ A $
  • 多變數旋轉不是按比例更好

可能有一些更微妙的弱點使其更容易受到差分密碼分析的影響,但我認為沒有什麼能完全破壞它,否則 RC5 將無法使用。

一個問題是,與數據相關的輪換(如您所描述的)已獲得 RSA 數據安全的專利(或者,至少,專利可能已經過期)。RC5 和 RC6 是由該專利的持有者創建的,但是這樣的專利可以針對其他人強制執行,因此人們一直迴避它。

更多的小問題包括:

  • 在低端 CPU 上可能需要不同的時間,因此可能容易受到基於時間的邊通道攻擊。
  • 這種可變旋轉在硬體上的成本適中(當它們需要在恆定時間內實現時);是的,您可以建構一個桶形移位器,但這需要許多門和互連。

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