BitLocker
BitLocker是内置于Windows Vista及之后操作系统的磁盘加密功能,通过加密整个磁盘分区来保护用户数据。它默认在密码块链接(CBC)或XTS模式下使用128位或256位密钥的AES加密算法[1][2][3]。其中CBC用于每个单独的磁盘扇区,不在整个磁盘上使用[4]。
磁盘驱动器创建BitLocker的选项 | |
其他名称 | 设备加密 |
---|---|
開發者 | 微软 |
操作系统 | Microsoft Windows |
类型 | 磁盘加密软件 |
网站 | learn |
历史
BitLocker起源于微软2004年的下一代安全计算基础架构,其临时代号为“基石”(Cornerstone)[5][6],功能为保护设备上的信息,尤其是在设备丢失或被盗的情况下。另一个特性为“代码完整性根检测”(Code Integrity Rooting),旨在验证Microsoft Windows引导与系统文件的完整性[5]。
当与兼容的可信平台模块(TPM)结合使用时,BitLocker可以在解密受保护的卷之前验证引导和系统文件的完整性,如果验证失败,会禁止用户访问受保护的系统。[7][8]在Windows Vista发售之前,BitLocker简称安全启动(Secure Startup)[7]。
可用系统
BitLocker内置于以下系统:
- Windows Vista与Windows 7旗舰版与企业版
- Windows 8与8.1专业版与企业版[9][10]
- Windows 10與Windows 11专业版、企业版与教育版[11]
- Windows Server 2008[12]及其之后系统[13][9]
最初,Windows Vista中的BitLocker图形界面只能加密操作系统卷。从Windows Vista Service Pack 1和Windows Server 2008开始,图形工具可以加密操作系统卷以外的卷。然而,BitLocker的某些功能(例如打开或关闭自动锁定)必须通过名为manage-bde.wsf
的命令行工具进行管理[14]。
新版BitLocker首次包含在Windows 7和Windows Server 2008 R2中,增加了加密可移动驱动器的功能。在Windows XP或Windows Vista上,BitLocker To Go Reader程序可以实现对使用FAT16、FAT32或exFAT文件系统驱动器的只读访问[15]。另外,新的命令行工具manage-bde
替换了旧的manage-bde.wsf
[16]。
从Windows Server 2012和Windows 8开始,微软通过硬盘加密规范完善了BitLocker,该规范允许将BitLocker的加密操作下放到存储设备的硬件中完成[17][18]。此外,BitLocker现在可以通过Windows PowerShell进行管理[19]。最后,Windows 8企业版引入了Windows To Go,可受BitLocker保护[20]。
设备加密
Windows Mobile 6.5、Windows RT和Windows 8.1标准版包含设备加密(Device encryption)——BitLocker的功能限制版本——用于加密整个系统[21][22][23]。使用具有管理权限的微软帐户登录将自动启动加密过程。恢复密钥存储到微软帐户或活动目录中,允许任何计算机检索。虽然Win 8.1全版本提供了设备加密功能,但与BitLocker不同,设备加密要求设备符合InstantGo(前称Connected Standby,译为联网待机)规范[23],需要固态驱动器,不可拆卸RAM(防止冷启动攻击)和一个TPM 2.0芯片[21][24]。
加密模式
有三种认证机制可以用来构建BitLocker加密[25]:
- 透明运行模式:此模式使用TPM 1.2硬件的功能来透明运行。此模式下,用户在无感知的情况下正常启动并登录到Windows。用于磁盘加密的密钥由TPM芯片密封(加密),且在未检测到有对早期启动组件的修改的情况下被释放到操作系统加载代码中。因为其允许攻击者启动已关闭电源的机器,所以这种模式很容易受到冷启动攻击。
- 用户认证模式:此模式要求用户以预引导PIN或密码的形式向预引导环境提供认证。
- USB密钥模式:用户必须将包含启动密钥的USB设备插入计算机才能启动受保护的操作系统。此模式要求受保护机器上的BIOS支持在操作系统预加载阶段读取USB设备。密钥还可以通过使用CCID(芯片卡接口设备)读取加密智能卡获得。使用CCID比单纯将密钥文件存储在外部U盘更安全,因为CCID协议使用嵌入在智能卡中的加密处理器隐藏私钥,防止密钥因智能卡内容泄露而被简单获取。
上述认证机制支持以下组合,全部具有可选的托管恢复密钥:
运行
BitLocker是逻辑卷加密系统。一个卷的范围可以是硬盘驱动器的一部分、整个驱动器或多个驱动器。启用后,TPM和BitLocker可以确保可信引导路径(如BIOS和引导扇区)的完整性,阻止大多数离线物理攻击和引导扇区恶意软件[32]。
为使BitLocker加密保存操作系统卷,至少需要两个NTFS格式的卷:一个用于操作系统(通常为C盘),另一个大小至少为100 MB,用于操作系统引导[32]。BitLocker需要后者保持未加密状态[33]——在Windows Vista上,此卷必须分配一个驱动器号,而在Windows 7上则不需要[32]。与以前的Windows版本不同,Vista的“diskpart”命令行工具可以缩小NTFS卷的大小,以便从已分配的空间创建此卷。微软还有一个名为BitLocker驱动器准备工具的软件,可将Windows Vista上的现有卷缩小,为新的引导卷腾出空间,并将必要的引导文件传输到卷中[34]。
创建备用启动分区后需要初始化TPM模块(假设正在使用此功能),之后配置所需的磁盘加密密钥保护机制,如TPM、PIN或USB密钥[35]。对卷的加密会在后台完成,这在大型磁盘上可能需要大量时间,因为每个逻辑扇区都要被读取、加密并重写回磁盘[35]。这些密钥只有在整个卷被加密后才会被保护,这时此卷被认为是安全的[36]。 BitLocker使用低级设备驱动程序对所有文件操作进行加密和解密,这对于在平台上与加密卷进行交互操作的应用程序是透明的[35]。
加密文件系统(EFS)可以与BitLocker结合使用,在操作系统运行时提供保护。要控制操作系统中的进程和用户对文件的访问,使用者只能使用运行于Windows层面的加密软件(如EFS)。因此,BitLocker和EFS提供了针对不同类别攻击的保护。[37]
在活动目录环境中,BitLocker支持可选密钥托管到活动目录。如果活动目录服务托管在Windows Server 2008之前的Windows版本上,则可能需要先进行架构更新[38]。
BitLocker和其他全磁盘加密系统可能被恶意启动管理器攻击。一旦恶意引导程序获取解密用信息,它就可以解密卷主密钥(Volume Master Key,VMK),然后解密或修改加密硬盘上的任何信息。通过配置TPM来保护受信任的启动路径,包括BIOS和引导扇区,BitLocker可以减轻此威胁。 (注意,引导路径的一些非恶意更改可能会导致平台配置寄存器检查失败,从而生成错误的警告。)[32]
安全问题
据微软透露[39],BitLocker没有刻意设置后门。没有后门,执法机构就无法从安全通道获取微软提供的用户驱动器上的数据。2006年,英国内政部担心缺乏后门[40],试图与微软谈判,微软开发人员尼尔斯·弗格森和其他微软的发言人表示他们不会增加后门[41]。微软工程师曾表示,虽然没有正式的书面请求,联邦调查局特工也在许多会议上向他们施加压力,要求增加后门。微软的工程师最终向FBI建议,特工应该寻找BitLocker程序建议其用户创建的密钥硬拷贝[42]。虽然BitLocker使用的AES加密算法属公有领域,但它在BitLocker以及软件的其他组件中的实现都是专有的。该代码可供微软合作伙伴和企业审查,但须遵守保密协议。[43][44]
BitLocker的“透明运行模式”和“用户认证模式”使用TPM硬件检测BIOS和MBR预加载环境是否有未经授权的改变。如果检测到任何未经授权的更改,BitLocker将在USB设备上请求一个恢复密钥。该加密密钥用于解密卷主密钥,并允许继续运行引导过程[45]。
2008年2月,一个安全研究小组发布了所谓“冷启动攻击”的详细信息,其通过将机器从可移动介质(如USB驱动器)引导到另一个操作系统,然后转储预引导内存中的内容来损害诸如BitLocker的全磁盘加密系统[46]。攻击依赖于这样一个事实:电源关闭后,DRAM会保留长达数分钟的信息(冷却后的保留时间更长)。美国专利9,514,789号描述的Bress/ Menz装置可以完成这种攻击[47]。单独使用TPM不会提供任何保护,因为Windows运行时密钥保存在内存中。其他供应商和操作系统(包括Linux和Mac OS X)的类似全磁盘加密机制也容易遭受同样的攻击。普林斯顿大学教授的一篇论文推荐在未取得拥有者物理控制的情况下应将计算机关闭而不是处于睡眠模式,并且把加密软件配置为需要密码才能启动机器[46]。
一旦受BitLocker保护的机器开始运行,其密钥就会存储在内存中,可能易受能够访问物理内存的进程的攻击,例如通过1394或Thunderbolt DMA通道攻击[48]。从Windows 10版本1803开始,微软向BitLocker添加名为“内核DMA保护”的新功能,可防止通过Thunderbolt 3端口进行的DMA攻击[49]。
最初,Windows Vista使用AES的密码块链接(CBC)+大象扩散器(Elephant Diffuser)模式进行磁盘加密[50]。自Windows 8和Windows Server 2012开始,微软在没有声明原因的情况下从BitLocker方案中移除了大象扩散器(Elephant Diffuser),仅使用CBC模式进行磁盘加密[51]。软件工程师丹·罗森多夫(Dan Rosendorf)的研究表明,移除大象扩散器对BitLocker加密的安全性有“不可否认的负面影响”[52]。微软随后说明扩散器移除的原因是性能问题以及不遵守联邦信息处理标准(FIPS)[53]。从Windows 10版本1511开始,微软向BitLocker添加了新的符合FIPS标准的XTS-AES加密算法[1]。
2015年11月10日,微软发布了一项安全更新,修补BitLocker中的安全漏洞。漏洞使攻击者可以绕过目标计算机上的Kerberos身份验证,只有在计算机已加入域,目标系统已启用BitLocker且没有PIN或USB密钥的情况下,才能利用该绕过漏洞[54]。
manage-bde工具
Windows 7中加入了manage-bde
命令行工具以管理BitLocker加密分区。其主要功能参数为:
选项 | 功能 |
---|---|
-status | 分区的加密/解密及其正在进展中的状态显示 |
-on | 开始加密 |
-off | 开始解密 |
-pause | 暂停加密或解密 |
-resume | 恢复加密或解密 |
-lock | 阻止对加密数据的访问 |
-unlock | 允许对加密数据的访问 |
-autounlock | 管理自动解锁数据分卷 |
-protectors | 管理加密密钥的保护方式 |
-tpm | 配置计算机的可信平台模块 |
-SetIdentifier、-si | 配置分卷的identification field |
-ForceRecovery、-fr | 强制被BitLocker保护的操作系统在重启时恢复 |
-changepassword | 修改数据分卷的口令 |
-changepin | 修改分卷的PIN |
-changekey | 修改分卷的启动密钥 |
-upgrade | 升级BitLocker版本 |
-ComputerName、-cn | 在另一台计算机上运行,如“ComputerX”,“127.0.0.1” |
-?、/? | 显示帮助。如“-ParameterSet -?” |
-Help、-h | 显示完整帮助,如“-ParameterSet -h” |
参考资料
- Hakala, Trudy. . TechNet. Microsoft. 2016-11-29 [2016-12-15]. (原始内容存档于2016-11-12).
- . TechNet Library. Microsoft. 2012-03-22 [2007-09-05]. (原始内容存档于2010-09-26).
- Ferguson, Niels. (PDF). Microsoft. August 2006 [2008-02-22]. (原始内容 (PDF)存档于2016-03-03).
- Ferguson, Niels. (PDF). August 2006 [2016-10-07]. (原始内容 (PDF)存档于2017-02-13).
- Biddle, Peter. . Microsoft. 2004 [2015-01-30]. (原始内容 (PPT)存档于2006-08-27).
- Thurrott, Paul. . Supersite for Windows. Penton. 2005-09-09 [2015-03-14]. (原始内容存档于2015-04-02).
- Microsoft. . 2005-04-22 [2015-03-14]. (原始内容 (DOC)存档于2017-07-01).
- Microsoft. . 2005-04-21 [2015-06-09]. (原始内容 (DOC)存档于2016-03-04).
- . TechNet Library. Microsoft. 2012-02-15 [2012-03-02]. (原始内容存档于2012-03-04).
- . TechNet Library. Microsoft. 2012-03-22 [2007-09-05]. (原始内容存档于2010-09-26).
- . Windows for Business. Microsoft. [2017-07-02]. (原始内容存档于2016-11-17).
- . TechNet. Microsoft. [2017-07-02]. (原始内容存档于2016-11-17).
- . TechNet. Microsoft. [2017-07-02]. (原始内容存档于2016-11-17).
- Hynes, Byron. . TechNet Magazine (Microsoft). June 2008 [2008-07-18]. (原始内容存档于2008-08-29).
- . Microsoft. [2013-09-07]. (原始内容存档于2019-09-24).
- . TechNet. Microsoft. 2009-11-02 [2017-07-02]. (原始内容存档于2016-12-20).
- . TechNet. Microsoft. 2012-08-23. (原始内容存档于2017-07-05).
- . MSDN. Microsoft. 2011-09-13. (原始内容存档于2016-12-20).
- . TechNet. Microsoft. [2016-12-12]. (原始内容存档于2016-12-20).
- . TechNet. Microsoft. [2016-10-07]. (原始内容存档于2016-10-07).
- . Windows Mobile 6.5 Dev Center. Microsoft. 2010-04-08 [2014-07-06]. (原始内容存档于2014-12-18).
- Cunningham, Andrew. . Ars Technica. Condé Nast. 2013-10-17 [2014-07-06]. (原始内容存档于2014-07-05).
- . Windows Help portal. Microsoft. [2017-07-02]. (原始内容存档于2016-05-02).
- Thurrott, Paul. . Paul Thurrott's SuperSite for Windows. Penton Media. 2013-06-04 [2013-06-10]. (原始内容存档于2013-06-09).
- . Data Encryption Toolkit for Mobile PCs: Security Analysis. Microsoft. 2007-04-04 [2007-09-05]. (原始内容存档于2007-10-23).
- . MSDN Library. Microsoft. 2008-02-19 [2008-07-18]. (原始内容存档于2008-12-01).
- . MSDN Library. Microsoft. 2008-02-19 [2008-07-18]. (原始内容存档于2008-12-01).
- . MSDN Library. Microsoft. 2008-02-19 [2008-07-18]. (原始内容存档于2008-12-02).
- . MSDN Library. Microsoft. 2008-02-19 [2008-07-18]. (原始内容存档于2008-09-24).
- . MSDN Library. Microsoft. 2008-02-19 [2008-07-18]. (原始内容存档于2008-12-26).
- . MSDN Library. Microsoft. 2008-02-19 [2008-07-18]. (原始内容存档于2008-12-01).
- . TechNet. Microsoft. 2012-03-22 [2017-07-02]. (原始内容存档于2017-09-21).
- . [2017-07-02]. (原始内容存档于2017-07-03).
- . Microsoft. 2007-09-07 [2017-07-02]. (原始内容存档于2008-02-19).
- Andrew, Bettany. . Microsoft Press. 2013: 307 [2017-07-02]. ISBN 978-0-7356-7392-2. OCLC 851209981. (原始内容存档于2019-09-24).
- Jerry, Honeycutt. . Microsoft. 2012: 121 [2017-07-02]. ISBN 978-0-7356-7050-1. OCLC 819519777. (原始内容存档于2019-09-24).
- Ou, George. . TechRepublic. CBS Interactive. 2007-06-08 [2017-07-02]. (原始内容存档于2017-07-06).
- . Microsoft. [2016-07-01]. (原始内容存档于2016-08-09).
- . System Integrity Team Blog. Microsoft. 2006-03-02. (原始内容存档于2010-02-09).
- Stone-Lee, Ollie. . BBC. 2006-02-16 [2009-06-12]. (原始内容存档于2009-03-18).
- Evers, Joris. . CNET. CBS Interactive. 2006-03-03 [2008-05-01]. (原始内容存档于2011-06-16).
- Franceschi-Bicchierai, Lorenzo. . Mashable. [2016-10-07]. (原始内容存档于2016-10-07).
- Thurrott, Paul. . Petri. 2015-06-10 [2016-10-07]. (原始内容存档于2017-02-22).
- Microsoft. . www.microsoft.com. [2016-10-07]. (原始内容存档于2018-09-28).
- Byron, Hynes. . TechNet Magazine (Microsoft). [2007-08-21]. (原始内容存档于2007-09-03).
- Halderman, J. Alex; Schoen, Seth D.; Heninger, Nadia; Clarkson, William; Paul, William; Calandrino, Joseph A.; Feldman, Ariel J.; Appelbaum, Jacob; Felten, Edward W. (PDF) (学位论文). Princeton University. 2008-02-21 [2017-07-02]. (原始内容 (PDF)存档于2011-09-04).
- . USPTO.gov. [2017-04-01]. (原始内容存档于2018-09-19).
- . Microsoft. 2011-03-04 [2011-03-15]. (原始内容存档于2012-08-13).
- . Microsoft. 2019-03-26 [2020-03-16]. (原始内容存档于2020-04-22).
- 梁敏, 常朝稳, 樊雪竹. 加密存储算法和模式研究 (页面存档备份,存于) Research of Encryption Storage Algorithms and Modes[J]. 计算机工程, 2011, 037(013):101-103.
- . technet.microsoft.com. [2016-10-07]. (原始内容存档于2017-02-13).
- Rosendorf, Dan. (PDF). 2013-05-23 [2016-10-07]. (原始内容 (PDF)存档于2016-05-22).
- Lee, Micah. . The Intercept. 2015-06-04 [2016-10-07]. (原始内容存档于2018-10-03).
- . Security TechCenter. Microsoft. 2015-11-10 [2015-11-12]. (原始内容存档于2016-02-24).