LÄt oss övervÀga ett scenario dÀr det Àr nödvÀndigt att sÀkerstÀlla sÀkerheten för ett bankvalv. Det anses vara helt oÄtkomligt utan nyckeln, som du fÄr den första dagen av din anstÀllning. Ditt mÄl Àr att pÄ ett tillförlitligt sÀtt bevara nyckeln.
Anta att du beslutat att alltid ha nyckeln pÄ dig, och ge tillgÄng till valvet vid behov. Men du kommer snabbt att inse att en sÄdan lösning inte skalar praktiskt, eftersom det varje gÄng krÀvs att du Àr fysiskt nÀrvarande för att öppna valvet. Vad hÀnder med semestern som du lovades? Dessutom Àr det Ànnu mer oroande frÄgan: vad om du förlorar den enda nyckeln?
Med tanken pÄ semestern beslutade du att göra en kopia av nyckeln och överlÀmna den till en annan anstÀlld. Men du förstÄr att detta inte Àr perfekt heller. Genom att dubblera antalet nycklar har du ocksÄ dubblerat möjligheterna för nyckeln att stjÀlas.
I desperation förstör du kopian och beslutar att dela upp den ursprungliga nyckeln i tvÄ delar. Nu tÀnker du att tvÄ betrodda personer med nyckeldela mÄste vara fysiskt nÀrvarande för att sÀtta ihop nyckeln och öppna valvet. Detta innebÀr att tjuven mÄste stjÀla tvÄ delar, vilket Àr dubbelt sÄ svÄrt som att stjÀla en nyckel. Men snart inser du att denna lösning inte Àr mycket bÀttre Àn en enda nyckel, eftersom om nÄgon förlorar en del av nyckeln, kan den fullstÀndiga nyckeln inte ÄterstÀllas.
Problemet kan lösas med hjÀlp av en serie ytterligare nycklar och lÄs, men med ett sÄdant tillvÀgagÄngssÀtt kommer det snart att krÀvas mÀn fler nycklar och lÄs. Du beslutar att den idealiska lösningen Àr att dela upp nyckeln sÄ att sÀkerheten inte helt beror pÄ en enda person. Du drar ocksÄ slutsatsen att det mÄste finnas en viss tröskel för antalet delar, sÄ att om en del gÄr förlorad (eller om personen gÄr pÄ semester) kvarstÄr den fullstÀndiga nyckeln funktionell.
Hur man delar en hemlighet
Denna typ av nyckelhanteringsschema reflekterade Adi Shamir över 1979 nÀr han publicerade sitt arbete . I artikeln förklaras kort den sÄ kallade
tröskelschema för effektiv delning av ett hemligt vÀrde (till exempel en kryptografisk nyckel) i
delar. NÀr och endast nÀr minst
frÄn
delar har samlats in kan hemligheten enkelt ÄterstÀllas.
.
Ur sÀkerhetssynpunkt Àr en viktig egenskap hos detta schema att en angripare inte bör veta nÄgot alls om han inte har minst
delar. Ăven nĂ€rvaron av
delar bör inte ge nÄgon information. Vi kallar denna egenskap semantisk sÀkerhet.
Polynominterpolation
Shamir's tröskelschema
Àr uppbyggd kring konceptet polynominterpolation. Om du inte Àr bekant med detta koncept Àr det faktiskt ganska enkelt. Om du nÄgonsin har ritat punkter pÄ ett diagram och sedan kopplat dem med linjer eller kurvor, har du redan anvÀnt det!

Genom tvÄ punkter kan ett obegrÀnsat antal polynom av grad 2 dras. För att vÀlja en unik frÄn dem behövs en tredje punkt. Exempel:
LÄt oss betrakta ett polynom av grad ett,
. Om du vill avbilda denna funktion pÄ ett diagram, hur mÄnga punkter behöver du? Tja, vi vet att det Àr en linjÀr funktion som bildar en linje, sÄ det krÀvs minst tvÄ punkter. LÄt oss sedan titta pÄ en polynomfunktion av grad tvÄ,
. Det Àr en kvadratisk funktion, sÄ för att avbilda den krÀvs minst tre punkter. Hur Àr det med ett polynom av grad tre? Minst fyra punkter. Och sÄ vidare.
Den riktigt hÀftiga saken med denna egenskap Àr att, med hÀnsyn till graden av den polynomfunktion och minst
punkter, kan vi generera ytterligare punkter för denna polynomfunktion. Extrapoleringen av dessa ytterligare punkter kallas polynominterpolation.
Att skapa en hemlighet
Du har kanske redan förstÄtt att Shamir's smarta schema kommer in hÀr. Anta att vÄr hemlighet Àr
â detta Ă€r
. Vi kan omvandla
till en punkt pÄ grafen
och skapa en polynomfunktion av graden
, som uppfyller denna punkt. Kom ihÄg att
vara vÄr tröskel för de nödvÀndiga delarna, sÄ om vi sÀtter tröskeln till tre delar mÄste vi vÀlja en polynomfunktion av graden tvÄ.
VÄrt polynom kommer att ha formen
, dÀr
och
â slumpmĂ€ssigt valda positiva heltal. Vi bygger helt enkelt ett polynom av graden
, dÀr konstanten
 Àr vÄr hemlighet
, och var och en av de följande
medlemmar finns en slumpmÀssigt vald positiv koefficient. Om vi ÄtergÄr till det ursprungliga exemplet och antar att
, dÄ fÄr vi en funktion
.
Vid det hÀr stadiet kan vi generera fragment genom att ansluta
unika hela tal i
, dÀr
(eftersom det Àr vÄr hemlighet). I detta exempel vill vi dela ut fyra fragment med en tröskel pÄ tre, sÄ vi genererar slumpmÀssigt punkter
och skickar en punkt till var och en av de fyra betrodda personerna, nyckelns förvaltare. Vi informerar ocksÄ mÀnniskor att
, eftersom det anses vara offentlig information och nödvÀndigt för ÄterstÀllning
.
à terstÀllning av hemligheten
Vi har redan diskuterat begreppet polynomial interpolation och vad som ligger till grund för Shamir's tröskelschema
. NÀr vilka tre av fyra betrodda personer vill ÄterstÀlla
, behöver de bara interpolera
med sina unika punkter. För detta kan de bestÀmma sina punkter
och berÀkna Lagrange-interpolationspolynomet med hjÀlp av följande formel. Om programmering Àr mer begriplig för dig Àn matematik, Àr pi i huvudsak en operator for, som multiplicerar alla resultat, och sigma Àr for, som adderar allt.


Vid
vi kan lösa detta pÄ följande sÀtt och ÄterfÄ vÄr ursprungliga polynomialfunktion:

Eftersom vi vet att
, ÄterstÀllningen
utförs enkelt:

AnvÀndning av osÀker heltalsarithmetic
Trots att vi framgÄngsrikt har tillÀmpat Shamir's grundidé
, har vi ett problem som vi har ignorerat fram till nu. VÄr polynomialfunktion anvÀnder osÀker heltalsarithmetic. TÀnk pÄ att för varje ytterligare punkt som angriparen fÄr pÄ grafen av vÄr funktion, finns det fÀrre möjliga alternativ för andra punkter. Du kan se det med egna ögon nÀr du bygger en graf med ökat antal punkter för en polynomialfunktion med hjÀlp av heltalsarithmetic. Detta Àr kontraproduktivt för vÄrt angivna sÀkerhetsmÄl, eftersom en angripare inte bör veta nÄgonting förrÀn de har minst
fragment.
För att visa hur svag schemat med heltalsarithmetic Àr, övervÀg ett scenario dÀr angriparen har fÄtt tvÄ punkter
och vet den offentliga informationen att
. UtifrÄn denna information kan den utföra
, som Àr lika med tvÄ, och koppla in kÀnda vÀrden i formeln
och
.

Sedan kan angriparen hitta
, genom att rÀkna
:

Eftersom vi har definierat
som slumpmÀssigt valda positiva heltal, finns det ett begrÀnsat antal möjliga
. Med denna information kan angriparen utföra
, eftersom allt över 5 gör att
blir negativt. Detta visar sig vara sant eftersom vi har definierat 
Sedan kan angriparen berÀkna möjliga vÀrden
, genom att ersÀtta
pÄ
:

Med en begrÀnsad uppsÀttning alternativ för
blir det uppenbart hur lÀtt det Àr att gissa och verifiera vÀrden
. HĂ€r finns bara fem alternativ.
Lösning pÄ problemet med osÀker heltalsaritmetik
För att ÄtgÀrda denna sÄrbarhet föreslÄr Shamir att anvÀnda modulÀr aritmetik, genom att ersÀtta
till
, dÀr
och
â mĂ€ngden av alla primtal.
LÄt oss snabbt friska upp minnet om hur modulÀr aritmetik fungerar. Klockor med visare Àr ett bekant koncept. Det anvÀnder klockor som Àr
. SÄ snart klockvisaren passerar tolv, ÄtergÄr den till ett. En intressant egenskap hos detta system Àr att vi bara genom att titta pÄ klockan inte kan avgöra hur mÄnga varv klockvisaren har gjort. Men om vi vet att klockvisaren har passerat 12 fyra gÄnger, kan vi helt bestÀmma antalet passerade timmar med hjÀlp av en enkel formel
, dÀr
 â det Ă€r vĂ„r delare (hĂ€r
),
 â det Ă€r koefficienten (hur mĂ„nga gĂ„nger delaren utan rest gĂ„r in i det ursprungliga talet, hĂ€r
), och
 â det Ă€r resten, som vanligtvis returneras av modulusoperatorn (hĂ€r
). Att kÀnna till alla dessa vÀrden gör att vi kan lösa ekvationen för
, men om vi missar koefficienten kommer vi aldrig att kunna Äterskapa det ursprungliga vÀrdet.
Man kan visa hur detta förbÀttrar sÀkerheten i vÄrt system genom att tillÀmpa systemet pÄ vÄrt tidigare exempel och anvÀnda
. VÄr nya polynomfunktion
, och de nya punkterna
. Nu kan nyckelvÄrdare Äterigen anvÀnda polynominterpolering för att ÄterstÀlla vÄr funktion, men den hÀr gÄngen mÄste addition och multiplikation Ätföljas av reduktion mod
(t.ex.
).
Med detta nya exempel, anta att angriparen har fÄtt kÀnnedom om tvÄ av dessa nya punkter,
, och den offentliga informationen
. Den hÀr gÄngen anvÀnder angriparen all tillgÀnglig information för att extrahera följande funktioner, dÀr
 â mĂ€ngden av alla positiva heltal, och
representerar modulkoefficienten
.

Nu finner vÄr angripare Äterigen
, genom att berÀkna
:

DÀrefter försöker han Äter igen att extrahera
, genom att ersÀtta
pÄ
:

Den hÀr gÄngen har han ett allvarligt problem. Det saknas vÀrden i formeln
,
och
. Eftersom det finns oÀndligt mÄnga kombinationer av dessa variabler kan han inte fÄ nÄgon ytterligare information.
SÀkerhetsövervÀganden
Shamirâs hemlighetsdelning erbjuder sĂ€kerhet ur informationsteoretiskt perspektiv. Det innebĂ€r att matematiken Ă€r robust Ă€ven mot en angripare med oĂ€ndlig datorkapacitet. Dock innehĂ„ller systemet fortfarande flera kĂ€nda problem.
Till exempel skapar Shamirâs schema inte verifierbara fragment, vilket innebĂ€r att personer fritt kan presentera falska fragment och försvĂ„ra Ă„terstĂ€llandet av den korrekta hemligheten. En illvillig fragmentförvarare med tillrĂ€cklig information kan till och med producera ett annat fragment genom att Ă€ndra
som han eller hon behagar. Detta problem löses med verifierbara hemlighetsdelningssystem, sÄsom Feldmans schema.
Ett annat problem Àr att lÀngden av vilket fragment som helst Àr lika med lÀngden av den motsvarande hemligheten, sÄ att hemlighetens lÀngd enkelt kan bestÀmmas. Detta problem löses med trivial fyllning av hemligheten med slumpmÀssiga siffror till en fast lÀngd.
Slutligen Àr det viktigt att notera att vÄra sÀkerhetsoro kan strÀcka sig bortom sjÀlva systemet. För verkliga kryptografiska tillÀmpningar finns ofta hot om sidokanalsattacker, dÀr angriparen försöker extrahera kÀnslig information frÄn applikationens körning, cacheminne, kraschar, osv. Om detta Àr en oro, bör man noggrant övervÀga anvÀndningen av skyddsÄtgÀrder, sÄsom konstant tidsfunktioner och sökningar, förhindra skrivningar till disk och tÀnka pÄ en rad andra aspekter som gÄr bortom denna artikel.
Demo
PĂ„ det finns en interaktiv demonstration av Shamirâs hemlighetsdelning. Demonstrationen bygger pĂ„ biblioteket , som i sig Ă€r en JavaScript-port av det populĂ€ra programmet . Observera att berĂ€kning av stora vĂ€rden
,
och
kan ta lite tid.
KĂ€lla: habr.com
