Utilia

Partage de secret de Shamir

Divisez un mot de passe ou une phrase de récupération en N parts, dont M suffisent à le reconstituer, avec le partage de secret de Shamir, dans le navigateur.

Le partage et la reconstitution se font entièrement dans votre navigateur. Le secret et les parts ne sont jamais envoyés ; l’aléa provient de crypto.getRandomValues.

Partager un secret

    Reconstituer le secret

    Comment partager un secret

    1. Saisissez ou collez le texte à protéger dans Secret (texte) : une phrase de récupération, un mot de passe maître, une clé de chiffrement…
    2. Réglez le Nombre de parts (N) et les Parts nécessaires pour reconstituer (M). Avec N = 5 et M = 3, par exemple, n’importe quelles 3 parts sur 5 redonnent le secret, et 2 parts ne révèlent rien.
    3. Cliquez sur Partager le secret. Chaque part s’affiche sur sa ligne avec un bouton Copier ; vous pouvez aussi Copier toutes les parts ou Télécharger les parts (.txt).
    4. Cliquez sur Tester : combiner les M premières parts pour vérifier que tout fonctionne avant de distribuer les parts.
    5. Confiez chaque part à une personne différente ou rangez-la dans un lieu différent. Si vous les gardez toutes au même endroit, le partage ne sert à rien.

    Comment reconstituer le secret

    1. Collez au moins M parts dans Parts, une par ligne, dans n’importe quel ordre. Les lignes vides sont ignorées.
    2. Cliquez sur Combiner les parts. Le texte apparaît dans Secret retrouvé, et le message indique les numéros des parts utilisées.
    3. Si une part contient une faute de frappe, provient d’un autre partage ou figure deux fois avec un contenu différent, l’outil le signale en précisant laquelle, au lieu de renvoyer un résultat faux.

    Le principe du partage de Shamir

    Adi Shamir a publié ce procédé en 1979. Pour partager un octet s avec un seuil M, on tire au hasard un polynôme de degré M − 1 dont le terme constant vaut s : f(x) = s + a₁x + … + a₍M−1₎x^(M−1). La part numéro x est la valeur f(x). M points suffisent à déterminer le polynôme : l’interpolation de Lagrange en x = 0 redonne s. Avec moins de M points, toutes les valeurs de s restent également probables : les parts ne livrent aucune information sur le secret.

    L’outil calcule dans le corps fini GF(256), celui d’AES (polynôme de réduction x⁸ + x⁴ + x³ + x + 1) : chaque octet du secret encodé en UTF-8 reçoit son propre polynôme, et les parts ont exactement la longueur du secret. Les coefficients aléatoires proviennent de crypto.getRandomValues, le générateur cryptographique du navigateur. Tout se passe localement : ni le secret ni les parts ne quittent votre appareil.

    Format des parts

    Une part ressemble à 3-2-5f1c… : le seuil M, le numéro de la part X (de 1 à 255), puis des données hexadécimales. Celles-ci contiennent les valeurs du polynôme pour le secret suivi d’un CRC-32 de 4 octets du secret, et se terminent par une somme de contrôle CRC-32 de la part elle-même. La somme de contrôle détecte les erreurs de recopie ; le CRC interne révèle un mélange de parts issues de secrets différents. Les parts créées par d’autres outils Shamir utilisent d’autres formats et ne peuvent pas être combinées ici.

    Questions fréquentes

    Comment choisir N et M ?

    M correspond au nombre de personnes ou de lieux qui doivent coopérer, N − M au nombre de parts que vous pouvez vous permettre de perdre. « 3 sur 5 » est un choix courant : deux parts peuvent disparaître, et aucun duo de détenteurs ne peut reconstituer le secret seul.

    Puis-je stocker une part dans le cloud ?

    Une part isolée, ou tout groupe de moins de M parts, ne révèle rien du secret. Gardez néanmoins moins de M parts dans un même compte ou un même lieu, sinon cet endroit détient à lui seul le secret.

    Cet outil chiffre-t-il le secret ?

    Pas au sens habituel : il n’y a pas de mot de passe. La protection repose sur le seuil. Vous pouvez combiner les deux, par exemple en partageant la phrase de passe d’un fichier chiffré.

    Que se passe-t-il si je fournis plus de M parts ?

    Les M premières parts reconstituent le secret, et les suivantes sont vérifiées par rapport à elles. Une part qui ne concorde pas est signalée, ce qui aide à repérer une part abîmée ou étrangère.

    Puis-je partager un fichier ?

    L’outil partage un texte de 10 000 octets au maximum. Pour un fichier, chiffrez-le avec une phrase de passe aléatoire solide, puis partagez cette phrase de passe.