Windows 10/Bitlocker

Windows 10/Bitlocker

启动流程

参考资料

  1. bios 初始化,cpu 对 bios /固件 进行验证,保证固件是可信的。但有些平台未正确配置验证,带来了风险。
  2. 固件初始化 TPM 。TPM 挂在 LPC 总线上,是可以被监听通信并窃取加密 key 的,成本也不高,用 FPGA 搞的。
    TPM 本身也会对主板 /固件进行一些验证,发生变化了则得不到解密的 key 。所以换主板基本不行的,倒是 tpm 可能有后门。
    固件读取硬盘的未加密分区上的 bootmgr/bootmgfw.efi 并执行,理论上你可以替代 Windows bootmgr 为恶意软件,但是:
    • TPM 可能检测到这一变化,拒绝放出 key,出现 bitlocker 恢复,要求提供 40 位 recovery pw 。不专业的用户可能会输入,然后密码被偷。
    • 在启用了 UEFI Secure Boot 的平台上,若恶意 bootloader 未签名,固件会拒绝启动,并提出警告通知用户系统可能被攻击。
    • 若攻击者有办法签名:如果利用 grub2 等工具的漏洞执行恶意代码,但也拿不到 tpm 的 key,因为 linux 的 grub 和微软 bootmgr 用的 UEFI SB 证书链不一样,导致 pcr7 变化,tpm 不会放出 key. 除非能搞到微软的 CA 私钥来攻击你。。。
    • 一些平台使用 UEFI SB + TPM2 + PCR7 时有严重漏洞,用一些手段能让 tpm 错误地给出 key 。
  3. 若上面的步骤都正常,bootmgr 解密 c 盘,并启动 Windows 内核,后续就没 tpm 啥事了。

启动后 C 盘确实解锁了,但 key 在内存里,要小心的攻击:液氮冰冻内存,然后读取内存数据很到密钥。所以要小心机器睡眠(sleep) (不要和休眠(hibernate)混淆,后者内存会断电)。以及雷电接口 /1394/pci-e 设备 dma 偷数据,此处 @AppleBootCamp /doge/

所以至少两个分区:

  • system/ efi system:未加密,内有 Windows bootmgr 引导代码,这些代码就 uefi sb/tpm 验证。
  • Windows 的 C 盘:加密分区

Bitlocker 的技术名词

  • 解密:把数据变成未加密存回硬盘。
  • 解锁:打开加密的卷,密钥存储在内存中,重启就会丢失。数据加解密在内存中进行,没有明文内容写在硬盘中。
  • 暂停保护:把钥匙(以明文形式)直接写在硬盘里。有极少数情况需要暂停保护,比如更新 bios 等操作时肯定会触发 pcr 改变的情况,数据加解密于内存中进行,写入硬盘的数据仍然是加密形式的。

对普通人来说,能做到最好的情况就是:
tpm + pin + usb key 三重验证,次一点就是 tpm + 启动 pin 验证(不是登陆界面那个 pin) ,最差也就 tpm 了。

查看加密硬盘信息

manage-bde -protectors D: -get

输出结果:

BitLocker Drive Encryption: Configuration Tool version 10.0.19041
Copyright (C) 2013 Microsoft Corporation. All rights reserved.

Volume D: [Data]
All Key Protectors

    Password:
      ID: {FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}

    External Key:
      ID: {FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}
      External Key File Name:
        FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF.BEK

    Numerical Password:
      ID: {FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}
      Password:
        123456-123456-123456-123456-123456-123456-123456-123456

    External Key:
      ID: {FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}
      External Key File Name:
        FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF.BEK
      Automatic unlock enabled.

其中显示的 "Numerical Password" 的 ID 就是对应硬盘分区的 disk identifier。其 Password 就是可以用于解密该分区的 Recovery Key。


Last update: 2021-10-18 01:28:59 UTC