解释安全擦除功能验证的特殊要求
解读
安全擦除(Secure Erase)不是简单的“写0”或“复位寄存器”,而是要在芯片生命周期内,按照国密/商密规范,把敏感数据区、密钥存储、冗余位、备份位、ECC余量、测试残留等全部清零,并给出“不可恢复”的证明。验证工程师必须证明:擦除动作在指定时间、指定电压、指定温度下完成;擦除后任何物理手段(如SEM、FIB、激光扫描、低温读取)都无法重构原数据;擦除过程不能被软件意外中断,也不能被调试接口绕过;擦除完成后芯片仍能正常启动且性能不降。国内客户通常要求通过国密二级及以上、EAL4+、银联芯片安全、工信部五所安全认证,因此验证计划必须覆盖这些标准的每一条测试用例,并能在审计时给出形式化证据。
知识点
- 国密SM4/SM2密钥生命周期模型:密钥“生成-使用-更新-销毁”四阶段,销毁阶段必须“物理不可逆”。
- NIST SP 800-88、ISO/IEC 27040 对“purge”与“destroy”的定义差异,国内等保2.0直接引用。
- 物理残留判定方法:数据重构概率≤2^-128,需用汉明重量、剩余电荷量、ECC分布三项指标量化。
- 防侧信道要求:擦除期间功耗曲线不能出现与密钥相关的尖峰,需做CPA/DPA 10000条迹线测试。
- 故障注入场景:电压毛刺、时钟毛刺、电磁脉冲、激光注入,必须证明擦除流程在单点故障下仍能完成或安全复位。
- 生命周期状态机:RMA、DFT、测试模式、用户模式、报废模式,各模式对擦除权限不同,验证要穷举跨模式跳转。
- 形式化验证点:用SVA断言证明“一旦触发secure_erase_pulse,在N个时钟周期后,全部敏感寄存器q值为0,且后续任何读操作返回0,直至下次密钥注入”。
- 可追溯性:每条用例必须映射到安全需求ID,审计时能够一键生成covergroup命中报告,缺失即视为认证不通过。
答案
安全擦除验证的特殊要求可归纳为“四性一证”:
- 完整性:覆盖所有存储介质——主SRAM、备份SRAM、ECC冗余、OTP影子寄存器、DFT扫描链、BIST结果寄存器、模拟eFuse余量。
- 不可恢复性:擦除后执行三遍“全地址读回+汉明重量检查”,要求汉明重量=0且剩余电荷量<0.1e;同时用UVM序列模拟物理重构攻击,对同一地址连续读1e9次,若出现任一位翻转回原始值,则判FAIL。
- 原子性:在电源毛刺、时钟丢失、复位断言、JTAG调试打断、外部中断并发五类场景下,擦除流程要么完整结束,要么触发安全复位并重新擦除;用形式化工具证明不存在“擦一半停一半”的中间态。
- 可证明性:生成独立的安全验证包,包含covergroup、断言、FSM路径、故障注入日志、功耗迹线、重构攻击脚本,全部归档到配置管理库,供第三方审计机构复现。
- 合规性:用例编号与《GM/T 0008-2012》《GB/T 22186-2016》《银联卡芯片安全规范》第7.3节一一对应,审计员抽样时能够直接调出仿真波形与需求条目,实现“一键溯源”。
拓展思考
-
如果芯片带“安全擦除”与“普通格式化”两条命令,如何防止软件通过时序竞争把普通格式化伪装成安全擦除?
提示:在RTL里用独立的一级安全状态机,只有状态机处于SECURE_ESCAPE且收到双密钥签名才能进入安全擦除,任何其他路径都无法驱动擦除引擎;验证时用SystemVerilog cover sequence证明两条命令在任意流水线交织下都不会进入同一擦除状态机。 -
温度反转效应:低温下SRAM单元保持电荷时间延长,可能导致“擦除后24小时仍可读”。如何在验证环境里量化?
提示:在UVM里例化行为级SRAM模型,加入温度-保持时间函数,跑完擦除后让模型进入-40℃、0.9V corner,再连续读1e12次,统计残留1的概率,要求低于2^-128。 -
国密二级以上要求“擦除完成后立即上报状态字,且状态字不可清零”。如何验证状态字本身不会被二次擦除?
提示:把状态字寄存器放在独立电源域,掉电后仍由POR域保持;用形式化工具证明任何后续擦除命令都无法改写该寄存器,covergroup里单独开一个bin“post_erase_status_overwrite”,确保为0。