Velocidade de acesso a dados na partição criptografada LUKS

Velocidade de acesso a dados na partição criptografada LUKS

No Linux (Fedora 28), tenho meu diretório inicial LUKS criptografado. Ao usar o Gnome Disk (captura de tela), posso comparar separadamente a partição LUKS subjacente (retângulo azul superior) e a partição inicial descriptografada (retângulo branco inferior).

A partição LUKS oferece um tempo de acesso de 500 MB/s, mas o acesso descriptografado fornece 350 MB/s. Para ficar claro, esta é a mesma partição de um SSD de 500 GB.

É justo concluir quecriptografiaestá diminuindo o acesso aos dados em 30% (= 150/500)?

Esse tipo de número está documentado ou estou fazendo algo errado. Isso é muito mais desaceleração do que eu esperava.

discos de captura de tela


EDITAR:Esta é a minha saída para

$ 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

EDITAR 2020:Troquei de computador e obtive resultados completamente diferentes para o benchmark criptográfico, muito além do que pode ser explicado por um processador mais rápido. Então, acho que meu hardware antigo não tinha o chip de criptografia dedicado:

$ 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

Responder1

A criptografia adiciona carga extra à CPU, pois cada bloco de disco precisa ser descriptografado pelo sistema operacional no acesso. Os resultados do seu teste (descriptografia de aproximadamente 600 MB/s) são razoavelmente médios para processamento AES genérico em um i7.

Para evitar esse problema, as CPUs modernas geralmente vêm com suporte AES baseado em hardware integrado. A Intel chama esse recurso de "AES-NI" (mostrado lscpucomo "aes") e permite atingir taxas de 2–3 GB/s para o mesmo Descriptografia AES.

Primeiro execute lscpue verifique se ele menciona "aes" entre os sinalizadores de recursos. OARCA Intelmostra-o como presente no modelo da sua CPU, mas pode ser desabilitado pelas configurações do firmware (BIOS). (O ARK tem uma nota de rodapé:"Alguns produtos podem suportar novas instruções AES com uma atualização de configuração do processador... Entre em contato com o OEM para obter o BIOS que inclui a atualização de configuração do processador mais recente.")

O Linux usa o módulo “aesni_intel” para habilitar a aceleração de hardware. Verifique se ele está habilitado em seu kernel executando zgrep AES_NI_INTEL /proc/config.gz. Se aparecer " =y", faz parte da imagem principal do kernel e deve estar disponível.

Se a saída mostrar " =m", ele foi compilado como um módulo – tente carregar o módulo manualmente executando sudo modprobe -v aesni_intel. Se o comando não conseguir encontrar o módulo, provavelmente será necessário reinicializar. (Após a reinicialização, certifique-se uname -rde mostrar a mesma versão do kernel que em ls /lib/modules.)

informação relacionada