Shamirs hemmelige delingsordning

Vurder et scenario der du må sikre et bankhvelv. Det anses som absolutt uinntakelig uten nøkkel, som du får utlevert allerede første arbeidsdag. Målet ditt er å oppbevare nøkkelen på en sikker måte.

La oss si at du bestemmer deg for å ha nøkkelen med deg til enhver tid, og gir tilgang til lagringen etter behov. Men du vil raskt innse at en slik løsning ikke skalerer godt i praksis, fordi din fysiske tilstedeværelse kreves hver gang du åpner lageret. Hva med ferien du ble lovet? I tillegg er spørsmålet enda mer skremmende: hva om du mistet din eneste nøkkel?

Med ferien i tankene bestemmer du deg for å lage en kopi av nøkkelen og overlate den til en annen ansatt. Du forstår imidlertid at dette heller ikke er ideelt. Ved å doble antall nøkler dobler du også sjansene for nøkkeltyveri.

I desperasjon ødelegger du duplikatet og bestemmer deg for å dele den originale nøkkelen i to. Nå skulle du tro at to pålitelige personer med nøkkelfragmenter måtte være fysisk til stede for å hente nøkkelen og åpne hvelvet. Dette betyr at en tyv må stjele to stykker, noe som er dobbelt så vanskelig som å stjele en nøkkel. Imidlertid innser du snart at denne ordningen ikke er mye bedre enn bare én nøkkel, for hvis noen mister en halv nøkkel, kan ikke hele nøkkelen gjenopprettes.

Problemet kan løses med en rekke ekstra nøkler og låser, men denne tilnærmingen vil raskt kreve много nøkler og låser. Du bestemmer deg for at det ideelle designet vil være å dele nøkkelen slik at sikkerheten ikke er helt avhengig av én person. Du konkluderer også med at det må være en terskel for antall fragmenter, slik at hvis ett fragment går tapt (eller hvis en person drar på ferie), forblir hele nøkkelen funksjonell.

Hvordan dele en hemmelighet

Denne typen nøkkelstyringsordning ble tenkt på av Adi Shamir i 1979 da han publiserte arbeidet sitt "Hvordan dele en hemmelighet". Artikkelen forklarer kort den såkalte Shamirs hemmelige delingsordning terskelskjema for effektivt å dele en hemmelig verdi (som en kryptografisk nøkkel) inn i Shamirs hemmelige delingsordning deler. Da, når og bare når i det minste Shamirs hemmelige delingsordning av Shamirs hemmelige delingsordning deler er satt sammen, kan du enkelt gjenopprette hemmeligheten Shamirs hemmelige delingsordning.

Fra et sikkerhetssynspunkt er en viktig egenskap ved denne ordningen at angriperen ikke skal vite absolutt noe med mindre han har minst Shamirs hemmelige delingsordning deler. Til og med tilstedeværelsen Shamirs hemmelige delingsordning deler skal ikke gi noen informasjon. Vi kaller denne eiendommen semantisk sikkerhet.

Polynominterpolasjon

Shamir terskelordning Shamirs hemmelige delingsordning bygget rundt konseptet polynom interpolasjon. Hvis du ikke er kjent med dette konseptet, er det faktisk ganske enkelt. Faktisk, hvis du noen gang har tegnet punkter på en graf og deretter koblet dem sammen med linjer eller kurver, har du allerede brukt det!

Shamirs hemmelige delingsordning
Gjennom to punkter kan du tegne et ubegrenset antall polynomer av grad 2. For å velge det eneste fra dem, trenger du et tredje poeng. Illustrasjon: Wikipedia

Tenk på et polynom med grad én, Shamirs hemmelige delingsordning. Hvis du vil plotte denne funksjonen på en graf, hvor mange punkter trenger du? Vel, vi vet at dette er en lineær funksjon som danner en linje, og derfor trenger den minst to punkter. Tenk deretter på en polynomfunksjon med grad to, Shamirs hemmelige delingsordning. Dette er en kvadratisk funksjon, så det kreves minst tre punkter for å plotte grafen. Hva med et polynom med grad tre? Minst fire poeng. Og så videre.

Det virkelig kule med denne egenskapen er at, gitt graden av polynomfunksjonen og minst Shamirs hemmelige delingsordning poeng, kan vi utlede tilleggspoeng for denne polynomfunksjonen. Vi kaller ekstrapolering av disse tilleggspunktene polynom interpolasjon.

Å finne på en hemmelighet

Du har kanskje allerede innsett at det er her Shamirs smarte opplegg kommer inn i bildet. La oss si vår hemmelighet Shamirs hemmelige delingsordning - Er Shamirs hemmelige delingsordning. Vi kan snu Shamirs hemmelige delingsordning til et punkt på grafen Shamirs hemmelige delingsordning og kom opp med en polynomfunksjon med grad Shamirs hemmelige delingsordning, som tilfredsstiller dette punktet. La oss huske det Shamirs hemmelige delingsordning vil være vår terskel for nødvendige fragmenter, så hvis vi setter terskelen til tre fragmenter, må vi velge en polynomfunksjon med grad to.

Polynomet vårt vil ha formen Shamirs hemmelige delingsordningDer Shamirs hemmelige delingsordning и Shamirs hemmelige delingsordning — tilfeldig valgte positive heltall. Vi konstruerer bare et polynom med grad Shamirs hemmelige delingsordning, hvor den frie koeffisienten Shamirs hemmelige delingsordning – Dette er vår hemmelighet Shamirs hemmelige delingsordning, og for hver av de påfølgende Shamirs hemmelige delingsordning termer er det en tilfeldig valgt positiv koeffisient. Hvis vi går tilbake til det opprinnelige eksemplet og antar det Shamirs hemmelige delingsordning, så får vi funksjonen Shamirs hemmelige delingsordning.

På dette tidspunktet kan vi generere fragmenter ved å koble til Shamirs hemmelige delingsordning unike heltall i Shamirs hemmelige delingsordningDer Shamirs hemmelige delingsordning (fordi det er vår hemmelighet). I dette eksemplet ønsker vi å fordele fire fragmenter med en terskel på tre, så vi genererer poeng tilfeldig Shamirs hemmelige delingsordning og send ett poeng til hver av de fire betrodde personene, nøkkelvokterne. Det lar vi også folk få vite Shamirs hemmelige delingsordning, siden dette regnes som offentlig informasjon og er nødvendig for gjenoppretting Shamirs hemmelige delingsordning.

Å gjenopprette hemmeligheten

Vi har allerede diskutert begrepet polynomisk interpolasjon og hvordan det ligger til grunn for Shamirs terskelskjema Shamirs hemmelige delingsordning. Når tre av de fire tillitsmennene ønsker å gjenopprette Shamirs hemmelige delingsordning, de trenger bare å interpolere Shamirs hemmelige delingsordning med sine egne unike poeng. For å gjøre dette kan de bestemme poengene sine Shamirs hemmelige delingsordning og beregne Lagrange-interpolasjonspolynomet ved å bruke følgende formel. Hvis programmering er klarere for deg enn matematikk, så er pi egentlig en operatør for, som multipliserer alle resultater, og sigma er for, som legger alt sammen.

Shamirs hemmelige delingsordning

Shamirs hemmelige delingsordning

ved Shamirs hemmelige delingsordning vi kan løse det slik og returnere vår opprinnelige polynomfunksjon:

Shamirs hemmelige delingsordning

For det vet vi Shamirs hemmelige delingsordning, gjenoppretting Shamirs hemmelige delingsordning enkelt gjort:

Shamirs hemmelige delingsordning

Bruker usikker heltallsaritmetikk

Selv om vi har brukt Shamirs grunnleggende idé Shamirs hemmelige delingsordning, sitter vi igjen med et problem som vi har ignorert til nå. Polynomfunksjonen vår bruker usikker heltallsaritmetikk. Merk at for hvert ekstra poeng en angriper får på grafen til funksjonen vår, er det færre muligheter for andre poeng. Du kan se dette med egne øyne når du plotter et økende antall poeng for en polynomfunksjon ved å bruke heltallsaritmetikk. Dette er kontraproduktivt for vårt uttalte sikkerhetsmål, fordi angriperen skal vite absolutt ingenting før de har minst Shamirs hemmelige delingsordning fragmenter.

For å demonstrere hvor svak den aritmetiske heltallskretsen er, vurdere et scenario der en angriper oppnådde to poeng Shamirs hemmelige delingsordning og vet offentlig informasjon som Shamirs hemmelige delingsordning. Fra denne informasjonen kan han utlede Shamirs hemmelige delingsordning, lik to, og plugg inn de kjente verdiene i formelen Shamirs hemmelige delingsordning и Shamirs hemmelige delingsordning.

Shamirs hemmelige delingsordning

Angriperen kan da finne Shamirs hemmelige delingsordning, teller Shamirs hemmelige delingsordning:

Shamirs hemmelige delingsordning

Siden vi har definert Shamirs hemmelige delingsordning som tilfeldig utvalgte positive heltall er det et begrenset antall mulige Shamirs hemmelige delingsordning. Ved å bruke denne informasjonen kan en angriper utlede Shamirs hemmelige delingsordning, siden noe større enn 5 vil gjøre Shamirs hemmelige delingsordning negativ. Dette viser seg å være sant siden vi har bestemt oss Shamirs hemmelige delingsordning

Angriperen kan deretter beregne de mulige verdiene Shamirs hemmelige delingsordningerstatte Shamirs hemmelige delingsordning в Shamirs hemmelige delingsordning:

Shamirs hemmelige delingsordning

Med begrensede muligheter for Shamirs hemmelige delingsordning det blir tydelig hvor enkelt det er å velge og kontrollere verdiene Shamirs hemmelige delingsordning. Det er bare fem alternativer her.

Løser problemet med usikker heltallsaritmetikk

For å eliminere denne sårbarheten foreslår Shamir å bruke modulær aritmetikk, og erstatte Shamirs hemmelige delingsordningShamirs hemmelige delingsordningDer Shamirs hemmelige delingsordning и Shamirs hemmelige delingsordning — settet med alle primtall.

La oss raskt huske hvordan modulær aritmetikk fungerer. En klokke med visere er et kjent konsept. Hun bruker en klokke altså Shamirs hemmelige delingsordning. Så snart timeviseren passerer tolv, går den tilbake til én. En interessant egenskap ved dette systemet er at bare ved å se på klokken, kan vi ikke utlede hvor mange omdreininger timeviseren har gjort. Men hvis vi vet at timeviseren har passert 12 fire ganger, kan vi fullstendig bestemme antall timer som har gått ved hjelp av en enkel formel Shamirs hemmelige delingsordningDer Shamirs hemmelige delingsordning er vår divisor (her Shamirs hemmelige delingsordning), Shamirs hemmelige delingsordning er koeffisienten (hvor mange ganger divisoren går inn i det opprinnelige tallet uten en rest, her Shamirs hemmelige delingsordning), a Shamirs hemmelige delingsordning er resten, som vanligvis returnerer et modulo-operatøranrop (her Shamirs hemmelige delingsordning). Å kjenne alle disse verdiene gjør at vi kan løse ligningen for Shamirs hemmelige delingsordning, men hvis vi savner koeffisienten, vil vi aldri kunne gjenopprette den opprinnelige verdien.

Vi kan demonstrere hvordan dette forbedrer sikkerheten til ordningen vår ved å bruke ordningen på vårt tidligere eksempel og bruke Shamirs hemmelige delingsordning. Vår nye polynomfunksjon Shamirs hemmelige delingsordning, og de nye punktene Shamirs hemmelige delingsordning. Nå kan nøkkelholderne igjen bruke polynomiell interpolasjon for å rekonstruere funksjonen vår, bare denne gangen må addisjons- og multiplikasjonsoperasjonene ledsages av moduloreduksjon Shamirs hemmelige delingsordning (f.eks Shamirs hemmelige delingsordning).

Ved å bruke dette nye eksemplet, la oss anta at angriperen lærte to av disse nye punktene, Shamirs hemmelige delingsordningog offentlig informasjon Shamirs hemmelige delingsordning. Denne gangen gir angriperen, basert på all informasjonen han har, følgende funksjoner, hvor Shamirs hemmelige delingsordning er settet av alle positive heltall, og Shamirs hemmelige delingsordning representerer modulkoeffisienten Shamirs hemmelige delingsordning.

Shamirs hemmelige delingsordning

Nå finner angriperen vår igjen Shamirs hemmelige delingsordning, beregner Shamirs hemmelige delingsordning:

Shamirs hemmelige delingsordning

Så prøver han igjen Shamirs hemmelige delingsordningerstatte Shamirs hemmelige delingsordning в Shamirs hemmelige delingsordning:

Shamirs hemmelige delingsordning

Denne gangen har han et alvorlig problem. Formelen mangler verdier Shamirs hemmelige delingsordning, Shamirs hemmelige delingsordning и Shamirs hemmelige delingsordning. Siden det finnes et uendelig antall kombinasjoner av disse variablene, kan han ikke få ytterligere informasjon.

Sikkerhetshensyn

Shamirs hemmelige delingsordning antyder sikkerhet fra et informasjonsteoretisk synspunkt. Dette betyr at matematikken er motstandsdyktig selv mot en angriper med ubegrenset datakraft. Imidlertid inneholder kretsen fortsatt flere kjente problemer.

For eksempel skaper ikke Shamirs opplegg fragmenter som skal sjekkes, det vil si at folk fritt kan presentere falske fragmenter og forstyrre gjenopprettingen av den riktige hemmeligheten. En fiendtlig fragmentholder med tilstrekkelig informasjon kan til og med produsere et annet fragment ved å bytte Shamirs hemmelige delingsordning etter eget skjønn. Dette problemet løses ved hjelp av verifiserbare hemmelige delingsordninger, for eksempel Feldmans opplegg.

Et annet problem er at lengden på ethvert fragment er lik lengden på den tilsvarende hemmeligheten, så lengden på hemmeligheten er lett å bestemme. Dette problemet kan løses med trivielt polstring hemmelig med vilkårlige tall opp til en fast lengde.

Til slutt er det viktig å merke seg at våre sikkerhetsproblemer kan strekke seg utover selve designet. For kryptografiske applikasjoner i den virkelige verden er det ofte trusselen om sidekanalangrep der en angriper prøver å trekke ut nyttig informasjon fra applikasjonskjøringstid, caching, krasjer osv. Hvis dette er en bekymring, bør det under utvikling vurderes nøye om å bruke beskyttelsestiltak som funksjoner og konstanttidsoppslag, forhindre at minne lagres på disk, og en rekke andre hensyn som ligger utenfor denne artikkelens omfang.

demo

denne siden Det er en interaktiv demonstrasjon av Shamirs hemmelige delingsopplegg. Demonstrasjon basert på biblioteket ssss-js, som i seg selv er en JavaScript-port for det populære programmet ssss. Merk at å beregne store verdier Shamirs hemmelige delingsordning, Shamirs hemmelige delingsordning и Shamirs hemmelige delingsordning kan ta en stund.

Kilde: www.habr.com

Legg til en kommentar