冷启动攻击:断电之后内存还记得什么
关掉电脑,感觉像是一条清晰的界限。其实不是。承载运行系统工作内存的 DRAM 是一张由微小电容组成的网格,而电容会缓慢放电。断电后的几秒钟、有时几分钟里,芯片仍保留着大部分写入的内容,其中包括全盘加密在开机时装入的卷密钥。攻击者只要用一个极简的引导程序重启这样一台机器,再把残留数据复制出来,就能带走这些密钥。这就是冷启动攻击,而且早在 2008 年,它就已经在真实、广泛使用的加密产品上被演示过。
为问题命名的普林斯顿研究
经典演示来自普林斯顿大学信息技术政策中心(Center for Information Technology Policy)的研究人员及其合作者。他们的论文 'Lest We Remember: Cold Boot Attacks on Encryption Keys' 于 2008 年 7 月在圣何塞的 USENIX Security 会议上发表。那段与今天之间的距离值得直说:这项技术由来已久,警告也是。作者证明,DRAM 在断电后能把内容保持几秒到几分钟,哪怕处于工作温度、哪怕内存条已被从主板上拔下;而团队用制冷喷剂实施的简单冷却,会把这个窗口戏剧性地拉长。在不借助特殊设备或材料的情况下,他们从内存映像中恢复了磁盘加密密钥,并在冷重启中攻破了 BitLocker、FileVault、dm-crypt 和 TrueCrypt。他们还描述了在部分退化的内存中定位密钥并纠正位错误的算法。密钥为什么能存活
AES 的密钥调度表(key schedule)是薄弱点。扩展后的密钥带着大量内部冗余存放在内存里,因此即使一份充满噪声的转储也能被校正回真正的密钥。而现代硬件并没有堵上这个洞。2017 年的一项学术分析 'Cold Boot Attacks are Still Hot: Security Analysis of Memory Scramblers in Modern Processors' 检验了当代处理器施加在 DRAM 上的加扰(scrambling)逻辑——一种常被认为能钝化此类攻击的措施——结果发现它无效:加扰掩码可以由转储数据本身推导出来。作者构建了一个概念验证,从现代处理器的内存中恢复出一把 AES 磁盘加密密钥,而他们的攻击依靠的是一次短暂断电,而不是冷却内存条。为什么关机不等于安全
如果密钥在关机时会被可靠擦除,这个窗口本应很小。但有几种常见的电源状态从不擦除任何东西。挂起到内存(suspend-to-RAM)让 DRAM 保持通电和刷新:系统持有的每一把密钥都原地不动,藏在一个可以直接攻击的锁屏后面。休眠则把 RAM 镜像写进磁盘,它的安全程度完全取决于交换或休眠卷的加密状况——未加密存储上的一份运行中内存快照就是一份礼物。即便是热重启,也不会长时间切断内存条的供电。为用户记录了这一威胁的 Tails 项目把这种暴露说得很直白:……在关机后仍可在 RAM 中保留数分钟……这条警告针对的是普通笔记本。一台在日常意义上已关机的机器——盖子合上、屏幕熄灭、电源状态模糊——可能仍装着攻击者想要的一切,而把它拿走只需要几秒钟。
真正存在的缓解措施
Tails 是日常使用中最显眼的防御。关机时,系统会用随机数据覆写大部分 RAM;当启动介质在运行中被物理拔出时,同样的擦除也会触发——这条紧急路径正是为有人抢夺机器的那一刻设计的。底层依赖内核的 init-on-free 特性,外加一个监视 USB 介质的看门狗进程;设计文档还补充说,擦除进程所需的文件从开机起就被锁定在内存中,因此擦除运行期间不会被换出。与之配套的习惯并不花哨,但很具体:- 完全关机而不是挂起,尤其是在把设备交给别人之前。
- 熟悉你系统最快的关机路径,因为擦除需要时间执行。
- 绝不让运行中或挂起中的笔记本离开物理视线。
- 如果硬件在高风险场合离开过你的视线,把它当作可能被动过手脚,而不只是关过机。










