Cercare di comprendere la crittografia LUKS


8

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 cryptsetupFAQ:

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?


Quindi perché non usare SHA512 per una maggiore sicurezza se ha comunque un hash a 1 secondo in tempo reale.
user284148,

Risposte:


5

1a - non ha molta importanza. quale hash abbia mai usato per la funzione di derivazione delle chiavi, LUKS si assicura che sia computazionalmente costoso. Lo eseguirà semplicemente in loop fino a quando non sarà trascorso 1 secondo in tempo reale.

1b: il metodo di derivazione chiave non influisce sulle prestazioni. lo stesso codice. cryptsetup benchmarkti mostra tanto.

2 - AES è il più veloce se la tua CPU è abbastanza moderna da supportare le istruzioni AES-NI (accelerazione hardware per AES). Se vai con serpent ora potresti non essere in grado di utilizzare l'AES-NI del tuo prossimo laptop.

# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1      1165084 iterations per second
PBKDF2-sha256     781353 iterations per second
PBKDF2-sha512     588426 iterations per second
PBKDF2-ripemd160  726160 iterations per second
PBKDF2-whirlpool  261882 iterations per second
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   692.9 MiB/s  3091.3 MiB/s
 serpent-cbc   128b    94.6 MiB/s   308.6 MiB/s
 twofish-cbc   128b   195.2 MiB/s   378.7 MiB/s
     aes-cbc   256b   519.5 MiB/s  2374.0 MiB/s
 serpent-cbc   256b    96.5 MiB/s   311.3 MiB/s
 twofish-cbc   256b   197.9 MiB/s   378.0 MiB/s
     aes-xts   256b  2630.6 MiB/s  2714.8 MiB/s
 serpent-xts   256b   310.4 MiB/s   303.8 MiB/s
 twofish-xts   256b   367.4 MiB/s   376.6 MiB/s
     aes-xts   512b  2048.6 MiB/s  2076.1 MiB/s
 serpent-xts   512b   317.0 MiB/s   304.2 MiB/s
 twofish-xts   512b   368.7 MiB/s   377.0 MiB/s

Tieni presente che questo benchmark non utilizza l'archiviazione, quindi dovresti verificare questi risultati con qualsiasi archiviazione e filesystem che utilizzerai effettivamente.


1
1. Grazie per il chiarimento. Quindi posso andare avanti e utilizzare SHA512 senza alcun effetto negativo sulle prestazioni del disco. 2. Trovo strano che secondo il sito Web di Intel ( ark.intel.com/search/advanced/?s=t&AESTech=true ) i vecchi Pentium abbiano questa ottimizzazione, ma i C2D no. "Se vai con serpent ora potresti non essere in grado di utilizzare l'AES-NI del tuo prossimo laptop." Con ciò capisco che intendevi dire che avrei dovuto ricrittografare il disco in AES. Giusto? Il benchmark mi dice delle prestazioni della CPU. Il mio SSD è su SataII 3.0 Gbps (200-280 MB / s), quindi immagino che non farò niente di meglio di serpent-xts 512b
lockheed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.