TPM:dTPM(硬件)和fTPM(固件模拟的软件模块)

转:Bitlocker、TPM和系统安全

自从微软在Windows Vista首次引入Bitlocker以来,它已经越来越多的出现在我们的周围。尤其是企业用户,Bitlocker的保护已经变得不可缺少。本文将深入讨论它的原理和如何提高它的安全性。

什么是Bitlocker?

BitLocker 驱动加密是集成在Windows Server 2008和Windows Vista及以后版本中的一个新的安全特性,它通过紧密集成在Windows操作系统中的方案,来帮助降低数据偷窃或丢失导致的泄露,被盗,或不正确地报废计算机硬件所带来的实际威胁。BitLocker 是一种全卷加密技术,如果计算机在所安装操作系统脱机时受损,则该技术可确保存储在此计算机上的数据不会暴露。 它是针对具有兼容的受信任的平台模块 (TPM) 微型芯片和 BIOS 的系统而设计的。 如果存在这些组件,则 BitLocker 将使用它们来增强对数据的保护,并帮助确保早期启动组件的完整性。 此功能通过加密整个卷来帮助防止数据被盗或未经授权查看。

简单来说,BitLocker会将Windows的安装分区或者其他用于保存文件的分区进行加密,并将密钥保存在硬盘之外的地方,并对早期启动组件完整性检查,合并到一起来增强数据保护。

BitLocker主要有两种工作模式:TPM模式和U盘模式,同时为了实现更高程度的安全,我们还可以同时启用这两种模式。本文主要讨论TPM模式。

TPM和Bitlocker

TPM(Trusted Platform Module,可信平台模块)是根据国际行业标准组织可信计算组(TCG,其中包括微软、英特尔和惠普等公司)规范制作的模块,可以是dTPM真实硬件也可以是fTPM等由固件模拟的软件模块。TPM 1.2最早大规模商用,现在TPM2.0也开始广泛使用了。

TPM的主要作用是利用安全的经过验证的加密密钥带来强大的设备安全性。TPM功能的核心是签注密钥,这是在生产过程中内置到TPM硬件的加密密钥。这个签注密钥的私钥部分绝不会出现在TPM外部或暴露给其他组件、软件、程序或个人。另一个关键密钥是存储根密钥,该密钥也存储在TPM内;它被用来保护其他应用程序创建的TPM密钥,使这些密钥只能由TPM通过被称为绑定的过程来解密,TPM也是通过该过程锁定数据到设备。与签注密钥不同,只有当TPM设备第一次被初始化或新用户获得所有权时,存储根密钥才会被创建。

TPM还可以通过平台配置寄存器(PCR)机制来记录系统的状态。这允许TPM进行预启动系统完整性检查,也被称为远程证明,这是一个功能强大的数据保护功能。通过将数据加密密钥存储在TPM中,数据可以有效地受到保护,其中TPM有一系列参考值来检查PCR们的状态。只有系统状态与存储的PCR值匹配,这些密钥才会启封和使用,并且,只有在满足特定硬件和软件条件时,才能够访问系统。

TPM是许多安全应用的核心,我们今后会单独介绍它。本文只要知道Bitlocker最关心的密钥存储和PCR即可。

Bitlocker原理

我们仅仅介绍使用了TPM的Bitlocker。这就要求计算机安装了TPM 1.2以上硬件(dTPM或者fTPM),其他没有任何要求。整个解密的流程图如下:

(图片来源MSDN)

图解顺序的步骤如下:

1. BIOS 启动并初始化TPM。并measure firmware部分敏感内容和启动分区以及bootloader,将结果放入PCR组。

2.如果 PCR 值与期望值相匹配,则 TPM 将使用存储根密钥 (SRK) 对卷主密钥 (VMK) 进行解密。

3. 从卷中读取加密 FVEK,并使用解密 VMK 对其进行解密。

4. 访问磁盘扇区时,使用 FVEK 进行解密。

5. 为应用程序和过程提供解密数据。

其中SRK存储在TPM芯片中,它是整个过程的信任根。BitLocker通过检测PCR组,对主启动记录 (MBR) 代码、NTFS 启动扇区、NTFS 启动块、启动管理器和其他重要组件进行检查,如果被更改,则第2步将出错,要求输入recovery PIN值。

Bitlocker作用以及局限

如前文所说,BitLocker会将Windows的安装分区或者其他用于保存文件的分区进行加密,并将密钥保存在硬盘之外的地方,并对早期启动组件完整性检查,合并到一起来增强数据保护。

1. Windows安装盘和其他资料盘的加密,保护了脱机攻击。即把磁盘拆下来到别的机器上读出结果来。这样就算你的笔记本硬盘丢失了,里面的重要信息别人也拿不走。注意这里bootloader所在的UEFI启动分区并没有加密。

2. 启动组件完整性检查,保证了如果启动组件被更改,就拒绝启动,防止被植入恶意代码,造成整个链条的崩溃。

但是启用TPM后,因为SRK存储在TPM中,而不是像USB方式那样随时带走。这样虽然便利,不需要开机输入密码,但是硬件整体丢失后也为窃贼造成了方便。所以微软推荐采取TPM加PIN码的方式,可以大大降低数据泄漏的风险。

安全性

Bitlocker采用AES128或者256来加密数据,十分安全。固件通过measure启动中关键组件并存入PCR中保证了启动路径不被攻击,听起来现在已经十分安全了,但是很久之前就被发现有一个漏洞:“邪恶女服务员攻击”。

它所描述的就是这样一种情形:当计算机主人离开旅馆客房,而计算机无人看守时,一个邪恶的女服务生或任何其他可以进入这个房间的人,就可以随意鼓捣这台计算机了。因为在系统引导期间,BitLocker需要与用户交互来获得一个口令:

而这个阶段在Bootloader,而bootloader所在的UEFI启动分区并没有加密。这就造成了可乘之机:

1. 该邪恶的女服务员将恶意软件放入U盘,开机直接进入shell,将恶意软件copy到UEFI分区并修改启动路径。

2. 主人回家开机。

3. 恶意软件模仿Bitlocker弹出需要密码的界面。

4. 主人不明就里,输入密码。

5. 恶意软件截获秘密,发送到特定邮箱。它清空自己痕迹并重新启动。

6. 由于恶意软件痕迹被完全清除,PCR正常,正牌Bitlocker要求密码,主人又看到密码界面,以为输错了,又输一遍,并顺利进入系统,一切正常。

7. 第二天,邪恶服务员乘主人不在,拿着密码开机并copy关键数据到U盘。

8. 邪恶女服务员消失。一个巨大的阴谋正在酝酿。。。。。。。OMG!!

有什么应对的办法吗?其实你一定还记得我们介绍过的UEFI安全启动吧(UEFI安全启动),它会验证Bootloader的签名,它和Bitlocker配合起来可以防止这个风险。

其他

有一些杂项需要说明一下:

1. Bitlocker不一定需要TPM. UEFI安全启动也不一定需要TPM。

2. Bitlocker并不会加密UEFI分区,因为UEFI固件不知道如何解密它。

3. Bitlocker和UEFI安全启动无关,Bitlocker也不一定要求UEFI。

4. Bitlocker加密硬盘会造成性能损失,对机械硬盘有5%-15%的性能降低,但对SSD影响较小。

5. Bitlocker和TPM+密码联合使用后,如果密码丢失或者TPM损坏(可能性很小),则需要Recovery PIN(超长)。如果Recovery PIN丢失,个人用户数据将会丢失(就算TPM拆下来也没有用)。企业用户可以启用BitLocker Active Directory Recovery Password Viewer (RSAT),这样Recovery PIN会存储在企业活动目录域服务器中,丢失后只要打个电话给IT就可以了,这也是为什么企业为什么不担心密码丢失而大规模使用Bitlocker的原因。详见(BitLocker Active Directory Recovery Password Viewer Overview

更多系统安全文章:

老狼:Bitlocker、TPM和系统安全​zhuanlan.zhihu.com图标老狼:趣话安全启动:迷思与启示​zhuanlan.zhihu.com图标老狼:UEFI安全启动​zhuanlan.zhihu.com图标老狼:基于静态可信根(SRTM)的Bitlocker的工作原理是什么?​zhuanlan.zhihu.com图标

原文地址:https://www.cnblogs.com/jacklong-yin/p/9884900.html