我想加密硬盘的一部分。但在此之前,我想对其他可用算法进行基准测试,想知道是否应该选择aes-xts-256
或aes-xts-512
。
注意:我没有aes
硬件加速。基准重复了多次,没有太大变化。我想明确指出,这些基准测试仅在我的计算机(Debian,Core 2 duo)上有效。这并非是完整的LUKS-TrueCrypt比较。
TL; DR:转到第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
模式,因此我假设它也在其基准测试中也使用了该模式。
方法
- 工具>基准
- 选择任何缓冲区大小(此处为5MB)
- 点击“基准”
结果
# 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
进行了编译,同时已经以通用方式进行了编译;- AFAIK
cryptsetup
使用内核TrueCrypt
空间加密模块,而使用用户空间加密例程。
- 但是,我无法解释为什么
serpent-xts-512
似乎是唯一值得使用的密码cryptsetup
而aes-xts
要使用的方法。
4-问题
cryptsetup
并TrueCrypt
在RAM内基准测试中给出完全不同的定性(相对密码速度)和定量(每个密码实际速度)结果。
- 那是您已经注意到的东西吗?
- 我应该信任
cryptsetup
并使用serpent-xts-512
密码来提高速度吗?
serpent
变了,除了变慢了很多。这样就解决了蛇的问题。Twofish
仍比更快aes
的cryptsetup
和更慢的TrueCrypt
。而且我根本没有aes
硬件加速...这不是VM的事情……