Quero criptografar uma parte do meu disco rígido. Mas antes disso eu queria comparar os diferentes algoritmos disponíveis, imaginando se eu deveria escolher aes-xts-256
ou aes-xts-512
.
Nota: Não tenho aes
aceleração de hardware. Os benchmarks foram repetidos várias vezes sem muita alteração. Eu gostaria de afirmar claramente que essas referências são válidas apenas no meu computador (Debian, core 2 duo). Isso não pretende ser uma comparação completa do LUKS-TrueCrypt.
TL; DR: vá para a parte 4
1- Cryptsetup
Então eu baixei cryptsetup v1.6.0
para fazer uso do novo cryptsetup benchmark
comando.
Comando
$cryptsetup benchmark
Resultados
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 128,2 MiB/s 157,2 MiB/s
serpent-cbc 128b 49,6 MiB/s 57,7 MiB/s
twofish-cbc 128b 138,0 MiB/s 183,8 MiB/s
aes-cbc 256b 97,5 MiB/s 121,9 MiB/s
serpent-cbc 256b 51,8 MiB/s 57,7 MiB/s
twofish-cbc 256b 139,0 MiB/s 183,8 MiB/s
aes-xts 256b 156,4 MiB/s 157,8 MiB/s
serpent-xts 256b 55,7 MiB/s 58,7 MiB/s
twofish-xts 256b 161,5 MiB/s 165,9 MiB/s
aes-xts 512b 120,5 MiB/s 120,9 MiB/s
serpent-xts 512b 55,7 MiB/s 58,5 MiB/s
twofish-xts 512b 161,5 MiB/s 165,3 MiB/s
Pensamentos
Nocbc
modo,serpent
é surpreendentemente rápido na descriptografia!Noxts
modo,serpent
é claramente o mais rápido.- O tamanho da chave parece não ter quase nenhum efeito perceptível .
serpent
twofish
aes
não se comporta bem quando o tamanho da chave é aumentado.
Atualizações fora da VM
2- TrueCrypt
Fiquei realmente surpreso, como aes
é conhecido por ser o mais rápido (mesmo sem aceleração de hardware). Então eu baixei TrueCrypt
para verificar esses resultados. TrueCrypt
usa o xts
modo por padrão, então suponho que ele também seja usado em seus benchmarks.
Método
- Ferramentas> Referência
- Escolha qualquer tamanho de buffer (aqui, 5 MB)
- Clique em "Benchmark"
Resultados
# Algorithm | Encryption | Decryption
AES 106 MB/s 107 MB/s
Twofish 78 MB/s 76 MB/s
Serpent 41 MB/s 42 MB/s
Pensamentos
Esses resultados correspondem muito mais ao esperado, mas não combinam bem com cryptsetup
os resultados.
3- Pensamentos gerais
cryptsetup
proporcionou melhor desempenho geral do queTrueCrypt
neste caso. Isso pode ser explicado da seguinte maneira:cryptsetup
foi compilado no meu sistema com rotinas de otimização do compilador enquantoTrueCrypt
já foi compilado de maneira genérica;- O AFAIK
cryptsetup
usa módulos de criptografia do kernelspace enquantoTrueCrypt
usa rotinas de criptografia do espaço do usuário.
- No entanto, não posso explicar por que
serpent-xts-512
parece ser o caminho a seguir,cryptsetup
enquantoaes-xts
a única cifra vale a pena usar.
4- Pergunta
cryptsetup
e TrueCrypt
fornecer resultados qualitativos (velocidade relativa de cifra) e quantitativos completamente diferentes (velocidade real de cada cifra) em valores de referência na RAM.
- Isso é algo que você já notou?
- Devo confiar
cryptsetup
e usar aserpent-xts-512
cifra para velocidade?
serpent
que ficou muito mais lento. Então o problema com a serpente está resolvido.Twofish
ainda é mais rápido do queaes
dentrocryptsetup
e mais lentoTrueCrypt
. E eu não tenhoaes
a aceleração de hardware em tudo ... isto não é uma coisa VM ...cryptsetup
será mais rápido do queTrueCrypt
os mesmos algoritmos de criptografia, poisTrueCrypt
é executado emFUSE
(sistema de arquivos no espaço do usuário), enquantocryptsetup
usa LUKS, que é um módulo do kernel. Mencionei a máquina virtual como se você estivesse executando outros programas no sistema operacional host (mesmo tarefas em segundo plano), isso afetaria os resultados dos seus benchmarks.O kernel do Linux possui módulos Serpent otimizados para SSE2 e AVX para acelerar cargas de trabalho paralelizáveis (como descriptografia CBC e XTS enc & dec).
O desempenho do Serpent na descriptografia CBC e no XTS com o (s) módulo (s) carregado (s) deve estar quase no mesmo nível do software AES e Twofish (um pouco mais rápido ou mais lento, dependendo do modelo exato da CPU).
fonte
Observe também que o código SSE2 executado pelo kernel convidado em algumas VMs é muito mais lento que no kernel host. Eu experimentei isso com o Oracle VirtualBox. Portanto, os resultados para o Serpent on VM podem não estar necessariamente relacionados ao desempenho esperado no host real.
fonte