Aller au contenu
ecdsa.com

Partage de secret de Shamir

Le schéma d’Adi Shamir (1979) qui divise un secret en n parts au moyen d’un polynôme aléatoire : k parts quelconques le reconstituent, k − 1 n’en révèlent rien.
Autres graphiesShamir's secret sharingSSSsecret splittingm-of-n

Le secret est le terme constant d’un polynôme aléatoire de degré k − 1 sur un corps fini ; chaque part est la valeur du polynôme en un point non nul distinct, et l’interpolation de Lagrange sur k parts quelconques retrouve le terme constant. Les implémentations travaillent généralement octet par octet dans GF(2⁸) : chaque part est donc aussi longue que le secret, plus un indice. La sécurité est inconditionnelle, au sens de la théorie de l’information : moins de k parts ne donnent aucune information, quelle que soit la puissance de calcul.

Le schéma de Shamir seul n’assure aucune intégrité : une part corrompue ou malveillante reconstitue silencieusement un secret erroné, si bien que les schémas pratiques ajoutent une somme de contrôle ou un condensat du secret, ou recourent à un partage de secret vérifiable (Feldman, Pedersen). Il exige aussi un moment où le secret entier existe en un seul endroit, lors du partage et de la reconstitution ; les signatures à seuil l’évitent en ne reconstituant jamais la clé.

Parmi les usages : les cérémonies de clés des HSM et des AC (cartes d’opérateur m parmi n), les sauvegardes de clés racines et de clés de récupération, les sauvegardes de portefeuilles SLIP-39 et les clés de descellement (unseal keys) de HashiCorp Vault. L’outil de partage de secret de Shamir divise et recombine des secrets localement dans le navigateur.

Normes et références

Tous les termes