Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

LinuxFr.org : les journaux  -  Déchiffrement de disque racine avec carte à puce GPG sous Debian

 -  Février 2022 - 

Sommaire

Une installation standard de Debian permet de déchiffrer son disque / au démarrage à l'aide d'une carte à puce GPG (type yubikey, nitrokey, librem key ou autre). Ce journal vise à mettre en avant cette option méconnue.

Configuration

En partant d'une installation Debian standard avec chiffrement (le disque / est alors placé sous /dev/sda5, le déverrouillage se fait initialement par mot de passe), il faut modifier le fichier /etc/crypttab :

sda5_crypt UUID=... /etc/cryptsetup-initramfs/root_key.asc luks,discard,keyscript=/lib/cryptsetup/scripts/decrypt_gnupg-sc

Il faut ensuite peupler les fichiers /etc/cryptsetup-initramfs/root_key.asc contenant une clé valide chiffrée avec GPG et /etc/cryptsetup-initramfs/pubring.gpg avec les clés publiques autorisées à déchiffrer cette clé :

openssl rand -base64 30 | tr -d '\n' > root_key
sudo cryptsetup luksAddKey /dev/sda5 root_key
gpg --armor --encrypt -r me@example.com -r trusted_friend@example.com --output - root_key | sudo tee /etc/cryptsetup-initramfs/root_key.asc
gpg --armor --export me@example.com trusted_friend@example.com | sudo tee /etc/cryptsetup-initramfs/pubring.gpg
shred --remove root_key
sudo update-initramfs -u
sudo cryptsetup luksRemoveKey /dev/sda5 # si vous voulez supprimer le mot de passe initial de chiffrement. À ne faire qu'après des tests fructueux !

Dans cette installation, les détenteurs des clés privées "me@example.com" et "trusted_friend@example.com" pourront démarrer la machine, à l'aide de leur carte à puce GPG.

Prérequis

Des clés qui déchiffrent des clés

LUKS

LUKS utilise une clé maître (symétrique) pour chiffrer les données. Cette clé clé est elle-même chiffrée par 1 à 8 clés différentes construites par la dérivation d'un mot de passe (un mot de passe par clé). Lorsqu'on définit un mot de passe ou une phrase de passe de chiffrement :

  1. LUKS produit une clé de façon déterministe et lente à partir de ce mot de passe
  2. Puis :
    • s'il s'agit d'un nouveau disque chiffré, LUKS choisit aléatoirement une clé de chiffrement maître, chiffre cette clé avec la clé calculée en 1. et stocke le chiffré dans le premier emplacement (luks slot).
    • s'il s'agit d'un disque chiffré déjà existant, LUKS demande un mot de passe de déchiffrement correspondant à un emplacement déjà occupé, déchiffre la clé maître avec la clé dérivée de ce mot de passe, puis re-chiffre la clé-maître avec la clé calculéa en 1. et stocke le chiffré dans un emplacement libre.

GPG

De la même façon, un chiffré GPG est composé d'une clé symétrique de chiffrement, elle-même chiffrée avec la clé publique de chacun des destinataires. Un même message peut être ainsi déchiffré par toutes les personnes autorisées.

Dans notre situation, nous utilisons donc :

  • le PIN de la carte à puce pour nous authentifier auprès d'elle
  • la carte à puce déverrouillée utilise sa clé privée GPG pour déchiffrer la clé symétrique de chiffrement par GPG
  • cette clé de déchiffrement est utilisée pour déchiffrer le message, à savoir une phrase de passe pour LUKS (une phrase de 40 caractères base64 aléatoires dans l'exemple ci-dessus)
  • cette clé est utilisée par LUKS pour dériver une clé de chiffrement
  • cette clé de chiffrement est utilisée pour déchiffrer la clé maître qui contrôle l'accès aux données

Cela fait 6 clés dans le processus. C'est pour cette raison que je préfère que le mot de passe en question soit en caractères base64 : en cas de problème, on peut récupérer le fichier /etc/cryptsetup-initramfs/root_key.asc (il est notamment présent dans l'initramfs), le déchiffrer dans un autre contexte, puis taper la phrase de passe manuellement.

Considérations de sécurité

Par rapport à un chiffrement par mot de passe simple, on gagne :

  • le fait d'avoir un mot de passe de moins à retenir si on utilise déjà une carte à puce GPG
  • la protection contre l'attaque par force brute si la carte à puce GPG se verrouille automatiquement après un certain nombre de tentatives. Si un voleur vous pique l'ordinateur ET la carte à puce GPG, il ne pourra pas accéder aux données.

En revanche, nous fragilisons l'ensemble car si tous les destinataires indiqués pour la clé de chiffrement (me@example.com et trusted_friend@example.com dans notre exemple) perdent leur clé GPG, les données sont inaccessibles (il est plus facile de perdre un petit objet que d'oublier un mot de passe qu'on utilise tous les jours).

Un attaquant motivé qui a accès à la machine éteinte pourra toujours modifier l'initramfs de façon à récupérer la clé de chiffrement ou à compromettre le système qui est ensuite démarrer. Pour se prémunir de ce risque, il faudrait vérifier l'intégrité du disque /boot au moment du démarrage, ce que met en place Purism avec heads par exemple.

Références

Commentaires : voir le flux Atom ouvrir dans le navigateur

par Samuel

LinuxFr.org : les journaux

LinuxFr.org : Journaux

La version 2.0 de WhosWho est sortie

 -  15 mai - 

Bonjour Nal,Je viens de publier la version 2.0 de WhosWho, mon logiciel pour faire des trombinoscopes, dont j'avais parlé il y a longtemps dans (...)


décrire une une image avec une iA locale

 -  8 mai - 

Aujourd'hui c'est fourien™, petit tuto sans prétention!Pour décrire des images en utilisant une iA localement j'utilise LLaVA qui fait partie de (...)


antistress adventure in Flatpak land

 -  30 avril - 

Hello nal, ça faisait un bail !Certain (il se reconnaîtra) m'a demandé de le tenir au courant lorsque j'aurai basculé sur un usage de Firefox (...)


Téléphone sous Linux ?

 -  25 avril - 

Aujourd'hui, avoir un téléphone avec un Android libéré, c'est possible, on pense en particulier à Murena.Avoir un téléphone sous GNU/Linux, c'est (...)


Quand votre voiture vous espionne… et vous le fait payer

 -  23 avril - 

Ceci se passe aux États-Unis, pour l’instant, aucune preuve qu’une telle fuite existe en Europe. Mais… si votre assurance augmente brutalement, (...)