Hacker News | 📄 原文链接 | 2026-09-24 收录

当调试器说谎:nRF54L 的密钥管理单元与陈旧的内存缓存

来源:danielmangum.com — 4 分 · by hasheddan

📋 概述

刚加入北欧半导体的 Daniel Mangum 在研究 nRF54L 系列安全架构时,习惯性地不用固件而是直接拿调试器戳寄存器。他在操作密钥管理单元 KMU 时读到了意料之外的数值:KMU 把密钥种子等敏感数据存在安全信息配置区 SICR 的槽位里,槽位 ID 从 0 到 249,每个可存 32 位元数据、32 位目的地址、128 位值以及 2 位吊销策略;发出 PUSH 任务时槽位里的值会被写到开通时指定的目的地址。问题出在 J-Link 的内存缓存:因为 CPU 已停机,而 KMU 这类外设能通过 DMA 在核停时改写内存,调试器会返回上次访问过的陈旧值。绕过方式是关掉缓存(monitor exec SetEnableMemCache = 0),或者用 stepi 推进几条指令让缓存失效——而作者提醒,日常并不该关缓存。

🔑 核心要点

💡 金句

JLinkArm.dll 的内存缓存在这种情况下返回陈旧值,原因是 CPU 已经停机,而我们试图读取一个不推进 CPU 就无法刷新的、此前已经访问过的内存地址。
← 返回 Hacker News 首页