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



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

在标准RISC-V核心中,指令时序是否可以预测地彼此一致?如果标准核心的处理或基本ISA的专有实现不正常,该怎么办?

RISC-V可以在具有确定性延迟的机器中实现;与ISA相比,这与实现有更多的关系。

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

区分ISA及其实现非常重要。RISC-V规范中没有规定指令执行延迟。大多数实现都会做任何能给它们带来最高性能的事情。安全偏执处理器可以被设计为对所有指令具有一致的延迟,但仍然符合RISC-V规范

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

我不确定核心,但我在RISC-V加密扩展第一卷riscv-crypto-spec-scalar-v1.0.1.pdf)中读到,需要以下加密指令:

必须始终实现此指令,使其执行延迟不取决于操作的数据。

因此,在加密特定指令的上下文中,是的。

"相对于其他操作,每条指令需要多长时间才能完成,有标准吗"

没有。

据我所知,这种行为将与所有其他主要ISAs一致。

无序处理器将在指令的依赖关系解决时执行指令。缓存未命中和问题选择的潜在随机性意味着,连续的循环迭代在指令执行时的行为会有所不同。任何数量的其他微体系结构问题都会成为阻碍,包括指令获取未命中、dcache未命中、导致重播的资源暂停等。即使是典型的有序内核也会面临这样的问题。

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

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

最新更新