Liste des méthodes de chiffrement disponibles pour LUKS

10

Je cherchais un moyen valide et toujours à jour de chiffrer les disques durs. Après quelques recherches, j'ai rencontré LUKS et j'ai décidé de lui donner un coup de feu. J'ai donc recherché quelques exemples de la façon de chiffrer correctement un disque dur avec, comme ceci:

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

La partie --cipher et --hash était la plus intéressante pour moi, j'ai donc essayé de m'informer sur les différents chiffrements et hachages qui sont spécifiquement utilisables pour LUKS. Je n'ai trouvé aucune information utile à part l'ouverture d'un fichier qui montre les formulaires de cryptage disponibles dans un formatage convivial pour le Linux actuellement utilisé. Mais comme on m'a dit que même ce fichier manquait probablement de toutes les méthodes de cryptage, en plus d'être très difficile à lire pour quelqu'un qui ne s'en occupait pas quotidiennement, de toute façon.

Ma question: existe-t-il une liste complète des chiffrements / hachages pour le chiffrement LUKS?

Celui qui me montre simplement ce que je peux choisir ... et peut-être donne une brève description de ce que sont exactement les différences entre ces différentes façons.

Akito
la source
1
Je vote pour fermer cette question comme hors sujet car il s'agit d'utiliser et de configurer LUKS et le noyau Linux, pas de la cryptographie que ces outils utilisent. Ce serait sur le sujet sous Unix et Linux . J'ai signalé cette question pour la migration, veuillez ne pas republier à moins qu'elle ne soit fermée sans migration.
Gilles 'SO- arrête d'être méchant'
J'ai spécifiquement choisi la zone Cryptographie, car ma question s'adresse aux chiffrements et aux hachages. J'ai fait le "tour" pour cette zone et il l'a littéralement dans la fente "Questions que vous devriez poser:". Cherchez, si vous voulez.
Akito
C'est pourquoi je n'ai pas posé la question sous Unix & Linux car ce serait hors sujet là-bas ....
Akito
donne une brève description de ce que sont exactement les différences entre ces différentes façons. C'est la seule partie de votre question qui est sur le sujet. Quelle est la principale différence entre AES et Twofish? Eh bien, AES utilise un réseau de permutation de substitution tandis que Twofish utilise un réseau Feistel. Sur la base de ces informations, vous devez clairement sélectionner AES car il n'y a rien de mal avec un réseau Feistel en principe.
DépriméDaniel

Réponses:

7

Cela dépend essentiellement de votre noyau, donc " See / proc / crypto " est censé être "la réponse". La page de manuel de cryptsetup dit ceci:

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.

Cependant, mon /proc/cryptone mentionne aucun serpent ou xts (aes), donc je recommanderais plutôt de voir quels cryptsetup benchmarkrapports (et il afficherait également les vitesses (RAM)). Par exemple:

$ 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

Les hachages sont les premières lignes (sha1, sha256, sha512, ripemd160, whirlpool). Les chiffres sont sous l'en-tête de l'algorithme.

L'examen des valeurs par défaut donne également une bonne idée de ce qui est considéré comme "assez bon":

$ 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

Et l'utilisation d'une taille de clé plus élevée (avec --key-size) ne devrait être plus forte, mais légèrement plus lente.

   --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.
Xen2050
la source
2
C'est exactement ce dont je me plaignais ... / proc / crypto est très illisible et donc inutile. Certains chiffres sont même deux fois dans la liste et je ne sais pas pourquoi.
Akito
Ah, je n'étais pas sûr, ce n'était pas la question, mais c'est certainement une préoccupation, même une recherche sur le Web à propos de / proc / crypto ne révèle aucun guide évident. Je remarque quelques différences, et je pense que cryptsetup utilise uniquement des chiffrements de blocs, pour chiffrer les blocs de disques, donc ceux de type: blkcipher semblent logiques. Mais je remarque également que le mien ne mentionne aucun serpent ou xts-aes ... mais j'ai une autre idée qui pourrait être meilleure, je vais l'éditer dans la réponse
Xen2050
2

en référence au travail de l'utilisateur notdavidcronenberg: La seule réponse que j'ai trouvée se trouve dans le document LUKS On-Disk Format Specification (PDF).

Noms de chiffrement valides

Modes de chiffrement valides

  • ecb La sortie de chiffrement est utilisée directement.
  • cbc-plainLe chiffrement est exploité en mode CBC. Le chaînage CBC est coupé dans tous les secteurs et réinitialisé avec le numéro de secteur comme vecteur initial (converti en 32 bits et en petit-boutien). Ce mode est spécifié dans [Fru05b], Chapitre 4.
  • cbc-essiv:{hash}Le chiffrement est exploité en mode ESSIV en utilisant un hachage pour générer la clé IV pour la clé d'origine. Par exemple, lorsque vous utilisez sha256 comme hachage, la spécification du mode de chiffrement est «cbcessiv: sha256». L'ESSIV est spécifié dans [Fru05b], Chapitre 4.
  • xts-plain64 plain64 est une version 64 bits du vecteur initial brut

Spécifications de hachage valides

opinion_no9
la source
la liste n'est pas complète superuser.com/a/1450671/446140
intika