基于本文回答

播面 播面

文图音视,全方位拆解八股文
0
评论

什么是旁路攻击(Side-channel attack)?

知识点图片

旁路攻击(Side-channel attack),又称侧信道攻击,是一种针对加密系统或计算机系统的攻击方式。

与传统的攻击方式(如暴力破解密码、利用软件漏洞)不同,旁路攻击并不直接破解加密算法本身的数学逻辑,而是利用系统在物理实现过程中泄露的“副作用”信息来推导秘密数据(如密钥)。

为了让你更容易理解,我们可以用一个生动的比喻:

1. 通俗比喻:保险箱与听诊器

想象一个窃贼想要打开一个极其坚固的保险箱。

  • 传统攻击(暴力破解/数学分析): 窃贼试图用炸药炸开,或者尝试所有可能的密码组合,或者试图找出锁芯设计的逻辑漏洞。
  • 旁路攻击: 窃贼并不碰锁,而是戴上听诊器贴在保险箱门上,一边转动旋钮,一边听里面的机械齿轮发出的微弱“咔哒”声。通过声音的细微变化,他推断出了密码。

在这个比喻中,“咔哒”声就是旁路信息(Side-channel information)。


2. 旁路攻击的原理

在计算机世界中,当硬件(CPU、电路板)执行加密算法或处理数据时,会产生各种物理现象。这些物理现象会随着处理的数据不同而发生微小的变化。攻击者通过精密仪器测量这些变化,结合统计学分析,就能反推出内部正在处理的敏感数据。

主要的泄露源(旁路)包括:

  1. 时间(Time): 处理不同的密钥位(0或1)所需的时间不同。
  2. 功耗(Power): 处理不同的数据时,芯片消耗的电流大小不同。
  3. 电磁辐射(Electromagnetic): 芯片运行时会向外发射电磁波,其波形与处理的数据有关。
  4. 声音(Sound): 电子元件(如电容、线圈)在高负载下会产生微弱的震动声。
  5. 缓存(Cache): CPU内部的缓存状态变化(现代CPU最常见的攻击方式)。

3. 常见的旁路攻击类型

A. 计时攻击 (Timing Attack)

这是最容易理解的一种。假设一个加密算法在处理密钥中的“1”时需要进行复杂的乘法运算,而在处理“0”时直接跳过。

  • 攻击方式: 攻击者向系统发送大量不同的输入,并精确测量系统返回结果所需的时间。
  • 结果: 通过分析时间差异,攻击者可以一位一位地猜出密钥是0还是1。

B. 功耗分析攻击 (Power Analysis)

这是智能卡(如银行卡、SIM卡)最怕的攻击方式。

  • 简单功耗分析 (SPA): 直接观察示波器上的功耗波形图。某些操作(如RSA算法中的平方和乘法)在波形上有明显的视觉区别。
  • 差分功耗分析 (DPA): 这是一种更高级的统计攻击。通过收集数千条功耗曲线并进行差分运算,可以消除噪声,提取出极其微弱的密钥信号。

C. 电磁攻击 (Electromagnetic Attack)

与功耗分析类似,但不需要物理接触芯片。攻击者只需将探头放在设备附近,捕捉设备发出的电磁辐射即可。这甚至可以用于隔墙窃取屏幕显示内容(Van Eck phreaking)。

D. 缓存侧信道攻击 (Cache Side-channel Attack)

这是针对现代高性能CPU(如Intel, AMD, ARM)的攻击,著名的 Spectre(幽灵)Meltdown(熔断) 漏洞就属于这一类。

  • 原理: CPU为了快,会共用“缓存(Cache)”。当受害者程序访问了某些敏感数据,这些数据会被加载到缓存中。
  • 攻击方式: 攻击者程序通过测量自己访问内存的速度,来判断某些数据是否在缓存中。如果在,说明受害者刚刚访问过。通过这种方式,攻击者可以跨越权限边界,读取内核或其他程序的内存数据。

4. 现实生活中的案例

  1. RSA 密钥提取: 早期的 RSA 加密实现没有考虑时间差异,研究人员可以通过测量服务器解密消息的时间,远程推导出服务器的私钥。
  2. 手机充电窃密: 有研究表明,通过分析手机连接公共充电器时的功耗波动,可以推断出用户正在输入的密码或打开的网页。
  3. 键盘声学攻击: 通过录音分析敲击键盘的声音(每个键的位置不同,声音有细微差别),可以还原输入的文本。

5. 如何防御?

防御旁路攻击非常困难,因为这通常意味着要对抗物理定律或牺牲性能。常见的防御措施包括:

  1. 恒定时间编程 (Constant-time Programming):
    • 修改算法实现,确保无论输入密钥是0还是1,无论数据是什么,执行时间都完全一样。这是防止计时攻击的金标准。
  2. 盲化 (Blinding):
    • 在解密之前,先将密文乘以一个随机数(“带上眼罩”),运算完后再除以这个随机数。这样,硬件处理的数据是随机化的,攻击者无法将功耗/电磁波形与真实数据关联起来。
  3. 噪声注入 (Noise Injection):
    • 在硬件中加入随机的无用操作,或者在电路中加入噪声发生器,掩盖真实的信号。
  4. 硬件屏蔽:
    • 使用金属屏蔽罩(法拉第笼)防止电磁泄漏。
  5. 消除分支预测(针对缓存攻击):
    • 软件层面打补丁(如Retpoline),或者硬件层面重新设计CPU架构,隔离不同进程的缓存访问。

总结

旁路攻击是一种“降维打击”。它不跟你比拼数学算法的复杂度,而是利用物理世界的瑕疵(时间、电、磁、声)来窃取秘密。对于高安全级别的系统(如军用芯片、银行加密狗、云服务器),防御旁路攻击是必修课。

00:00
00:00