如何验证存储芯片的硬件加密引擎?

解读

面试官抛出该问题,核心想考察三点:

  1. 是否理解“存储+加密”这一场景下的安全边界(数据通路、密钥生命周期、抗侧信道)。
  2. 能否把通用验证方法学(UVM/SV+形式+FPGA加速)映射到加密模块的特有属性(算法正确性、密钥隔离、随机数质量、侧信道鲁棒性)。
  3. 是否具备sign-off视角:除了功能,还要给出量化指标(coverage、MTBF、攻击成功率≤10⁻⁶)以及流片前必须交付的合规证据(国密/商密过审清单)。

国内存储芯片公司(长江存储、合肥长鑫、兆易、得一微等)普遍把加密引擎做成独立安全岛,验证团队需要与信息安全部、密码测评中心、后端物理设计三方对齐,因此回答必须体现“跨部门交付”意识。

知识点

  1. 国密合规:SM4/SM3/SM2算法向量集、随机数熵源≥128 bit、密钥封装格式符合GM/T 0008-2012。
  2. 安全验证维度:功能正确性、密钥隔离性、抗DPA/EMA二阶攻击、故障注入(FI)容忍度、真随机数健康测试(NIST SP 800-90B + GM/T 0005)。
  3. 验证方法:
    – 形式验证:对密钥扩展、S盒、有限域乘法做等价性证明(JasperGold SVA)。
    – UVM场景:基于UVM-ML开放加密算法VIP,构建“明文→加密→DMA写→断电重启→解密→回读”端到端scoreboard。
    – 侧信道仿真:PrimePower提取功耗波形,用TVLA(t-test)脚本自动判定泄漏阈值<5。
    – 故障注入:用VCS + FiSim在寄存器级注入单比特翻转,检查密文是否出现固定模式(避免DFA)。
    – FPGA加速:将SM4流水线放到Xilinx VU19P,跑国家密码管理局发布的百万组已知答案测试(KAT)+ 随机生成10⁹组盲测,通宵回归。
  4. Coverage模型:除了功能covergroup,必须定义security coverpoint(密钥全零/全F、同一密钥重用次数>2³⁰、随机数重放)。
  5. Sign-off标准:
    – 代码覆盖率100%(含FSM、toggle、branch)。
    – 断言覆盖率≥95%,其中安全断言≥50条。
    – 侧信道TVLA通过率≥99.9%,泄漏点=0。
    – 故障注入覆盖率≥98%,敏感寄存器列表由安全部评审冻结。

答案

“验证存储芯片硬件加密引擎,我把它拆成五步交付:

第一步,制定验证计划VP。与信息安全部对齐,明确需支持的算法列表(国密SM4-CBC/SM3-HMAC,以及国际AES-256-XTS),密钥源(真随机数TRNG、efuse、PUF),以及威胁模型(DPA、FI、 probing)。VP里把覆盖率拆成功能、安全、性能三张大表,直接映射到后续测试用例。

第二步,搭建可复用的UVM环境。加密引擎挂在存储控制器AXI总线上,我实例化国密VIP(支持SM4/SM3算法golden model),并在scoreboard里做“在线-离线”双轨比对:在线轨接DUT输出,离线轨用C-reference(经过国家密码管理局认证)跑相同向量。为了验证密钥隔离,我在env里插入“密钥影子监视器”,任何非安全域访问密钥寄存器立即报错。

第三步,执行形式验证+FPGA加速。对密钥扩展、S盒、GCM乘法器用JasperGold做等价性证明,保证综合后网表与RTL一致;随后把SM4核放到VU19P FPGA,跑国密KAT 1.2万条+随机盲测10亿条,一晚上完成等效RTL仿真100年量级,确保算法层面零缺陷。

第四步,安全专项验证。

  1. 侧信道:用PrimeTime PX提取功耗,跑TVLA脚本,t-value绝对值<4.5视为通过;若出现泄漏,反馈后端加掩码或插入随机延迟。
  2. 故障注入:用VCS+FiSim对4000个寄存器注入单比特翻转,检查输出密文是否满足“1 bit change → 50% bits avalanche”,否则记录为DFA漏洞。
  3. 真随机数:跑NIST 800-90B 1万条熵源波形,最小熵>0.98;同时用GM/T 0005扑克测试、 Runs测试,全部通过才算OK。

第五步,sign-off评审。汇总代码覆盖率100%、断言覆盖率97%、安全覆盖率100%(密钥零化、重放、生命周期切换),侧信道TVLA零泄漏,故障注入覆盖率98.5%,并输出《加密引擎安全验证报告》。报告经信息安全部、密码测评中心、后端物理设计三方会签后,才允许进入tape-out。

通过以上五步,我既能保证功能正确,也能交付国密合规和抗攻击量化证据,确保存储芯片一次流片成功。”

拓展思考

  1. 如果芯片同时支持固件升级,如何验证“在线密钥更新”不会引入降级攻击?
    答:在UVM环境里加入“版本号单调递增”断言,并用形式验证证明任何旧版本密钥无法通过回滚激活;同时用FPGA跑100万次升级断电重启测试,确保密钥槽始终处于最新有效版本。

  2. 面对物理探针攻击,验证团队如何与后端协同?
    答:验证阶段用Netlist-to-Layout比对工具(如Calibre PERC)提取“敏感线长>500 μm”列表,反馈后端加绕线或插入dummy fill;同步在仿真里用SPICE级功耗模型,验证加入mesh后DPA泄漏降低>10×,最终用硅后实测确认。

  3. 国内客户要求“国密+国际双算法同时使能”,如何验证资源仲裁不会导致信息泄漏?
    答:在UVM中构造“SM4与AES-256并行加解密”压力场景,用functional coverage收集“密钥交叉占用”事件,确保任何时刻两套密钥物理隔离;再用形式验证证明仲裁逻辑不存在“先写后读”冲突,从而避免侧信道泄漏。