Shamir's Secret Sharing Scheme

Zvážte scenár, v ktorom potrebujete zabezpečiť bankový trezor. Považuje sa za absolútne nedobytné bez kľúča, ktorý dostanete hneď v prvý deň práce. Vaším cieľom je bezpečne uložiť kľúč.

Povedzme, že ste sa rozhodli mať kľúč vždy pri sebe a poskytnúť tak prístup k úložisku podľa potreby. Rýchlo však zistíte, že takéto riešenie nie je v praxi dobre škálovateľné, pretože pri každom otvorení úložiska je potrebná vaša fyzická prítomnosť. A čo dovolenka, ktorú ste sľúbili? Navyše, otázka je ešte desivejšia: čo keby ste stratili svoj jediný kľúč?

S ohľadom na vašu dovolenku sa rozhodnete urobiť kópiu kľúča a zveriť ju inému zamestnancovi. Chápete však, že ani to nie je ideálne. Zdvojnásobením počtu kľúčov zdvojnásobíte aj pravdepodobnosť krádeže kľúčov.

V zúfalstve zničíte duplikát a rozhodnete sa rozdeliť pôvodný kľúč na polovicu. Teraz by ste si mysleli, že na vyzdvihnutie kľúča a otvorenie trezoru by museli byť fyzicky prítomní dvaja dôveryhodní ľudia s úlomkami kľúča. To znamená, že zlodej potrebuje ukradnúť dva kusy, čo je dvakrát ťažšie ako ukradnúť jeden kľúč. Čoskoro si však uvedomíte, že táto schéma nie je oveľa lepšia ako len jeden kľúč, pretože ak niekto stratí polovicu kľúča, celý kľúč sa už nedá získať späť.

Problém je možné vyriešiť sériou ďalších kľúčov a zámkov, ale tento prístup bude rýchlo vyžadovať много kľúče a zámky. Rozhodnete sa, že ideálnym riešením by bolo zdieľať kľúč, aby bezpečnosť nezávisela výlučne na jednej osobe. Tiež ste dospeli k záveru, že musí existovať určitá hranica pre počet fragmentov, takže ak sa jeden fragment stratí (alebo ak osoba odíde na dovolenku), celý kľúč zostane funkčný.

Ako zdieľať tajomstvo

O tomto type schémy správy kľúčov uvažoval Adi Shamir v roku 1979, keď publikoval svoju prácu "Ako zdieľať tajomstvo". Článok stručne vysvetľuje tzv Shamir's Secret Sharing Scheme prahová schéma na efektívne rozdelenie tajnej hodnoty (ako je kryptografický kľúč). Shamir's Secret Sharing Scheme časti. Potom, kedy a len vtedy, keď aspoň Shamir's Secret Sharing Scheme z Shamir's Secret Sharing Scheme diely sú zmontované, môžete ľahko obnoviť tajomstvo Shamir's Secret Sharing Scheme.

Z bezpečnostného hľadiska je dôležitou vlastnosťou tejto schémy, že útočník by nemal vedieť absolútne nič, pokiaľ nemá aspoň Shamir's Secret Sharing Scheme časti. Dokonca aj prítomnosť Shamir's Secret Sharing Scheme časti by nemali poskytovať žiadne informácie. Túto vlastnosť nazývame sémantickej bezpečnosti.

Polynomiálna interpolácia

Shamir prahová schéma Shamir's Secret Sharing Scheme postavený okolo konceptu polynomiálna interpolácia. Ak tento koncept nepoznáte, je to vlastne celkom jednoduché. V skutočnosti, ak ste niekedy kreslili body do grafu a potom ich spájali čiarami alebo krivkami, už ste to použili!

Shamir's Secret Sharing Scheme
Prostredníctvom dvoch bodov môžete nakresliť neobmedzený počet polynómov stupňa 2. Na výber jediného z nich potrebujete tretí bod. Ilustrácia: Wikipedia

Uvažujme polynóm s prvým stupňom, Shamir's Secret Sharing Scheme. Ak chcete túto funkciu vykresliť do grafu, koľko bodov potrebujete? Vieme, že ide o lineárnu funkciu, ktorá tvorí priamku, a preto potrebuje aspoň dva body. Ďalej zvážte polynomickú funkciu s druhým stupňom, Shamir's Secret Sharing Scheme. Ide o kvadratickú funkciu, takže na vykreslenie grafu sú potrebné aspoň tri body. Čo tak polynóm s tretím stupňom? Aspoň štyri body. A tak ďalej a tak ďalej.

Naozaj skvelá vec na tejto vlastnosti je, že vzhľadom na stupeň polynomiálnej funkcie a minimálne Shamir's Secret Sharing Scheme bodov, môžeme odvodiť ďalšie body pre túto polynómovú funkciu. Tieto dodatočné body nazývame extrapolácia polynomiálna interpolácia.

Vymýšľanie tajomstva

Možno ste si už uvedomili, že práve tu vstupuje do hry Shamirova šikovná schéma. Povedzme si naše tajomstvo Shamir's Secret Sharing Scheme - je Shamir's Secret Sharing Scheme. Môžeme sa obrátiť Shamir's Secret Sharing Scheme do bodu na grafe Shamir's Secret Sharing Scheme a prísť s polynomickou funkciou so stupňom Shamir's Secret Sharing Scheme, ktorý tento bod spĺňa. Pripomeňme si to Shamir's Secret Sharing Scheme bude náš prah požadovaných fragmentov, takže ak nastavíme prah na tri fragmenty, musíme zvoliť polynomickú funkciu so stupňom dva.

Náš polynóm bude mať tvar Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme — náhodne vybrané kladné celé čísla. Práve vytvárame polynóm so stupňom Shamir's Secret Sharing Scheme, kde voľný koeficient Shamir's Secret Sharing Scheme - Toto je naše tajomstvo Shamir's Secret Sharing Schemea pre každú z nasledujúcich Shamir's Secret Sharing Scheme pojmov existuje náhodne vybraný kladný koeficient. Ak sa vrátime k pôvodnému príkladu a predpokladáme, že Shamir's Secret Sharing Scheme, potom dostaneme funkciu Shamir's Secret Sharing Scheme.

V tomto bode môžeme generovať fragmenty spojením Shamir's Secret Sharing Scheme jedinečné celé čísla v Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme (lebo je to naše tajomstvo). V tomto príklade chceme rozdeliť štyri fragmenty s prahom troch, takže náhodne generujeme body Shamir's Secret Sharing Scheme a pošlite jeden bod každej zo štyroch dôveryhodných osôb, správcov kľúča. Dávame to vedieť aj ľuďom Shamir's Secret Sharing Scheme, pretože sa to považuje za verejnú informáciu a je potrebné na obnovu Shamir's Secret Sharing Scheme.

Obnovenie tajomstva

Už sme diskutovali o koncepte polynomiálnej interpolácie a o tom, ako je základom Shamirovej prahovej schémy Shamir's Secret Sharing Scheme. Keď ktorýkoľvek traja zo štyroch správcov chcú obnoviť Shamir's Secret Sharing Scheme, potrebujú iba interpoláciu Shamir's Secret Sharing Scheme s vlastnými jedinečnými bodmi. Na tento účel si môžu určiť svoje body Shamir's Secret Sharing Scheme a vypočítajte Lagrangeov interpolačný polynóm pomocou nasledujúceho vzorca. Ak je vám programovanie jasnejšie ako matematika, potom je pi v podstate operátor for, ktorý vynásobí všetky výsledky a sigma je for, ktorý všetko zráta.

Shamir's Secret Sharing Scheme

Shamir's Secret Sharing Scheme

Na Shamir's Secret Sharing Scheme môžeme to vyriešiť takto a vrátiť našu pôvodnú polynómovú funkciu:

Shamir's Secret Sharing Scheme

Keďže to vieme Shamir's Secret Sharing Scheme, zotavenie Shamir's Secret Sharing Scheme urobené jednoducho:

Shamir's Secret Sharing Scheme

Použitie nezabezpečenej celočíselnej aritmetiky

Aj keď sme úspešne aplikovali základnú myšlienku Shamir Shamir's Secret Sharing Scheme, zostal nám problém, ktorý sme doteraz ignorovali. Naša polynomická funkcia používa nebezpečnú celočíselnú aritmetiku. Všimnite si, že za každý ďalší bod, ktorý útočník získa na grafe našej funkcie, existuje menej možností pre ďalšie body. Môžete to vidieť na vlastné oči, keď pomocou celočíselnej aritmetiky vykreslíte rastúci počet bodov pre polynomickú funkciu. To je kontraproduktívne voči nášmu stanovenému bezpečnostnému cieľu, pretože útočník by nemal vedieť absolútne nič, kým to nebude mať aspoň Shamir's Secret Sharing Scheme úlomky.

Ak chcete demonštrovať, aký slabý je celý aritmetický obvod, zvážte scenár, v ktorom útočník získal dva body Shamir's Secret Sharing Scheme a pozná verejné informácie, že Shamir's Secret Sharing Scheme. Z týchto informácií vie vydedukovať Shamir's Secret Sharing Scheme, rovné dvom a do vzorca vložte známe hodnoty Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Útočník potom môže nájsť Shamir's Secret Sharing Scheme, počítanie Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Keďže sme definovali Shamir's Secret Sharing Scheme ako náhodne vybrané kladné celé čísla existuje obmedzený počet možných Shamir's Secret Sharing Scheme. Pomocou týchto informácií môže útočník dedukovať Shamir's Secret Sharing Scheme, pretože bude stačiť čokoľvek väčšie ako 5 Shamir's Secret Sharing Scheme negatívne. Ukazuje sa, že je to pravda, pretože sme sa rozhodli Shamir's Secret Sharing Scheme

Útočník potom môže vypočítať možné hodnoty Shamir's Secret Sharing Schemenahradenie Shamir's Secret Sharing Scheme в Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

S obmedzenými možnosťami pre Shamir's Secret Sharing Scheme je jasné, aké ľahké je vybrať a skontrolovať hodnoty Shamir's Secret Sharing Scheme. Tu je len päť možností.

Riešenie problému s nebezpečnou celočíselnou aritmetikou

Na odstránenie tejto zraniteľnosti Shamir navrhuje použiť modulárnu aritmetiku, nahradiť Shamir's Secret Sharing Scheme na Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme — množina všetkých prvočísel.

Rýchlo si pripomeňme, ako funguje modulárna aritmetika. Hodiny s ručičkami sú známy pojem. Používa hodinky, tj Shamir's Secret Sharing Scheme. Len čo hodinová ručička prejde dvanástou, vráti sa k jednotke. Zaujímavou vlastnosťou tohto systému je, že jednoduchým pohľadom na hodiny nedokážeme odvodiť, koľko otáčok hodinová ručička urobila. Ak však vieme, že hodinová ručička uplynula štyrikrát 12, môžeme úplne určiť počet hodín, ktoré uplynuli pomocou jednoduchého vzorca Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme je náš deliteľ (tu Shamir's Secret Sharing Scheme), Shamir's Secret Sharing Scheme je koeficient (koľkokrát sa deliteľ dostane do pôvodného čísla bezo zvyšku, tu Shamir's Secret Sharing Scheme), a Shamir's Secret Sharing Scheme je zvyšok, ktorý zvyčajne vracia volanie operátora modulo (tu Shamir's Secret Sharing Scheme). Poznanie všetkých týchto hodnôt nám umožňuje vyriešiť rovnicu pre Shamir's Secret Sharing Scheme, ale ak nám chýba koeficient, nikdy sa nám nepodarí vrátiť pôvodnú hodnotu.

Môžeme ukázať, ako to zlepšuje bezpečnosť našej schémy, aplikovaním schémy na náš predchádzajúci príklad a použitím Shamir's Secret Sharing Scheme. Naša nová polynomická funkcia Shamir's Secret Sharing Schemea nové body Shamir's Secret Sharing Scheme. Teraz môžu správcovia kľúčov opäť použiť polynomiálnu interpoláciu na rekonštrukciu našej funkcie, len tentoraz musia operácie sčítania a násobenia sprevádzať modulo redukcia Shamir's Secret Sharing Scheme (napr Shamir's Secret Sharing Scheme).

Pomocou tohto nového príkladu predpokladajme, že útočník sa naučil dva z týchto nových bodov, Shamir's Secret Sharing Schemea verejné informácie Shamir's Secret Sharing Scheme. Tentoraz útočník na základe všetkých informácií, ktoré má, vypíše nasledujúce funkcie, kde Shamir's Secret Sharing Scheme je množina všetkých kladných celých čísel a Shamir's Secret Sharing Scheme predstavuje modulový koeficient Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Teraz náš útočník opäť našiel Shamir's Secret Sharing Scheme, výpočet Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Potom to skúsi znova Shamir's Secret Sharing Schemenahradenie Shamir's Secret Sharing Scheme в Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Tentoraz má vážny problém. Vo vzorci chýbajú hodnoty Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme. Keďže existuje nekonečné množstvo kombinácií týchto premenných, nemôže získať žiadne ďalšie informácie.

Úvahy o bezpečnosti

Shamirova schéma tajného zdieľania naznačuje bezpečnosť z pohľadu teórie informácie. To znamená, že matematika je odolná aj voči útočníkovi s neobmedzeným výpočtovým výkonom. Okruh však stále obsahuje niekoľko známych problémov.

Napríklad Shamirova schéma nevytvára úlomky, ktoré sa majú skontrolovať, to znamená, že ľudia môžu voľne prezentovať falošné fragmenty a zasahovať do získania správneho tajomstva. Nepriateľský strážca fragmentu s dostatočnými informáciami by dokonca mohol zmenou vytvoriť ďalší fragment Shamir's Secret Sharing Scheme podľa vlastného uváženia. Tento problém je vyriešený pomocou overiteľné schémy zdieľania tajomstiev, ako je Feldmanova schéma.

Ďalším problémom je, že dĺžka akéhokoľvek fragmentu sa rovná dĺžke zodpovedajúceho tajomstva, takže dĺžku tajomstva je ľahké určiť. Tento problém sa dá vyriešiť triviálne vypchávka tajný s ľubovoľnými číslami do pevnej dĺžky.

Nakoniec je dôležité poznamenať, že naše obavy o bezpečnosť môžu presahovať rámec samotného dizajnu. Pri kryptografických aplikáciách v reálnom svete často hrozia útoky na bočný kanál, pri ktorých sa útočník pokúša získať užitočné informácie z času spustenia aplikácie, ukladania do vyrovnávacej pamäte, zlyhaní atď. Ak je to problém, počas vývoja by sa malo dôkladne zvážiť používanie ochranných opatrení, ako sú funkcie a vyhľadávanie v konštantnom čase, zabránenie ukladaniu pamäte na disk a množstvo ďalších úvah, ktoré presahujú rámec tohto článku.

demonštrácie

Na na tejto stránke Je tu interaktívna ukážka Shamirovej schémy tajného zdieľania. Ukážka založená na knižnici ssss-js, ktorý je sám o sebe JavaScriptovým portom obľúbeného programu ssss. Všimnite si, že výpočet veľkých hodnôt Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme môže nejaký čas trvať.

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster