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

xxls0lw8  于 2022-11-13  发布在  其他
关注(0)|答案(4)|浏览(142)

一些加密函数需要一致的执行持续时间来避免定时攻击。我读到过,这类针对x86的函数很难编写,原因可能包括伊萨的模拟性质和无序处理。因此,防止x86上的定时攻击并不容易,因为它取决于任何给定时刻的复杂和/或未知因素。
在一个标准的RISC-V内核中,指令时序是否可以预测地相互一致?如果是一个具有无序处理或基础伊萨专有实现的标准内核,情况又如何?

mklgxw1f

mklgxw1f1#

RISC-V可以在具有确定性延迟的机器中实现;这与实现的关系要比与伊萨的关系大。
有关支持可预测延迟执行的RISC-V实施,请参见此项目:https://github.com/pretis/flexpret。它是为嵌入式领域开发的,但似乎也适合您提出的应用程序。

6pp0gazn

6pp0gazn2#

区分伊萨和它的实现是很重要的。RISC-V规范中没有规定指令执行延迟。大多数实现会做任何能给它们最高性能的事情。一个安全偏执型处理器可以被设计成对所有指令都有一致的延迟,但仍然符合RISC-V规范。
RISC-V的一个很好的特性是大量的操作码空间被有意地留了下来,以便为伊萨扩展腾出空间。似乎还没有公开宣布加密扩展的计划,所以如果需要的话,这个特性可以被合并到加密扩展中。

jaql4c8m

jaql4c8m3#

我不确定核心,但我在 RISC-V Cryptography Extensions Volume Iriscv-crypto-spec-scalar-v1.0.1.pdf)中读到过,需要加密指令:
必须始终实施此指令,以便其执行延迟不依赖于正在操作的数据。
因此,在密码学特定指令的上下文中,是的。

e1xvtsh3

e1xvtsh34#

“是否有一个标准来确定完成每个指令相对于其他操作所需的时间?”
不,不,不
据我所知,这种行为将与所有其他主要的ISA一致。
乱序处理器将在指令相关性解决后执行指令。高速缓存未命中和发出选择的潜在随机性将意味着后续循环迭代将在指令相对于彼此执行时表现不同。任何数量的其他微体系结构问题都会成为阻碍,包括指令获取未命中、数据高速缓存未命中、导致重放的资源停顿甚至典型的有序核也将面临这样的问题。
RISC-V团队计划如何解决潜在的标准或非标准复杂性,而这些复杂性是加密库开发人员必须找到某种方法来解决的?
我不能代表RISC-V团队发言,但如果我可以大胆猜测的话,我怀疑这个(和类似的)领域将涉及更广泛的社区来讨论和解决这些问题。

相关问题