磁盘加密是关于始终加密磁盘上的数据;将解密后的文件写回磁盘会导致数据泄露的风险(如果当时机器被盗),并且需要在关机时重新加密。请注意,典型的机械硬盘以大约 120 MB/s 的速度读取和写入数据,因此仅 128 GB 的硬盘将需要 15 分钟以上才能完全解密,即使假设解密过程比这更快,并且磁盘是瓶颈。当您启动机器时,您当然不会等待 15 分钟。
所有这些都意味着在读取文件时会即时进行解密。结果是只要机器启动并运行,解密就会发生,因此解密密钥必须在 RAM 中的某个位置,并留在那里。
同样,如果您修改了一些文件并想保存它们(以便在下次重新启动后恢复新文件),则必须使用加密密钥。
但是,有(至少)两种方法可以让您设想不将密钥保留在 RAM 中:
您可以将完整的文件系统读取并解密到基于 RAM 的磁盘中。在那里,可以进行一次解密,然后丢弃密钥。当然,这将文件系统的总大小限制在 RAM 中可以容纳的大小,例如 1 或 2 GB。此外,所有写入都将被丢弃(从概念上讲,可以使用非对称加密来保存修改,以便在下次启动时合并到加密文件系统中,但这可能是一项重大的设计和开发工作)。
TRESOR项目旨在通过将密钥保存在 CPU 寄存器中来进行加密和解密,并且不允许将这些寄存器刷新到 RAM 。这是为了防御冷启动攻击,在这种攻击中,攻击者可以很好地查看整个 RAM 内容,但不能像攻击前那样查看 CPU 寄存器。已经注意到,可以进行 DMA 的攻击者可以注入恶意代码,从寄存器中提取密钥,因此在这种情况下不能认为保护是完整的。
要考虑的重要一点是,您使用磁盘加密来保持数据的机密性——但是当您访问数据时,您仍然将其拉入 RAM 以进行处理。例如,如果您查看某个文本文档的内容,那么,当您查看它时,文档数据必然存在于查看器应用程序空间中,并且图形卡内存中也存在未加密的内容。保护加密密钥没问题,但如果假设攻击者能够读取您的 RAM,那么他可能会直接掠夺数据。因此,专注于加密密钥的下落,而不是解决数据的大局问题有点没抓住重点。在大多数实际情况下,担心冷启动攻击检索磁盘加密密钥并没有多大意义——即使世界上有所有的 TRESOR,冷启动攻击仍然几乎同样令人担忧。