web-dev-qa-db-ja.com

LUKS暗号化パーティションでのデータアクセス速度

Linux(Fedora 28)では、ホームディレクトリLUKSを暗号化していますが、Gnome Disk(スクリーンショット)を使用すると、基になるLUKSパーティション(上の青い長方形)と復号化されたホームパーティション(下の白い長方形)を別々にベンチマークできます。

LUKSパーティションのアクセス時間は500MB /秒ですが、暗号化解除されたアクセスのアクセス時間は350MB /秒です。明確にするために、これは500GBSSDと同じパーティションです。

暗号化がデータアクセスを30%(= 150/500)遅くしていると結論付けるのは公正ですか?

このタイプの番号は文書化されていますか、それとも私は何か間違ったことをしていますか。これは私が予想していたよりもはるかに遅い速度です。

screenshotdisks


編集:これは私の出力です

$ 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

注:この質問はここにクロスポストされています: https://ask.fedoraproject.org/en/question/130463/how-to-activate-the-aes-module-cpu-decryptor/

1
alfC

各ディスクブロックはアクセス時にOSによって復号化される必要があるため、暗号化によってCPUの負荷が増加します。テスト結果(最大600 MB /秒の復号化)は、i7での一般的なAES処理ではかなり平均的です。

この問題を回避するために、最近のCPUには通常、ハードウェアベースのAESサポートが組み込まれています。Intelはこの機能を「AES-NI」(lscpuに「aes」として表示)と呼び、2〜3GBに達することができます。同じAES復号化の/ sレート。

最初にlscpuを実行し、機能フラグの中に「aes」が記載されているかどうかを確認します。 Intel ARK は、CPUモデルに存在するものとして表示されますが、ファームウェア(BIOS)設定によって無効になっている可能性があります。 (ARKには脚注があります:「一部の製品はプロセッサ構成の更新でAESの新しい命令をサポートできます…最新のプロセッサ構成の更新を含むBIOSについてはOEMにお問い合わせください。」

Linuxは、「aesni_intel」モジュールを使用してハードウェアアクセラレーションを有効にします。 zgrep AES_NI_INTEL /proc/config.gzを実行して、カーネルで有効になっているかどうかを確認します。 「=y」と表示されている場合は、メインカーネルイメージの一部であり、使用可能である必要があります。

出力に「=m」と表示されている場合は、モジュールとしてコンパイルされています。Sudo modprobe -v aesni_intelを実行してモジュールを手動でロードしてみてください。コマンドがモジュールを見つけられない場合は、おそらく再起動する必要があります。 (再起動後、uname -rls /lib/modulesと同じカーネルバージョンを示していることを確認してください。)

1
user1686