Shamir's Secret Sharing Scheme

Zvažte scénář, kdy potřebujete zajistit bankovní trezor. Je považován za absolutně nedobytný bez klíče, který dostanete první den v práci. Vaším cílem je bezpečně uložit klíč.

Předpokládejme, že se rozhodnete mít klíč neustále u sebe a poskytnout tak přístup do trezoru podle potřeby. Rychle si ale uvědomíte, že takové řešení není v praxi dobře škálovatelné, protože pokaždé, když je potřeba být fyzicky přítomen k otevření trezoru. A co dovolená, kterou jste slíbili? Navíc je otázka ještě děsivější: co kdybyste ztratili jediný klíč?

S nápadem na dovolenou se rozhodnete vytvořit kopii klíče a svěřit ji jinému zaměstnanci. Chápete však, že to také není ideální. Zdvojnásobením počtu klíčů jste také zdvojnásobili šance na krádež klíčů.

Zoufalí zničíte duplikát a rozhodnete se rozdělit původní klíč na polovinu. Nyní si myslíte, že k vyzvednutí klíče a otevření trezoru musí být fyzicky přítomni dva důvěryhodní lidé s fragmenty klíče. To znamená, že zloděj potřebuje ukrást dva úlomky, což je dvakrát tak obtížné než ukrást jeden klíč. Brzy si však uvědomíte, že toto schéma není o moc lepší než jen jeden klíč, protože pokud někdo ztratí polovinu klíče, celý klíč nelze obnovit.

Problém lze vyřešit řadou dalších klíčů a zámků, ale tento přístup bude rychle vyžadovat много klíče a zámky. Rozhodnete se, že ideální schéma je sdílet klíč, aby bezpečnost nezávisela výhradně na jedné osobě. Dojdete také k závěru, že musí existovat určitá hranice pro počet fragmentů, aby v případě ztráty jednoho fragmentu (nebo pokud osoba odjela na dovolenou) zůstal celý klíč funkční.

Jak sdílet tajemství

Tento typ schématu správy klíčů napadl Adi Shamir v roce 1979, když publikoval svou práci „Jak sdílet tajemství“. Článek stručně vysvětluje tzv Shamir's Secret Sharing Scheme prahové schéma pro efektivní rozdělení tajné hodnoty (například kryptografického klíče). Shamir's Secret Sharing Scheme díly. Pak, kdy a jen kdy alespoň Shamir's Secret Sharing Scheme z Shamir's Secret Sharing Scheme díly jsou sestaveny, můžete snadno obnovit tajemství Shamir's Secret Sharing Scheme.

Z bezpečnostního hlediska je důležitou vlastností tohoto schématu to, že útočník by se neměl naučit absolutně nic, pokud nemá alespoň Shamir's Secret Sharing Scheme díly. Dokonce i přítomnost Shamir's Secret Sharing Scheme části by neměly poskytovat žádné informace. Tuto vlastnost nazýváme sémantické zabezpečení.

Polynomiální interpolace

Schéma Threshold Shamir Shamir's Secret Sharing Scheme postavený kolem konceptu polynomiální interpolace. Pokud tento koncept neznáte, je to vlastně docela jednoduché. Obecně platí, že pokud jste někdy nakreslili body na grafu a poté je spojili čarami nebo křivkami, již jste to použili!

Shamir's Secret Sharing Scheme
Prostřednictvím dvou bodů můžete nakreslit neomezený počet polynomů stupně 2. K výběru jediného z nich potřebujete třetí bod. Ilustrace: Wikipedia

Uvažujme polynom s prvním stupněm, Shamir's Secret Sharing Scheme. Pokud chcete tuto funkci vykreslit do grafu, kolik bodů potřebujete? Víme, že se jedná o lineární funkci, která tvoří přímku, a proto potřebujeme alespoň dva body. Dále uvažujme polynomiální funkci se stupněm dva, Shamir's Secret Sharing Scheme. Jedná se o kvadratickou funkci, takže k vykreslení grafu jsou potřeba alespoň tři body. Co třeba polynom se stupněm tři? Alespoň čtyři tečky. A tak dále a tak dále.

Opravdu skvělé na této vlastnosti je to, že vzhledem ke stupni polynomiální funkce a minimálně Shamir's Secret Sharing Scheme body, můžeme pro tuto polynomickou funkci odvodit další body. Tyto dodatečné body nazýváme extrapolací polynomiální interpolace.

Dělat tajemství

Možná jste již přišli na to, že právě zde vstupuje do hry Shamirovo chytré schéma. Předpokládejme naše tajemství Shamir's Secret Sharing Scheme - Je Shamir's Secret Sharing Scheme. Můžeme se otočit Shamir's Secret Sharing Scheme k bodu na grafu Shamir's Secret Sharing Scheme a přijít s polynomiální funkcí se stupněm Shamir's Secret Sharing Scheme, který tento bod splňuje. Odvolej to Shamir's Secret Sharing Scheme bude náš práh požadovaných fragmentů, takže pokud nastavíme práh na tři fragmenty, musíme zvolit polynomickou funkci se stupněm dva.

Náš polynom bude mít tvar Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme jsou náhodně vybraná kladná celá čísla. Prostě sestavíme polynom se stupněm Shamir's Secret Sharing Scheme, kde volný koeficient Shamir's Secret Sharing Scheme - To je naše tajemství Shamir's Secret Sharing Schemea každý z následujících Shamir's Secret Sharing Scheme členy je náhodně vybraný kladný koeficient. Pokud se vrátíme k původnímu příkladu a předpokládáme, že Shamir's Secret Sharing Scheme, pak dostaneme funkci Shamir's Secret Sharing Scheme.

V tomto okamžiku můžeme generovat fragmenty připojením Shamir's Secret Sharing Scheme jedinečná celá čísla v Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme (protože je to naše tajemství). V tomto příkladu chceme rozmístit čtyři fragmenty s prahem tří, takže náhodně generujeme body Shamir's Secret Sharing Scheme a poslat jeden bod každému ze čtyř důvěryhodných lidí, držitelů klíče. I to říkáme lidem Shamir's Secret Sharing Scheme, protože se považuje za veřejnou informaci a je nezbytná pro obnovu Shamir's Secret Sharing Scheme.

Tajné zotavení

Již jsme diskutovali o konceptu polynomiální interpolace a o tom, jak je základem Shamirova prahovacího schématu. Shamir's Secret Sharing Scheme. Když tři ze čtyř správců chtějí obnovit Shamir's Secret Sharing Scheme, potřebují pouze interpolovat Shamir's Secret Sharing Scheme se svými jedinečnými body. K tomu mohou definovat své body Shamir's Secret Sharing Scheme a vypočítat Lagrangeův interpolační polynom pomocí následujícího vzorce. Pokud je vám programování jasnější než matematika, pak je pí v podstatě operátor for, který násobí všechny výsledky, a sigma je forto všechno sčítá.

Shamir's Secret Sharing Scheme

Shamir's Secret Sharing Scheme

na Shamir's Secret Sharing Scheme můžeme to vyřešit takto a vrátit naši původní polynomiální funkci:

Shamir's Secret Sharing Scheme

Protože to víme Shamir's Secret Sharing Scheme, zotavení Shamir's Secret Sharing Scheme se dělá jednoduše:

Shamir's Secret Sharing Scheme

Použití nebezpečné celočíselné aritmetiky

Přestože jsme úspěšně použili základní myšlenku Shamira Shamir's Secret Sharing Scheme, zůstal nám problém, který jsme doposud ignorovali. Naše polynomiální funkce používá nebezpečnou celočíselnou aritmetiku. Všimněte si, že s každým dalším bodem, který útočník dostane na náš funkční graf, existuje méně možností pro další body. Můžete to vidět na vlastní oči, když vynesete rostoucí počet bodů pro polynomiální funkci pomocí celočíselné aritmetiky. To je kontraproduktivní vůči našemu uvedenému bezpečnostnímu cíli, protože útočník by neměl vědět absolutně nic, dokud to nebude mít alespoň Shamir's Secret Sharing Scheme fragmenty.

Chcete-li demonstrovat, jak slabé je celočíselné aritmetické schéma, zvažte scénář, ve kterém útočník získal dva body Shamir's Secret Sharing Scheme a zná veřejné informace, že Shamir's Secret Sharing Scheme. Z těchto informací může usuzovat Shamir's Secret Sharing Scheme, rovnající se dvěma a připojte známé hodnoty ke vzorci Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Útočník pak může najít Shamir's Secret Sharing Scheme, počítání Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Protože jsme definovali Shamir's Secret Sharing Scheme jako náhodně vybraná kladná celá čísla existuje omezený počet možných Shamir's Secret Sharing Scheme. Z těchto informací může útočník dedukovat Shamir's Secret Sharing Scheme, protože cokoliv většího než 5 udělá Shamir's Secret Sharing Scheme negativní. To se ukazuje jako pravda, protože jsme se rozhodli Shamir's Secret Sharing Scheme

Útočník pak může vypočítat možné hodnoty Shamir's Secret Sharing Schemenahrazovat Shamir's Secret Sharing Scheme в Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

S omezenými možnostmi pro Shamir's Secret Sharing Scheme je jasné, jak snadné je získat a zkontrolovat hodnoty Shamir's Secret Sharing Scheme. Zde je pouze pět možností.

Řešení problému s nebezpečnou celočíselnou aritmetikou

Chcete-li tuto zranitelnost opravit, Shamir navrhuje použít modulární aritmetiku nahrazením Shamir's Secret Sharing Scheme na Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme je množina všech prvočísel.

Rychle si připomeňme, jak funguje modulární aritmetika. Ruční hodiny jsou známý pojem. Používá hodinky Shamir's Secret Sharing Scheme. Jakmile hodinová ručička přejde dvanáctou, vrátí se na jedničku. Zajímavou vlastností tohoto systému je, že pouhým pohledem na hodiny nedokážeme odvodit, kolik otáček hodinová ručička udělala. Pokud však víme, že hodinová ručička uplynula čtyřikrát 12, můžeme plně určit počet hodin, které uplynuly, pomocí jednoduchého vzorce Shamir's Secret Sharing SchemeKde Shamir's Secret Sharing Scheme je náš dělitel (zde Shamir's Secret Sharing Scheme), Shamir's Secret Sharing Scheme - toto je koeficient (kolikkrát se dělitel beze zbytku dostane do původního čísla, zde Shamir's Secret Sharing Scheme) a Shamir's Secret Sharing Scheme je zbytek, který obvykle vrací volání operátorovi modulo (zde Shamir's Secret Sharing Scheme). Znalost všech těchto hodnot nám umožňuje vyřešit rovnici pro Shamir's Secret Sharing Scheme, ale pokud koeficient přeskočíme, nikdy se nám nepodaří obnovit původní hodnotu.

Můžeme demonstrovat, jak to zlepšuje bezpečnost našeho obvodu, použitím obvodu na náš předchozí příklad a pomocí Shamir's Secret Sharing Scheme. Naše nová polynomiální funkce Shamir's Secret Sharing Schemea nové body Shamir's Secret Sharing Scheme. Nyní mohou klíčoví správci opět použít polynomiální interpolaci k rekonstrukci naší funkce, ale tentokrát po operacích sčítání a násobení musí následovat modulo redukce. Shamir's Secret Sharing Scheme (např Shamir's Secret Sharing Scheme).

S použitím tohoto nového příkladu předpokládejme, že se útočník naučil dva z těchto nových bodů, Shamir's Secret Sharing Schemea veřejné informace Shamir's Secret Sharing Scheme. Tentokrát útočník na základě všech informací, které má, zobrazí následující funkce, kde Shamir's Secret Sharing Scheme je množina všech kladných celých čísel a Shamir's Secret Sharing Scheme představuje modulový koeficient Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Nyní náš vetřelec najde znovu Shamir's Secret Sharing Scheme, počítání Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Pak se znovu pokusí stáhnout Shamir's Secret Sharing Schemenahrazovat Shamir's Secret Sharing Scheme в Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Tentokrát má vážný problém. Ve vzorci chybí hodnoty Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme. Protože existuje nekonečné množství kombinací těchto proměnných, nemůže získat žádné další informace.

Bezpečnostní aspekty

Shamirovo schéma tajného sdílení naznačuje informační bezpečnost. To znamená, že matematika je silná i proti útočníkovi s neomezeným výpočetním výkonem. Schéma však stále obsahuje několik známých problémů.

Například schéma Shamir nevytváří fragmenty ke kontrole, to znamená, že lidé mohou volně předkládat falešné fragmenty a zasahovat do získávání správného tajemství. Nepřátelský strážce fragmentu s dostatkem informací může dokonce vytvořit další fragment změnou Shamir's Secret Sharing Scheme dle vašeho uvážení. Tento problém je vyřešen pomocí ověřitelná tajná schémata sdílení, jako je Feldmanovo schéma.

Dalším problémem je, že délka libovolného fragmentu se rovná délce odpovídajícího tajenky, takže délku tajenky lze snadno určit. Tento problém je řešen triviálně vycpávka tajné libovolnými čísly až do pevné délky.

Nakonec je důležité poznamenat, že naše obavy o bezpečnost mohou přesahovat samotné schéma. U skutečných kryptografických aplikací často hrozí útoky postranním kanálem, kdy se útočník snaží získat užitečné informace z doby provádění aplikace, ukládání do mezipaměti, pády atd. Pokud vás to znepokojuje, měli byste pečlivě zvážit použití ochranných opatření během vývoje, jako jsou funkce a vyhledávání v konstantním čase, zabránit ukládání paměti na disk a zvážit řadu dalších věcí, které jsou nad rámec tohoto článku.

Demonstrace

Na na této stránce je zde interaktivní ukázka Shamirova tajného schématu sdílení. Ukázka byla provedena na základě knihovny ssss-js, který je sám o sobě JavaScriptovým portem oblíbeného programu ssss. Všimněte si, že počítání velkých hodnot Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme může chvíli trvat.

Zdroj: www.habr.com

Přidat komentář