From 9126ed1be6ce0168eafbb705d59505985c8348ec Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sat, 13 Feb 2021 17:46:31 +0100 Subject: Sauvegarde de clef GPG sur papier --- content/Informatique/2021-02-13-gpg_export.rst | 136 +++++++++++++++++++++++++ content/images/chiffer/private.pdf | Bin 0 -> 323518 bytes content/images/chiffer/private.png | Bin 0 -> 34893 bytes content/pages/applications/applications.rst | 50 +++++++++ content/pages/applications/calligraphie.svg | 132 ++++++++++++++++++++++++ content/resources/gpg_export.tar.gz | Bin 0 -> 1636 bytes content/resources/qrcode.png | Bin 0 -> 6113 bytes 7 files changed, 318 insertions(+) create mode 100755 content/Informatique/2021-02-13-gpg_export.rst create mode 100644 content/images/chiffer/private.pdf create mode 100644 content/images/chiffer/private.png create mode 100755 content/pages/applications/applications.rst create mode 100755 content/pages/applications/calligraphie.svg create mode 100644 content/resources/gpg_export.tar.gz create mode 100755 content/resources/qrcode.png (limited to 'content') diff --git a/content/Informatique/2021-02-13-gpg_export.rst b/content/Informatique/2021-02-13-gpg_export.rst new file mode 100755 index 0000000..845f1bc --- /dev/null +++ b/content/Informatique/2021-02-13-gpg_export.rst @@ -0,0 +1,136 @@ +.. -*- mode: rst -*- +.. -*- coding: utf-8 -*- + +================================ +Sauvegarder sa clef privée GPG +================================ + +:date: 2021-02-13 +:summary: |summary| + +.. default-role:: literal + +.. |summary| replace:: + + Comment exporter et sauvegarder sa clef privée proprement ? Le papier, + toujours du papier… + +Comme beaucoup sûrement, je chiffre mes sauvegardes avant de les envoyer dans +le cloud, je chiffre mes mots de passes (et utilise une clef sécurisée pour les +lire), et utilise pour cela l'outil gpg. Cela me permet d'être sûr que les +fichiers ne seront pas lus si l'on ne dispose pas de la clef de déchiffrement +adéquate. + +Mais comment sauvegarder sa clef privée ? Est-ce que l'on peut la copier sur +une clef USB et la laisser dans un tiroir ? Comment s'assurer que la sauvegarde +sera pérenne ? + +On recommande souvent l'outil paperkey pour cela, il génère un document texte +simple, pouvant être utilisé pour reconstruire la clef privée à partir de le +clef publique (en partant du principe que ladite clef publique est publique et +peut être retrouvée facilement). Le document peut ensuite être imprimé, et un +logiciel OCR permet ensuite de le régénérer. + +Je propose une autre solution, basée sur le même principe, mais en qrcode et en +pdf ! + +Le qrcode +========= + +.. image:: {static}/resources/qrcode.png + :alt: Un qrcode généré + :align: center + :width: 50% + +Je ne présente plus les qrcode, que l'on rencontre déjà partout. La seule chose +qui est vraiment importante ici, est la taille limite des données qu'il peut +contenir (source_) : + +* Caractères numériques : maximum 7 089 +* Caractères alphanumériques : maximum 4 296 +* Binaires (8-bits) : **maximum 2 953 octets** +* Kanji/Kana : maximum 1 817 caractères + +.. _source: https://fr.wikipedia.org/wiki/Code_QR#Sp%C3%A9cification + +Ici, c'est la limite de données binaire qui nous intéresse : 2953 octets. Notre +clef GPG dépassant probablement cette limite, nous allons la découper en +plusieurs lots, qui seront chacun d'eux transformés en image. + +La commande est assez simple : + +.. code-block:: bash + + # Exporte la clef privée et découpe en lot de 2500 octets + gpg --export-secret-keys --armor | split -C 2500 - splitkey- + +(ici nous créons autant de fichier `splitkey` que nécessaire, avec une taille +de 2500 octets chacun). + +Ensuite, à l'aide de l'application qrencode, on transforme chaque fichier en +image : + +.. code-block:: bash + + # Génère un QRCode pour chacun d'eux + for file in tmp/splitkey-??; do + qrencode --size 3 -d 150 -t eps -o "${file}.ps" -r "${file}" + done + +J'utilise ici le format postcript, afin de pouvoir l'intégrer facilement dans +un fichier pdf : étape suivante ! + +Récupérer les données +===================== + +Il suffit pour cela de lire chaque image, puis concaténer tous les fichiers +entre eux. La lecture peut être faite à l'aide du lecteur zbarimg, qui fait +partie du paquet zbar-tool dans debian : + +.. code-block:: bash + + for file in *.png; do + zbarimg -1 -q --raw ${file}; + done > private.key + + gpg --import private.key + +(le plus long dans ce cas, est de scanner les fichiers pour en extraire les +images…) + +Le pdf +====== + +L'idée est ensuite d'assembler tous ces qrcode dans un document pdf que l'on +va ensuite imprimer. Comme je suis un grand amateur de la combinaison rst + +latex, c'est avec ces deux outils que l'on va construire notre document final. + +Puisque l'on dispose d'un fichier à imprimer, autant y ajouter une notice, avec +la manière dont les données ont été générées, et comment les récupérer. À +ce moment-là, le pdf devient autoporteur, et il est possible ensuite de +l'oublier puisqu'il contient en lui-même toutes les informations nécessaires. + +Voilà un lien pour télécharger un package réalisant tout ça : + +.. figure:: {static}/images/package-x-generic.png + :alt: get the file + :align: center + :target: {static}/resources/gpg_export.tar.gz + + Télécharger + +la commande `make` permet de lancer les commandes ci-dessus, et générer un +fichier pdf avec les images, et une petite documentation avec les commandes +ci-dessus (voir le fichier `private.rst` qui contient le modèle). + +Vous pouvez ensuite imprimer le pdf, et supprimer les fichiers, et tester ! + +À titre d’exemple, voilà ce que donne `le fichier généré`_ + +.. image:: {static}/images/chiffer/private.png + :alt: Un rendu + :align: center + :width: 50% + :target: {static}/images/chiffer/private.pdf + +.. _`le fichier généré`: {static}/images/chiffer/private.pdf diff --git a/content/images/chiffer/private.pdf b/content/images/chiffer/private.pdf new file mode 100644 index 0000000..adfc421 Binary files /dev/null and b/content/images/chiffer/private.pdf differ diff --git a/content/images/chiffer/private.png b/content/images/chiffer/private.png new file mode 100644 index 0000000..8a1ce1c Binary files /dev/null and b/content/images/chiffer/private.png differ diff --git a/content/pages/applications/applications.rst b/content/pages/applications/applications.rst new file mode 100755 index 0000000..c0307dc --- /dev/null +++ b/content/pages/applications/applications.rst @@ -0,0 +1,50 @@ +.. -*- mode: rst -*- +.. -*- coding: utf-8 -*- + +Applications +============ + +:save_as: pages/applications/index.html +:url: pages/applications/ + +Ce blog contient des applications qui sont disponibles en lignes. Il s'agit +d'outil dont je me sers au quotidien ou des petits projets que j'ai construit. + +.. contents:: \ + +Fusion de CSS +------------- + +:description: Outil de fusion de CSS en ligne +:lien: `lien vers la page`__ + + +.. __: {filename}/pages/css_merger/css_merger.rst#css-merger + +Ardoise calligraphique +---------------------- + +:description: Application javascript pour dessiner dans le navigateur avec le + même rendu qu'une plume. +:lien: `lien vers la page`__ + +.. image:: {static}/pages/applications/calligraphie.svg + :align: center + :target: {filename}/pages/script.it/script.rst#ardoise-calligraphique + +.. __: {filename}/pages/script.it/script.rst#ardoise-calligraphique + + +Graphviz en ligne +----------------- + +:description: Application javascript pour représenter des graphes +:lien: `lien vers la page`__ + +.. image:: {static}/resources/viz.js/example.svg + :align: center + :target: {filename}/pages/graph-editor/graph-editor.rst#graph-editor + +.. __: {filename}/pages/graph-editor/graph-editor.rst#graph-editor + + diff --git a/content/pages/applications/calligraphie.svg b/content/pages/applications/calligraphie.svg new file mode 100755 index 0000000..fc1d077 --- /dev/null +++ b/content/pages/applications/calligraphie.svg @@ -0,0 +1,132 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/resources/gpg_export.tar.gz b/content/resources/gpg_export.tar.gz new file mode 100644 index 0000000..5321d40 Binary files /dev/null and b/content/resources/gpg_export.tar.gz differ diff --git a/content/resources/qrcode.png b/content/resources/qrcode.png new file mode 100755 index 0000000..2cddd5a Binary files /dev/null and b/content/resources/qrcode.png differ -- cgit v1.2.3