一、侧信道攻击概述
1.1 什么是侧信道攻击
侧信道攻击,说白了就是「不走正门,翻窗户」。
传统的攻击方式,是盯着你的算法、协议、密钥本身去破解。但侧信道攻击不一样——它盯的是设备在执行密码运算时「不小心泄露」的物理信息。
比如你的手机在计算 AES 加密时,CPU 功耗会随着处理的数据不同而微微波动。攻击者如果能精确测量这个功耗波形,就能反推出密钥。听起来像科幻片?我十年前第一次在实验室复现这个攻击时,也被震撼到了。
为什么这招管用?因为密码算法在设计时,通常假设执行环境是「理想黑盒」——输入明文和密钥,输出密文,中间过程不泄露任何信息。但现实中的芯片不是黑盒,它会发热、会耗电、会发出电磁波、会花掉不同的时间。这些「副作用」就是侧信道。
1.2 侧信道攻击的历史与现状
侧信道攻击不是新鲜事,但它的杀伤力一直在升级。
| 时间 | 里程碑事件 | 我的评价 |
|---|---|---|
| 1996 年 | Paul Kocher 发表时序攻击论文,破解 Diffie-Hellman 密钥 | 开山之作,思路极其巧妙 |
| 1999 年 | Kocher 等人提出差分功耗分析(DPA) | 真正让侧信道进入主流视野 |
| 2000 年代初 | 电磁攻击(EMA)被提出,攻击距离从接触式扩展到非接触式 | 攻击者可以隔着几厘米偷密钥了 |
| 2010 年代 | 缓存侧信道攻击(Flush+Reload, Prime+Probe)爆发 | 云环境下,虚拟机之间也能互相偷密钥 |
| 2018 年 | Meltdown/Spectre 漏洞公开 | 侧信道从密码芯片扩展到通用 CPU 架构 |
| 2020 年代 | 深度学习辅助侧信道攻击、芯片物理级攻击 | 攻击精度越来越高,防御越来越难 |
我个人印象最深的是 2018 年的 Meltdown 和 Spectre。当时我在帮客户做安全评估,突然爆出这两个漏洞,整个行业都炸了。因为以前大家觉得侧信道攻击需要物理接触设备,但这两个漏洞证明——远程攻击也能利用侧信道。嗯,从那以后,侧信道防御就不再只是硬件工程师的事了。
1.3 侧信道攻击的分类
侧信道攻击的分类方式很多。按泄露的物理量来分,最常见的有这几种:
1.3.1 时序攻击(Timing Attack)
攻击者通过测量密码运算的执行时间来推断密钥。比如,某些密码库在比较字符串时,一旦发现不匹配就立即返回——攻击者就可以根据返回时间的长短,逐位猜出正确的密钥。
1.3.2 功耗攻击(Power Analysis Attack)
这是最经典、也是我工作中打交道最多的攻击类型。分为两种:
- 简单功耗分析(SPA):直接看功耗波形,识别出算法中的不同操作(比如乘法 vs 加法),从而推断密钥。
- 差分功耗分析(DPA):用统计方法,从大量功耗轨迹中提取出与密钥相关的微小差异。你想想看,单个波形里的信号可能被噪声淹没,但几千条波形一平均,密钥信息就浮现出来了。
1.3.3 电磁攻击(Electromagnetic Attack, EMA)
和功耗攻击原理类似,但测量的是芯片周围的电磁辐射。好处是不需要改造设备供电线路,可以非接触式测量。我在实验室里用近场探头扫描过一块智能卡芯片,距离 2 毫米就能清晰捕获到 AES 运算的电磁泄露。
1.3.4 缓存侧信道攻击(Cache Side-Channel Attack)
这类攻击针对的是处理器缓存。攻击者和目标程序共享同一台机器的 CPU 缓存时,攻击者可以通过测量自己的缓存访问延迟,推断目标程序访问了哪些内存地址——进而恢复密钥。
典型的攻击方法包括:
- Flush+Reload:攻击者先清空缓存行,等目标执行后,再测量自己重新加载该缓存行的时间。时间短说明目标访问过该地址。
- Prime+Probe:攻击者先用自己的数据填满缓存集,等目标执行后,再测量自己数据被驱逐的情况,从而推断目标的访问模式。
1.3.5 其他侧信道
除了上面四种,还有:
- 声学攻击:通过分析 CPU 或风扇的噪音来推断运算内容(我试过,精度有限但确实可行)
- 光辐射攻击:通过分析芯片表面的光子发射来获取信息
- 错误注入攻击:通过电压毛刺、时钟毛刺或激光照射,诱导芯片产生错误计算结果,从而推断密钥
1.4 攻击模型与威胁建模
做侧信道防御,第一步不是写代码,而是搞清楚「谁在什么位置能做什么」。这就是威胁建模。
常见的攻击模型有:
| 攻击模型 | 攻击者能力 | 典型场景 |
|---|---|---|
| 无特权本地攻击 | 攻击者与目标运行在同一系统上,但无 root 权限 | 手机 App 侧信道攻击 |
| 特权本地攻击 | 攻击者有 root 或管理员权限 | 云主机侧信道攻击 |
| 物理接触攻击 | 攻击者能物理接触设备,可测量功耗/电磁 | 智能卡、物联网设备破解 |
| 远程攻击 | 攻击者通过网络发起攻击,无物理接触 | Meltdown/Spectre 远程利用 |
我个人做威胁建模时,习惯先问三个问题:
- 攻击者能接触到设备吗?——能接触,就要防功耗/电磁;不能接触,重点防缓存和时序。
- 攻击者能测量什么?——测量精度越高,攻击越强。比如高精度示波器 vs 普通万用表,差别巨大。
- 攻击者有多少时间?——一次攻击需要 100 次测量还是 100 万次测量?这决定了防御的强度要求。
1.5 侧信道攻击知识体系
下面这张图概括了本章的核心知识结构,方便你建立整体认知:
这张图把本章内容串起来了。从定义出发,经过历史发展,到四大攻击类型,再到威胁建模和防御目标——这就是我们整个课程的主线。
好了,第一章就到这里。你不需要记住所有细节,但希望你能建立起一个认知:侧信道攻击不是魔法,它只是利用了物理世界和信息世界之间的「缝隙」。而我们做防御的人,就是要把这些缝隙堵上。