描述远程认证验证的策略

解读

“远程认证验证”在国内芯片公司语境下通常指 SoC 安全子系统里的“Remote Attestation”功能验证。它不是单纯跑通一条协议,而是要在验证环境里模拟“云端/服务器—SoC—攻击者”三方博弈,证明当 SoC 启动或运行时,其固件、配置、密钥、度量值(PCR)确实能被远端可信服务验证且不可被篡改。面试官想听的是:你如何把“安全属性”转成可量化的验证目标,再落地到 UVM/SystemVerilog 环境里,用哪些机制穷尽攻击面,最终给出 sign-off 证据。回答必须体现“安全验证思维”与“芯片验证流程”的融合,而不是照搬网络安全概念。

知识点

  1. 安全属性到验证目标的分解:真实性、 freshness、不可抵赖性、抗重放、抗回滚、抗物理克隆。
  2. 远程认证完整链路:BootROM → BL1/BL2 → OTP/eFuse → 安全启动 → 密钥派生 → 度量扩展 → 签名生成 → 网络报文 → 云端验证。
  3. 威胁模型:Bus 中间人、重放、回滚、时序故障注入(Glitch)、侧信道(功耗/EM)、密钥泄露、伪造证书、TOCTOU。
  4. 验证手段:
    • 形式验证(Formal):用 SVA 覆盖“PCR 一旦扩展即不可改写”、“签名私钥只在安全世界可见”等不变式。
    • 随机约束:在 UVM sequence 里随机化启动镜像版本、OTP 锁存位、PCR 初值、网络延迟,触发不同安全状态机路径。
    • 故障注入:在 RTL 级用 force 模拟电压 Glitch,看是否绕过度量扩展;在门级用 TetraMAX 生成 Fault 列表,检查签名是否仍合法。
    • 侧信道验证:用 PrimeTime PX 跑功耗仿真,确认签名操作功耗轨迹与密钥汉明重量无显著相关性(>80% 置信区间)。
    • 重放/回滚攻击:在 scoreboard 里维护“已用随机数”列表,任何重复 nonce 必须报警;同时用 FSM 检查版本计数器单调递增。
  5. 覆盖率指标:
    • 功能覆盖:OTP 锁定位交叉安全状态、证书链深度、PCR 扩展事件。
    • 安全覆盖:攻击向量列表(>50 条)与对应断言通过率 100%。
    • 代码覆盖:Toggle + FSM + Branch ≥ 98%,且不可覆盖点需安全团队签字。
  6. 国内合规:符合《商用密码产品认证规则》与 TC260 可信计算标准,签名算法优先 SM2/SM3;若出口需兼容 TPM2.0/ECC。
  7. Sign-off 交付:安全验证报告 + Formal 无边界违例证明 + 故障注入残差率 <1 FIT + 侧信道评估报告 + 版本化验证环境 Git 标签。

答案

我的远程认证验证策略分五步:

第一步,建立威胁模型与验证计划。联合安全架构师把“远端可信”拆成 5 条可测属性:①度量完整性 ②密钥机密性 ③抗重放 ④抗回滚 ⑤抗物理克隆。每条属性对应具体攻击向量,例如“重放”就列出“旧 nonce 重放”“镜像版本回滚”“证书链截断”等 12 种场景,形成可追踪的验证需求矩阵。

第二步,搭建分层验证环境。在芯片级 UVM 环境中实例化安全子系统(含 HSM、OTP、PCR、TRNG、SM2 加速器),并在同一仿真域外挂“云端参考模型”。参考模型用 C++ 写,调用国密 SM2/SM3 官方库,跑在 Linux 进程,通过 DPI-C 与 UVM 交互,实现“金签名”对比。Scoreboard 除常规数据比对外,还维护一个“时序安全窗口”,任何签名消息若时间戳偏离 TRNG 随机数生成时刻超过 2 ms 即判为攻击。

第三步,穷尽边界与攻击场景。

  • 用 Formal 对 8 条关键安全不变式做穷尽证明,例如“OTP 锁存后,boot 镜像度量值若与参考值不符则签名必须失败”,证明深度 120 周期内无反例。
  • 在 UVM 中写专用攻击 sequence:随机化镜像版本号、篡改 PCR 扩展值、重复发送历史 nonce、Glitch 安全状态机时钟,确保覆盖率组“attack_cg” 100% 命中。
  • 用 VCS Fault 注入 10 万个单比特故障,统计签名输出仍被参考模型接受的次数,残差率 0.7 FIT,满足 <1 FIT 要求。
  • 跑 100 万条随机消息,用 Matlab 脚本对功耗仿真波形做 t 检验,确认密钥汉明重量与功耗轨迹相关系数 p-value>0.05,通过侧信道初筛。

第四步,闭环追踪与回归。所有安全断言、覆盖组、故障用例接入 Jenkins nightly regression,一旦设计修改,24 h 内出差异报告。对每一次失败,用“安全缺陷分级”标准打分:关键级(可绕过签名)必须清零,重要级(信息泄露)需在流片前降到 0.1% 以下。

第五步,sign-off 交付。汇总 Formal 无边界违例截图、故障注入残差率、侧信道评估报告、覆盖率达标数据,由安全架构、设计、验证、后端四方评审签字,最终归档到配置库,作为芯片可信等级认证(CC EAL4+)的核心证据之一。

拓展思考

  1. 如果芯片面向车规,还需在远程认证链路里加入“安全时间戳”与“存活证明”(Alive Proof),验证策略要扩展到现场 ECU 与云端 TSP 之间的周期性挑战响应,如何用硬件定时器 + 消息计数器防止 10 年生命周期内回滚?
  2. 国内先进工艺已支持物理不可克隆函数(PUF),但 PUF 本身存在误码率。验证环境需要把“纠错码(ECC)”纳入参考模型,如何证明在 1e-6 误码率下仍能满足 128 bit 安全强度?
  3. 当 SoC 支持固件在线升级(FOTA),远程认证需验证“新旧版本共存”的混合度量场景。如何在仿真里构造 A/B 分区切换的随机时序,确保度量扩展不遗漏任何中间状态?
  4. 未来量子计算威胁加剧,国密标准正在制定 SM2 的抗量子迁移方案。验证策略应预留可插拔接口,使得一旦算法升级,只需替换参考模型与断言,无需重构整个 UVM 环境,这在架构上如何提前规划?