Differential-Analysis
為什麼變數旋轉在密碼原語中不常見?
我見過的大多數密碼原語都以常數旋轉。RC5 做了一些不同的事情:
對於字長 $ w=2^n $ , 你可以拿最後一個 $ n $ 值的位作為旋轉量。還有更複雜的變體,例如 RC6 中使用的變體。
要為這些值命名: $ A \lll B $ .
一些好東西:
- 旋轉速度很快
- 提供一些擴散
- 具有一些非線性特性
- 與其他操作結合時可以很強大
一些不好的事情:
- 奇偶校驗 $ A $ 被保留
- 差異 $ A $ 被保留
- 只有幾位 $ B $ 被使用
- 差異 $ B $ 可能沒有效果(或幾乎沒有效果)
- 如果差異較小 $ A $ 大部分(或全部)為 0 或 1
- 與對齊的差異較小 $ A $
- 多變數旋轉不是按比例更好
可能有一些更微妙的弱點使其更容易受到差分密碼分析的影響,但我認為沒有什麼能完全破壞它,否則 RC5 將無法使用。
一個問題是,與數據相關的輪換(如您所描述的)已獲得 RSA 數據安全的專利(或者,至少,專利可能已經過期)。RC5 和 RC6 是由該專利的持有者創建的,但是這樣的專利可以針對其他人強制執行,因此人們一直迴避它。
更多的小問題包括:
- 在低端 CPU 上可能需要不同的時間,因此可能容易受到基於時間的邊通道攻擊。
- 這種可變旋轉在硬體上的成本適中(當它們需要在恆定時間內實現時);是的,您可以建構一個桶形移位器,但這需要許多門和互連。