Bitlocker 入坑纪

2019-02-17 12:06:43 +08:00
 henglinli
结论:开启 Bitlocker 后不要修改固件配置。
经过:
鬼迷心窍的我,看到这篇报道 https://www.solidot.org/story?sid=59561 后,认真了解了下 sgx,然后决定开启 sgx,理由是,万一已安装的程序或者系统组件中有支持 sgx 的呢?然后每次开机 Bitlocker 都让我输入 recovery key,说是固件配置变更或者插了 usb 存储设备,改回去也不行,现在正在重新开启 Bitlocker 中...我顺便修改 Bitlocker 使用 xts-aes256,之前使用的它默认选择的 xts-aes128。我的固态硬盘的技术问答仅注明支持 aes256,但是根据我观察发现 bit locker 加密、解密 aes128 时,cpu 占用 1%至 4%波动,推测此时任然使用了固态硬盘的硬件加密。查看 Bitlocker 组策略设定的说明后能确定其确实默认使用硬件加密。
关于某个漏洞的疑虑:
我查看了固态硬盘的主控芯片资料,它明确说明支持 tcg opal,推测其不受该漏洞影响,故而未禁用硬件加密。
5436 次点击
所在节点    分享发现
14 条回复
silymore
2019-02-17 13:39:31 +08:00
说起 bitlocker 想起来单位的电脑开 bitlocker 忘记密钥之后可以联系 it 解开,搞不懂怎么实现的,难道加密算法里预先留了后门了?
mayx
2019-02-17 13:46:58 +08:00
@silymore 不,bitlocker 有恢复密钥,登录的用户都会备份一份到微软服务器
vibbow
2019-02-17 13:46:59 +08:00
@silymore 域里的电脑,密钥是可以存在域控上的。
Osk
2019-02-17 14:55:28 +08:00
1. 微软在后续更新中好像默认会不使用 SSD 的硬件加密了,因为前段时间部分 SSD 固件安全性做的太糟 jtag 轻松破解。
2. intel U 有 aes-ni, 软件加密性能我完全能接受。
3. 更换固件配置后,每次开机都要求恢复密码其实是可以通过重新添加 bitlocker 保护器恢复 tpm 保护的,不用解密后再加密。。。另外更改固件 /硬件前可以暂停保护来避免这个问题。
henglinli
2019-02-17 16:44:19 +08:00
@Osk 感谢答复。

1. 目前 1089 版本的组策略描述依然是默认硬件加密。原话如下:

注意:「選擇磁碟機加密方法和加密強度」原則設定不適用於硬體式加密。硬體式加密使用的加密演算法會在磁碟機進行分割時設定。根據預設,BitLocker 會使用磁碟機上設定的演算法來加密磁碟機。「限制硬體式加密允許的加密演算法和加密套件」選項可讓您限制 BitLocker 在硬體式加密使用的加密演算法。如果設定的磁碟機演算法無法使用,BitLocker 會停用硬體式加密。

我看到的报道也说会改为默认软件加密,但是目前使用的情况——加密时 cpu 总占用仅仅%4 以下——来看,应该是默认使用硬件加密。但是不排除使用 aes-ni 时,cpu 不会占用太多的可能。关于有漏洞的 ssd 好像都是不支持 tcg opal 的主控。

2. 看到的评测是开启 aes-ni 的性能是提升 2 到 3 倍。对我而言安全大于性能,况且我认为我的 cpu 性能即使选择节能配置也是过剩。我之前甚至考虑过禁用 2 个核心,但是有人说并不会降低功耗,才没有这么做。

3. “重新添加 bitlocker 保护恢复 tpm 保护“的方法,之前不知道,控制面板没有类似的选项。
暂停 BitLocker 保护后修改固件配置的方法才是正确的,入坑了后就知道了。因之前看到测评说软件加密的 BitLocker aes128 和 aes256 的 cpu 占用差别不明显,所以我选择 aes256 重新加密一下。
diguoemo
2019-02-17 17:03:49 +08:00
我觉得这个加密不靠谱,还是用 veracrypt 舒服
henglinli
2019-02-17 17:26:07 +08:00
@diguoemo VeraCrypt 影子分区功能很有趣。可是易用性确是没有 Bitlocker 高,但是认为 BitLocker 不靠谱是正确的。
重要数据我还是选择加密后放到 google drive。
sdijeenx
2019-02-17 17:39:27 +08:00
LZ 主板自带的 tpm 模块是什么型号的?
henglinli
2019-02-17 17:50:48 +08:00
@sdijeenx nuc8i7hnk 自带的,intel ptt。但是不清楚的是 intel ptt 是固件实现的还是主板芯片组集成的 tpm 模块。
Osk
2019-02-19 01:07:10 +08:00
@henglinli 控制面板只有部分功能。
运行:

manage-bde -protectors -delete C: -Type TPM
manage-bde -protectors -add C: -tpm

系统会重新生成相应的“测量结果”, 这样 tpm 自动解密 key 就恢复了, 我之前遇到过一次,就是这样恢复的。


intel 的 ptt 应该算 fTPM,一些文档表明它是 Intel 芯片组的黑盒子 ME 提供的,安全性如何我其实很不放心,因为没看过详细的文档。
之前我的旧平板( fPM )我把 BIOS 替换成别人给的版本后重刷,然后没触发 tpm 保护。。。另外一条旧台式机的独立 tpm,换显卡的输出接口( vga --> hdmi )都触发了 tpm 保护,BitLocker 需要输入恢复密码解锁。蜜汁逻辑。。。
henglinli
2019-02-19 12:19:06 +08:00
@Osk 其实,目前我未解决该问题。你提供的上述命令我尝试过,无效。重新加密也无效。我做了两点重要的系统级别改动:1,我从 systemd boot chainload 重命名为 bootx.efi 的 bootmgfw.efi ; 2,系统保留分区被我删除了。在这两点改动之后的两次重加密是未出现错误提示的情况下,依然触发 bitlocker 保护。我也尝试过:1,manange bde disable 后重启动,也无效,推测和控制面板的暂停同功能。不过,Reddit 上有报告成功的案例,但是对我的无效。2,windows defender 中清除 tpm,重启后未触发 bitlocker 保护。推测该次开机应该重新测量,但是后续的开机触发了 bitlocker 保护。以下是我存疑的地方:1,我的设备在使用 Windows 开始菜单“关机”后,其实默认不是真正的关机,主板的一个 usb 口仍然可以供电,但是重新开机后 Windows 的系统监视器显示的运行时间是两次开机的和,这和 intel 官方文档描述的电源管理状态是不吻合的。usb 供电部分没有问题,问题是 cpu 运行时间表明其实 cpu 处于休眠状态,而不是掉电关机状态。所以我重新加密是在关机去掉电源线后开机进行的,但是依然触发了 bitlocker 保护。2,由于之前启用了 sgx,期间我开启了 Windows defender 中的内存完整性,如果该功能会用到 sgx 的话(估计不会),它会向 sgx 中写入一个类似于 key 的东西,算是一直固件改动了吧。

是的,我也看到有介绍说 intel ptt 是 me 实现的,但是我对此怀疑,因为未看到说禁用 me 会导致 ftpm 失效的报告。我估计会在今后某个时候折腾禁用 me,因为之前的一台设备默认是禁用了的,让人有点失望。

关于你提供的 bitlocker 案例我大胆的推测:会不会是固件告诉 bitlocker 自己发生变动了的?当 vga 是主板自带的,而 hdmi 是显卡上的时候。如果判定逻辑简单的话,它会发现少了 vga 设备吧。基于 hdmi 的攻击是存在的,参加最近 ps4 的 hdmi 相关的破解。(具体链接目前手机上没有好像 falloverflow 的 blog 就有)。所以我能表示理解这个案例的判定。主要是 hdmi 包含部分电源控制协议。
henglinli
2019-02-19 12:53:46 +08:00
补充:
清除 tpm 后,chrome 的需要重新登录,推测 chrome 用到了 tpm。可以肯定的是 chromebook 会用到 tpm,我的 chromebook 的 tpm 是 1.2 的,当处于开发模式时 tpm 会被“禁用”,dmesg |grep tpm 甚至能看到 tpm 模块崩溃了。。。

我的 nuc8i7hnk 的主板上应该是有一个 spi 接口的 dtpm 插座的,如果 tpm 卡片或者芯片通用接口是 spi 的话,估计能添加一个,就可以告别 intel tpp 了,但是这应该在禁用了 me 之后。

这是解密状态的 .\manage-bde.exe -status 的输出:

磁碟區 C: [Win]
[OS 磁碟區]

大小: 48.84 GB
BitLocker 版本: 無
轉換狀態: 已完全解密
加密百分比: 0.0%
加密方法: 無
保護狀態: 保護關閉
鎖定狀態: 已解除鎖定
識別碼欄位: 無
金鑰保護裝置: 找不到

”密钥保护装置“,应该说的就是 tpm,但是 windows defender 上却能查看到,但是状态栏部分的“证明”却标识为“不支持”
。对应的错误信息是:Device health attestation isn't supported on this device. 微软这么说:If you still encounter problems after addressing an error message, contact your device manufacturer for assistance.他让我去找 intel。。。。
不知道这个健康证明是不是就是“测量开机”要用到的,目前好像只能做的“安全开机”。

以上异常估计不会导致 BitLocker 保护判断发生,因为在我未开启 sgx 设置前,BitLocker 可以通过 tpm 来解密并开机的。
之后我会贴出加密后的 .\manage-bde.exe -status 的输出,记得好像“ 識別碼欄位”显示的是不明,但是 protectors get 能显示出来,但是清除 tpm 不会导致其变更。需要我再次加密确认下。
henglinli
2019-02-19 13:05:27 +08:00
补充:
其实开启 Bitlocker 的前检查是未通过的。。。
错误信息如此:”指定的资料磁碟未在目前的电脑上设定未自动解除锁定,因此无法自动解除锁定。未加密 C:“。

他的意思是要让我先加密数据盘,然后设定数据盘为自动解除锁定,然后再加密系统盘。
我之前估计是在设定自动解除锁定后再加密系统盘的,我在保证检查通过的情况下再加密一次。
henglinli
2019-02-19 14:22:09 +08:00
补充:
看了这个 https://hardenedlinux.github.io/system-security/2018/10/03/platform_firmware_security_defense.html 之后,我估计问题出这里:ftpm 中的哈希值被 BitLocker 认为发生了变动,即安全启动成功了,但是未通过测量启动——如果我的设备支持测量启动的话。重新加密后仍然被 BitLocker 保护判定是可能是因为 ftpm 中的哈希值未被更新。开启 sgx 后,ftpm 出了问题,我估计。我清除 me 后发现其中的 hash 值未被清除,不知道是不是 tpm 就是这么实现的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/535796

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX