1- 密码设置

1- 密码设置

我想加密硬盘的一部分。但在此之前,我想对可用的不同算法进行基准测试,想知道我是否应该选择aes-xts-256aes-xts-512

注意:我没有aes硬件加速。基准测试重复多次,没有太大变化。我想明确说明,这些基准测试仅在我的电脑(Debian,core 2 duo)上有效。这并不是完整的 LUKS-TrueCrypt 比较。

总结:转至第 4 部分


1- 密码设置

因此我下载了cryptsetup v1.6.0新命令来使用cryptsetup benchmark

命令

$cryptsetup benchmark

结果

 #  Algorithm | Key | Encryption |  Decryption
     aes-cbc   128b   128,2 MiB/s   157,2 MiB/s
 serpent-cbc   128b    49,6 MiB/s    57,7 MiB/s
 twofish-cbc   128b   138,0 MiB/s   183,8 MiB/s
     aes-cbc   256b    97,5 MiB/s   121,9 MiB/s
 serpent-cbc   256b    51,8 MiB/s    57,7 MiB/s
 twofish-cbc   256b   139,0 MiB/s   183,8 MiB/s
     aes-xts   256b   156,4 MiB/s   157,8 MiB/s
 serpent-xts   256b    55,7 MiB/s    58,7 MiB/s
 twofish-xts   256b   161,5 MiB/s   165,9 MiB/s
     aes-xts   512b   120,5 MiB/s   120,9 MiB/s
 serpent-xts   512b    55,7 MiB/s    58,5 MiB/s
 twofish-xts   512b   161,5 MiB/s   165,3 MiB/s

思考

  • cbc模式下,serpent解密速度出奇地快!
  • xts模式下,serpent显然是最快的。
  • 密钥的大小似乎对几乎没有明显的影响。serpent twofish
  • aes当密钥大小增加时,表现不佳。

VM 外的更新


2- TrueCrypt

我真的很惊讶,因为aes它是最快的(即使没有硬件加速)。所以我下载了它TrueCrypt来仔细检查这些结果。默认情况下TrueCrypt使用该xts模式,所以我假设它也在基准测试中使用该模式。

方法

  1. 工具 > 基准
  2. 选择任意缓冲区大小(此处为 5MB)
  3. 点击“基准”

结果

 #  Algorithm | Encryption |  Decryption
         AES     106 MB/s      107 MB/s
     Twofish      78 MB/s       76 MB/s
     Serpent      41 MB/s       42 MB/s

思考

这些结果与预期更加吻合,但与cryptsetup的结果不太匹配。


3- 总体思路

  • cryptsetup提供了比本例更好的总体性能TrueCrypt。这可以解释如下:
    • cryptsetup在我的系统上是用编译器优化程序编译的,而TrueCrypt之前已经以通用方式进行了编译;
    • 据我所知,cryptsetup使用内核空间加密模块,同时TrueCrypt使用用户空间加密例程。
  • 但是,我无法解释为什么这serpent-xts-512似乎是唯一值得使用的密码cryptsetupaes-xts

4-问题

cryptsetupTrueCrypt在 RAM 基准测试中给出完全不同的定性(相对密码速度)和定量(每个密码的实际速度)结果。

  • 你已经注意到这一点了吗?
  • 我是否应该信任cryptsetup并使用serpent-xts-512密码来提高速度?

答案1

您没有 AES 硬件加速,并且正在虚拟机中运行测试。您的测试结果不太可能反映真实世界的结果,因为加密/解密速度在很大程度上取决于当前的 CPU 和磁盘负载。最好的办法是创建两个独立的 Truecrypt 分区,并通过将一些大文件复制到每个分区/从每个分区复制一些大文件来执行手动基准测试。

LUKS 和 Truecrypt 的实现也略有不同,正如您所说,“这些基准测试仅在我的电脑上有效”。您需要在您的系统上通过实际文件传输对两者进行实际测试,以确定真正的性能。


至于区别,Truecrypt 使用保险丝实现用户空间文件系统,而卢克斯通常在实际内核中完成。因此,在 Linux 系统中使用 LUKS/dm-crypt/cryptsetup 可能会比使用 Truecrypt 获得更好的吞吐量,尽管您选择哪个选项取决于您的加密要求(例如,如果需要,Truecrypt 分区可以在操作系统之间传输)。

答案2

Linux 内核具有 SSE2 和 AVX 优化的 Serpent 模块,以加速可并行工作负载(例如 CBC 解密和 XTS 编码和解码)。

加载这些模块后,Serpent 在 CBC 解密和 XTS 中的性能应该与软件 AES 和 Twofish 处于接近相同的水平(稍快或稍慢取决于您的具体 CPU 型号)。

答案3

还请注意,在某些虚拟机中,客户内核运行的 SSE2 代码比主机内核运行的慢得多。我在使用 Oracle VirtualBox 时就遇到过这种情况。因此,虚拟机上 Serpent 的结果可能不一定与实际主机上的预期性能相关。

相关内容