3、硬件风险识别:常见的硬件攻击手段与风险特征提取

大家好,我是你们的老朋友。今天咱们聊聊硬件风险识别这个硬骨头。

说实话,我做了这么多年硬件安全,见过太多产品在攻击面前不堪一击。有些团队觉得「我的芯片有加密,够安全了」,结果呢?侧信道一打,密钥全裸奔。所以这一章,我把自己踩过的坑、总结的经验,全盘托出。

3.1 侧信道攻击:从「旁门左道」窃取秘密

侧信道攻击,说白了就是不走正门,走窗户。芯片在运算时,会泄露功耗、电磁辐射、时间信息。攻击者收集这些「边信道」信号,就能反推出内部密钥。

核心原理:芯片执行不同指令时,功耗曲线不一样。比如做乘法比做加法耗电多。攻击者采集几千条功耗曲线,用统计方法一分析,密钥就出来了。

我遇到过最典型的案例:某款物联网芯片,AES加密实现得很标准。但工程师没做功耗平衡。结果呢?我用一台示波器加一个电阻,采集了5000条功耗曲线,半小时就把128位密钥还原了。客户当时脸都绿了。

3.1.1 常见侧信道攻击类型

  • 简单功耗分析(SPA):直接看单条功耗曲线。比如RSA的平方-乘算法,乘法和平方的功耗不同,一眼就能看出密钥比特。
  • 差分功耗分析(DPA):统计多条曲线。用假设检验找出密钥。这是最常用的手法。
  • 电磁辐射分析(EMA):用近场探头采集电磁泄漏。不需要接触芯片,隔空就能偷数据。
  • 时间攻击:测量运算时间差异。比如某些密码库的字符串比较,遇到不匹配就提前返回,攻击者能逐字节猜出密码。

避坑指南:我曾经帮客户审计过一个智能门锁方案。他们用了ST的MCU,AES实现是直接从网上抄的。我建议他们至少加个随机延时和功耗掩码。客户觉得没必要。结果上市三个月,被白帽子用DPA攻破,紧急召回。嗯,从那以后,我再也不敢轻视侧信道了。

3.2 故障注入:让芯片「犯错」来获取秘密

故障注入,就是故意让芯片在错误状态下运行。比如电压突然降低、时钟频率瞬间拉高、或者用激光打一下芯片表面。芯片一乱,安全机制就失效了。

我个人的经验:故障注入比侧信道更「暴力」,但效果往往更直接。侧信道是偷听,故障注入是直接撬锁。

3.2.1 常见故障注入手段

攻击手段 原理 难度 典型效果
电压毛刺 瞬间拉低或拉高供电电压 跳过安全启动、修改指令
时钟毛刺 注入异常时钟脉冲 导致时序违规、寄存器错误
电磁脉冲 用线圈产生强电磁场 干扰内部逻辑、复位芯片
激光注入 用激光照射芯片特定区域 精确翻转存储单元、绕过认证
温度冲击 快速加热或冷却芯片 改变晶体管阈值、产生位翻转

我记得有一次,帮客户测试一款车规级MCU。他们宣称有「防故障注入」功能。我用电压毛刺试了试,第一次就跳过了安全启动。为什么?因为他们的电压检测电路响应时间太慢,毛刺宽度只有50纳秒,检测电路根本来不及反应。你想想看,硬件设计里这种「盲区」太多了。

注意:故障注入不是万能的。需要精确控制注入时机和强度。我曾经为了找到一个有效的毛刺参数,连续调试了三天。但一旦找到,攻击成功率能到80%以上。

3.3 逆向工程:从芯片「解剖」到算法还原

逆向工程,就是拆解芯片,把里面的电路、固件、算法都挖出来。这活儿有点像考古,但比考古刺激多了。

我刚开始做逆向时,觉得这玩意儿离我太远。直到有一次,竞争对手的产品和我们功能一模一样,连bug都相同。一查,对方直接逆向了我们芯片的ROM。从那以后,我就把逆向工程列为头号威胁。

3.3.1 逆向工程的主要步骤

  1. 芯片开盖:用发烟硝酸腐蚀封装,露出裸片。这一步要小心,我曾经手抖把芯片泡太久,整个die都溶解了。
  2. 层间剥离:用等离子刻蚀或化学方法,一层层去掉金属层。每去掉一层,拍一张高清显微镜照片。
  3. 图像拼接与识别:把几百张照片拼成完整版图,识别标准单元(与非门、触发器、RAM等)。
  4. 网表提取:从版图中提取晶体管级网表,还原出逻辑电路。
  5. 功能分析:分析电路功能,找到加密模块、安全状态机、密钥存储位置。

关键点:现代芯片动辄几亿晶体管,全手工逆向不现实。攻击者通常只关注关键模块,比如安全CPU核、加密协处理器、OTP存储器。他们用探针台直接测量这些模块的信号,效率高得多。

3.4 硬件风险特征提取:从攻击到防御

知道了攻击手段,怎么提取风险特征?说白了,就是给芯片做「体检」,找出容易被攻击的弱点。

我个人习惯把风险特征分为三类:

  • 物理特征:芯片封装是否容易被开盖?是否有主动屏蔽层?电源引脚是否有滤波电容?
  • 时序特征:关键操作(如密钥加载、安全状态切换)是否有固定时序?是否容易被毛刺干扰?
  • 功耗特征:不同操作功耗差异是否明显?是否有功耗平衡措施?

3.4.1 风险特征提取流程

我建议按以下步骤走:

  1. 静态分析:看芯片datasheet和参考设计。找安全相关引脚(如安全启动使能、调试接口锁定)。
  2. 动态监测:用示波器抓取上电、加密、通信等关键阶段的功耗和电磁信号。
  3. 故障注入测试:用电压毛刺、时钟毛刺尝试干扰。记录哪些操作容易被跳过或篡改。
  4. 数据统计:收集1000次以上测试数据,计算攻击成功率、信噪比等指标。
  5. 风险评级:根据攻击难度、影响范围、修复成本,给每个风险点打分。

小技巧:提取特征时,别忘了看「异常行为」。比如芯片在受到故障注入时,是直接复位、输出错误数据、还是悄悄进入安全模式?这些反应本身就是重要的风险特征。

3.5 知识体系总览

下面这张图,是我自己总结的硬件风险识别框架。你看一眼,心里就有谱了。

硬件风险识别知识体系 侧信道攻击 故障注入 逆向工程 SPA/DPA EMA 电压毛刺 时钟毛刺 激光注入 芯片开盖 网表提取 风险特征提取 物理特征 时序特征 功耗特征 封装屏蔽 电源滤波 操作时序 毛刺窗口 功耗差异 掩码效果 电磁泄漏 信号串扰 识别风险 → 提取特征 → 量化评级

这张图把三大攻击手段和风险特征提取串起来了。你从攻击手段出发,找到对应的风险特征,然后量化评级。这就是硬件风控规则引擎的「感知层」——先知道敌人长什么样,才能设计规则去防御。

好了,这一章的内容就到这里。记住:硬件风险识别不是纸上谈兵,得动手测、动手试。我当年也是从烧坏十几块开发板开始的。你踩的坑越多,积累的经验就越值钱。


专注资料整理