在Linux(Fedora 28)中,我的主目录LUKS被加密,当使用Gnome Disk(截图)时,我可以分别对底层的LUKS分区(上方的蓝色矩形)和解密的主分区(下方的白色可识别)进行基准测试。
LUKS分区的访问时间为500MB / s,但解密的访问权限为350MB / s。需要明确的是,这是一个500GB SSD的分区。
是否可以得出这样的结论:加密将数据访问速度降低了30%(= 150/500),这是否公平?
是否记录了这种类型的号码,或者我做错了什么。这比我预期的要慢得多。
编辑:这是我的输出
$ cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 384375 iterations per second for 256-bit key
PBKDF2-sha256 494611 iterations per second for 256-bit key
PBKDF2-sha512 323634 iterations per second for 256-bit key
PBKDF2-ripemd160 293225 iterations per second for 256-bit key
PBKDF2-whirlpool 185917 iterations per second for 256-bit key
argon2i 4 iterations, 748334 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id 4 iterations, 745443 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 195.0 MiB/s 664.0 MiB/s
serpent-cbc 128b 28.8 MiB/s 94.7 MiB/s
twofish-cbc 128b 58.8 MiB/s 111.6 MiB/s
aes-cbc 256b 146.5 MiB/s 507.3 MiB/s
serpent-cbc 256b 33.3 MiB/s 110.2 MiB/s
twofish-cbc 256b 59.3 MiB/s 123.6 MiB/s
aes-xts 256b 433.7 MiB/s 416.8 MiB/s
serpent-xts 256b 101.0 MiB/s 94.7 MiB/s
twofish-xts 256b 111.8 MiB/s 110.3 MiB/s
aes-xts 512b 349.5 MiB/s 356.6 MiB/s
serpent-xts 512b 101.6 MiB/s 96.0 MiB/s
twofish-xts 512b 111.2 MiB/s 108.1 MiB/s
$ lscpu | grep aes
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall
nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology
nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est
tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer
aes xsave avx f16c rdrand lahf_lm cpuid_fault epb pti ssbd ibrs ibpb stibp
tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm
ida arat pln pts flush_l1d
2020年修改:我更换了计算机,在低温测试基准方面得到了完全不同的结果,远远超出了更快的处理器所能解释的范围。因此,我认为我的旧硬件没有专用的加密芯片:
$ cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 1756408 iterations per second for 256-bit key
PBKDF2-sha256 2264742 iterations per second for 256-bit key
PBKDF2-sha512 1653905 iterations per second for 256-bit key
PBKDF2-ripemd160 949797 iterations per second for 256-bit key
PBKDF2-whirlpool 711381 iterations per second for 256-bit key
argon2i 8 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id 8 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 1256.4 MiB/s 3669.2 MiB/s
serpent-cbc 128b 101.6 MiB/s 771.8 MiB/s
twofish-cbc 128b 230.0 MiB/s 418.4 MiB/s
aes-cbc 256b 947.9 MiB/s 2961.6 MiB/s
serpent-cbc 256b 105.1 MiB/s 785.0 MiB/s
twofish-cbc 256b 235.7 MiB/s 424.5 MiB/s
aes-xts 256b 2209.9 MiB/s 2218.9 MiB/s
serpent-xts 256b 762.0 MiB/s 776.6 MiB/s
twofish-xts 256b 415.7 MiB/s 384.0 MiB/s
aes-xts 512b 1701.8 MiB/s 1677.2 MiB/s
serpent-xts 512b 713.7 MiB/s 769.6 MiB/s
twofish-xts 512b 407.9 MiB/s 414.2 MiB/s
加密增加了额外的CPU负载,因为操作系统需要在访问时解密每个磁盘块。对于i7上的通用AES处理,您的测试结果(约600 MB / s解密)相当平均。
为避免此问题,现代CPU通常带有内置的基于硬件的AES支持。Intel将此功能称为“ AES-NI”(显示lscpu
为“ aes”),并且在相同的情况下允许达到2–3 GB / s的速率AES解密。
第一次运行,lscpu
并检查它是否在功能标志中提到“ aes”。在英特尔ARK显示它存在于你的CPU型号,但它可以通过固件(BIOS)设置被禁用。(ARK的脚注为:“某些产品可以通过处理器配置更新来支持AES新指令……请联系OEM以获取包含最新处理器配置更新的BIOS。”)
Linux使用“ aesni_intel”模块来启用硬件加速。通过运行来检查内核中是否已启用了它zgrep AES_NI_INTEL /proc/config.gz
。如果显示“ =y
”,则它是主内核映像的一部分,应该可用。
如果输出显示“ =m
”,则表示它已被编译为模块-尝试通过运行手动加载该模块sudo modprobe -v aesni_intel
。如果该命令无法找到该模块,则可能必须重新引导。(重新启动后,请确保uname -r
显示与中相同的内核版本ls /lib/modules
。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句