你主板上有一排针脚,从装机那天起就没插过任何东西。它安静地待在那儿,你甚至不知道它叫什么。但如果你的电脑够老,这排空着的针脚就是一条通往你硬盘明文数据的捷径。
更反常识的是:攻击者根本不需要动这排针脚。它只是同一条总线上的顺路站点,真正被嗅探的是TPM芯片和CPU之间的通信。
先搞清楚你的机器用的是哪种TPM
现代TPM 2.0标准不需要独立芯片,它跑在CPU固件里,也就是fTPM。Intel第8代、AMD锐龙2000系列及更新的CPU都广泛支持。但更老的平台往往依赖独立TPM芯片(dTPM),插在主板上的TPM或JTPM1针脚上。
TPM的职责是每次启动时校验系统完整性,确认无误后才释放加密密钥,让BitLocker这类软件解密你的硬盘。启动参数——包括BIOS和引导程序代码——只要有任何变动,主密钥就不会被解封。这套设计本来是为了挡住那些不知道登录密码的人:他们没法直接启动一个Linux镜像,也没法把硬盘拆走读数据。
问题出在密钥交付的那一段路上。
密钥在路上是裸奔的
TPM确认系统状态没问题后,会把密钥通过一条简单的总线发给CPU,通常是LPC或SPI。这段通信不加密。
而LPC总线是共享的——串口针脚、那些常年空置的调试针脚,都挂在同一条线上。攻击者只要物理接触到你机器内部,插一块FPGA开发板或者逻辑分析仪,就能在一分钟内读到未加密的主密钥。
他甚至不需要用那排空针脚。直接把探针搭在dTPM芯片本体上,结果一样。拿到密钥之后,换任何一台机器都能解密你的硬盘。2019年Pulse Security用一块40美元的FPGA板演示过这个攻击。
想确认自己属于哪一类,在运行窗口输入“tpm.msc”看制造商信息:显示Intel、AMD或Microsoft,说明是固件TPM;显示Infineon、Nuvoton、STMicroelectronics或其他名字,那就是独立TPM。
物理接触是门槛,但丢电脑不是小概率
这个攻击没法通过互联网发起,攻击者必须摸到你的机器。台式机被盯上的可能性确实不高,但笔记本被偷或者遗失,风险就实打实存在。研究者已经在Dell、联想和微软的笔记本上验证过可行性。
大多数人用BitLocker都停在默认的“仅TPM”模式,启动过程不会额外要求任何认证。只要引导参数没被篡改,密钥就自动放行。有心人拿到你的笔记本,或者趁它无人看管,几分钟拆开底盖、接上预先配置好的逻辑分析仪,事情就结束了。
BitLocker装好之后基本没人再想起它,它就在后台待着。可老系统上的独立TPM芯片,面对的是便宜又简单的攻击手段。固件TPM也不是铁板一块,电压注入和软件层面的攻击依然是隐患,但它至少比独立TPM那种不加密的认证过程更安全。
加一个预启动PIN就能掐断嗅探
如果你的处理器不支持fTPM,补救办法是在BitLocker设置里启用预启动PIN或密码。这层额外认证打破了默认的自动模式——没有PIN,TPM不会释放主密钥。攻击者就算嗅探了总线,拿到的也是解不开的东西。
还可以再进一步:配置BitLocker同时要求启动密钥和PIN,并把启动密钥绑定到一个U盘上。代价是每次开机都要输PIN、插U盘,换来的是多一层保障。
这套“TPM + PIN + 启动密钥”构成三重认证,连现代fTPM系统也能一并加固。原因很直接:PIN不存储在任何地方,它在你的脑子里,或者一份安全的物理/数字文件中,电压毛刺和软件攻击都够不着它。
用固件TPM的机器做不了总线嗅探,但仍可能栽在别的漏洞上,多层认证照样值得开。至于还挂着独立TPM芯片的老电脑,如果不想被一块几十美元的板子在一分钟内掏空,这件事值得今天就动手。
热门跟贴