web-dev-qa-db-fra.com

Authentification Yubikey à deux facteurs Chiffrement intégral du disque via LUKS

J'ai récemment acheté un Yubikey Neo - un dispositif d'authentification de second facteur matériel astucieux. Il est principalement conçu pour être utilisé avec les mots de passe à usage unique et le protocole U2F émergent - mais depuis la version 2 de Yubikey, il prend également en charge l'authentification challenge-réponse HMAC-SHA1. HMAC-SHA1 combine une clé secrète (stockée à l'intérieur du Yubikey) et une clé secrète pour générer une réponse.

Comment puis-je combiner le Yubikey avec ma configuration Ubuntu FDE pour utiliser 2FA avec mon disque dur crypté?

26
seanlano

Un groupe appelé PrivacyIdea a créé un petit paquetage pour ajouter une routine HMAC-SHA1 challenge-response à initramfs, ce qui signifie qu'Ubuntu peut vous interroger sur un défi à transmettre. puis utilisez la réponse pour déverrouiller le volume LUKS. Pour la plupart, je suis ces instructions , avec quelques commentaires ajoutés. Le processus est en réalité très facile à faire.

J'ai testé cela sur Ubuntu 14.04, 16.04 et 18.04; en utilisant un Yubikey Neo. Cela devrait fonctionner avec n'importe quel Yubikey récent, avec le firmware 2.0+, et avec n'importe quelle version d'Ubuntu après 14.04. J'ai également testé Ubuntu 19.04 avec un Yubikey 5C. Quelques travaux supplémentaires étaient nécessaires, mais vous pouvez les utiliser. Il pourrait également y avoir d'autres périphériques matériels HMAC-SHA1 avec lesquels cela fonctionne, mais je ne suis au courant d'aucun de ceux-ci. Comme toujours, assurez-vous d'avoir une sauvegarde de vos données avant de poursuivre - il ne devrait y avoir aucun problème, mais il y a toujours une chance que cela détruise tout sur votre ordinateur. Ces instructions sont sans garantie.

Update: Depuis Ubuntu 16.04, les paquetages nécessaires se trouvent dans les référentiels principaux et aucun PPA n’est nécessaire.

Ajoutez un commentaire si vous avez des questions!


0. Prérequis

Pour que cela fonctionne, le chiffrement de disque intégral LUKS doit déjà être configuré et opérationnel. Vous pouvez le faire en sélectionnant l'option appropriée lors de l'installation d'Ubuntu. Pour une sécurité maximale, vous devez avoir choisi une phrase de passe très forte lors de l'installation. Si votre phrase secrète n'est pas à la hauteur, vous devriez changez-la en une meilleure avant de continuer ( instructions plus détaillées ici ).

La méthode ci-dessous ne remplacera aucune phrase secrète existante, mais ajoutera une autre phrase secrète à l'un des emplacements LUKS. Par conséquent, si vous perdez votre Yubikey, vous pouvez toujours déverrouiller votre ordinateur en utilisant n’importe quelle phrase secrète existante - je vous suggère de la noter et de la cacher dans un endroit sûr - vous en aurez également besoin plusieurs fois au cours de cette procédure. Votre nouvelle phrase secrète de défi Yubikey devrait toujours être assez forte, mais ne doit pas nécessairement être aussi longue que la phrase secrète que vous avez utilisée lors de l'installation d'Ubuntu.


1. Ajouter PrivacyIdea PPA et installer le package

Sur Ubuntu 14.04

Ouvrez un terminal et exécutez la commande suivante:

Sudo add-apt-repository ppa:privacyidea/privacyidea 

Appuyez sur Entrée lorsque vous y êtes invité, puis exécutez:

Sudo apt-get update

Puis installez le paquet avec:

Sudo apt-get install yubikey-luks

Sur Ubuntu 16.04, 18.04

Un PPA n’est pas nécessaire, vous pouvez installer le package avec:

Sudo apt-get install yubikey-luks

Sur Ubuntu 19.04

Voir cette réponse pour savoir comment construire le paquet yubikey-luks à partir du source pour Ubuntu 19.04.


2. Installer le logiciel Yubikey

Si vous utilisez la fonctionnalité HMAC-SHA1 du Yubikey pour autre chose, vous pouvez ignorer cette section. Cela effacera toute configuration dans le deuxième emplacement Yubikey, donc don't exécutez cette étape si vous utilisez HMAC-SHA1 à d'autres fins avec ce Yubikey.

Vous devrez configurer votre Yubikey pour qu’il fonctionne avec Ubuntu en installant le logiciel requis, soit à partir du PPA de Yubico sur Ubuntu 14.04, soit à partir du référentiel principal Ubuntu à partir de 16.04.

Sur Ubuntu 14.04

Si vous ne l'avez pas déjà fait, ajoutez le PPA et installez le paquet avec:

Sudo add-apt-repository ppa:yubico/stable
Sudo apt-get update
Sudo apt-get install yubikey-personalization

Sur Ubuntu 16.04, 18.04 (et ultérieur)

Sudo apt-get install yubikey-personalization

3. Initialisation de la fente Yubikey pour HMAC-SHA1

Nous devons maintenant programmer le deuxième emplacement du Yubikey avec une configuration HMAC-SHA1. Cela effacera votre configuration de logement précédente, qui est vide par défaut. Encore une fois, si vous utilisez HMAC-SHA1 pour autre chose ne pas émettez cette commande - cela effacera votre configuration. Vous pouvez utiliser en toute sécurité la même clé secrète à l'intérieur du Yubikey pour cette configuration LUKS que pour vos autres utilisations. (Par exemple, avec un autre ordinateur utilisant LUKS + Yubikey).

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Le terminal affichera des informations sur les modifications apportées. Vous n'avez pas besoin de noter cela, mais cela montrera la clé secrète utilisée par Yubikey dans l'algorithme HMAC-SHA1 pour calculer la réponse lorsqu'un défi est posé.


4. Inscrivez Yubikey à la fente LUKS

Nous allons maintenant modifier la configuration de LUKS pour ajouter la réponse du Yubikey à l’une des clés de déchiffrement.

La partition que nous devons spécifier varie selon que vous utilisez le BIOS ou UEFI pour démarrer votre ordinateur. Pour le BIOS, le volume chiffré est à /dev/sda5 par défaut, pour UEFI il est à /dev/sda3. Vous pouvez vérifier cela en ouvrant l'utilitaire disks et en confirmant le chemin de la partition. Il doit s'agir de sda3 ou de sda5. NOTE: Sur les ordinateurs plus récents équipés de disques NVMe, le chemin d'accès sera quelque chose comme /dev/nvme0n1p3.

Exécutez ceci dans un terminal:

Sudo yubikey-luks-enroll -d /dev/sda3 -s 7

Cela écrira à l'emplacement 7 de la configuration de LUKS, suivez les instructions du programme d'installation (elles varient légèrement en fonction de la version que vous utilisez).

Ensuite, vous avez terminé! Vous devriez pouvoir redémarrer votre ordinateur. Si votre Yubikey est inséré, vous pouvez taper votre mot de passe de challenge et utiliser le Yubikey comme deuxième facteur pour déverrouiller la partition LUKS et démarrer le système. Une fois que vous avez déchiffré le disque dur, vous pouvez retirer le Yubikey.

Si vous perdez votre Yubikey, vous pouvez toujours entrer votre phrase de passe d'origine (espérons-le très longue) pour déchiffrer le disque dur. Vous pourrez alors suivre cette procédure pour enregistrer un nouveau Yubikey.


Modification du mot de passe complexe de cryptage

Changer le mot de passe à une date ultérieure est assez simple, utilisez cette commande pour réinitialiser la clé secrète. Il n'est pas entièrement nécessaire de réinitialiser la clé secrète, mais cela ne fera pas mal. N'oubliez pas que cela détruira la clé secrète précédente, ne pas == faites ceci si vous utilisez HMAC-SHA1 pour autre chose avec ce Yubikey. (Par exemple, avec un autre ordinateur utilisant LUKS + Yubikey).

 ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Ensuite, comme dans Step 4 , ci-dessus, pour inscrire un nouveau mot de passe dans l'emplacement de clé LUKS, à l'exception de l'option d'effacer l'emplacement 7 à l'aide de cette commande:

Sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

Lorsque vous êtes invité à Enter any remaining passphrase, utilisez votre phrase secrète de sauvegarde, et non la phrase secrète du défi Yubikey. Ensuite, entrez une nouvelle phrase = Yubikey, deux fois, puis vous devrez saisir la dernière phrase secrète.

Maintenant, votre ancien mot de passe composé pour le défi Yubikey a été supprimé et seul votre nouveau mot de passe déchiffrera le disque dur. Votre phrase de passe de sauvegarde précédente sera toujours la même. Vous pouvez modifier cette phrase secrète en suivant les liens dans Étape 0 .


Note sur les implications pour la sécurité

Ajouter un Yubikey va ajouter un certain niveau de sécurité à votre système - quelqu'un doit connaître à la fois le mot de passe complexe et avoir votre Yubikey pour pouvoir déverrouiller votre disque dur (ou trouver votre mot de passe initial que vous utilisez maintenant comme sauvegarde). . Cependant, il est techniquement possible pour un attaquant de déchiffrer le disque dur s’il connaît votre phrase secrète de défi (par exemple, en vous "effondrant" pendant que vous le saisissez) et ne peut accéder à votre Yubikey que pendant une courte période. En utilisant le mot de passe complexe de défi, ils pourraient obtenir la réponse du Yubikey et l’enregistrer, puis l’utiliser pour déchiffrer le disque dur à tout moment sans le Yubikey. Ou encore, si un attaquant ou un programme malveillant connaissait votre phrase secrète et pouvait exécuter du code sur une machine connectée à votre Yubikey, il pouvait également lancer le défi et stocker la réponse. Il est donc toujours extrêmement important d’être vigilant lorsque vous entrez votre phrase secrète de défi et de vous assurer que vous avez toujours le Yubikey dans un endroit sûr. Vous devriez également ne jamais le brancher à une machine de confiance. Si vous perdez la trace de votre Yubikey et pensez que quelqu'un l'utilisait pour essayer d'apprendre la clé de déchiffrement, effectuez à nouveau les étapes 2 et 3 pour réinitialiser la clé secrète à l'intérieur du Yubikey et choisissez un nouveau mot de passe de défi. Notez que si un adversaire a réussi à apprendre l’une de vos phrases secrètes (soit la réponse HMAC-SHA1 du Yubikey, soit votre sauvegarde), il peut effectuer une sauvegarde de la clé principale de LUKS, puis l’utiliser pour déchiffrer votre disque dur, même si vous changez la phrase secrète dans le futur. La page de manuel de cryptsetup , explique la section luksHeaderBackup. Si vous pensez que cela est arrivé, vous devez créer un tout nouveau volume LUKS pour protéger vos données.

30
seanlano