第3章 安全密码学基础:核心概念、原理机制与实战要点

为什么先学密码学基础

芯片安全验证的目标,不是验证“芯片能计算密码”,而是验证“芯片上的密码系统在被物理攻击时仍然安全”。密码算法公开,攻击者可以直接购买同一颗芯片,搭建功耗采集或电磁注入平台。真正的防线来自四个部分:密钥管理、硬件隔离、随机数质量、密码实现抗物理攻击的能力。

因此,在进入侧信道与故障注入章节之前,先用本章建立统一的验证坐标系:安全属性是什么,密码原语解决什么问题,硬件实现暴露哪些风险,验证流程如何收敛。

安全属性 机密/完整/认证 核心算法 对称/非对称/哈希 芯片实现 TRNG/密钥/引擎 验证评估 正确性/侧信道/注入 漏洞闭环 定位/加固/复测 安全属性 → 核心算法 → 芯片实现 → 验证评估 → 漏洞闭环

3.1 核心概念:安全属性与密码原语

芯片密码系统面向三类安全属性:

  • 机密性(Confidentiality):防止数据泄露,由对称加密(如AES)和非对称加密(如RSA、ECC)提供。
  • 完整性(Integrity):防止数据被篡改,由哈希函数、HMAC和数字签名提供。
  • 真实性(Authenticity):确认实体身份和数据来源,由数字签名、证书和密钥协商协议提供。

这三类属性不能孤立存在。密钥生成需要真随机数;密钥存储需要防读存储介质(OTP/eFuse/PUF);密钥使用需要在硬件隔离区内完成。任何一个环节失效,都将导致密码系统整体失效。

3.2 原理机制:硬件密码引擎与攻击面

典型安全芯片内,密码子系统包含以下部分:

  • 密码算法加速器:AES、RSA/ECC、SHA/HMAC 等硬件模块。
  • 真随机数发生器(TRNG):振荡器或物理噪声源 + 健康检测 + DRBG 后处理。
  • 密钥存储单元:eFuse/OTP 用于根密钥,SRAM 或寄存器用于会话密钥,PUF 用于物理不可克隆保护。
  • 安全生命周期状态机:控制 Debug、Secure、Locked 等模式切换,决定密钥可读性。
  • 总线与内存保护:加密总线、权限位、MPU/TrustZone 隔离,防止软件路径越权读取。

攻击面来自两类:一类是逻辑攻击,通过驱动漏洞、调试接口或测试模式读取密钥;另一类是物理攻击,包括功耗分析、电磁分析、时序分析和故障注入。验证时两者都必须覆盖。

3.3 验证流程:密码属性验证六步法

  1. 资产识别与威胁模型:列出密码模块保护的资产、攻击者接触等级和已有防护。
  2. 算法与合规检查:确认算法和密钥长度满足目标等级(如FIPS 140-3、CC EAL等级)。
  3. 功能与一致性验证:用标准已知向量(CAVP/ACVP)验证硬件输出,包含密钥边界和非法参数处理。
  4. 密钥隔离验证:从应用核、调试接口、DMA和测试逻辑尝试读取密钥,确认全部被阻断。
  5. 侧信道与故障注入评估:采集密码运算功耗/电磁轨迹,做TVLA检测;执行电压/时钟/激光毛刺扫描。
  6. 风险判定与加固复测:按泄露可区分度和利用成本判定风险等级,实施掩码、固定延迟、故障检测后回归。

3.4 案例说明:AES引擎的功耗泄露与故障注入

案例A:功耗泄露导致密钥区分度极高。 某安全芯片AES-128硬件引擎在加密开始时,CPU核没有进入低功耗等待,而是继续轮询状态寄存器。各轮AES运算的功耗峰均直接叠加在总线访问活动上,攻击者无需对齐即可从单条轨迹中识别出最后两轮加密操作。对10000条轨迹做TVLA检验,t统计量超过18,远大于4.5的判定阈值,说明中间值可被统计区分。

修复思路:在AES运算期间将CPU置于WFI(等待中断)状态,并对状态寄存器读取加入随机延迟;同时启用随机掩码,破坏功耗与中间值的线性关系。

案例B:时钟毛刺跳过签名校验。 在安全启动流程中,ROM代码先用AES解密固件头,再用ECC验签。验证时使用电压/时钟毛刺扫描平台,不断改变毛刺注入的位置和宽度,最终在ECC验签比较指令所在周期注入毛刺,使比较结果寄存器被跳过,未签名固件成功执行。

修复思路:在固件镜像头和启动流程中加入随机冗余校验,使用故障检测锁存器检测毛刺,并把验签结果写入一次性状态寄存器,失败后只能冷复位。

已知向量测试是功能正确性验证的基础,也是一切后续物理验证的前提。示例命令:

# AES-128-ECB 已知向量验证
printf '00112233445566778899aabbccddeeff' | xxd -r -p > pt.bin
openssl aes-128-ecb -K 00112233445566778899aabbccddeeff \
    -in pt.bin -out ct.bin -nopad
xxd -p ct.bin
# 预期输出:69c4e0d86a7b0430d8cdb78070b4c55a

如果输出与预期不一致,应先检查密钥字节序、数据字节序和填充模式,再确认硬件寄存器配置。

3.5 表格总结:密码原语验证矩阵

密码原语 典型标准 芯片内主要用途 验证关键项 常见风险
对称加密 AES-128/256,FIPS 197 固件加密、数据加密、存储加密 已知向量、密钥隔离、抗侧信道 功耗泄露、故障注入改轮函数
非对称密码 RSA-2048/4096,ECC P-256 数字签名、安全启动、TLS握手 私钥保护、时序一致性、算法掩码 时序攻击、错误签名导致验签绕过
哈希 / HMAC SHA-256/SHA-3,HMAC-SHA256 完整性校验、密钥派生(HKDF) 抗碰撞、上下文分离、HKDF合规 长度扩展攻击、状态回滚
随机数发生器 TRNG + DRBG,SP 800-90A/B 密钥种子、随机掩码、挑战值 熵源健康测试