Shamirs geheime deelprogramma

Stel je een scenario voor waarin je een bankkluis moet beveiligen. Deze wordt als volledig ontoegankelijk beschouwd zonder de sleutel die je op je eerste werkdag krijgt. Je doel is om de sleutel veilig te bewaren.

Stel dat u besluit de sleutel altijd bij u te houden en toegang tot de kluis te verlenen wanneer nodig. Maar u zult al snel merken dat zo'n oplossing in de praktijk niet goed schaalbaar is, omdat uw fysieke aanwezigheid vereist is om de kluis elke keer te openen. En hoe zit het dan met de vakantie die u beloofd is? En nog angstaanjagender is de vraag: wat als u uw enige sleutel kwijtraakt?

Met het oog op uw vakantie besluit u een kopie van de sleutel te maken en deze aan een andere medewerker toe te vertrouwen. U realiseert zich echter dat ook dit niet ideaal is. Door het aantal sleutels te verdubbelen, verdubbelt u ook de kans op diefstal.

In wanhoop vernietig je de duplicaatsleutel en besluit je de originele sleutel doormidden te splitsen. Nu, zo denk je, moeten er twee betrouwbare mensen met sleutelfragmenten fysiek aanwezig zijn om de sleutel te verzamelen en de kluis te openen. Dit betekent dat een dief twee fragmenten moet stelen, wat twee keer zo moeilijk is als het stelen van één sleutel. Je beseft echter al snel dat deze aanpak niet veel beter is dan slechts één sleutel, want als iemand de helft van de sleutel verliest, kan de volledige sleutel niet worden teruggevonden.

Het probleem kan worden opgelost met een reeks extra sleutels en sloten, maar deze aanpak vereist al snel много Sleutels en sloten. U besluit dat het ideale ontwerp zou zijn om de sleutel te splitsen, zodat de beveiliging niet volledig afhankelijk is van één persoon. U concludeert ook dat er een drempelwaarde moet zijn voor het aantal fragmenten, zodat bij verlies van één fragment (of als de persoon op vakantie gaat), de hele sleutel nog steeds bruikbaar is.

Hoe je een geheim deelt

Dit type sleutelbeheerschema werd in 1979 bedacht door Adi Shamir toen hij zijn werk publiceerde "Hoe deel je een geheim"In het artikel wordt kort de zogenaamde Shamirs geheime deelprogramma een drempelschema voor het efficiënt splitsen van een geheime waarde (bijvoorbeeld een cryptografische sleutel) in Shamirs geheime deelprogramma onderdelen. Dan, wanneer en alleen wanneer ten minste Shamirs geheime deelprogramma van Shamirs geheime deelprogramma onderdelen worden verzameld, het is gemakkelijk om het geheim te herstellen Shamirs geheime deelprogramma.

Vanuit een veiligheidsperspectief is een belangrijke eigenschap van dit schema dat een aanvaller absoluut niets mag leren, tenzij hij ten minste Shamirs geheime deelprogramma onderdelen. Zelfs de aanwezigheid Shamirs geheime deelprogramma onderdelen mogen geen informatie verstrekken. We noemen dit eigenschap semantische beveiliging.

Polynomiale interpolatie

Shamir's drempelregeling Shamirs geheime deelprogramma gebouwd rond het concept polynomiale interpolatieAls je dit concept nog niet kent, is het eigenlijk vrij eenvoudig. Sterker nog, als je ooit punten in een grafiek hebt getekend en ze vervolgens met lijnen of krommen hebt verbonden, heb je het al gebruikt!

Shamirs geheime deelprogramma
Een onbeperkt aantal polynomen van graad 2 kan door twee punten worden getrokken. Om er slechts één te selecteren, is een derde punt nodig. Illustratie: Wikipedia

Laten we een polynoom van graad één beschouwen, Shamirs geheime deelprogrammaAls je deze functie in een grafiek wilt weergeven, hoeveel punten heb je dan nodig? We weten dat het een lineaire functie is die een lijn vormt, dus er zijn minstens twee punten nodig. Beschouw vervolgens een polynomiale functie van graad twee, Shamirs geheime deelprogrammaHet is een kwadratische functie, dus er zijn minstens drie punten nodig om hem te tekenen. Wat dacht je van een polynoom van graad drie? Minstens vier punten. En zo verder.

Het echt coole aan deze eigenschap is dat, gegeven de graad van de polynoomfunctie en op zijn minst Shamirs geheime deelprogramma punten, kunnen we extra punten afleiden voor deze polynoomfunctie. We noemen de extrapolatie van deze extra punten polynomiale interpolatie.

Een geheim verzinnen

Je hebt misschien al begrepen dat dit is waar Shamirs slimme plan om de hoek komt kijken. Laten we aannemen dat ons geheim Shamirs geheime deelprogramma - Is Shamirs geheime deelprogrammaWij kunnen transformeren Shamirs geheime deelprogramma naar een punt op de grafiek Shamirs geheime deelprogramma en kom met een polynoomfunctie met graad Shamirs geheime deelprogramma, wat aan dit punt voldoet. Bedenk dat Shamirs geheime deelprogramma zal onze drempelwaarde zijn voor de benodigde fragmenten. Als we de drempelwaarde dus op drie fragmenten instellen, moeten we een polynoomfunctie met graad twee kiezen.

Onze polynoom zal de vorm hebben Shamirs geheime deelprogrammaWaar Shamirs geheime deelprogramma и Shamirs geheime deelprogramma — willekeurig geselecteerde positieve gehele getallen. We construeren simpelweg een polynoom met graad Shamirs geheime deelprogramma, waar is de vrije coëfficiënt Shamirs geheime deelprogramma - dit is ons geheim Shamirs geheime deelprogramma, en elk van de volgende Shamirs geheime deelprogramma leden is een willekeurig geselecteerde positieve coëfficiënt. Als we terugkeren naar het oorspronkelijke voorbeeld en aannemen dat Shamirs geheime deelprogramma, dan krijgen we de functie Shamirs geheime deelprogramma.

In dit stadium kunnen we fragmenten genereren door ze te verbinden Shamirs geheime deelprogramma unieke gehele getallen in Shamirs geheime deelprogrammaWaar Shamirs geheime deelprogramma (want dat is ons geheim). In dit voorbeeld willen we vier fragmenten verdelen met een drempelwaarde van drie, dus we genereren willekeurig punten Shamirs geheime deelprogramma en stuur een stip naar elk van de vier vertrouwde personen die de sleutel bewaren. We vertellen mensen ook dat Shamirs geheime deelprogramma, aangezien dit als openbare informatie wordt beschouwd en noodzakelijk is voor het herstel Shamirs geheime deelprogramma.

Het geheim herstellen

We hebben het concept van polynomiale interpolatie en de manier waarop dit ten grondslag ligt aan Shamir's drempelwaardeschema al besproken. Shamirs geheime deelprogramma. Wanneer drie van de vier beheerders de schulden willen herstellen Shamirs geheime deelprogramma, ze hoeven alleen maar te interpoleren Shamirs geheime deelprogramma met hun eigen unieke punten. Om dit te doen, kunnen ze hun punten definiëren Shamirs geheime deelprogramma en bereken de Lagrange-interpolatiepolynoom met behulp van de volgende formule. Als programmeren je meer ligt dan wiskunde, is pi in wezen de operator for, die alle resultaten vermenigvuldigt, en sigma is for, wat het allemaal samenvat.

Shamirs geheime deelprogramma

Shamirs geheime deelprogramma

bij Shamirs geheime deelprogramma We kunnen dit als volgt oplossen en zo onze oorspronkelijke polynoomfunctie terugkrijgen:

Shamirs geheime deelprogramma

Omdat wij dat weten Shamirs geheime deelprogramma, herstel Shamirs geheime deelprogramma het wordt eenvoudig uitgevoerd:

Shamirs geheime deelprogramma

Het gebruik van onveilige gehele getallenrekenkunde

Hoewel we Shamir's basisidee succesvol hebben toegepast Shamirs geheime deelprogramma, blijven we zitten met een probleem dat we tot nu toe hebben genegeerd. Onze polynoomfunctie gebruikt onveilige gehele getallenrekenkunde. Bedenk dat voor elk extra punt dat een aanvaller op de grafiek van onze functie krijgt, er minder mogelijkheden zijn voor andere punten. U kunt dit zelf zien wanneer u een toenemend aantal punten voor een polynoomfunctie plot met behulp van gehele getallenrekenkunde. Dit is contraproductief voor ons gestelde beveiligingsdoel, omdat een aanvaller absoluut niets zou moeten weten totdat hij ten minste... Shamirs geheime deelprogramma fragmenten.

Om te laten zien hoe zwak het rekenschema met gehele getallen is, moet je een scenario overwegen waarin de aanvaller twee punten heeft Shamirs geheime deelprogramma en kent openbare informatie die Shamirs geheime deelprogrammaUit deze informatie kan hij afleiden Shamirs geheime deelprogramma, gelijk aan twee, en vul de bekende waarden in de formule in Shamirs geheime deelprogramma и Shamirs geheime deelprogramma.

Shamirs geheime deelprogramma

De aanvaller kan dan Shamirs geheime deelprogramma, na geteld te hebben Shamirs geheime deelprogramma:

Shamirs geheime deelprogramma

Sinds we hebben gedefinieerd Shamirs geheime deelprogramma als willekeurig geselecteerde positieve gehele getallen zijn er een beperkt aantal mogelijke Shamirs geheime deelprogrammaMet behulp van deze informatie kan een aanvaller afleiden Shamirs geheime deelprogramma, aangezien alles groter dan 5 voldoende is Shamirs geheime deelprogramma negatief. Dit blijkt waar te zijn, aangezien we hebben vastgesteld Shamirs geheime deelprogramma

De aanvaller kan vervolgens de mogelijke waarden berekenen Shamirs geheime deelprogramma, ter vervanging van Shamirs geheime deelprogramma в Shamirs geheime deelprogramma:

Shamirs geheime deelprogramma

Met een beperkt aantal opties voor Shamirs geheime deelprogramma het wordt duidelijk hoe gemakkelijk het is om waarden te selecteren en te controleren Shamirs geheime deelprogrammaEr zijn hier slechts vijf opties.

Het oplossen van het probleem met onveilige gehele getallenrekenkunde

Om deze kwetsbaarheid te elimineren, stelt Shamir voor om modulaire rekenkunde te gebruiken, ter vervanging van Shamirs geheime deelprogramma op Shamirs geheime deelprogrammaWaar Shamirs geheime deelprogramma и Shamirs geheime deelprogramma — de verzameling van alle priemgetallen.

Laten we even snel kijken hoe modulaire rekenkunde werkt. Een klok met wijzers is een bekend concept. Het maakt gebruik van een klok die Shamirs geheime deelprogrammaZodra de uurwijzer de twaalf passeert, keert hij terug naar één. Een interessante eigenschap van dit systeem is dat we niet kunnen afleiden hoeveel omwentelingen de uurwijzer heeft gemaakt door simpelweg naar de klok te kijken. Als we echter weten dat de uurwijzer vier keer de twaalf heeft gepasseerd, kunnen we het aantal verstreken uren volledig bepalen met behulp van een eenvoudige formule. Shamirs geheime deelprogrammaWaar Shamirs geheime deelprogramma - dit is onze deler (hier Shamirs geheime deelprogramma), Shamirs geheime deelprogramma — dit is de coëfficiënt (hoe vaak de deler zonder rest in het oorspronkelijke getal gaat, hier Shamirs geheime deelprogramma), en Shamirs geheime deelprogramma — dit is de rest, die gewoonlijk wordt geretourneerd door de modulo-operator aan te roepen (hier Shamirs geheime deelprogramma). Als we al deze waarden kennen, kunnen we de vergelijking voor oplossen Shamirs geheime deelprogramma, maar als we een coëfficiënt missen, kunnen we nooit de oorspronkelijke waarde herstellen.

We kunnen aantonen hoe dit de beveiliging van ons schema verbetert door het schema toe te passen op ons vorige voorbeeld en Shamirs geheime deelprogrammaOnze nieuwe polynoomfunctie Shamirs geheime deelprogramma, en nieuwe punten Shamirs geheime deelprogrammaNu kunnen de sleutelbewaarders opnieuw polynomiale interpolatie gebruiken om onze functie te reconstrueren, alleen moeten de optel- en vermenigvuldigingsbewerkingen dit keer gepaard gaan met modulaire reductie. Shamirs geheime deelprogramma (bv Shamirs geheime deelprogramma).

Stel dat de aanvaller, met behulp van dit nieuwe voorbeeld, twee van deze nieuwe punten heeft geleerd, Shamirs geheime deelprogrammaen openbare informatie Shamirs geheime deelprogrammaDeze keer leidt de aanvaller, op basis van alle informatie die hij heeft, de volgende functies af, waarbij Shamirs geheime deelprogramma — de verzameling van alle positieve gehele getallen, en Shamirs geheime deelprogramma vertegenwoordigt de coëfficiënt van de module Shamirs geheime deelprogramma.

Shamirs geheime deelprogramma

Nu vindt onze aanvaller het weer Shamirs geheime deelprogramma, na berekend te hebben Shamirs geheime deelprogramma:

Shamirs geheime deelprogramma

Dan probeert hij zich opnieuw terug te trekken Shamirs geheime deelprogramma, ter vervanging van Shamirs geheime deelprogramma в Shamirs geheime deelprogramma:

Shamirs geheime deelprogramma

Deze keer heeft hij een serieus probleem: de formule mist waarden. Shamirs geheime deelprogramma, Shamirs geheime deelprogramma и Shamirs geheime deelprogrammaOmdat er oneindig veel combinaties van deze variabelen zijn, kan hij geen aanvullende informatie verkrijgen.

Beveiligingsoverwegingen

Shamirs geheime deelplan suggereert veiligheid vanuit het oogpunt van de informatietheorieDit betekent dat de berekeningen robuust zijn, zelfs tegen een aanvaller met onbeperkte rekenkracht. De methode kent echter nog steeds verschillende bekende problemen.

Het plan van Shamir creëert bijvoorbeeld geen gecontroleerde fragmenten, dat wil zeggen dat mensen vrij zijn om valse fragmenten te presenteren en zo de ontdekking van het juiste geheim te verstoren. Een vijandige fragmentbewaarder met voldoende informatie kan zelfs een ander fragment produceren door de informatie te veranderen. Shamirs geheime deelprogramma naar eigen goeddunken. Dit probleem wordt opgelost met behulp van verifieerbare geheimendelingsschema's, zoals het Feldman-plan.

Een ander probleem is dat de lengte van elk fragment gelijk is aan de lengte van het bijbehorende geheim, waardoor de lengte van het geheim gemakkelijk te bepalen is. Dit probleem is triviaal opgelost. vulling geheim met willekeurige getallen tot een vaste lengte.

Tot slot is het belangrijk om te weten dat onze beveiligingszorgen verder kunnen reiken dan het ontwerp zelf. Bij echte cryptografische toepassingen bestaat vaak de dreiging van side-channel-aanvallen, waarbij een aanvaller probeert nuttige informatie te extraheren uit de runtime van de applicatie, caching, crashes, enz. Als dit een probleem is, moet tijdens het ontwerp zorgvuldig worden nagedacht over het gebruik van beschermende maatregelen zoals constant-time functies en opzoekacties, het voorkomen dat geheugen op schijf wordt opgeslagen, en een aantal andere zaken die buiten het bestek van dit artikel vallen.

Демо

Op deze pagina Er is een interactieve demonstratie van het Shamir-geheimenuitwisselingsprogramma. De demonstratie is gebaseerd op de bibliotheek. ssss-js, dat zelf een JavaScript-poort is van een populair programma ssssHoud er rekening mee dat de berekening van grote waarden Shamirs geheime deelprogramma, Shamirs geheime deelprogramma и Shamirs geheime deelprogramma Het kan even duren.

Bron: www.habr.com

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster