Cold boot attack

Cold boot attack

内存(DRAM Memory)中的数据在断电后几秒~几分钟时长内仍然不会完全丢失。通过液氮冷冻等方式降低工作状态下的内存温度甚至可能将这个时长延迟到几个小时甚至几天。这种直接从正在运行中电脑内存里窃取数据(例如内存里保存的硬盘加密密钥)的方式即为冷启动攻击(Cold boot attack, cba)。

概述

强烈建议阅读 Lest We Remember: Cold-Boot Attacks on Encryption Keys 这篇 2009 年发表的论文,内容详实并且浅显易懂。

结论是,所有现有的硬盘加密方案(例如 Bitlocker、 truecrypt, dm-crypt)都可能受到这种攻击。特别是对于由 TPM 保护的 Bitlocker,对专业人士而言与不加密没有任何区别。

这篇论文针对的设备是当时主流的 DDR2 内存电脑。对于 DDR3 / DDR4 内存,cold boot attack 的时间窗口可能短得多,在一定程度上缓解了此类攻击威胁,但并没有完全消除。。

缓解措施

内存加密

应当这种攻击,最根本的解决方式是引入内存加密(Full memory encryption)。

针对 X86 平台,这类的纯软件解决方案包括 TRESOR (论文) 和 RamCrypt,(加/解密内存使用的)密钥保存在 CPU 寄存器(常常使用 x86 debug register 以避免冲突)里。软件解决方案可以在很大程度上缓解此类攻击,但设计上必须考虑很多因素,(例如:CPU 发生 context change(scheduler 触发当前执行进程的切换)时会将之前正在运行进程的所有寄存器信息到 RAM (swaping),可能存在信息泄露风险。所以访问存放密钥的CPU寄存器的代码块必须以 atomic 方式执行)。但这类软件解决方案提供的保护并不完整,只能保护硬盘的加密密钥不泄露,而内存里可能仍然保护大量的明文信息(例如文件系统缓存的硬盘扇区明文)。

硬件解决方案包括 intel 的 TME (Total Memory Encryption) (部分 12th 的高端 CPU 支持,如 i7-12700K)和 AMD 的 SME(Secure Memory Encryption)/ Transparent SME (部分锐龙2代和之后的 AMD CPU 支持),密钥存储在 CPU 的内存控制器里。intel 和 AMD 的硬件内存加密方案需要 CPU 和 主板都支持才可以启用,一般 BIOS 里默认禁用。

AMD: Transparent SME。一般位于 BIOS 设置 Advanced > AMD CBS。

Transparent SME (TSME) as the name implies is a stricter subset of SME that requires no software intervention. Under TSME, all memory pages are encrypted regardless of the C-bit value. TSME is designed for legacy OS and hypervisor software that cannot be modified. Note that when TSME is enabled, standard SME as well as SEV are still available. TSME and SME share a memory encryption key.

Intel 和 AMD 的硬件内存加密方案会在每次启动时在 CPU 内部随机生成新的密钥并用其在读写内存时对其进行透明加密。这种方案能够彻底防止 Cold boot attack(除非攻击者物理破解了 CPU 的硅芯片,而对于纳米级别制程的现代 CPU,这种攻击几乎是不可能的,除非 CPU 在设计时存在后门,或者 Intel 的 Management Engine 或 AMD 的 Platform Security Processor 固件存在漏洞)。


Last update: 2022-11-29 09:19:12 UTC