Shamir's Secret Sharing Scheme

Lad os overveje et scenarie, hvor det er nødvendigt at sikre et bankskabet. Det betragtes som fuldstændig utilgængeligt uden nøglen, som du får udleveret den første arbejdsdag. Dit mål er at opbevare nøglen sikkert.

Antag, at du beslutter at opbevare nøglen hos dig selv hele tiden og kun give adgang til skabet efter behov. Men du vil hurtigt indse, at en sådan løsning ikke skalerer godt i praksis, fordi dit fysiske nærvær altid er nødvendigt for at åbne skabet. Hvad med den ferie, de lovede dig? Desuden er der et endnu mere skræmmende spørgsmål: hvad nu hvis du mister den eneste nøgle?

Med tanken om ferien besluttede du at lave en kopi af nøglen og betro den til en anden medarbejder. Men du forstår, at det heller ikke er ideelt. Ved at fordoble antallet af nøgler har du også fordoblet mulighederne for, at nøglen kan blive stjålet.

Fortvivlet ødelægger du kopien og beslutter at dele den originale nøgle i to. Nu tænker du, at to betroede personer med fragmenter af nøglen skal være til stede fysisk for at samle nøglen og åbne skabet. Det betyder, at tyven skal stjæle to fragmenter, hvilket gør det sværere end at stjæle en enkelt nøgle. Men snart indser du, at denne ordning ikke er meget bedre end blot én nøgle, fordi hvis nogen mister halvdelen af nøglen, kan den fulde nøgle ikke genoprettes.

Problemet kan løses med en række ekstra nøgler og låse, men med denne tilgang vil der hurtigt være brug for mange nøgler og låse. Du beslutter, at i en ideel ordning skal nøglen deles, så sikkerheden ikke helt afhænger af én person. Du konkluderer også, at der skal være en tærskel for antallet af fragmenter, så ved tab af et fragment (eller hvis en person tager på ferie), forbliver den samlede nøgle funktionel.

Hvordan man deler et hemmelighed

Om denne type nøglehåndteringsordning tænkte Adi Shamir i 1979, da han publicerede sit arbejde »Hvordan man deler et hemmelighed«. Artiklen forklarer kort den såkaldte Shamir's Secret Sharing Scheme tærskelsordning for effektivt at dele en hemmelig værdi (f.eks. en kryptografisk nøgle) op i Shamir's Secret Sharing Scheme dele. Derefter, når og kun når mindst Shamir's Secret Sharing Scheme af Shamir's Secret Sharing Scheme dele er samlet, kan hemmeligheden let genoprettes. Shamir's Secret Sharing Scheme.

Set fra et sikkerhedsmæssigt synspunkt er en vigtig egenskab ved denne skema, at en angriber ikke skal vide noget som helst, hvis han ikke har mindst Shamir's Secret Sharing Scheme dele. Selv tilstedeværelsen af Shamir's Secret Sharing Scheme dele må ikke give nogen information. Vi kalder denne egenskab semantisk sikkerhed.

Polynomiel interpolation

Shamir's tærskelskema Shamir's Secret Sharing Scheme er bygget op omkring begrebet polynomiel interpolation. Hvis du ikke er bekendt med dette begreb, er det faktisk ret enkelt. Generelt, hvis du nogensinde har tegnet punkter på en graf og derefter forbundet dem med linjer eller kurver, så har du allerede brugt det!

Shamir's Secret Sharing Scheme
Gennem to punkter kan der trækkes et ubegribelig antal polynomer af grad 2. For at vælge et unikt polynom kræves et tredje punkt. Illustration: Wikipedia

Lad os overveje et polynom af grad én, Shamir's Secret Sharing Scheme. Hvis du vil opbygge denne funktion på grafen, hvor mange punkter har du brug for? Nå, vi ved, at det er en lineær funktion, der danner en linje, og derfor kræver det mindst to punkter. Lad os dernæst overveje en polynomiel funktion af grad to, Shamir's Secret Sharing Scheme. Dette er en kvadratisk funktion, så til opbygning af grafen kræves mindst tre punkter. Hvad med et polynom af grad tre? Mindst fire punkter. Og så videre og så videre.

Det virkelig fede ved denne egenskab er, at givet graden af den polynomielle funktion og mindst Shamir's Secret Sharing Scheme punkter, kan vi udlede yderligere punkter for denne polynomielle funktion. Ekstrapoleringen af disse yderligere punkter kalder vi polynomiel interpolation.

Sammensætning af hemmeligheden

Måske har du allerede indset, at den smarte Shamir's skema træder i kraft her. Lad os antage, at vores hemmelighed Shamir's Secret Sharing Scheme — det er Shamir's Secret Sharing Scheme. Vi kan omdanne Shamir's Secret Sharing Scheme til et punkt på grafen Shamir's Secret Sharing Scheme og finde på en polynomiel funktion af grad Shamir's Secret Sharing Scheme, som opfylder dette punkt. Lad os huske, at Shamir's Secret Sharing Scheme vil være vores tærskel for de nødvendige fragmenter, så hvis vi sætter tærsklen til tre fragmenter, skal vi vælge en polynomiel funktion af grad to.

Vores polynom vil have formen Shamir's Secret Sharing Scheme, hvor Shamir's Secret Sharing Scheme og Shamir's Secret Sharing Scheme — tilfældigt valgte positive heltal. Vi bygger kun et polynom af grad Shamir's Secret Sharing Scheme, hvor konstantleddet Shamir's Secret Sharing Scheme er vores hemmelighed Shamir's Secret Sharing Scheme, og hver af de efterfølgende Shamir's Secret Sharing Scheme medlemmer er tilfældigt valgt med en positiv koefficient. Hvis vi vender tilbage til det oprindelige eksempel og antager, at Shamir's Secret Sharing Scheme, så vil vi få en funktion Shamir's Secret Sharing Scheme.

På dette stadium kan vi generere fragmenter ved at tilslutte Shamir's Secret Sharing Scheme unikke hele tal i Shamir's Secret Sharing Scheme, hvor Shamir's Secret Sharing Scheme (for det er vores hemmelighed). I dette eksempel ønsker vi at tildele fire fragmenter med en tærskel på tre, så vi genererer tilfældigt punkter Shamir's Secret Sharing Scheme og sender et punkt til hver af de fire betroede personer, nøglebevarerne. Vi informerer også folk om, at Shamir's Secret Sharing Scheme, da dette betragtes som offentlig information og er nødvendigt for gendannelse Shamir's Secret Sharing Scheme.

Gendannelse af hemmeligheden

Vi har allerede diskuteret konceptet om polynomiel interpolation og at det ligger til grund for Shamirs tærskelschema Shamir's Secret Sharing Scheme. Når som helst tre af de fire betroede personer ønsker at gendanne Shamir's Secret Sharing Scheme, skal de blot interpolere Shamir's Secret Sharing Scheme med deres unikke punkter. For dette kan de definere deres punkter Shamir's Secret Sharing Scheme og beregne Lagranges interpolationspolynomium ved at bruge følgende formel. Hvis programmering er mere forståeligt for dig end matematik, så er pi i bund og grund en operator til, der multiplicerer alle resultaterne, mens sigma er til, der lægger alt sammen.

Shamir's Secret Sharing Scheme

Shamir's Secret Sharing Scheme

Ved Shamir's Secret Sharing Scheme kan vi løse dette som følger og returnere vores oprindelige polynomiefunktion:

Shamir's Secret Sharing Scheme

Da vi ved, at Shamir's Secret Sharing Scheme, gendannelsen Shamir's Secret Sharing Scheme udføres ganske enkelt:

Shamir's Secret Sharing Scheme

Brug af usikker heltalsarithmetic

Selvom vi har anvendt den grundlæggende idé fra Shamir med succes Shamir's Secret Sharing Scheme, står vi over for et problem, som vi har ignoreret indtil nu. Vores polynomielle funktion bruger usikker heltalsarithmetic. Husk, at for hver ekstra punkt, en angriber får på grafen af vores funktion, er der færre muligheder for andre punkter tilbage. Du kan se det med egne øjne, når du bygger grafen med et stigende antal punkter for en polynomiel funktion ved brug af heltalsarithmetic. Dette er kontraproduktivt for vores erklærede sikkerhedsmål, fordi en angriber ikke bør lære noget som helst, før de har mindst Shamir's Secret Sharing Scheme fragmenter.

For at demonstrere, hvor svagt skemaet med heltalsarithmetic er, lad os overveje et scenarie, hvor angriberen har fået to punkter Shamir's Secret Sharing Scheme og kender den offentlige information, at Shamir's Secret Sharing Scheme. Fra disse oplysninger kan han udlede Shamir's Secret Sharing Scheme, der svarer til to, og indsætte de kendte værdier i formlen Shamir's Secret Sharing Scheme og Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Derefter kan angriberen finde Shamir's Secret Sharing Scheme, ved at beregne Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Da vi har defineret Shamir's Secret Sharing Scheme som tilfældigt valgte hele positive tal, er der et begrænset antal mulige Shamir's Secret Sharing Scheme. Ved hjælp af disse oplysninger kan angriberen udlede Shamir's Secret Sharing Scheme, da alt over 5 vil gøre Shamir's Secret Sharing Scheme negativt. Dette viser sig at være sandt, da vi har defineret Shamir's Secret Sharing Scheme

Derefter kan angriberen beregne mulige værdier Shamir's Secret Sharing Scheme, ved at erstatte Shamir's Secret Sharing Scheme i Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Med et begrænset sæt muligheder for Shamir's Secret Sharing Scheme bliver det klart, hvor let det er at gætte og verificere værdierne Shamir's Secret Sharing Scheme. Her er der kun fem muligheder.

Løsningen på problemet med usikker heltalsaritmetik

For at afhjælpe denne sårbarhed foreslår Shamir at anvende modulær aritmetik og erstatte Shamir's Secret Sharing Scheme og få en fungerende kommando. Shamir's Secret Sharing Scheme, hvor Shamir's Secret Sharing Scheme og Shamir's Secret Sharing Scheme — mængden af alle primtal.

Lad os hurtigt mindes om, hvordan modulær aritmetik fungerer. Vækkere med visere er et velkendt koncept. Det bruger ur, som er Shamir's Secret Sharing Scheme. Så snart timeviseren går forbi tolv, vender den tilbage til én. En interessant egenskab ved dette system er, at bare ved at se på klokken kan vi ikke udlede, hvor mange omdrejninger timeviseren har gjort. Men hvis vi ved, at timeviseren har passeret 12 fire gange, kan vi fuldstændig bestemme antallet af forløbne timer ved hjælp af en simpel formel Shamir's Secret Sharing Scheme, hvor Shamir's Secret Sharing Scheme — det er vores divisor (her Shamir's Secret Sharing Scheme), Shamir's Secret Sharing Scheme — er kvotienten (hvor mange gange divisoren uden rest går ind i det oprindelige tal, her Shamir's Secret Sharing Scheme), mens Shamir's Secret Sharing Scheme — er resten, som normalt returneres af modulus operatoren (her Shamir's Secret Sharing Scheme). At kende alle disse værdier gør det muligt for os at løse ligningen for Shamir's Secret Sharing Scheme, men hvis vi springer kvotienten over, vil vi aldrig kunne genskabe den oprindelige værdi.

Vi kan demonstrere, hvordan dette forbedrer sikkerheden i vores skema ved at anvende skemaet til vores tidligere eksempel og bruge Shamir's Secret Sharing Scheme. Vores nye polynomiske funktion Shamir's Secret Sharing Scheme, og de nye punkter Shamir's Secret Sharing Scheme. Nu kan nøglebevarerne igen bruge polynomiel interpolation til at genskabe vores funktion, men denne gang skal operationerne addition og multiplikation ledsages af reduktion modulo Shamir's Secret Sharing Scheme (f.eks. Shamir's Secret Sharing Scheme).

Ved hjælp af dette nye eksempel, antag at angriberen kender to af disse nye punkter, Shamir's Secret Sharing Scheme, og de offentlige oplysninger Shamir's Secret Sharing Scheme. Denne gang udleder angriberen baseret på al den information, han har, følgende funktioner, hvor Shamir's Secret Sharing Scheme — mængden af alle positive hele tal, og Shamir's Secret Sharing Scheme repræsenterer modulkoefficienten. Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Nu finder vores angriber igen Shamir's Secret Sharing Scheme, ved at beregne Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Derefter prøver han igen at udlede Shamir's Secret Sharing Scheme, ved at erstatte Shamir's Secret Sharing Scheme i Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Denne gang har han et alvorligt problem. Værdier mangler i formlen Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme og Shamir's Secret Sharing Scheme. Da der er et uendeligt antal kombinationer af disse variabler, kan han ikke få nogen yderligere information.

Sikkerhedsovervejelser

Shamir's hemmelighedsdeleskema tilbyder sikkerhed set fra informationsteoriens synspunkt.. Det betyder, at matematikken er robust selv mod en angriber med ubegrænsede beregningsressourcer. Dog indeholder skemaet stadig flere kendte problemer.

For eksempel skaber Shamir's skema ikke verificerbare fragmenter,det vil sige, at folk frit kan præsentere falske fragmenter og hindre genoprettelsen af den korrekte hemmelighed. En fjendtlig fragmentopbevarer med tilstrækkelig information kan endda producere et andet fragment ved at ændre Shamir's Secret Sharing Scheme som han ønsker. Dette problem løses ved hjælp af verificerbare hemmelighedsdeleskemaer,såsom Feldman's skema.

Et andet problem er, at længden af ethvert fragment er lig med længden af den tilsvarende hemmelighed, så længden af hemmeligheden kan nemt bestemmes. Dette problem løses ved triviel fyldning af hemmeligheden med tilfældige tal op til en fast længde.

Endelig er det vigtigt at bemærke, at vores bekymringer om sikkerhed kan gå ud over selve skemaet. For rigtig kryptografiske applikationer er der ofte trusler fra sidekanaler, hvor angriberen forsøger at udtrække nyttig information fra applikationens kørselstid, cache, nedbrud osv. Hvis dette vækker bekymring, bør der i udviklingsfasen tages nøje overvejelser om brugen af beskyttelsesforanstaltninger som funktioner og søgning med konstant kørselstid for at forhindre skrivning af hukommelse til disk og overveje en række andre ting, der går ud over denne artikel.

Demo

På denne side har en interaktiv demonstration af Shamir's hemmelighedsdeleskema. Demonstrationen er bygget på biblioteket ssss-js, som i sig selv er en JavaScript-port af det populære program ssss. Bemærk, at beregningen af store værdier Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme og Shamir's Secret Sharing Scheme kan tage noget tid.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster