侧信道攻击的起源

信息安全 侧信道
2021-08-26 09:15:23

侧信道攻击的起源是什么?它与算法或实现有关吗?换句话说,是软件负责攻击还是硬件负责?

是否有一种加密算法可以抵抗系统 A 上的侧信道攻击,但系统 B 上没有?

我们可以称算法为侧信道抗性吗?

4个回答

侧通道攻击利用从观察系统或与系统交互中获得的信息,而不是其创建者预期的方式。通常这样做是为了推断有关加密密钥或其他秘密信息的信息。

一些最常见的侧信道攻击向量是:

  1. 定时
  2. 电源监控
  3. 错误处理分析

上述例子包括:

  1. AES 缓存定时攻击以确定加密密钥(DJ Bernstein 的非常好的论文
  2. 针对 DES 的差分功率分析以确定加密密钥(P Kocher 的著名论文
  3. 利用 RFID 护照的错误处理来推断国籍 -> 隐私泄露(链接

虽然维基百科指出:

...边信道攻击是基于从密码系统的物理实现中获得的信息的任何攻击...

我会(与伯恩斯坦和其他人一起)争辩说,侧通道的弱点也可能来自设计。在 AES 示例中,这是因为在保持效率的同时编写用于一般计算的恒定时间执行代码几乎是不可行的。

所以回到你的问题;当您在已实施的系统中利用侧通道攻击时,其存在的根本原因通常不能仅归因于实施。您将不得不查看特定系统及其实现,您可能会发现问题的答案在很大程度上取决于您将设计和实现之间的边界置于何处。

(如果 AES 的设计保证了静态计算时间,那么定时攻击在任何正确的实现上都是不可行的......)

但是,您可能有不同的 AES 实现,它们容易受到或不易受到时间攻击,以回答您关于系统 A 和 B 的问题(系统 A 可能会强制执行静态计算时间,而 B 不会)

使用定义明确的攻击者模型,我会说您可以定义一个侧信道抵抗算法。请澄清这个问题 - 不确定我是否完全理解你..


编辑:在这篇简短易读的文章中阅读更多有趣和有趣的内容。:)


术语“侧通道”可能指的是两种不同的事物:一种是由其他答案暗示的(通过非故意数据流泄漏的意外实现细节)。该术语还可以指在数据流的随机部分中潜在地故意包含密码秘密。例如,一个应该用随机数据填充一个小秘密(例如 AES 密钥)并 RSA 加密它的程序如果被恶意设计,可能会稍微改变实现:

Loop:
  Pad secret with random data
  Encrypt it
  Interpret bits 151..181 of the resulting crypto stream as a number I
  Examine bit (I mod RSA_keylength) of the RSA secret key
  If the aforementioned bit doesn't match bit 504 of the crypto stream, goto Loop

如果使用这种邪恶的实现来交换很多秘密,攻击者将能够通过简单的被动观察完全找出 RSA 密钥的大部分位。然而,不知道隐藏侧通道的人不会注意到这些消息没有任何异常。事实上,即使是知道侧信道的人也无法判断是否有任何特定消息包含它。只有通过检查许多消息,即使对于知道要查找什么的人来说,侧信道也可以被检测

侧信道攻击肯定是由于实现(澄清,我不是说实现错误,见下文)。

它们源于数学计算需要计算机来处理事物这一事实。可以这么说,加密过程的边信道信息是为计算它而部署的物理活动的影响。它们是物理世界的结果

要抵抗侧信道攻击,您必须:

  • 减少泄露的数据量
  • 使泄露的数据与秘密数据无关

这可以通过硬件和软件来完成。最终,一切都与所使用系统的物理特性有关。

示例:测量密钥生成期间的功耗。

处理 1(而不是 0)所需的额外功率是用于进行计算的工具的副作用。就像我会使用脑电图来查看您是在考虑 1 还是 0。它们的问题不是来自算法设计,而是来自现实。

旁道攻击是基于利用实现的某些方面而不是由于密码算法中的数学弱点而产生的攻击。

有些是由于硬件实现选择而暴露出来的。例如,如果密钥的第 1 位为真,CPU 可能会在执行的某个点消耗更多功率,而当密钥的第 1 位为假时,CPU 可能会消耗更少的功率。

由于密码算法的软件实现中出现的时序选择,其他可能会暴露。对 TLS 的 Bouncy Castle 实现进行了成功的攻击,因为在将某个位设置为某个值的情况下,MAC 算法的实现在代码中采用了更快的路径。(我认为这是 CVE-2013-1624 的根本原因。)

在许多情况下,尤其是由于时间问题,解决边信道攻击的一种常见方法是更改​​软件实现。通过确保所有分支花费恒定量的时间而不管比特的值,可以防止这种信息泄漏。在高级语言实现中,编译器优化可能是导致泄漏的不知情的原因,这也是“自己动手”的密码学方法可能成为问题的另一个原因。