Bitlocker 入坑纪 - V2EX
henglinli

Bitlocker 入坑纪

  •  
  •   henglinli Feb 17, 2019 via iPhone 6213 views
    This topic created in 2641 days ago, the information mentioned may be changed or developed.
    结论:开启 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,推测其不受该漏洞影响,故而未禁用硬件加密。
    Supplement 1    Feb 17, 2019
    根据 @Osk 的提醒,结论应修改为:
    暂停 Bitlocker 保护后更新固件或者硬件。
    Supplement 2    Feb 4, 2021

    关于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 replies    2019-02-19 14:22:09 +08:00
    silymore
        1
    silymore  
       Feb 17, 2019 via iPhone
    说起 bitlocker 想起来单位的电脑开 bitlocker 忘记密钥之后可以联系 it 解开,搞不懂怎么实现的,难道加密算法里预先留了后门了?
    mayx
        2
    mayx  
       Feb 17, 2019 via Android
    @silymore 不,bitlocker 有恢复密钥,登录的用户都会备份一份到微软服务器
    vibbow
        3
    vibbow  
       Feb 17, 2019
    @silymore 域里的电脑,密钥是可以存在域控上的。
    Osk
        4
    Osk  
       Feb 17, 2019 via Android   1
    1. 微软在后续更新中好像默认会不使用 SSD 的硬件加密了,因为前段时间部分 SSD 固件安全性做的太糟 jtag 轻松破解。
    2. intel U 有 aes-ni, 软件加密性能我完全能接受。
    3. 更换固件配置后,每次开机都要求恢复密码其实是可以通过重新添加 bitlocker 保护器恢复 tpm 保护的,不用解密后再加密。。。另外更改固件 /硬件前可以暂停保护来避免这个问题。
    henglinli
        5
    henglinli  
    OP
       Feb 17, 2019
    @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  
       Feb 17, 2019 via Android
    我觉得这个加密不靠谱,还是用 veracrypt 舒服
    henglinli
        7
    henglinli  
    OP
       Feb 17, 2019
    @diguoemo VeraCrypt 影子分区功能很有趣。可是易用性确是没有 Bitlocker 高,但是认为 BitLocker 不靠谱是正确的。
    重要数据我还是选择加密后放到 google drive。
    sdijeenx
        8
    sdijeenx  
       Feb 17, 2019
    LZ 主板自带的 tpm 模块是什么型号的?
    henglinli
        9
    henglinli  
    OP
       Feb 17, 2019
    @sdijeenx nuc8i7hnk 自带的,intel ptt。但是不清楚的是 intel ptt 是固件实现的还是主板芯片组集成的 tpm 模块。
    Osk
        10
    Osk  
       Feb 19, 2019
    @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
       Feb 19, 2019 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
       Feb 19, 2019
    补充:
    清除 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
       Feb 19, 2019
    补充:
    其实开启 Bitlocker 的前检查是未通过的。。。
    错误信息如此:”指定的资料磁碟未在目前的电脑上设定未自动解除锁定,因此无法自动解除锁定。未加密 C:“。

    他的意思是要让我先加密数据盘,然后设定数据盘为自动解除锁定,然后再加密系统盘。
    我之前估计是在设定自动解除锁定后再加密系统盘的,我在保证检查通过的情况下再加密一次。
    henglinli
        14
    henglinli  
    OP
       Feb 19, 2019
    补充:
    看了这个 https://hardenedlinux.github.io/system-security/2018/10/03/platform_firmware_security_defense.html 之后,我估计问题出这里:ftpm 中的哈希值被 BitLocker 认为发生了变动,即安全启动成功了,但是未通过测量启动如果我的设备支持测量启动的话。重新加密后仍然被 BitLocker 保护判定是可能是因为 ftpm 中的哈希值未被更新。开启 sgx 后,ftpm 出了问题,我估计。我清除 me 后发现其中的 hash 值未被清除,不知道是不是 tpm 就是这么实现的。
    About     Help     Advertise     Blog     API     FAQ     Solana     3509 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 12:07 PVG 20:07 LAX 05:07 JFK 08:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86