0

我有一个多项式乘法的代码,它是用 C 语言编写的。我听说特定指令是否是“恒定时间”可能因架构和处理器型号而异,并且没有任何官方文档说明这种行为。我如何理解我的代码是否是常数时间?

注意:“恒定时间”是指能够抵抗定时攻击的软件或代码片段。我在英特尔 i7 第 10 代 PC 上使用 UBUNTU。

4

1 回答 1

0

这只是一个小例子,但在一个安全暑期学校里,我看到了一个定时攻击场景的例子。当代码仅在满足某些条件后才执行加密操作时,很容易发生这种情况。考虑这样一个片段:

if (should_encrypt == 1) {
/*Do computationally heavy encryption operations*/
}
 else {
/*Do something else (no encryption)*/
}

因此,攻击者可以在两种情况下观察程序的执行时间,并推断加密可能发生的时间。通过确保您的代码中不是这种情况,您可以保护您的程序免受这种特定的定时攻击漏洞的影响。

于 2021-12-13T14:40:45.277 回答