如果您只是尝试使用 tresor-xts-plain 或 tresor-xts-plain64,这可能会成为一个问题。虽然我没有对它进行广泛的测试,但即使我使用 cbc-essiv 尝试了 TRESOR,它也会导致系统无法正常工作。只有 cbc-plain 有效,它使用单个密钥。我个人使用 TRESOR 的方式是使用与 serpent-xts-plain64 链接的 tresor-cbc-plain。我假设如果有人对我执行冷启动攻击并设法获得蛇密钥将无法对 cbc-plain 执行延展性攻击,因为冷启动攻击并不是特别隐蔽。尽管 cbc 存在其他一些弱点,但通常仍会保持机密性。
但是,可能有解决方法。管理程序 BitVisor 有一个补丁,称为TreVisor,它可以将 TRESOR 与 XTS 密钥一起使用。我没有仔细阅读补丁。也许查看该tresor_xts_crypt()
功能可以提供一些见解。它的主页在这里,在中间。
还有RamCrypt,它使用 TRESOR 来加密各个进程的内存页。它使用 XEX 操作模式,这与 XTS 类似(它也使用调整键,但调整键与数据键相同)。该ramcrypt_page_crypt()
函数可能是一个很好的起点。它的主页在这里。
至少,TreVisor 有一个巧妙的解决方法来解决这个问题。由于 XTS 模式需要一个额外的密钥,即调整密钥,TreVisor 只需使用一半大小的密钥(128 位而不是 256 位)进行加密,并使用空闲的 128 位来存储调整密钥。我相信 RamCrypt 做了类似的事情。请参阅宏read_key_0
和宏,以及TreVisor 补丁中的和宏的参数。read_key_1
up
encrypt_block
decrypt_block