Šamirovo sdílení tajemství

Šamirovo schéma pro sdílení tajemství je kryptografický algoritmus. Je to forma sdílení tajné informace, kdy je tato informace rozdělena do částí (každému účastníku je přidělena jedinečná část) a pro rekonstrukci původní informace je třeba alespoň určitý počet z dílčích částí. Izraelský matematik Adi Šamir jej formuloval v roce 1979

Matematická definice

Našim cílem je rozdělit nějaká data D {\displaystyle D} do n {\displaystyle n\,\!} částí D 1 , , D n {\displaystyle D_{1},\ldots ,D_{n}\,\!} tak, že:

  1. Znalost některých k {\displaystyle k\,\!} nebo více D i {\displaystyle D_{i}\,\!} částí zajistí snadné zjištění D {\displaystyle D\,\!} .
  2. Znalost některých k 1 {\displaystyle k-1\,\!} nebo méně D i {\displaystyle D_{i}\,\!} částí ponechá D {\displaystyle D\,\!} zcela neurčená (ve smyslu, že všechny hodnoty jsou stejně možné).

Toto schéma nazýváme ( k , n ) {\displaystyle \left(k,n\right)\,\!} prahové schéma. Pokud k = n {\displaystyle k=n\,\!} , všichni účastníci jsou třeba k rekonstrukci tajemství.

Shamirovo schéma

Předpokládejme, že chceme užít ( k , n ) {\displaystyle \left(k,n\right)\,\!} prahové schéma pro sdílení tajemství S {\displaystyle S\!} . Bez újmy na obecnosti předpokládejme, že S {\displaystyle S\!} je prvkem konečného tělesa F {\displaystyle F\!} velikosti P {\displaystyle P} kde 0 < k n < P ; S < P {\displaystyle 0<k\leq n<P;S<P} a zároveň je P {\displaystyle P} prvočíslo.

Náhodně vybereme k 1 {\displaystyle k-1\!} koeficientů a 1 , , a k 1 F {\displaystyle a_{1},\ldots ,a_{k-1}\in F\!} . Dále a 0 = S . {\displaystyle a_{0}=S.\!} Sestavíme polynom f ( x ) = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + + a k 1 x k 1 {\displaystyle f\left(x\right)=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+\cdots +a_{k-1}x^{k-1}\,\!} . Dále vypočítáme souřadnice n {\displaystyle n\,\!} bodů tohoto polynomu. Například pro i = 1 , , n {\displaystyle i=1,\ldots ,n\!} získáme n {\displaystyle n\!} bodů ve tvaru [ i , f ( i ) ] . {\displaystyle \left[i,f\left(i\right)\right].\!}

Tyto souřadnice jsou rozděleny mezi n , {\displaystyle n,\!} účastníků. Jelikož je polynom stupně k 1 {\displaystyle k-1\!} určen jednoznačně k {\displaystyle k\!} body, z jakékoliv k {\displaystyle k\!} -prvkové podmnožiny bodů lze jednoznačně pomocí interpolace určit koeficienty polynomu f , {\displaystyle f,\!} a tedy i tajemství S = a 0 . {\displaystyle S=a_{0}.\!}

Reference

  • SHAMIR, Adi. How to share a secret. Communications of the ACM. 1979, roč. 22, čís. 11, s. 612–613. 

V tomto článku byl použit překlad textu z článku Shamir's Secret Sharing na anglické Wikipedii.