Decidi criptografar minha partição raiz com LUKS + LVM.
Minha configuração do ThinkPad:
- SSD Samsung 830 128GB
- 750GB HDD
- Core 2 Duo 2,5 GHz P9500
- 8GB RAM
Mas quanto mais leio, menos entendo sobre esses dois assuntos a seguir:
1a. A cifra
Eu usaria o SHA1 em vez de 2/512 (como alguns sugerem), por causa dessa citação da cryptsetup
FAQ:
5,20 LUKS está quebrado! Ele usa SHA-1!
Não não é. O SHA-1 é (academicamente) quebrado para encontrar colisões, mas não para usá-lo em uma função de derivação de chave. E essa vulnerabilidade de colisão é apenas para uso não iterado. E você precisa do valor de hash literalmente.
Isso significa basicamente que, se você já possui uma tecla de slot e configurou a contagem de iteração PBKDF2 para 1 (é> 10'000 normalmente), poderá (talvez) derivar uma frase secreta diferente que ofereça o mesmo slot- chave. Mas se você tiver a chave do slot, já poderá desbloqueá-lo e obter a chave mestra, quebrando tudo. Então, basicamente, essa vulnerabilidade do SHA-1 permite abrir um contêiner LUKS com muito esforço quando você já o tem aberto.
O verdadeiro problema aqui são pessoas que não entendem criptografia e afirmam que as coisas estão quebradas apenas porque é usado algum mecanismo que foi quebrado para um uso diferente específico. A maneira como o mecanismo é usado é muito importante. Um hash quebrado para um uso pode ser completamente seguro para outros usos e aqui está ele.
Que eu li como "não adianta usar nada além de SHA-1". Mas então algumas pessoas me dizem que não é exatamente assim. Então não sei mais o que pensar.
1b.
Além disso, não consegui encontrar nenhuma informação sobre se a cifra influencia o desempenho de leitura / gravação / busca do disco, uma vez que o disco é desbloqueado e o sistema está conectado.
Então, a complexidade da cifra afeta apenas o "desempenho" na entrada de senha, ou também durante o uso normal do sistema?
2. O algoritmo
Eu leio isso há alguns dias, mas quanto mais leio, mais confuso fico. Tudo o que li diz que o AES é o mais rápido e o Serpent é o mais lento. Mas não de acordo com o meu laptop:
$ cryptsetup benchmark
Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 344926 iterations per second
PBKDF2-sha256 198593 iterations per second
PBKDF2-sha512 129007 iterations per second
PBKDF2-ripemd160 271933 iterations per second
PBKDF2-whirlpool 134295 iterations per second
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 149.8 MiB/s 147.9 MiB/s
serpent-cbc 128b 51.0 MiB/s 196.4 MiB/s
twofish-cbc 128b 127.6 MiB/s 152.5 MiB/s
aes-cbc 256b 114.3 MiB/s 113.8 MiB/s
serpent-cbc 256b 51.2 MiB/s 198.9 MiB/s
twofish-cbc 256b 129.8 MiB/s 167.5 MiB/s
aes-xts 256b 153.3 MiB/s 150.6 MiB/s
serpent-xts 256b 176.4 MiB/s 184.1 MiB/s
twofish-xts 256b 160.8 MiB/s 159.8 MiB/s
aes-xts 512b 115.4 MiB/s 112.1 MiB/s
serpent-xts 512b 178.6 MiB/s 184.2 MiB/s
twofish-xts 512b 160.7 MiB/s 158.9 MiB/s
Portanto, parece que o Serpent não é apenas o mais rápido, mas, além disso, é o mais rápido com a chave mais complexa.
Não deveria ser o contrário? Estou lendo errado, ou algo assim?