受限设备侧信道风险检测与响应 - 第2节
物理安全基础:密码学中的物理实现
密码学算法,说白了就是一堆数学公式。但数学公式本身不会跑,它得落在硬件上。我见过太多团队,算法选得挺强,AES-256、RSA-4096,结果一上示波器,密钥全在功耗波形里摆着。这就是物理实现的问题。
密码学的物理实现,指的是算法在芯片、FPGA、嵌入式设备上的具体落地方式。你想想看,数学上的“异或”操作,在硬件里就是一堆门电路翻转。翻转就要耗电,耗电就有电磁辐射。这些物理泄露,就是侧信道攻击的切入点。
从数学安全到物理安全
数学安全证明的是:给定有限计算资源,破解密钥需要天文数字的时间。但物理安全面对的是:我能不能直接量你的功耗、听你的电磁、测你的时间,把密钥“读”出来?
我在项目中遇到过一件事。客户用了一款号称“军用级”的安全芯片,算法是SM4。我们拿近场电磁探头在芯片上方扫了一圈,功耗曲线上的密钥相关性高达0.85。数学上无懈可击,物理上不堪一击。
核心认知:数学安全 ≠ 物理安全。侧信道攻击绕过了数学复杂度,直接攻击物理实现。
物理实现的三个层次
我个人习惯把物理实现分成三层,每一层都有对应的攻击面:
- 算法层:算法本身的运算步骤、数据流、控制流。比如AES的S盒查找、RSA的模幂运算。
- 电路层:逻辑门、寄存器、数据总线、电源网络。比如CMOS电路的动态功耗、静态功耗。
- 物理层:芯片封装、引脚、PCB走线、电磁辐射。比如电源引脚上的电压波动、芯片表面的热分布。
攻击者可以从任意一层下手。我见过最狠的,直接拿激光照芯片的背面,通过光电流变化读寄存器内容。这就是物理层的攻击。
安全芯片与嵌入式系统概述
安全芯片,就是专门为安全场景设计的芯片。它跟普通MCU最大的区别是:它从设计之初就考虑了物理攻击。嵌入式系统则是这些芯片的运行环境——一个完整的软硬件系统。
安全芯片的典型架构
我画了一张图,帮你理解安全芯片的内部结构:
嵌入式系统的攻击面
嵌入式系统不只是芯片本身,它还包括:
- PCB板级:电源走线、信号线、去耦电容的位置
- 固件:Bootloader、操作系统、驱动程序
- 通信接口:SPI、I2C、UART、USB、JTAG
- 传感器:温度、电压、时钟、光
每个接口都可能成为攻击入口。我曾经遇到一个案例,攻击者通过JTAG接口直接读取了固件,然后逆向出了密钥派生函数。这就是典型的嵌入式系统攻击面利用。
注意:很多安全芯片出厂时JTAG接口是锁死的,但有些开发板为了方便调试,会留一个“调试模式”。量产时如果没关掉,就是给攻击者留后门。
物理攻击面分析
物理攻击面,就是攻击者能物理接触到设备时,可以利用的所有弱点。我把它分成三大类:
1. 侧信道攻击面
这类攻击不破坏设备,只是“观察”设备的物理行为:
| 攻击类型 | 利用的物理量 | 典型场景 |
|---|---|---|
| 功耗分析 | 芯片瞬时功耗 | 在电源引脚串电阻测电压降 |
| 电磁分析 | 芯片电磁辐射 | 用近场探头在芯片上方扫描 |
| 时序分析 | 运算执行时间 | 测量密码运算的耗时差异 |
| 缓存分析 | 缓存命中/未命中 | 通过时间差推断密钥 |
我个人习惯把功耗分析和电磁分析称为“黄金搭档”。为什么呢?因为功耗信号容易采,但噪声大;电磁信号信噪比高,但需要精确定位。两个结合着用,效果最好。
2. 侵入式攻击面
这类攻击需要物理破坏设备:
- 芯片开盖:用酸腐蚀掉芯片封装,露出裸片
- 探针台探测:用微米级探针直接接触芯片内部走线
- 聚焦离子束(FIB):切割或修改芯片内部电路
- 激光故障注入:用激光照射特定晶体管,改变其状态
嗯,这里要注意。侵入式攻击的门槛很高,需要专业设备。但一旦成功,密钥基本就保不住了。我见过一个团队,用FIB切断了安全芯片的存储器加密模块,然后直接读出了明文密钥。
我的建议:如果你的产品价值足够高(比如金融支付终端),一定要考虑侵入式攻击的防护。主动屏蔽层、存储器加密、总线混淆,这些措施能大幅提高攻击成本。
3. 半侵入式攻击面
这类攻击介于两者之间:不破坏芯片封装,但会改变芯片的工作环境:
- 电压毛刺:在电源上叠加一个短时高压或低压脉冲
- 时钟毛刺:突然改变时钟频率,导致时序违规
- 温度攻击:极端高温或低温,改变芯片行为
- 光注入:用闪光灯或激光照射芯片表面
我曾经用电压毛刺成功绕过一款安全芯片的Bootloader签名校验。原理很简单:在CPU读取签名结果的那一瞬间,把电压拉低,让CPU读到错误的值,从而跳过校验。这就是典型的故障攻击。
攻击面优先级排序
在实际项目中,我建议按这个优先级评估攻击面:
- 侧信道攻击:最容易实施,成本最低,效果最稳定
- 半侵入式攻击:需要一定设备,但成功率很高
- 侵入式攻击:成本最高,但能获取最底层的信息
实战要点:做物理安全评估时,先从侧信道开始。如果连功耗分析都防不住,就别谈侵入式防护了。我见过太多团队,花大价钱做屏蔽层,结果功耗曲线上的密钥特征一抓一大把。
一个真实的攻击面分析案例
几年前,我评估过一款智能门锁的安全芯片。流程是这样的:
- 第一步:用近场电磁探头扫描芯片表面,发现电磁辐射中有明显的周期特征
- 第二步:同步采集电磁信号和密码运算的触发信号,确认周期特征对应AES轮运算
- 第三步:用差分功耗分析(DPA)处理采集到的电磁曲线,成功提取出128位密钥
- 第四步:用提取的密钥克隆了一张合法的开锁卡片
整个过程只用了不到4个小时。设备成本?一个几百块的示波器加一个自制的电磁探头。这就是物理攻击面的威力。