Comment utiliser un fichier comme clé de périphérique LUKS

Comment utiliser un fichier comme clé de périphérique LUKS

LUKS est l'acronyme de la configuration de la clé Unified Linux: il s'agit de l'implémentation de chiffrement la plus utilisée utilisée sur les systèmes Linux et peut être configurée comme une alternative à la configuration de DM-Crypt Plain. Par rapport à ce dernier, il fournit des fonctionnalités supplémentaires telles que le hachage et le salage des mots de passe et la possibilité de stocker plusieurs mots de passe dans l'en-tête dits LUKS. Dans ce tutoriel, je suppose que le lecteur a une certaine familiarité avec Luks; Si vous voulez en savoir plus sur ce sujet, vous pouvez consulter notre guide de base sur le chiffrement des partitions Linux avec LUKS. La façon la plus courante de protéger un appareil LUKS est d'utiliser une phrase de passe, mais il est également possible d'utiliser un fichier comme clé; Dans ce tutoriel, nous verrons comment faire cela. Allons-y!

Dans ce tutoriel, vous apprendrez:

  • Comment créer un fichier avec des données aléatoires à utiliser comme clé de périphérique LUKS
  • Comment ajouter une clé à un appareil Luks
  • Comment déchiffrer automatiquement un périphérique LUKS au démarrage à l'aide d'un fichier comme clé
Comment utiliser un fichier comme clé de périphérique LUKS

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Toute distribution Linux
Logiciel cryptsetup
Autre Autorisations racinaires pour accéder aux appareils de bloc cryptés
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Créer un conteneur LUKS



Pour le bien de ce tutoriel, nous créerons un conteneur LUKS sur un fichier rempli de zéros que nous générerons en utilisant DD. Pour créer le fichier, nous pouvons exécuter:

$ sudo dd if = / dev / zero of = / luks-container.IMG BS = 1M COMPT = 300 

Dans l'exemple ci-dessus, nous avons utilisé le / dev / zéro fichier comme le dd Source d'entrée de commande (/ dev / zéro est un fichier «spécial»: chaque fois que nous le lisons, il renvoie 0s) et / Luks-Container.IMG comme destination et argument du DD de opérande. Nous avons demandé à DD de lire et d'écrire 300 blocs de 1 mib de taille en utilisant respectivement le bs et compter opérandes. Pour utiliser le fichier comme conteneur Luks, nous devons le préparer en utilisant cryptsetup; Nous pouvons courir:

$ sudo cryptsetup luksformat --type = lUks1 --hash = sha512 --key-size = 512 --cipher = aes-xts-plain64 / luks-contrainer.IMG 

Le luksformat La sous-commande de cryptsetup est utilisée pour initialiser un conteneur LUKS et régler la phrase de passe initiale. Une fois que nous exécutons la commande ci-dessus, sera averti que l'opération est destructrice, car elle écrasera toutes les données existantes. Nous serons invités à confirmer que nous voulons effectuer l'opération; nous écrivons OUI (Capitaux de majuscules) et appuyez sur ENTER pour confirmer:

AVERTISSEMENT! ======== Cela écrasera les données sur / LUKS-Container.IMG irrévocablement. Es-tu sûr? (Tapez «oui» en majuscules): Oui 

À ce stade, nous serons invités à fournir et à confirmer une phrase secrète qui sera utilisée comme la première des huit clés de l'appareil possibles:

Entrez en phrase de passe pour / LUKS-Container.IMG: Vérifiez la phrase passante: 


Notre conteneur Luks est maintenant prêt. Nous pouvons utiliser le luksdump sous-commande de cryptsetup jeter entête information:

$ sudo cryptsetup Luksdump / Luks-Container.IMG LUKS Header Informations pour / Luks-Container.IMG Version: 1 Cipher Nom: AES Mode de chiffre SALT: F1 03 65 E2 F1 D7 4E 77 99 48 E8 57 75 65 DD 73 A3 EB A4 24 BE 36 9E 84 F7 84 C5 D3 94 2E D8 52 MK Slot 0: Itérations activées: 1108430 SEL: 69 99 95 88 6E 2F E8 B9 D8 9C 91 36 B6 A2 55 C1 35 27 C7 DA 5D 9A 9E F9 8C EC 70 68 DB 41 53 4B MATÉRICAU Emplacement de clé 1: clé de clé désactivée 2: clé de clé désactivée 3: emplacement de clé désactivé 4: clé de clé désactivée 5: clé de clé désactivée 6: clé de clé désactivée 7: désactivé 

Dans la sortie ci-dessus, nous pouvons voir diverses informations sont rapportées: le Nom de chiffre et Mode chiffre utilisé pour l'appareil, par exemple. Ce qui nous intéresse vraiment dans ce cas, cependant, c'est le Créneaux clés section. Comme vous pouvez le voir, dans ce cas, seul le premier KeysLot est utilisé: il stocke la phrase secrète que nous avons fournie lorsque nous avons formaté l'appareil. Dans ce cas, il y a un total de 8 emplacements; 7 sont disponibles pour stocker des clés supplémentaires. Nous utiliserons l'un d'eux pour stocker le fichier que nous utiliserons pour déverrouiller l'appareil LUKS.

Création d'un fichier de données aléatoires à utiliser comme clé

Tout fichier existant peut être utilisé comme clé de périphérique LUKS, mais il peut être plus sécurisé pour créer un fichier spécifiquement à cet effet, à partir de données aléatoires. Pour créer le fichier, encore une fois, nous recourirons au vénérable dd Commande, cette fois en utilisant / dev / urandom comme source de données:

$ sudo dd if = / dev / urandom of = / contener-key bs = 512 count = 8 8 + 0 enregistre en 8 + 0 enregistre sur 4096 octets (4.1 kb, 4.0 kib) copié, 0.000631541 S, 6.5 Mo / s 


Le / dev / urandom Le fichier fonctionne de manière similaire à / dev / zéro Mais il renvoie des données aléatoires à chaque fois qu'elle est lue. Cette fois, nous lisons 8 des blocs de 512 octets, créant un fichier «rempli» de 4096 octets de données aléatoires.

Ajout du fichier de clés à l'appareil LUKS

Une fois le fichier créé, nous pouvons l'ajouter à l'en-tête LUKS et l'utiliser comme clé. Le cryptsetup sous-commande qui nous permettons de réaliser cette tâche luksaddkey.

Le premier argument nécessaire est le périphérique LUKS pour lequel la clé doit être utilisée; Le second, facultatif, est le chemin d'un fichier clé à utiliser comme clé. S'il est omis, l'utilisateur est invité à fournir une phrase secrète. Parmi les options acceptées par la commande, il y a --plage de clés: Avec lui, nous pouvons spécifier quel emplacement clé doit être utilisé pour stocker la clé. Dans ce cas, nous omettons l'option, de sorte que la première fente disponible sera utilisée (dans ce cas, le numéro 1).

Pour ajouter le fichier en tant que touche LUKS, nous exécutons:

$ sudo cryptsetup luksaddkey / luks-container.IMG / Container-Key 

On nous demandera de fournir une phrase secrète déjà existante pour le conteneur; Après l'avoir fait, la nouvelle clé sera ajoutée. Une fois que la commande ci-dessus est exécutée avec succès, si nous exécutons luksdump Encore une fois, nous pouvons observer qu'un nouveau créneau est maintenant utilisé:

[…] Clé Slot 0: Itérations activées: 1108430 SELT: 69 99 95 88 6E 2F E8 B9 D8 9C 91 36 B6 A2 55 C1 35 27 C7 DA 5D 9A 9E F9 8C EC 70 68 DB 41 53 4B MATÉRIAU CLÉ OFFSET: 8 AF Stripes: 4000 Key Slot 1: Itérations activées: 921420 SALL: 62 54 F1 61 C4 D3 8D 87 A6 45 3E F4 E8 66 B3 95 E0 5D 5D 78 18 6A E3 F0 AE 43 6D E2 24 14 BC 97 Materif 512 AF Stripes: 4000 Key Slot 2: Key Disable Key Slot 3: Key Disable Key Slot 4: Key Disabled Key Slot 5: Disabled Key Slot 6: Disabled Key Slot 7: Disabled […] 

Ouverture du conteneur Luks

Pour vérifier que la clé fonctionne, nous pouvons maintenant tenter d'ouvrir le conteneur LUKS en utilisant. À cette fin, nous utilisons le luksopen Sous-commande de cryptsetup: il faut deux arguments obligatoires:

  1. L'appareil Luks
  2. Le nom à utiliser pour cartographier l'appareil une fois qu'il est ouvert.

Comment pouvons-nous spécifier que nous souhaitons utiliser un fichier pour ouvrir l'appareil? Facile! Nous utilisons le
--fichier clé option et transmettre le chemin du fichier clé comme argument. Dans notre
cas, pour ouvrir l'appareil, la commande complète à exécuter est:

$ sudo cryptsetup Luksopen / Luks-Container.IMG LUKS-Container-Crypt --key-File = / Container-Key 


Si tout se passe comme prévu, nous devrions trouver une entrée pour le conteneur ouvert sous le / dev / mapper Répertoire, dans ce cas: / dev / mapper / luk-contrainer-crypt.

Soit dit en passant, nous pouvons maintenant traiter le conteneur comme nous le ferions avec n'importe quel appareil de bloc: peut-être pouvons-nous créer un système de fichiers dessus et le monter:

sudo mkfs.EXT4 / DEV / MAPTER / LUKS-Container-Crypt && Sudo Mount / Dev / Mapper / Luks-Container-Crypt / Media 

Ouvrez automatiquement un conteneur Luks au démarrage

Une fois que nous avons appris à utiliser un fichier comme clé de conteneur Luks, nous pouvons faire pour qu'un périphérique LUKS soit automatiquement ouvert au démarrage, sans interaction utilisateur. Il va en soi qu'il s'agit d'une configuration qui présente des risques de sécurité, il doit donc être utilisé très soigneusement! Au moins dans des endroits dangereux, le fichier utilisé pour déverrouiller l'appareil ne doit être accessible que par l'utilisateur racine et doit être lui-même stocké sur un système de fichiers crypté, sinon le chiffrement devient inutile (équivaut à utiliser un gros verrouillage de graisse pour protéger un porte mais quitter la clé où elle peut être atteinte par n'importe qui).

Pour faire de sorte qu'un conteneur LUKS est automatiquement déverrouillé au démarrage, nous devons spécifier les informations nécessaires à l'intérieur du / etc / crypttab déposer. Ce fichier est utilisé pour décrire les périphériques de bloc cryptés qui sont configurés pendant le démarrage du système. La syntaxe à utiliser dans le fichier est assez facile à comprendre; Dans chaque ligne que nous ajoutons, nous devons spécifier, dans l'ordre:

  1. Le nom à utiliser pour le mappage de l'appareil (dans l'exemple précédent que nous avons utilisé luks-container-crypt)
  2. L'appareil hébergeant le conteneur Luks qui doit être ouvert
  3. Le mot de passe de l'appareil (facultatif)
  4. Les options à utiliser (facultative)

Dans ce cas, nous entrions cette ligne:

Luks-Container-Crypt / Luks-Container.IMG / Container-Key Luks 

Sur le démarrage suivant, l'appareil sera automatiquement déverrouillé!

Conclusions

Dans ce tutoriel, nous avons appris comment nous pouvons utiliser un fichier comme clé pour déverrouiller un conteneur Luks. Bien que n'importe quel fichier puisse être utilisé à cet effet, nous avons vu comment utiliser DD pour créer un fichier de données aléatoires, et nous avons vu comment l'ajouter à l'un des 8 emplacements d'en-tête LUKS disponibles en utilisant le luksaddkey commande. Enfin, nous avons vu comment il est possible de déverrouiller automatiquement le conteneur LUKS au démarrage en utilisant un fichier clé, fournissant les informations nécessaires à l'intérieur du / etc / crypttab dossier, et nous avons vu pourquoi cela peut représenter un éventuel risque de sécurité.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Comment hacher les mots de passe sur Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Meilleur lecteur PDF pour Linux
  • Comment utiliser Luks avec un en-tête détaché
  • Linux peut-il obtenir des virus? Exploration de la vulnérabilité de Linux…
  • Cryptage complet du disque avec veracrypt sur Ubuntu Linux
  • Téléchargement Linux
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…