可变旋转 RC6 密码的恒定时间实现

constant-time implementation of variable rotation RC6 cipher

RC6 wiki使用取决于对数值的可变左旋转值。我有兴趣找到一种方法来实现 RC6 的恒定时间 c 代码。是否有开源或关于如何在恒定时间代码中实现变量左旋转的想法。

这一点在 https://pdfs.semanticscholar.org/bf3e/23be81385817319524ee6bb1d62e9054d153.pdf 的第 4.1 节中有说明。简短摘要是:

  • 大多数处理器都需要固定时间进行轮换,包括数据相关的轮换(无论如何,当 rc6 被提出时就是这种情况)

  • 即使 运行 移动 k 位的时间与 k 周期成正比,然后要进行循环左旋转,您需要先左移 k 位,然后右移 32- k 位,因此导致 32 个周期的恒定时间。

我不知道现代架构的细节,但我想我会反过来问这个问题,并问一个逻辑不正确的例子。