Windows 加密原理详解
BitLocker加密原理
一、总体概况:
Bitlocker 可以拆分为bit locker,直接翻译的话就是比特锁,意思是每个 bit 都加密。Bitlocker 使用 AES 加密算法加密整个卷来保护数据。简单来说,BitLocker 会将 Windows 的安装分区或者其他用于保存文件的分区进行加密,并将密钥保存在硬盘之外的地方,并对早期启动组件完整性检查,合并到一起来增强数据保护。
BitLocker 主要有两种工作模式:TPM 模式和 U盘模式,同时为了实现更高程度的安全,我们还可以同时启用这两种模式。
二、加密模式
关键词:TPM(Trusted Platform Module,可信平台模块)
(以下内容摘自windows自带系统介绍:学习加以整理)
TPM (受信任的平台模块) 可用于提高电脑的安全性。 它可由 BitLocker 驱动器加密、Windows Hello 等服务用安全的创建建和存储加密密钥,以及确认设备上的操作系统和固件符合要求,并且未被篡改,通常,它是母板上单独的芯片。
TPM的主要作用是利用安全的经过验证的加密密钥带来强大的设备安全性。TPM功能的核心是签注密钥,这是在生产过程中内置到TPM硬件的加密密钥。这个签注密钥的私钥部分绝不会出现在TPM外部或暴露给其他组件、软件、程序或个人。另一个关键密钥是存储根密钥,该密钥也存储在TPM内;它被用来保护其他应用程序创建的TPM密钥,使这些密钥只能由TPM通过被称为绑定的过程来解密,TPM也是通过该过程锁定数据到设备。与签注密钥不同,只有当TPM设备第一次被初始化或新用户获得所有权时,存储根密钥才会被创建。
(以下内容摘自CSDN学习:学习借鉴)
有三种认证机制用来构建 Bitlocker。
透明运行模式:此模式利用 TPM 硬件来提供透明的用户体验。所谓透明,就是用户可以在毫无知觉的情况下正常的使用电脑,可以在系统盘加密的情况且未检测到对启动组件的修改的情况下通过 TPM 硬件提供的密钥正常登录到 windows。由于这种方式允许攻击者物理接触计算机并且允许攻击者启动已关闭的计算机,所以这种方式容易受到冷启动攻击。
用户认证模式:此模式要求用户在预启动环境下提供引导 PIN 或密码进行认证。
USB 密钥认证模式:此模式下用户必须将包含启动密钥的 USB 设备插入计算机才能启动受保护的操作系统。并且此模式下要求计算机 BIOS 支持在预加载阶段读取 USB 设备。密钥还可以通过智能卡设备获取,使用智能卡设备比单纯地将密钥保存在 USB 设备中要安全,因为智能卡使用内置的加密处理器将密钥加密存储,防止密钥因智能卡内容泄露被简单地获取到。
BitLocker的透明运行模式和用户认证模式使用 TPM 硬件检测 BIOS 和 MBR 预加载环境是否有未经授权的改变。如果检测到任何未经授权的更改,BitLocker 将在 USB 设备上请求一个恢复密钥。该加密密钥用于解密卷主密钥,并允许继续运行引导过程。
三、BitLocker 加密原理:
(以下内容摘自知乎,学习加以补充)
(图片来源MSDN)
Encrypted-加密的
Decrypt-解密
图解顺序的步骤如下:
1.BIOS 启动并初始化TPM。并measure firmware(测量固件部分敏感内容和启动分区,我理解是类似身份验证等,输入的password信息)以及bootloader,将结果放入PCR组。
(BlOS(Basic Input Output System)从字义上称为“基本输出输入系统”, 专门负责系统硬件各种参数设定,本质上是“程序”,也就是一组“代码”。 在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。)
2.如果 PCR 值与期望值相匹配,则 TPM 将使用存储根密钥 (SRK) 对卷主密钥 (VMK) 进行解密。
3.从卷中读取加密 FVEK,并使用解密 VMK 对其进行解密。
4.访问磁盘扇区时,使用 FVEK 进行解密。
5.为应用程序和过程提供解密数据。
其中SRK存储在TPM芯片中,它是整个过程的信任根。BitLocker通过检测PCR组,对主启动记录 (MBR) 代码、NTFS 启动扇区、NTFS 启动块、启动管理器和其他重要组件进行检查,如果被更改,则第2步将出错,要求输入recovery PIN值。
全卷加密密钥(Full Volume Encryption Key,FVEK)
整个 BitLocker 体系中最重要的一把密钥,每一个加密的磁盘分区都有自己独立的 FVEK 密钥。FVEK 使用 AES 算法加密解密扇区密钥。
卷主密钥(Volume Master Key,VMK)
Windows 操作系统使用 VMK 通过 AES 算法加密解密不同磁盘分区的 FVEK。
存储根密钥(Storage Root Key,SRK)
如果使用了 TPM 芯片,TPM 会生产一个 RSA 算法的 SRK,然后用 SRK 密钥对 VMK 密钥进行加密解密。
启动密钥(Startup Key)
如果使用 U 盘,Windows 系统会在 U 盘保存一个启动密钥,然后用该密钥通过 AES 算法对 VMK 密钥进行加密解密。
我大体整理了一个中文的思路图。
经过查询资料,我认为Password应该起到的作用是利用TPM生成全卷加密密钥,进而可以解密磁盘的VMK密钥,进而可以得出整个磁盘原始信息。主要加密利用的原理是AES算法。
四、Bitlocker的能否破解?
经过网上的浏览资料,可以分为以下几个破解方向:
1,如果备份密钥放在其他主机磁盘中,黑客可以通过查询主机中的备份密钥进行破解。
2,如果备份密钥保存在windows账户中,则黑客可以通过套取用户密码等方式,进行账户破解,进而得到备份密钥进行破解。
3,使用BitLocker而不使用TPM时,所需加密密钥存储在USB闪存驱动器中,必须提供该驱动器才能解锁存储在卷上的数据。
4,针对算法破解,BitLocker使用AES(高级加密标准/Advanced Encryption Standard)128位或256位的加密算法进行加密,其加密的安全可靠性得到了保证,通常情况下,只要密码有足够强度,
BitLocker 驱动器加密功能默认使用128位 ASE 算法进行加密,也可以设置使用256位 ASE 算法。ASE 算法的复杂性可以参考下面的内容。
如果采用暴力破解的方式破解128位 ASE 算法大概需要尝试 2的126.1次方(2^126.1)次才能破解;256位 AES 算法大概需要尝试 2的254.4次方(2^254.4)次才能破解。
如果是1秒钟尝试20亿亿次不同的组合。1075/(20*108*108*86400*365)=1058/86400/365/2>1050年。这么长时间远远大于太阳的寿命,6*109亿年。
即使是我国“天河二号”超级计算机的运算速度每秒10亿亿次,枚举思路的时间消耗也非常大。
这种加密思路就很难被破解,但现在也有一些其他针对加密机制等等破解方法。
①如BitCracker
是第一个针对使用BitLocker加密的存储设备(硬盘,USB Pendrive,SD卡等)的开源密码破解工具,BitLocker是Windows Vista,7,8.1和10(Ultimate,Pro和Enterprise)上提供的加密功能版本)。BitLocker提供了许多不同的身份验证方法来加密存储设备,如可信平台模块(TPM),智能卡,恢复密码,用户提供的密码。
通过字典攻击,BitCracker尝试找到正确的用户密码或恢复密码来解密加密的存储设备。它已在CUDA和OpenCL中实现。
但经过查阅资料,这种方法需要提供大量的字典,进行攻击,仍然属于字典攻击。
②据微软透露,BitLocker没有刻意设置后门。没有后门,执法机构就无法从安全通道获取微软提供的用户驱动器上的数据。BitLocker的“透明运行模式”和“用户认证模式”使用TPM硬件检测BIOS和MBR预加载环境是否有未经授权的改变。如果检测到任何未经授权的更改,BitLocker将在USB设备上请求一个恢复密钥。该加密密钥用于解密卷主密钥,并允许继续运行引导过程[45]。
③一旦受BitLocker保护的机器开始运行,其密钥就会存储在内存中,可能易受能够访问物理内存的进程的攻击,例如通过1394或Thunderbolt DMA通道攻击。从Windows 10版本1803开始,微软向BitLocker添加名为“内核DMA保护”的新功能,可防止通过Thunderbolt 3端口进行的DMA攻击。2015年11月10日,微软发布了一项安全更新,修补BitLocker中的安全漏洞。漏洞使攻击者可以绕过目标计算机上的Kerberos身份验证,只有在计算机已加入域,目标系统已启用BitLocker且没有PIN或USB密钥的情况下,才能利用该绕过漏洞。
所以,我认为如果针对Bitlocker的加密算法,利用字典攻击,枚举攻击,时间消耗非常大,依靠目前的常规算力难以实现,但是,Bitlocker的具体加密机制上,如TPM等等程序机制中,仍存在一些可以利用的加密漏洞,仍具有可以破解的可能性.
(此为知乎上的存在的破解思路:https://zhuanlan.zhihu.com/p/437950204)
五、Bitlocker的算法加密改进
BitLocker加密是近几代Windows操作系统(包括Win7/Win8/Win8.1)都有的功能,开启BitLocker后可对分区中的数据进行加密,防止你的数据失窃,在很多新出厂的Windows平板设备中也都默认启用该功能。
在Win10 TH2中微软引入了名为XTS-AES加密算法,使得数据加密更加安全。BitLocker支持128位和256位XTS-AES Key,不过你需要注意的是,采用新加密算法加密的驱动器在旧版本Windows操作系统中是不可以被访问的。改进后的BitLocker可以让用户通过Azure活动目录恢复设备。
主要新特性包括:
通过Azure活动目录加密和恢复设备。
除了使用微软账户,也可通过加入到Azure Active Directory域来自动加密设备。当设备被加密后,BitLocker恢复密钥会自动托管到Azure Active Directory。这样你便可以轻松在线恢复设备。
DMA端口保护。
用于配置预启动恢复的新组策略。你现在可以自定义预启动恢复提示信息以及恢复URL地址。微软一直在不断增强系统的安全性能,一方面提升系统的网络安全性,另一方面提升本地数据存储安全性,这些功能对于企业客户来说尤为重要。
XTS-AES算法介绍(截取知乎):
XTS即基于XEX(XOR-ENCRYPT-XOR)的密文窃取算法的可调整的密码本模式(Tweakable Codebook mode),该算法主要用于以数据单元(包括扇区、逻辑磁盘块等)为基础结构的存储设备中静止状态数据的加密。
我们都知道磁盘上的数据是有一定格式的,比如一个扇区是512字节,磁盘加密直接要对写入扇区的明文进行加密,记录在磁盘扇区上的是相应的密文。
而我们通过传统的AES加密方法,比如CBC加密模式,密文须包含一个128bit的初始向量。那么问题来了,我们岂不是要腾出额外的128个bit专门存储初始向量?
这样做是增加了磁盘的开销,而且明文和密文在扇区上的存储也不是一一对应的,这给磁盘底层的加密实现带来很大的麻烦。
更为关键的是,传统的加密算法,更改密匙非常不便,一旦更改,就意味着要重新进行密匙扩展算法,对磁盘来说要增加很大的开销,同时还要担心密匙泄露的问题。
在这种情况下,针对磁盘加密的特点,2002年,Moses Liskov,Ronald L.Rivest, David Wagner,首次提出了可调整的分组密码。
这个概念,跟传统的分组密码相比,除了密匙和明文这两个输入外,还引入另外一个输入---tweak,即可调整值。
这样做的好处是,在不更改密匙的情况下,仅仅改变tweak值,就可以给加密系统提供多变性,既减少了磁盘的开销,也不怕密匙泄露,因为tweak值是公开的,就算泄露了tweak值,如果不知道密匙,是无法破解系统的。而且,这种算法,不需要初始向量,也就避免我们上面所述的明文和密文在扇区上的存储不对应的问题。
XTS-AES算法是基于以上思想,被IEEE采用的一个标准。