Sauvegarde

Ubuntu 18.04 LTS – Réalisez une sauvegarde chiffrée de vos données avec GnuPG

Dans cet article, nous allons voir comment réaliser une sauvegarde de vos données en créant une archive chiffrée avec GnuPG. Le chiffrement sera asymétrique (une paire de clés publique et privée) et nous aborderons une façon atypique de sécuriser et de sauvegarder votre paire de clés. La restauration sera aussi traitée car celle-ci reste évidemment la pierre angulaire d’une bonne sauvegarde.

1 – Création de l’archive

  • Il peut être utile pour vous de connaître la taille totale des fichiers à archiver :
  • Rendez-vous dans votre dossier personnel et créez le répertoire backup dédié à la sauvegarde :
  • Créez le fichier backup.list contenant la liste des fichiers à sauvegarder :
  • Créez l’archive compressée avec bzip2 :

2 – Chiffrement de l’archive

Nous allons utiliser l’outil GnuPG à l’instar de OpenSSL, qui a présenté certaines failles critiques ces dernières années, pour chiffrer l’archive. GnuPG permet la création, l’échange et la vérification des paires de clés, le chiffrement et le déchiffrement de fichiers, et pour finir l’authentification avec des signatures numériques.

Dans un système à clé publique, chaque utilisateur possède une paire de clés constituée d’une clé privée et d’une clé publique. La clé privée de l’utilisateur est gardée secrète, elle ne doit pas être révélée. La clé publique peut être distribuée à toute personne avec qui l’utilisateur souhaite communiquer.

  • La commande gpg --full-generate-key est utilisée pour créer une nouvelle paire de clés (une clé publique et une clé privée) :
    Choisissez le type de clé par défaut (1).
    Choisissez la taille de clé maximale soit 4096.
    Choisissez une paire de clés qui n’expire jamais.
    Vérifiez et validez vos choix.
    Saisissez vos informations et validez avec O.
    Entrez un mot de passe fort pour protéger votre clé privée.
    Enfin comme l’outil l’indique, tapez au clavier ou déplacez votre souris pour générer des nombres aléatoires.
  • Vérifiez que votre clé ait bien été générée en tapant la commande gpg --list-keys :
  • Chiffrez l’archive :
    Un fichier backup.tar.bz2.gpg est créé. Celui-ci est votre archive de sauvegarde chiffrée, vous pouvez désormais la copier sur un périphérique externe ou l’envoyer sur un serveur dédié ou votre cloud préféré.

3 – Génération du MD5

Calculer une signature MD5 à partir de votre archive permet de lui attribuer une empreinte unique. Cette signature vous permettra de vérifier l’intégrité de votre archive lors d’une restauration future.

Générez le MD5 avec la commande suivante :

4 – Restauration d’une sauvegarde chiffrée

  • Vérifiez l’intégrité de l’archive en comparant la signature MD5 de l’archive avec la valeur contenue dans le fichier backup.tar.bz2.gpg.md5 avec la commande suivante :
    Si les deux signatures sont identiques, vous obtiendrez sur la sortie standard :
  • Déchiffrez l’archive en tapant les commandes suivantes :
  • Décompressez l’archive :

5 – Sauvegarde de votre paire de clés

5.1 – La clé publique

Vous devez tout d’abord identifier l’ID de votre clé publique en tapant la commande suivante :

  • pub : clé publique
  • rsa4096 : méthode de chiffrement et taille de votre clé en bits
  • 4242424242424242 : ID de la clé
  • 2018-06-25 : date de création de la clé
  • James GOSLING : nom du propriétaire de la clé
  • ‹james@gosling.com› : email du propriétaire de la clé

Backup sur support…

Exécutez la commande suivante pour exporter votre clé publique dans un fichier pubring.gpg en remplaçant 4242424242424242 par l’ID de votre clé :

La clé publique pubring.gpg peut être directement copiée vers votre cloud ou périphérique de sauvegarde.

Backup sur un serveur de clés…

Votre clé publique n’ayant pas besoin d’être gardée secrète, il peut être intéressant de passer par un serveur de clés en plus de réaliser un backup sur clé USB / disque dur.
L’utilisation d’un serveur facilite la récupération et l’échange de clés, il peut aussi être utile si la clé est sujette à modification. Il est possible de modifier la date d’expiration, de révoquer (annuler) la clé ou d’ajouter sa signature à une clé publique.

Si vous vous inquiétez de la disponibilité de ces serveurs, sachez que la plupart des serveurs de clés sont synchronisés entre eux, ce qui veut dire que, si nous envoyons une clé à un serveur, elle sera répliquée sur les autres serveurs.

Envoyez votre clé publique en tapant la commande suivante et en remplaçant 4242424242424242 par l’ID de votre clé :

Il est possible de visualiser la clé publique sur un des serveurs de clés comme http://pool.sks-keyservers.net/. Lors de la recherche par ID de votre clé, il est nécessaire de préfixer l’ID de la clé publique par 0x. Donc si l’ID de la clé publique est 4242424242424242, il vous faudra rechercher 0x4242424242424242.

5.2 – La clé privée

Affichez votre clé privée avec la commande suivante :

Backup sur support…

Exécutez la commande suivante pour exporter votre clé privée dans un fichier secring.gpg en remplaçant 4242424242424242 par l’ID de votre clé :

La clé privée secring.gpg peut être directement copiée vers votre cloud ou périphérique de sauvegarde.

Backup sur papier

Outre la recommandation de sauvegarder votre clé privée sur un support physique tel qu’une clé USB ou un disque dur, ou encore d’exporter votre clé dans un cloud ou sur un autre serveur dédié, il peut être aussi intéressant de créer un QR code de votre clé privée, de l’imprimer et le mettre dans un endroit sûr (comme chez vous par exemple !). En effet, le papier peut être facilement détruit mais peut aussi perdurer très longtemps, bien plus que les périphériques magnétiques ou optiques que nous utilisons généralement pour sauvegarder nos données numériques.

Nous allons utiliser l’outil Paperkey permettant d’exporter sa clé privée dans un format qui convient à l’impression sur papier. Paperkey permet aussi de réduire la taille de votre clé privée en prélevant les « octets secrets » de celle-ci. En effet chaque clé secrète contient une copie complète de votre clé publique.

  • Installez les paquets paperkey, qrencode et imagemagick :
  • Exportez votre clé privée au format binaire (raw) permettant de réduire la taille de celle-ci et convertissez la en base64 pour obtenir des caractères lisibles nécessaires à la création du QR Code :
  • Pour comprendre la suite de ce tutoriel, il est nécessaire de présenter brièvement les QR Codes. Un QR Code est un type de code-barres en deux dimensions (ou code matriciel datamatrix) constitué de modules noirs disposés dans un carré à fond blanc. L’agencement de ces points définit l’information que contient le code. Il existe 40 versions de QR Code, de la plus petite (version 1) pouvant contenir au maximum 17 octets à la plus grande (version 40) pouvant contenir au maximum 2 953 octets.

    Si votre clé est chiffrée sur 4 096 bits, il est fort probable que celle-ci soit trop large pour tenir dans un QR Code.
    Vous pouvez afficher le nombre d’octets de votre clé privée grâce à la commande wc -m :

    Pour contourner cette limite, nous allons créer plusieurs QR Codes contenant chacun une partie de votre clé privée. Dans l’exemple précédent, la clé privée était composée de 3 660 octets, il est donc facile de voir que la clé privée peut être contenue dans deux QR Codes. Cependant, vous allez obtenir deux QR Codes (version 40) avec de grandes résolutions difficilement lisibles par votre smartphone ou webcam. Pour être facilement lisible par un de vos périphériques, il est recommandé de ne pas créer des QR Codes supérieurs à la version 20. Sachant que celle-ci ne peut contenir que 858 octets au maximum, votre clé privée sera donc composée de 5 QR Codes.

    Mais nous n’allons pas nous arrêter là… Les codes QR utilisent le système Reed-Solomon pour la correction d’erreur : le code contient par défaut 7% de redondance (niveau L). Nous allons spécifier le taux de redondance maximum que permet un QR Code, à savoir 30% (niveau H). Avec un tel taux de redondance, le nombre d’octets maximum stockable dans un QR Code de niveau 20 passe de 828 octets à 382. Votre clé privée sera donc constituée de 10 QR Codes. Vu que ces QR Codes sont destinés à être imprimés, nous allons aussi spécifier une résolution plus importante, à savoir 300dpi au lieu de 72 par défaut :

  • Pour faciliter l’impression nous allons concaténer l’ensemble des QR Codes sur 3 colonnes et générer une seule image, puis nous allons convertir cette image au format PDF :

  • Vous pouvez désormais imprimer le document secring.pdf et le placer dans un endroit sûr. Les QR Codes se lisent de gauche à droite, puis de haut en bas.

    Il est fortement recommandé de faire un test d’importation de votre clé privée pour vérifier la qualité de votre impression et de comparer la clé privée d’origine à celle importée.

6 – Restauration de votre paire de clés

6.1 – La clé publique

…d'un support physique

Si votre clé publique est copiée directement d’un disque dur ou clé USB de backup, il est juste nécessaire d’importer la clé avec la commande suivante :

…d'un serveur de clés

Importer la clé publique d’un serveur de clés avec la commande suivante :

Si la clé est importée avec succès, vous obtiendrez sur la sortie standard :

6.2 – La clé privée

Il est nécessaire d’importer la clé publique avant de tenter d’importer la clé privée.

…d'un support physique

Si votre clé privée est copiée directement d’un disque dur ou clé USB de backup, il est juste nécessaire d’importer la clé avec la commande suivante :

…d'une feuille de papier

Si l’import se fait à partir des QR Codes, il est nécessaire d’installer une application permettant de lire les QR Codes sur votre smartphone.

  • Les QR Codes se lisent de gauche à droite, puis de haut en bas. Pour chaque QR Code lu, copiez le contenu dans le presse-papier, email ou tout autre outil de votre smartphone et concaténez le tout. N’insérez aucun saut de ligne entre chaque QR Code…
  • Importez les données concaténées sur le nouveau serveur dans un fichier secring_base64.txt.
  • Installez l’outil paperkey sur le nouveau serveur :
  • Importez la clé privée avec la commande suivante :

En cas d'erreur…


Si vous obtenez l’erreur suivante lors de l’import de la clé privée :

  • Ajoutez les deux lignes suivantes dans le fichier ~/.gnupg/gpg.conf (le créer si celui-ci n’existe pas) :
  • Ajoutez la ligne suivante dans le fichier ~/.gnupg/gpg-agent.conf (le créer si celui-ci n’existe pas) :
  • Redémarrez l’agent avec la commande suivante :
  • Tentez à nouveau l’import avec la commande :


Ubuntu 18.04 Server LTSgpg (GnuPG) 2.2.4
tar (GNU tar) 1.29
paperkey 1.5
qrencode 3.4.4
imageMagick 6.9.7-4

AuteurEdouard WATTECAMPS

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.