Elencare i metodi di crittografia disponibili per LUKS


10

Stavo cercando un modo valido e ancora aggiornato per crittografare i dischi rigidi. Dopo alcune ricerche ho incontrato LUKS e ho deciso di provarlo . Quindi ho cercato alcuni esempi di come crittografare correttamente un HDD con esso, in questo modo:

cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3

Il --cipher e --hash parte di esso era più interessante per me, così ho cercato di informarmi per quanto riguarda diverse cifre e gli hash che sono specificamente utilizzabile per LUKS. Non sono riuscito a trovare informazioni utili oltre all'apertura di un file che mostra i moduli di crittografia disponibili in una formattazione intuitiva per Linux attualmente in uso. Ma come mi è stato detto, anche a questo file probabilmente manca tutta la portata di tutti i modi di crittografia, oltre ad essere molto difficile da leggere per qualcuno che non lo gestisce quotidianamente.

La mia domanda: esiste un elenco completo di cifre / hash per la crittografia LUKS?

Uno che mi mostra semplicemente cosa posso scegliere ... e forse dà una breve descrizione di quali sono esattamente le differenze tra questi diversi modi.


1
Sto votando per chiudere questa domanda come off-topic perché riguarda l'uso e la configurazione di LUKS e del kernel Linux, non della crittografia utilizzata da questi strumenti. Sarebbe in argomento su Unix e Linux . Ho contrassegnato questa domanda per la migrazione, per favore non ripubblicare a meno che non venga chiusa senza migrazione.
Gilles 'SO-smetti di essere malvagio' il

Ho scelto specificamente l'area di crittografia, perché la mia domanda è rivolta a cifre e hash. Ho preso il "tour" per quest'area e ce l'ha letteralmente nello slot "Domande che dovresti chiedere:". Cerca, se vuoi.
Akito,

Ecco perché non ho posto la domanda in Unix e Linux perché sarebbe fuori tema lì ....
Akito

fornisce una breve descrizione di quali sono esattamente le differenze tra questi diversi modi Questa è l'unica parte della tua domanda che è in tema. Qual è la differenza principale tra AES e Twofish? Bene, AES usa una rete di permutazione di sostituzione mentre Twofish usa una rete Feistel. Sulla base di queste informazioni, è necessario selezionare chiaramente AES perché in linea di principio non esiste nulla di sbagliato in una rete Feistel.
Depresso

Risposte:


7

Dipende sostanzialmente dal kernel, quindi " See / proc / crypto " dovrebbe essere "la risposta". La pagina man di cryptsetup dice questo:

NOTES ON SUPPORTED CIPHERS, MODES, HASHES AND KEY SIZES

   The available combinations of ciphers, modes, hashes and key  sizes  depend
   on  kernel  support.  See /proc/crypto for a list of available options. You
   might need to load additional kernel crypto modules in order  to  get  more
   options.

   For  the  --hash option, if the crypto backend is libgcrypt, then all algo‐
   rithms supported by the gcrypt library are  available.   For  other  crypto
   backends some algorithms may be missing.

Tuttavia, il mio /proc/cryptonon menziona alcun serpente o xts (aes), quindi raccomanderei di vedere quali cryptsetup benchmarkrapporti (e mostrerebbe anche la velocità (ram)). Per esempio:

$ cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1       292752 iterations per second
PBKDF2-sha256     221362 iterations per second
PBKDF2-sha512     142010 iterations per second
PBKDF2-ripemd160  277124 iterations per second
PBKDF2-whirlpool  155727 iterations per second
#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   164.7 MiB/s   164.5 MiB/s
 serpent-cbc   128b   119.5 MiB/s   205.0 MiB/s
 twofish-cbc   128b   163.5 MiB/s   208.6 MiB/s
     aes-cbc   256b   148.4 MiB/s   147.9 MiB/s
 serpent-cbc   256b   128.1 MiB/s   205.3 MiB/s
 twofish-cbc   256b   202.3 MiB/s   213.1 MiB/s
     aes-xts   256b   165.4 MiB/s   145.3 MiB/s
 serpent-xts   256b   150.0 MiB/s   194.5 MiB/s
 twofish-xts   256b   206.4 MiB/s   206.9 MiB/s
     aes-xts   512b   149.4 MiB/s   147.5 MiB/s
 serpent-xts   512b   181.7 MiB/s   195.0 MiB/s
 twofish-xts   512b   207.1 MiB/s   208.6 MiB/s

Gli hash sono le prime linee (sha1, sha256, sha512, ripemd160, idromassaggio). I cifrari sono sotto l'intestazione dell'algoritmo.

Guardare quali sono le impostazioni predefinite dà una buona idea anche di ciò che è considerato "abbastanza buono":

$ cryptsetup --help|tail -n 8
Default compiled-in key and passphrase parameters:
    Maximum keyfile size: 8192kB, Maximum interactive passphrase length 512 (characters)
Default PBKDF2 iteration time for LUKS: 1000 (ms)

Default compiled-in device cipher parameters:
    loop-AES: aes, Key 256 bits
    plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
    LUKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom

E l'uso di una chiave più grande (con --key-size) dovrebbe essere più forte, anche se leggermente più lento.

   --key-size, -s <bits>
          Sets  key  size in bits. The argument has to be a multiple of 8.
          The possible key-sizes are limited by the cipher and mode used.

          See /proc/crypto for more information.  Note  that  key-size  in
          /proc/crypto is stated in bytes.

2
Questo è esattamente ciò di cui mi sono lamentato ... / proc / crypto è altamente illeggibile e quindi inutile. Alcuni numeri sono addirittura due volte nell'elenco e non so perché.
Akito

Ah, non ero sicuro, non era nella domanda, ma questo è sicuramente un problema, anche una ricerca web su / proc / crypto non rivela alcuna guida ovvia. Sto notando alcune differenze e penso che cryptsetup usi solo i cifrari a blocchi, per crittografare i blocchi del disco, quindi quelli "type: blkcipher" sembrano logici. Ma sto anche notando che il mio non menziona alcun serpente o xts-aes ... ma ho un'altra idea che potrebbe essere migliore, lo modificherò nella risposta
Xen2050

2

in riferimento al lavoro dell'utente notdavidcronenberg: l'unica risposta che ho trovato è nel documento Specifiche del formato su disco LUKS (PDF).

Nomi di cifratura validi

Modalità di cifratura valide

  • ecb L'output della crittografia viene utilizzato direttamente.
  • cbc-plainIl codice è gestito in modalità CBC. Il concatenamento CBC viene tagliato in ogni settore e reinizializzato con il numero del settore come vettore iniziale (convertito in 32 bit e in little-endian). Questa modalità è specificata in [Fru05b], Capitolo 4.
  • cbc-essiv:{hash}Il codice viene gestito in modalità ESSIV utilizzando l'hash per generare la chiave IV per la chiave originale. Ad esempio, quando si utilizza sha256 come hash, la specifica della modalità di crittografia è "cbcessiv: sha256". ESSIV è specificato in [Fru05b], capitolo 4.
  • xts-plain64 plain64 è la versione a 64 bit del vettore iniziale semplice

Specifiche hash valide


l'elenco non è completo superuser.com/a/1450671/446140
intika
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.