V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
henglinli
V2EX  ›  分享发现

Bitlocker 入坑纪

  •  
  •   henglinli · 2019-02-17 12:06:43 +08:00 via iPhone · 5636 次点击
    这是一个创建于 2107 天前的主题,其中的信息可能已经有所发展或是发生改变。
    结论:开启 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,推测其不受该漏洞影响,故而未禁用硬件加密。
    第 1 条附言  ·  2019-02-17 16:50:04 +08:00
    根据 @Osk 的提醒,结论应修改为:
    暂停 Bitlocker 保护后更新固件或者硬件。
    第 2 条附言  ·  2021-02-04 22:56:37 +08:00

    关于TPM PCRs^1^2

    • 配置修改UEFI BIOS后就会触发BitLocker恢复模式,触发的条件就按照PCRs分类的。

    目前状态:

    • sgx禁用,之前以为BitLocker会用到它。
    • DMA内核保护无法开启。因为msinfo显示PCR7设定无法联结,即使在组策略中开启也不行。
    • 没有设定BitLoker启动PIN和启动密钥,只有一个加密的C盘。
    • 目前用的是自签名的systemd boot(启动项名为Linux Boot Manager)链载(chainload)bootmgfw的方式启动Windows的。名为Windows Boot Manager的启动项已删除,并没有再遇到的Windows还原Windows Boot Manager启动项的情况(完全搞不懂...),甚至Windows启动恢复功能也无法还原。

    其他注意事项:

    • 删除了Windows保留分区无法开启BitLocker(我干过...);开启BitLocker不需要恢复分区,甚至不需要安全启动。
    • 无法开启Bitlocker的一个可能原因是U盘没有取出(PCR2?),即使在BIOS中关闭了USB设备引导。
    • 插上U盘启动Windows会触发BitLocker恢复模式(我遇到过...)。
    • 由\EFI\Microsoft\Boot\bootmgfw.efi引导变成\EFI\Boot\bootx64.efi也会触发BitLocker恢复模式,即使他们是同一个bootmgfw (PCR4?)。
    • 切换UEFI启动项不会触发BitLocker恢复模式。即如由OpenCore启动到MacOS后,再由bootmgfw启动到Windows时不会触发BitLocker恢复模式。但是HaC-Mini默认开启OpenCore启动项保护BootProtect ,每次启动将OpenCore移到首位。这种情况如果触发了BitLocker恢复模式,关闭OpenCore启动保护即可。
    14 条回复    2019-02-19 14:22:09 +08:00
    silymore
        1
    silymore  
       2019-02-17 13:39:31 +08:00 via iPhone
    说起 bitlocker 想起来单位的电脑开 bitlocker 忘记密钥之后可以联系 it 解开,搞不懂怎么实现的,难道加密算法里预先留了后门了?
    mayx
        2
    mayx  
       2019-02-17 13:46:58 +08:00 via Android
    @silymore 不,bitlocker 有恢复密钥,登录的用户都会备份一份到微软服务器
    vibbow
        3
    vibbow  
       2019-02-17 13:46:59 +08:00
    @silymore 域里的电脑,密钥是可以存在域控上的。
    Osk
        4
    Osk  
       2019-02-17 14:55:28 +08:00 via Android   ❤️ 1
    1. 微软在后续更新中好像默认会不使用 SSD 的硬件加密了,因为前段时间部分 SSD 固件安全性做的太糟 jtag 轻松破解。
    2. intel U 有 aes-ni, 软件加密性能我完全能接受。
    3. 更换固件配置后,每次开机都要求恢复密码其实是可以通过重新添加 bitlocker 保护器恢复 tpm 保护的,不用解密后再加密。。。另外更改固件 /硬件前可以暂停保护来避免这个问题。
    henglinli
        5
    henglinli  
    OP
       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
        6
    diguoemo  
       2019-02-17 17:03:49 +08:00 via Android
    我觉得这个加密不靠谱,还是用 veracrypt 舒服
    henglinli
        7
    henglinli  
    OP
       2019-02-17 17:26:07 +08:00
    @diguoemo VeraCrypt 影子分区功能很有趣。可是易用性确是没有 Bitlocker 高,但是认为 BitLocker 不靠谱是正确的。
    重要数据我还是选择加密后放到 google drive。
    sdijeenx
        8
    sdijeenx  
       2019-02-17 17:39:27 +08:00
    LZ 主板自带的 tpm 模块是什么型号的?
    henglinli
        9
    henglinli  
    OP
       2019-02-17 17:50:48 +08:00
    @sdijeenx nuc8i7hnk 自带的,intel ptt。但是不清楚的是 intel ptt 是固件实现的还是主板芯片组集成的 tpm 模块。
    Osk
        10
    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
        11
    henglinli  
    OP
       2019-02-19 12:19:06 +08:00 via iPhone
    @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
        12
    henglinli  
    OP
       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
        13
    henglinli  
    OP
       2019-02-19 13:05:27 +08:00
    补充:
    其实开启 Bitlocker 的前检查是未通过的。。。
    错误信息如此:”指定的资料磁碟未在目前的电脑上设定未自动解除锁定,因此无法自动解除锁定。未加密 C:“。

    他的意思是要让我先加密数据盘,然后设定数据盘为自动解除锁定,然后再加密系统盘。
    我之前估计是在设定自动解除锁定后再加密系统盘的,我在保证检查通过的情况下再加密一次。
    henglinli
        14
    henglinli  
    OP
       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 就是这么实现的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1173 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:05 · PVG 02:05 · LAX 10:05 · JFK 13:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.