Zum Inhalt springen
ecdsa.com

Shamir Secret Sharing

Adi Shamirs Verfahren von 1979, das ein Geheimnis per Zufallspolynom in n Anteile teilt: Beliebige k davon rekonstruieren es, k − 1 verraten gar nichts.
Auch geschrieben alsShamir's secret sharingSSSsecret splittingm-of-n

Das Geheimnis ist das konstante Glied eines zufälligen Polynoms vom Grad k − 1 über einem endlichen Körper; jeder Anteil ist der Wert des Polynoms an einer eigenen Stelle ungleich null, und die Lagrange-Interpolation über beliebige k Anteile liefert das konstante Glied zurück. Implementierungen arbeiten meist byteweise in GF(2⁸), sodass jeder Anteil so lang ist wie das Geheimnis plus ein Index. Die Sicherheit ist informationstheoretisch: Weniger als k Anteile geben keinerlei Information preis, unabhängig von der Rechenleistung.

Einfaches Shamir bietet keine Integrität: Mit einem beschädigten oder böswillig veränderten Anteil entsteht stillschweigend ein falsches Geheimnis, deshalb ergänzen praxistaugliche Verfahren eine Prüfsumme oder einen Digest des Geheimnisses oder nutzen verifizierbares Secret Sharing (Feldman, Pedersen). Zudem muss das ganze Geheimnis irgendwann an einem Ort vorliegen, beim Aufteilen und beim Rekonstruieren; Schwellenwertsignaturen vermeiden das, weil sie den Schlüssel nie rekonstruieren.

Einsatzgebiete sind Schlüsselzeremonien für HSMs und CAs (m-aus-n-Bedienerkarten), Backups von Root- und Wiederherstellungsschlüsseln, Wallet-Backups nach SLIP-39 und die Unseal-Schlüssel von HashiCorp Vault. Das Tool Shamir Secret Sharing teilt und kombiniert Geheimnisse lokal im Browser.

Standards und Quellen

Alle Begriffe