第1章 芯片安全概述:核心概念与攻击面

1.1 问题背景:为什么需要芯片级安全验证

传统芯片验证的核心目标是功能正确性,即芯片是否按照 RTL 设计意图工作。而芯片安全验证关注的是攻击者视角下的非预期行为。随着车规芯片、物联网设备以及金融安全芯片的普及,硬件安全漏洞(如调试接口后门、安全熔断失效、侧信道信息泄露)频频被公开披露。

硬件安全漏洞具有不可篡改性和不可即时修复性。与软件补丁不同,芯片一旦流片并封装,内部逻辑错误通常无法直接修改,只能通过金属层修改(ECO)或上层固件缓解,代价极高。因此,必须在芯片设计、验证、样片测试乃至量产的全生命周期中,系统性地引入安全验证方法。

核心冲突:功能验证回答“芯片能不能用?”,安全验证回答“芯片能不能被攻破?”——两者目标不同,方法各异,但必须协同实施。

1.2 核心概念与资产模型

  • 资产(Asset):芯片内部需要保护的硬件资源,例如安全固件(Boot ROM)、非易失密钥(eFuse/OTP)、PUF 响应、加密引擎上下文等。
  • 信任边界(Trust Boundary):芯片内部不同安全等级区域的隔离线。例如 ARM TrustZone 中的安全世界与普通世界,或者安全协处理器与主 CPU 之间的总线隔离。
  • 攻击面(Attack Surface):攻击者能够访问的所有物理或逻辑入口,包括 JTAG/SWD 调试接口、UART/SPI/I2C 通信接口、电源/时钟引脚、射频接口以及片外存储接口。

芯片安全验证的第一步,就是基于上述概念建立资产—威胁—对策的映射关系。下面这张图概括了芯片安全验证的核心知识框架。

芯片安全验证 资产识别与分级 威胁建模与攻击面 验证实施与检测 漏洞分析与修复 安全合规与交付

1.3 原理机制:芯片安全验证的底层逻辑

芯片安全验证的底层逻辑基于信任根(Root of Trust)与生命周期(Lifecycle)两大机制。

  1. 信任根:芯片内部必须有一个无条件可信的硬件锚点(如 Boot ROM、PUF),所有安全启动流程和安全存储都基于该锚点建立信任链。
  2. 生命周期机制:芯片从开发到量产再到终端部署,会经历不同生命周期阶段(如开发模式、量产模式、锁定模式)。安全验证需要重点检查生命周期状态转换是否可被攻击者逆向篡改。

1.4 流程步骤:芯片安全验证实施路径

一个标准的企业级芯片安全验证流程通常包含以下五个步骤:

  1. 资产识别与分级:梳理需要保护的关键资产,根据保密性、完整性和可用性进行安全等级划分。
  2. 攻击面建模:枚举芯片所有物理接口和逻辑接口,绘制数据流图,标记信任边界。
  3. 安全验证实施:结合渗透测试和硬件攻击手段(如故障注入、侧信道分析)验证攻击路径的可行性。
  4. 漏洞分析与复现:对验证中发现的异常行为进行根因分析,撰写可利用性评估报告。
  5. 安全加固与合规审计:修复安全缺陷,并对照 CC、ISO 21434 等标准进行合规审计。
实战提示:在搭建安全验证环境时,务必准备独立的电源控制单元(用于电压毛刺注入)和时钟控制单元(用于时钟毛刺注入)。缺少这两项设备,几乎无法开展有效的硬件故障注入测试。

1.5 案例说明:调试接口遗留导致固件泄露

场景描述:某款安全 MCU 芯片在流片后,默认开启了 JTAG 端口,且未配置生命周期锁定机制。攻击者通过物理接触 PCB 板上的 JTAG 引脚,利用开源调试工具(如 OpenOCD)直接连接芯片内核,读取了片上 Flash 中的安全引导固件。

漏洞根因:安全验证阶段未覆盖“调试接口在生命周期锁定后的访问控制”测试项。

以下是在安全验证中发现 JTAG 未锁定时,用于确认漏洞的典型命令片段:

openocd -f interface/ftdi/jtagkey.cfg \
        -f target/secure_chip.cfg \
        -c "init; halt; \
            mdw 0x500000F0; \
            flash read_bank 0 dump.bin; \
            shutdown;"

修复对策:在芯片 eFuse 中永久烧录安全位,禁用非授权调试访问;同时在生产测试环节增加安全状态寄存器的自动校验。

1.6 表格总结:主流芯片安全验证技术对比

验证方法 核心原理 适用阶段 优势 局限
形式化验证 利用数学方法穷举证明设计满足安全属性 前端设计 完备性高 状态空间爆炸,难以处理复杂时序
动态仿真 给定输入激励,观察输出响应是否符合预期 IP验证/系统验证 速度快,易于部署 无法覆盖未遍历的输入空间
侧信道分析 统计功耗、电磁辐射、运行时间等物理泄露 样片阶段 可发现物理层面的信息泄露 需要昂贵的示波器与专业分析团队
故障注入 注入电压毛刺、时钟毛刺或激光束,破坏芯片内部安全状态 样片阶段 模拟真实硬件攻击手段 可能造成不可逆物理损伤
渗透测试 模拟真实攻击者的攻击路径,尝试组合利用多个疑似风险点 系统级/应用级 攻击视角贴近实战,结果可作为风险评估直接依据 依赖测试人员的个人经验与能力
误区提醒:
  • 误区1:安全验证就是把 CVE 扫描工具跑一遍。芯片安全验证必须结合硬件特性,例如扫描链安全、熔断位安全、调试接口生命周期控制等。
  • 误区2:功能验证覆盖率高就代表芯片安全。功能验证侧重于“功能实现”,安全验证侧重于“安全属性”,两者存在本质区别。
  • 误区3:只有在流片后才能进行安全验证。实际上,安全验证工作应前移,在 RTL 设计阶段即可开展安全架构评估和威胁建模。
  • 误区4:只关注数字逻辑攻击面,忽略模拟电路侧信道。例如,电源管理模块的功耗曲线同样可能泄露密钥信息。

1.7 实践清单:芯片安全验证必查项

  • [ ] 是否已建立完整的安全资产清单,并划分了安全等级?
  • [ ] 是否已识别全部调试接口(JTAG/SWD/cJTAG)?是否验证了生命周期锁定机制的有效性?
  • [ ] 是否对安全关键逻辑(如安全启动、密码模块)进行了形式化验证或等价性检查?
  • [ ] 是否制定了侧信道攻击和故障注入测试计划?设备资源是否就绪?
  • [ ] 是否验证了芯片生命周期状态机在异常电压、时钟毛刺干扰下的稳定性?
  • [ ] 是否将安全验证流程纳入芯片开发整体流程,而非事后补充测试?
  • [ ] 是否形成了安全漏洞闭环跟踪机制,确保已发现问题得到修复或缓解?