Ho deciso di crittografare la mia partizione di root con LUKS + LVM.
La mia configurazione ThinkPad:
- SSD Samsung 830 128GB
- HDD da 750 GB
- Core 2 Duo 2,5 GHz P9500
- 8 GB di RAM
Ma più leggo, meno capisco su questi due argomenti seguenti:
1 bis. La cifra
Stavo per usare SHA1 invece di 2/512 (come alcuni suggeriscono), a causa di quella citazione dalle cryptsetup
FAQ:
5.20 LUKS è rotto! Usa SHA-1!
No non lo è. SHA-1 è (accademicamente) rotto per trovare collisioni, ma non per usarlo in una funzione di derivazione chiave. E quella vulnerabilità alla collisione è solo per uso non iterato. E hai bisogno del valore hash in parole povere.
Questo in pratica significa che se hai già uno slot-key e hai impostato il conteggio dell'iterazione PBKDF2 su 1 (è> 10'000 normalmente), potresti (forse) derivare una passphrase diversa che ti dia lo stesso slot- chiave. Ma se hai la chiave slot, puoi già sbloccare la chiave slot e ottenere la chiave master, rompendo tutto. Quindi, fondamentalmente, questa vulnerabilità SHA-1 ti consente di aprire un contenitore LUKS con grande sforzo quando lo hai già aperto.
Il vero problema qui è che le persone che non comprendono la crittografia e sostengono che le cose sono rotte solo perché viene utilizzato un meccanismo che è stato rotto per un uso diverso specifico. Il modo in cui viene utilizzato il meccanismo è molto importante. Un hash che è rotto per un uso può essere completamente sicuro per altri usi ed eccolo qui.
Che ho letto come "non ha senso usare altro che SHA-1". Ma poi alcune persone mi dicono che non è esattamente così. Quindi non so più cosa pensare.
1b.
Inoltre, non sono riuscito a trovare alcuna informazione se il codice ha qualche influenza sulle prestazioni di lettura / scrittura / ricerca del disco una volta che il disco è stato sbloccato e il sistema ha effettuato l'accesso.
Quindi la complessità della cifra influenza solo le "prestazioni" nella fase di immissione della password o anche durante il normale utilizzo del sistema?
2. L'algoritmo
Lo sto leggendo da un paio di giorni, ma più leggo, più mi confondo. Tutto ciò che leggo dice che AES è il più veloce e Serpent il più lento. Ma non secondo il mio 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
Quindi sembra che Serpent non sia solo il più veloce, ma è anche il più veloce con la chiave più complessa.
Non dovrebbe essere il contrario? Sto leggendo male o qualcosa del genere?