概述
本文首发于个人博客,文章链接为:https://blog.d77.xyz/archives/a9948ad5.html
解释
Bitlocker 可以拆分为bit locker,直接翻译的话就是比特锁,意思是每个 bit 都加密。Bitlocker 使用 AES 加密算法加密整个卷来保护数据。简单来说,BitLocker 会将 Windows 的安装分区或者其他用于保存文件的分区进行加密,并将密钥保存在硬盘之外的地方,并对早期启动组件完整性检查,合并到一起来增强数据保护。
BitLocker 主要有两种工作模式:TPM 模式和 U盘模式,同时为了实现更高程度的安全,我们还可以同时启用这两种模式。
加密模式
有三种认证机制可以用来构建 Bitlocker。
- 透明运行模式:此模式利用 TPM 硬件来提供透明的用户体验。所谓透明,就是用户可以在毫无知觉的情况下正常的使用电脑,可以在系统盘加密的情况且未检测到对启动组件的修改的情况下通过 TPM 硬件提供的密钥正常登录到 windows。由于这种方式允许攻击者物理接触计算机并且允许攻击者启动已关闭的计算机,所以这种方式容易受到冷启动攻击。
- 用户认证模式:此模式要求用户在预启动环境下提供引导 PIN 或密码进行认证。
- USB 密钥认证模式:此模式下用户必须将包含启动密钥的 USB 设备插入计算机才能启动受保护的操作系统。并且此模式下要求计算机 BIOS 支持在预加载阶段读取 USB 设备。密钥还可以通过智能卡设备获取,使用智能卡设备比单纯的将密钥保存在 USB 设备中要安全,因为智能卡使用内置的加密处理器将密钥加密存储,防止密钥因智能卡内容泄露被简单的获取到。
上述的认证机制支持一下组合:
- 仅TPM
- TPM + PIN
- TPM + PIN + USB密钥
- TPM + USB密钥
- USB密钥
- 仅密码
BitLocker的透明运行模式和用户认证模式使用 TPM 硬件检测 BIOS 和 MBR 预加载环境是否有未经授权的改变。如果检测到任何未经授权的更改,BitLocker 将在 USB 设备上请求一个恢复密钥。该加密密钥用于解密卷主密钥,并允许继续运行引导过程。
TPM
TPM(Trusted Platform Module,可信平台模块)是根据国际行业标准组织可信计算组(TCG,其中包括微软、英特尔和惠普等公司)规范制作的模块,可以是dTPM真实硬件也可以是fTPM等由固件模拟的软件模块。TPM 1.2最早大规模商用,现在TPM2.0也开始广泛使用了。
TPM 的主要作用是利用安全的经过验证的加密密钥带来强大的设备安全性。TPM 内置完全独立的计算和存储模块,不受其他硬件和软件漏洞的影响 ,可以保证存储在 TPM 内的密码的安全。
TPM 有两个重要的密钥,其中的核心密钥是签注密钥,这是在生产过程中内置到 TPM 中的密钥,这个密钥的私钥绝对不会出现在 TPM 的外部或暴露给其他的软件,个人等。另一个关键的密钥是存储根密钥,该密钥也存储在 TPM 内,该密钥用来保护其他应用程序创建的密钥,使这些密钥只能通过被称为绑定的过程来解密。此密钥是动态创建的,只有在 TPM 初始化或其他应用程序获得所有权时,存储根密钥才会被创建。
TPM还可以通过平台配置寄存器(PCR)机制来记录系统的状态。这允许TPM进行预启动系统完整性检查,只有系统状态与上一次存储的 PCR 值相匹配,TPM 才会解密系统启动需要的密钥。
Bitlocker 解密流程
这里我们仅仅解释仅使用 TPM 的Bitlocker。解密流程如下:
图中所示的启动顺序解释如下:
- BIOS 启动并初始化TPM。并measure firmware部分敏感内容和启动分区以及bootloader,将结果放入PCR组。
- 如果 PCR 值与预期值相匹配,则 TPM 将使用存储根密钥 (SRK) 对卷主密钥 (VMK) 进行解密。
- 从卷中读取加密 FVEK,并使用解密后的 VMK 对其进行解密。
- 访问磁盘扇区时,使用 FVEK 进行解密。
- 为应用程序和过程提供解密数据。
其中SRK存储在TPM芯片中,它是整个过程的信任根。BitLocker通过检测PCR组,对主启动记录 (MBR) 代码、NTFS 启动扇区、NTFS 启动块、启动管理器和其他重要组件进行检查,如果被更改,则第2步将出错,要求输入recovery PIN值。
其他
好了原理大概解释完了。接下来说说使用过程中的问题。
正常的加密保存恢复密钥就不说了,默认启用的 Bitlocker有一个问题:系统默认的模式是 TPM 模式(如果不选智能卡的话)。
也就是说如果系统正常启动的情况下, 系统的加密密钥是存储在 TPM 中的,可以直接启动系统而无需输入任何密码。因为启动时 PCR 的值与预期的 PCR 值相匹配,TPM 会进入正常的启动流程。
说白了就是如果你的电脑被偷了,攻击者直接启动你的电脑并且你的系统密码为弱密码或者没有密码的话,那么 TPM 相当于不存在,数据没有一点安全性可言。如果你还启用了数据盘的在此计算机自动解锁的话,那就更惨了。
只有在启动环境发生变更的情况下才会要求输入恢复密钥,因为开启 Bitlocker 没有设置过密码,所以只有输入恢复密钥才能解密系统。
但是如果进行冷启动攻击的话是有机会拿到解密密钥的。这里有一篇解密的文章。
所以这时候如果要保证数据安全的话需要开启 TPM 加 PIN 码模式,确保在启动之前输入正确的 PIN 码才能正常启动系统。这里我暂时没有使用此模式,因为感觉有点小麻烦。。。
这里就有一个合理的猜想:如果在开启 Bitlocker 之前,先在组策略中开启了 TPM 加 PIN 码模式的话,会不会在开启 Bitlocker 的时候就会提示设置密码?从而避免直接开启 Bitlocker 之后发现不用输入密码就进入系统了,还要去搜索怎么在开启了 Bitlocker 之后启用 PIN 码模式。在有时间了我回去试一下再来更新这个部分。
而且最新版本的 windows10 是默认启用 Bitlocker 加密的,启用 Bitlocker 加密只是激活了一下,所以在加密时会感觉一瞬间就加密完成的错觉。
参考链接:
https://zh.wikipedia.org/zh-hans/BitLocker
https://zhuanlan.zhihu.com/p/29840740
https://zh.wikipedia.org/zh-hans/BitLocker
最后
以上就是专注柜子为你收集整理的Bitlocker使用及原理的全部内容,希望文章能够帮你解决Bitlocker使用及原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复