某些加密函数需要一致的执行持续时间以避免计时攻击。我读到这样的针对x86的函数很难编写,原因可能包括ISA的仿真性质和无序处理。因此,防止对x86的定时攻击并不容易,因为它依赖于任何给定时刻的复杂和/或未知因素。
在标准的RISC-V内核中,指令时序相对于彼此是否可预测地保持一致?对于无序处理的标准内核或基础ISA的专有实现,情况会怎样呢?
发布于 2014-10-18 00:09:05
将ISA与其实现区分开来是很重要的。RISC-V规范中没有规定指令执行延迟。大多数实现都会做任何能提供最高性能的事情。安全偏执处理器可以被设计为对所有指令具有一致的等待时间,但仍然符合RISC-V规范。
RISC-V的一个很好的特性是故意留下大量未使用的操作码空间,以便为ISA扩展腾出空间。似乎没有公开宣布的加密扩展计划,因此如果需要,可以将此功能合并到加密扩展中。
发布于 2014-10-18 01:23:48
RISC-V可以在具有确定性延迟的机器上实现;与ISA相比,这与实现有更多的关系。
有关支持可预测延迟执行的RISC-V实现,请参阅此项目:https://github.com/pretis/flexpret。它是为嵌入式空间开发的,但似乎也适用于您提出的应用程序。
发布于 2014-10-17 11:55:29
“相对于其他操作,每条指令需要多长时间才能完成,是否有标准?”
不是的。
据我所知,这些行为将与所有其他主要的内部审计机构保持一致。
有序处理器将在指令的依赖关系解析时执行指令。高速缓存未命中和发出select的潜在随机性质将意味着连续的循环迭代将在指令相对于彼此执行时表现不同。任何数量的其他微体系结构问题都会成为障碍,包括指令提取未命中、dcache未命中、导致重放的资源停顿等。即使是典型的有序内核也会面临这些问题。
RISC-V团队计划如何解决加密库开发人员必须找到方法解决的潜在标准或非标准复杂性?
我不能代表RISC-V团队发言,但如果我可以大胆猜测,我怀疑这个(和类似的)领域将涉及更广泛的社区来讨论和解决这些问题。
https://stackoverflow.com/questions/26413882
复制相似问题