LUKS加密分区中的数据访问速度

阿尔法

在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章