Chapitre 21 Partager un secret
Durée : Une heure environ.
Parfois, on souhaite être plusieurs à partager un secret, sans pour autant que chaque personne ne dispose de la totalité du secret.
Cela tombe bien, plusieurs techniques cryptographiques ont été inventées pour cela. Elles permettent toutes, avec des calculs mathématiques un peu différents, de découper un secret en plusieurs morceaux, que l’on pourra reconstituer en en réunissant quelques-uns181.
21.1 Partager une phrase de passe
L’usage le plus pratique est de partager comme secret la phrase de passe d’un support chiffré.
Cette étape doit idéalement être faite à partir d’un système live afin de ne pas laisser des traces du secret que l’on va partager.
21.1.1 Installer le paquet nécessaire
Pour réaliser le partage du secret, on utilisera le programme ssss-split
. On
trouve ce programme parmi ceux fournis par le système live Tails. Cependant,
pour en disposer sur une Debian chiffrée, il est nécessaire d’installer le
paquet Debian
ssss.
Les outils contenus dans le paquet ssss sont à utiliser en ligne de commande. Toutes les opérations devront donc être effectuées dans un Terminal, sans les pouvoirs d’administration.
21.1.2 Générer une phrase de passe aléatoire
Dans notre cas, personne ne doit pouvoir, ni se souvenir, ni deviner la phrase de passe qui sera utilisée pour le chiffrement. On va donc générer une phrase de passe complètement aléatoire en tapant la commande :
head -c 32 /dev/random | base64
L’ordinateur va répondre quelque chose comme :
7rZwOOu+8v1stea98OuyU1efwNzHaKX9CuZ/TK0bRWY=
Si l’on désire faire varier la longueur de la phrase de passe, il suffira
de remplacer 32
par le nombre de caractères désirés.
Sélectionner cette ligne à l’aide de la souris et la copier dans le
presse-papiers, en faisant un clic-droit puis en cliquant sur Copier.
21.1.3 Découper le secret
Avant de découper le secret, il faut décider en combien de morceaux il sera découpé, et combien de morceaux seront nécessaires pour le reconstituer.
Ensuite, toujours à l’aide de notre terminal, il faut utiliser ssss-split
de
la façon suivante :
ssss-split -t NOMBRE-DE-MORCEAUX-NECESSAIRES -n NOMBRE-DE-MORCEAUX-TOTAL
Le NOMBRE-DE-MORCEAUX-NECESSAIRES
est le nombre de morceaux qu’il sera nécessaire
de réunir pour retrouver la phrase de passe de départ. Le NOMBRE-DE-MORCEAUX-TOTAL
correspond au nombre de morceaux en lesquels la phrase de passe sera découpée.
Le message WARNING: couldn't get memory lock
peut être ignoré sans
problème si on utilise bien un système live.
Lorsqu’il demande le secret, on peut coller le contenu du presse-papiers, en faisant clic-droit puis en cliquant sur Coller. Appuyer ensuite sur la touche Entrée (↲ ou return) pour valider la commande.
Chaque personne partageant le secret devra conserver l’une des lignes affichées ensuite. Et cela dans leur intégralité, en prenant également bien en note le premier chiffre suivi du tiret.
Voici un exemple avec la clé aléatoire générée précédemment, partagée entre six personnes et qui nécessitera que trois d’entre elles se réunissent pour la retrouver :
$ ssss-split -t 3 -n 6
Generating shares using a (3,6) scheme with dynamic security level.
Enter the secret, at most 128 ASCII characters: Using a 352 bit security level.
1-b8d576a1a8091760b18f125e12bb6f2b1f2dd9d93f7072ec69b129b27bb8e97536ea85c7f6dcee7b4399ea49
2-af83f0af05fc207e3b466caef30ec4d39c060800371feab93594350b7699a8db9594bfc71ed9cd2bf314b738
3-4718cb58873dab22d24e526931b061a6ac331613d8fe79b2172213fa767caa57d29a6243ec0e6cf77b6cbb64
4-143a1efcde7f4f5658415a150fcac6da04f697ebfeb9427b59dca57b50ec755510b0e57ccc594e6b1a1eeb04
5-fca1250b5cbec40ab14964d2cd7463af34c389f81158d1707b6a838a500977d957be38f83e8eefb79266e74a
6-ebf7a305f14bf3143b801a222cc1c857b7e8582119374925274f9f335d283677f4c002f8d68bcce722ebba1f
21.1.4 Créer le support chiffré
On pourra ensuite créer le support chiffré. Au moment d’indiquer la phrase de passe, on pourra copier le contenu du presse-papiers, comme précédemment, ou alors la retranscrire en l’ayant sous les yeux.
21.2 Reconstituer la phrase de passe
Afin de reconstituer la phrase de passe (le secret), il est nécessaire de disposer d’au moins autant de morceaux que le nombre minimal décidé lors du découpage (trois dans notre exemple).
Cette étape doit aussi idéalement être faite à partir d’un système live afin de ne pas laisser de traces du secret partagé.
21.2.1 Installer les paquets nécessaires
Comme précédemment, si le programme n’est pas disponible sur le système on a besoin d’installer le paquet ssss et d’ouvrir un terminal.
21.2.2 Recombiner le secret
Afin de recombiner le secret, on utilisera le programme ssss-combine
. Il est
nécessaire de lui indiquer le nombre de morceaux qu’on a à notre disposition :
ssss-combine -t NOMBRE-DE-MORCEAUX-A-DISPOSITION
Le programme demande ensuite de saisir les morceaux à notre disposition. Il faut taper Entrée (↲ ou return) après avoir écrit chacun d’entre eux. Si tout se passe bien, le programme affichera ensuite la phrase de passe complète.
Pour reprendre l’exemple précédent, cela donne :
$ ssss-combine -t 3
Enter 3 shares separated by newlines:
Share [1/3]: 4-143a1efcde7f4f5658415a150fcac6da04f697ebfeb9427b59dca57b50ec755510b0e57ccc594e6b1a1eeb04
Share [2/3]: 2-af83f0af05fc207e3b466caef30ec4d39c060800371feab93594350b7699a8db9594bfc71ed9cd2bf314b738
Share [3/3]: 6-ebf7a305f14bf3143b801a222cc1c857b7e8582119374925274f9f335d283677f4c002f8d68bcce722ebba1f
Resulting secret: 7rZwOOu+8v1stea98OuyU1efwNzHaKX9CuZ/TK0bRWY=
Attention : si un des morceaux a mal été tapé, l’erreur qui s’affiche n’est pas forcément très explicite :
$ ssss-combine -t 3
Enter 3 shares separated by newlines:
Share [1/3]: 4-143a1efcde7f4f5658415a150fcac6da04f697ebfeb9427b59dca57b50ec755510b0e57ccc594e6b1a1eeb04
Share [2/3]: 2-af83f0af05fc207e3b466caef30ec4d39c060800371feab93594350b7699a8db9594bfc71ed9cd2bf31ab738
Share [3/3]: 6-ebf7a305f14bf3143b801a222cc1c857b7e8582119374925274f9f335d283677f4c002f8d68bcce722ebba1f
Resulting secret: ......L.fm.....6 _....v..w.a....[....zS.....
WARNING: binary data detected, use -x mode instead.
21.2.3 Ouvrir le support chiffré
Une fois la phrase de passe obtenue, on peut utiliser un copier/coller afin de déverrouiller le support chiffré, ou alors la retranscrire en l’ayant sous les yeux.
Pour plus de détails, voir l’article de Wikipédia sur les secrets répartis.↩︎