鉴于RSA密钥存储在TPM中,为什么BitLocker不使用非对称加密(即RSA)?通过使用这种加密技术,我们也许能够抵御LPC总线上的冷启动攻击或嗅探。
#1 楼
非对称加密远不如对称加密。也就是说,在所有方面,除了一个方面是不对称的。当需要该属性时,显然没有办法解决。非对称加密要慢得多。给定非随机输入,它更容易显示某种可识别的模式。您需要更大的密钥大小才能提供足够的保护级别,并且在当前和将来的技术条件下,系统通常更容易受到攻击(大小合理的量子计算机基本上意味着RSA立即死亡,但是AES相当“是的,那么在这方面又是什么”。
这就是为什么几乎不使用非对称加密来加密批量数据的原因。
没有什么可以阻止您使用2048位块使用RSA加密1 TB的数据,就像使用128位块的AES加密1 TB的数据一样。只是,这样做是没有意义的,因为它慢了数千倍,同时又变得更加不安全。
评论
$ \ begingroup $
@kelalaka进行交流。
$ \ endgroup $
– wizzwizz4
19年4月21日在20:09
$ \ begingroup $
但是,有些事情使您无法使用RSA安全地加密大容量数据-RSA容易受到多种不同的攻击,这些攻击涉及具有已知,异常值(例如,m的较小值)的明文。
$ \ endgroup $
– duskwuff-非活动状态-
19-4-23的3:22
$ \ begingroup $
@kelalaka非对称密码学几乎专门用于交换对称密码学的密钥信息。正如Damon所说,您仍然使用对称算法来加密批量数据。
$ \ endgroup $
–罗安
19年4月23日在4:57
$ \ begingroup $
在非随机输入的情况下,RSA不会更容易显示可识别的模式,除非您非常特别地使用可怕的不安全教科书RSA。如果将RSA与适当的填充一起使用(例如OAEP),它将提供IND-CCA2安全性。仅使用RSA加密某些内容不是一个好主意,其真正原因是因为它愚蠢的速度慢以及消息在加密过程中会扩展。
$ \ endgroup $
–森林
19年4月23日在7:05
$ \ begingroup $
这个答案显然很错误,因为它很容易显示基于输入的可识别模式,并且错过了RSA加密会扩展密文并因此不能用于块加密(甚至用于教科书)这一事实。 RSA,因为模数大小必须大于块大小)。
$ \ endgroup $
–马腾·博德威斯♦
19年4月23日在10:22
#2 楼
只要密钥位于内存中,就可以对任何加密方案执行冷启动攻击。对于采用对称算法(例如AES)的全盘加密(FDE),您需要将密钥从TPM中取出,从而容易受到冷启动攻击。TPM可以RSA加密和解密的问题,对于FDE来说,RSA存在问题,总之来说速度:公用密钥加密,公用密钥被选择为3、5...。但是,即使使用CRT获得4倍的速度,访问一个块的解密也会慢得多。
即使TPM可以执行RSA在芯片上进行加密时,全盘加密(FDE)的速度会慢得多。
因此,基于TPM的FDE使用TPM进行密钥存储。
评论
$ \ begingroup $
这是正确的答案,也是唯一一个不会永久化TPM设备本身执行磁盘加密或以某种方式缓解冷启动攻击的说法。
$ \ endgroup $
–森林
19年4月23日在7:19
#3 楼
TPM不执行用于全盘加密的实际加密。他们所做的只是在系统关闭电源或处于挂起状态时对密钥进行加密。密钥被解密并通过LPC总线传递给操作系统一次,然后在执行加密时将其保留在内存中。 TPM不能成为安全加速全盘加密的不佳选择的原因有三点:TPM通过极其慢的LPC总线(33 MHz时为4位宽度)进行通信。 /> TPM硬件通常非常慢,只是出于安全性而不是速度而设计。
TPM并不是采用任意密钥的通用加密协处理器。
如果您真的想使用它为了以减轻冷启动攻击的方式执行实际的加密,您需要通过LPC总线将纯文本(或密文)从磁盘传递到TPM以对其进行加密(或解密),然后传递密文(或纯文本)通过LPC总线返回到计算机。此过程将是避免冷启动攻击的极其缓慢的方法,并且由于能够篡改LPC总线上的信号(TPM将是解密预言!),因此可能很容易被绕开。
尽管从理论上讲您可以使用RSA进行批量加密,但前提是您使用了诸如PKCS#1v1.5或OAEP之类的适当填充,但它会扩展消息(密文大于明文),并且非常慢且效率低下。尽管有其他答案,但使用适当的填充方案并不是不安全的,但是使用RSA却很愚蠢且效率低下。
评论
$ \ begingroup $
我想说,经常将RSA与静态私钥(用于解密)一起使用比使用AES更容易受到侧通道攻击。当然,这取决于实现的细节,但是我宁愿将自己的卡放在AES上...
$ \ endgroup $
–马腾·博德威斯♦
19年4月23日在10:33
$ \ begingroup $
@MaartenBodewes是的,通过我的一半工作,我可以轻松地从OpenSSL提取密钥。如您所述,库的实现实际上决定了攻击的成功率。
$ \ endgroup $
– kelalaka
19年4月23日在12:04
$ \ begingroup $
不仅效率低下,而且很难使其类似于底层设备的块特性。任何密文扩展(这是任何RSA欺骗式加密的必要功能)都会违反OS和应用程序有关原子或线性写入的假设,从而需要在中间进行另外一层。要避免这种情况,就需要从本质上改变前提,从逐个扇区的磁盘加密(本质上是透明的)到本质上属于文件系统本身。
$ \ endgroup $
–吱吱作响的s骨
19年4月23日在18:49
$ \ begingroup $
@SqueamishOssifrage确实。它不能用作分组密码的直接替代。尽管实施可能丝毫不完美,但它是可能的并且可以确保安全。
$ \ endgroup $
–森林
19年4月23日在18:52
评论
使用非对称加密有什么帮助?除非您从不打算将任何数据写入磁盘,否则无论如何都需要将密钥的两面都放在内存中。 (我想在某些特殊情况下,您希望任何人都可以读取但对磁盘的内容具有强身份验证的磁盘,但是即使使用非对称基元单独加密每个块也不是解决方案。)顺便说一句,您可能想知道有一些方法可以缓解针对FDE的冷启动攻击,例如TRESOR或使用带有TME(总内存加密)的新CPU。这些都不需要TPM。
@forest,有攻击TRESOR,TRESOR Hunt
@kelalaka我一直觉得那张纸有点傻。这是DMA攻击,自然需要单独缓解(使用正确配置的IOMMU)。它根本不是特定于TRESOR的。与使用JTAG调试CPU并提取密钥相比,它不再是“对TRESOR的攻击”。与将逻辑探针连接到DRAM模块并触发NMI并在将寄存器压入堆栈时读取寄存器相同。或者将浏览器0day与内核漏洞结合使用以读取密钥。无论如何,只需使用intel_iommu = on进行引导,您就可以免受特定攻击。