我想比较用于加密我的系统的不同加密解决方案,可能针对系统不同部分的不同解决方案,例如/usr
或/home
。我特别关注具有不同参数的 dm-crypt 分区、容器、truecrypt、ecryptfs 和 encfs。出于多种原因,我认为仅使用以下方法测量原始 seq 读取和写入速度dd
是不够的:
- seq 读/写给我不同的 CPU 负载,例如 ecryptfs 仅加载一个核心(高达 100%),而 dm-crypt 更快,但加载两个核心,因此在实际使用中,当系统负载来自 ecryptfs 时,ecryptfs 可能会更快其他应用程序(也许不是,但我如何对其进行基准测试?)
- 这都是关于SSD的,所以我想要一个基准测试,它表明系统会感觉哪个选项反应更快,所以我应该包括一些随机读写测试或类似的东西(但我不知道该怎么做) )
- 对解决方案进行基准测试
/usr
可能需要其他基准测试,/home
因为 I/O 特性可能不同
我应该补充一点,我的 CPU 不支持 AES 指令,因此它是性能的限制因素。我不想隔离系统的一部分,而是比较特定系统中 SSD 的不同加密解决方案。那么,针对我的案例进行基准测试的最佳方法是什么以及如何详细执行?
答案1
内置的怎么样cryptsetup benchmark
?
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 633198 iterations per second
PBKDF2-sha256 329326 iterations per second
PBKDF2-sha512 216647 iterations per second
PBKDF2-ripemd160 474039 iterations per second
PBKDF2-whirlpool 248713 iterations per second
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 707.0 MiB/s 3120.9 MiB/s
serpent-cbc 128b 98.3 MiB/s 307.2 MiB/s
twofish-cbc 128b 195.0 MiB/s 381.7 MiB/s
aes-cbc 256b 513.8 MiB/s 2373.9 MiB/s
serpent-cbc 256b 97.4 MiB/s 315.1 MiB/s
twofish-cbc 256b 198.8 MiB/s 383.9 MiB/s
aes-xts 256b 2706.1 MiB/s 2634.1 MiB/s
serpent-xts 256b 318.0 MiB/s 310.4 MiB/s
twofish-xts 256b 370.5 MiB/s 380.1 MiB/s
aes-xts 512b 2083.2 MiB/s 2073.8 MiB/s
serpent-xts 512b 323.0 MiB/s 311.4 MiB/s
twofish-xts 512b 375.9 MiB/s 380.2 MiB/s
通常您会想要使用 AES 密码之一。即使您的系统现在不支持 AES-NI,您的下一个盒子也可能...
答案2
看看邦妮++为您提供您正在寻找的测试/结果。 Bonnie++ 可能可以从您的发行版存储库中获得。
本文,SSD Linux 基准测试:比较文件系统和加密方法您可能也会感兴趣。
答案3
您提到的解决方案在实际用途上确实存在很大差异 - dm-crypt 是完整的文件系统加密,而 ecryptfs/encfs 位于文件系统之上。如果你想要安全,请决定首先什么你真的想要而且只那么如何去解决它。
也就是说,如果您的 CPU 成为瓶颈,请不要感到惊讶 - 我认为由于它不支持 AES-NI,它的性能与例如 Intel Core2 Duo 的数量级相同 - 我碰巧测试了大约一年前。内核加密模块的速度约为 38MB/s±10MB/s,具体取决于所使用的密码和块大小(Twofish、AES、Serpent 和 Camellia,块大小为 128/192/256b)。