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.


  1. Pour plus de détails, voir l’article de Wikipédia sur les secrets répartis.↩︎