为加密安全性,RISC-V指令执行持续时间是否标准化?

时间:2014-10-16 21:06:13

标签: security assembly cryptography timing riscv

某些加密功能需要一致的执行持续时间以避免计时攻击。我读到这些针对x86的功能很难写,原因可能包括ISA的仿真性质和无序处理。因此,防止对x86的定时攻击并不容易,因为它取决于任何特定时刻的复杂和/或未知因素。

在标准RISC-V内核中,指令时序是否可预测相对于彼此一致?对于带有无序处理的标准内核或基本ISA的专有实现,该怎么办?

3 个答案:

答案 0 :(得分:2)

重要的是区分ISA和它的实现。 RISC-V规范中没有任何内容强制执行指令执行延迟。大多数实现都会为它们提供最高性能。安全偏执处理器可以设计为对所有指令具有一致的延迟,但仍然符合RISC-V规范。

RISC-V的一个很好的功能是有意留下大量的操作码空间,以便为ISA扩展腾出空间。似乎没有公开宣布加密扩展的计划,因此如果需要,可以将此功能合并到加密扩展中。

答案 1 :(得分:2)

RISC-V可以在具有确定性延迟的机器中实现;这需要在实施方面做得比ISA更多。

请参阅此项目以获取支持可预测延迟执行的RISC-V实现:https://github.com/pretis/flexpret。它是为嵌入式空间开发的,但似乎也适用于您提出的应用程序。

答案 2 :(得分:0)

  

“每个指令相对于其他操作需要花多长时间才能完成标准?”

没有。

据我所知,这种行为将与所有其他主要的国际检索单位保持一致。

订单顺序处理器将在其依赖关系解析时执行指令。高速缓存未命中和问题选择的潜在随机性质将意味着连续循环迭代将在指令何时相对于彼此执行时表现不同。任何其他微架构问题都会受到影响,包括取指令未命中,dcache未命中,导致重放的资源停滞等。即使是典型的有序内核也会遇到这样的问题。

  

RISC-V团队如何计划解决加密库开发人员必须找到某种解决方案的潜在标准或非标准复杂性?

我不能代表RISC-V团队发言,但如果我冒险猜测,我怀疑这个(和类似的)领域将涉及更广泛的社区来讨论和解决这些问题。