Shamir’s Secret Sharing

Shamir’s Secret Sharing ist ein 1979 von Adi Shamir entwickeltes Secret-Sharing-Verfahren. Mit Hilfe eines solchen Verfahrens kann man ein Geheimnis so auf mehrere „Instanzen“ (Mitwisser) aufteilen, dass zur Rekonstruktion des Geheimnisses nur eine gewisse Teilmenge dieser Instanzen benötigt wird (im Unterschied zum einfachen Secret-Sharing, bei dem sämtliche Instanzen benötigt werden).

Idee des Verfahrens

Der „Dealer“ (benannt nach dem Kartengeber bei einem Kartenspiel) bestimmt eine Zahl t {\displaystyle t} an Instanzen, die das Geheimnis später wieder rekonstruieren können sollen, und wählt daraufhin ein Polynom vom Grad t 1 {\displaystyle t-1} und berechnet n , n t {\displaystyle n,n\geq t} Stützstellen des Polynoms. Diese Stützstellen („Shares“) verteilt der Dealer an die restlichen beteiligten Instanzen. Diese Instanzen können daraufhin mit einem Interpolationsverfahren das Polynom rekonstruieren, dessen konstanter Term das Geheimnis ist.

Ablauf

Der Dealer wählt ein Polynom

f ( x ) = s + a 1 x + a 2 x 2 + + a t 1 x t 1 {\displaystyle f(x)=s+a_{1}\cdot x+a_{2}\cdot x^{2}+\dots +a_{t-1}\cdot x^{t-1}}

wobei s {\displaystyle s} das Geheimnis ist und die a i {\displaystyle a_{i}} zufällig gewählt werden. Nun erzeugt der Dealer n {\displaystyle n} Wertepaare ( x i , s i = f ( x i ) ) {\displaystyle (x_{i},s_{i}=f(x_{i}))} , wobei x i 0 {\displaystyle x_{i}\neq 0} und verteilt diese Wertepaare an die beteiligten Instanzen. Die x i {\displaystyle x_{i}} sind dabei öffentlich und die s i {\displaystyle s_{i}} („Shares“) müssen geheim gehalten werden.

Polynome zweiten Grades durch zwei Punkte können die y-Achse an jedem Punkt schneiden.

Nach dem Fundamentalsatz der Algebra benötigt man t {\displaystyle t} Wertepaare ( x , f ( x ) ) {\displaystyle (x,f(x))} , um dieses Polynom eindeutig zu bestimmen. Daher können bis zu t 1 {\displaystyle t-1} Shares kompromittiert werden, ohne dass das Geheimnis s {\displaystyle s} in Gefahr ist, bestimmt zu werden. Erst wenn t {\displaystyle t} Shares bekannt sind, ist es möglich, s {\displaystyle s} zu bestimmen. Das bedeutet aber auch, dass zur Bestimmung des Geheimnisses t {\displaystyle t} Instanzen ihre Shares kombinieren müssen, um das Geheimnis zu erhalten.

Dieses System wird auch als (t,n)-Schwellwert-Kryptosystem bezeichnet, da nur t {\displaystyle t} der gesamten n {\displaystyle n} Shares benötigt werden, um das Geheimnis zu rekonstruieren.

Rekonstruktion mittels der Lagrange-Interpolation

Zur effizienten Rekonstruktion des Polynoms kann die Lagrange-Interpolation benutzt werden.

g ( x ) = s i j i x x j x i x j {\displaystyle g(x)=\sum s_{i}\cdot \prod _{j\neq i}{\frac {x-x_{j}}{x_{i}-x_{j}}}}

Da das Geheimnis aber nur der konstante Term s {\displaystyle s} ist, reicht es, g ( 0 ) {\displaystyle g(0)} zu berechnen

s = g ( 0 ) = s i j i x j x i x j {\displaystyle s=g(0)=\sum s_{i}\cdot \prod _{j\neq i}{\frac {-x_{j}}{x_{i}-x_{j}}}}

Jeder Teilnehmer berechnet nun

w i = s i j i x j x i x j {\displaystyle w_{i}=s_{i}\cdot \prod _{j\neq i}{\frac {-x_{j}}{x_{i}-x_{j}}}}

und hat dadurch einen additiven Teil des Geheimnisses s = w i {\displaystyle s=\sum w_{i}} .

Wichtig ist, dass bei dieser Berechnung lediglich diejenigen x i {\displaystyle x_{i}} und x j {\displaystyle x_{j}} in die Formel einfließen, die auch wirklich an der Interpolation beteiligt sind. Zum Beispiel: Sind i = { 1 , 6 , 9 } {\displaystyle i=\{1,6,9\}} beteiligt, darf x 4 {\displaystyle x_{4}} nicht benutzt werden.

Shamir’s Secret Sharing modulo p

Bei der praktischen Nutzung von Shamir’s Secret Sharing mit reellen Zahlen können Angreifer auch aus weniger als t {\displaystyle t} Shares Informationen erhalten. Daher werden in der Praxis endliche Körper als Zahlenraum verwendet. Das Verfahren muss in diesem Fall leicht angepasst werden, indem auf die modulare Arithmetik zurückgegriffen wird. Rechnet man im endlichen Körper mit p {\displaystyle p} Elementen (wobei p {\displaystyle p} prim), so muss jede Berechnung modulo p {\displaystyle p} erfolgen.[1]

Das Polynom wird nun folgend definiert.

f ( x ) = s + a 1 x + a 2 x 2 + + a t 1 x t 1 mod p {\displaystyle f(x)=s+a_{1}\cdot x+a_{2}\cdot x^{2}+\dots +a_{t-1}\cdot x^{t-1}{\bmod {p}}}

wobei

0 a i , s < p {\displaystyle 0\leq a_{i},s<p}

weiter wird s {\displaystyle s} folgendermaßen berechnet

s = g ( 0 ) = i ( s i j i ( x j ) ( x i x j ) 1 mod p ) mod p {\displaystyle s=g(0)=\sum _{i}\left(s_{i}\cdot \prod _{j\neq i}(-x_{j})(x_{i}-x_{j})^{-1}{\bmod {p}}\right){\bmod {p}}}

Hierbei ist ( x i x j ) 1 {\displaystyle (x_{i}-x_{j})^{-1}} die Inverse im endlichen Körper, den mod p {\displaystyle {\bmod {p}}} bildet. Sie kann mit dem kleinen Satz von Fermat bzw. dem Satz von Euler berechnet werden, da p eine Primzahl ist: ( x i x j ) 1 = ( x i x j ) p 2 mod p {\displaystyle (x_{i}-x_{j})^{-1}=(x_{i}-x_{j})^{p-2}{\bmod {p}}} und ist eine natürliche Zahl. Eine effiziente Berechnung dieses Ausdrucks bietet beispielsweise die „Right-to-left binary method“.

Literatur

  • Shamir's Secret Sharing in der Crypto++-Software-Bibliothek
  • Shamir's Secret Sharing Scheme (ssss) – eine GNU GPL Implementierung
  • sharedsecret – Implementierung in Go
  • s4 - Online Shamir's Secret Sharing Tool das im Browser betrieben werden kann

Einzelnachweise

  1. Manon Bischoff: Die fabelhafte Welt der Mathematik: Kryptografie löst das Vertrauensdilemma. In: Spektrum der Wissenschaft. Abgerufen am 2. Dezember 2023.