MÔelge stsenaariumile, kus peate tagama pangahoidla. Seda peetakse tÀiesti immutamatuks ilma vÔtmeta, mis antakse teile esimesel tööpÀeval. Teie eesmÀrk on vÔtit turvaliselt hoida.
Oletame, et otsustate vĂ”tit alati endaga kaasas hoida, vĂ”imaldades vajaduse korral juurdepÀÀsu salvestusruumile. Kuid saate kiiresti aru, et selline lahendus ei mastaap praktikas hĂ€sti, sest teie fĂŒĂŒsiline kohalolek on vajalik iga kord, kui salvestusruumi avate. Aga puhkus, mida sulle lubati? Lisaks on veelgi hirmutavam kĂŒsimus: mis siis, kui kaotate oma ainsa vĂ”tme?
Oma puhkust silmas pidades otsustate teha vÔtmest koopia ja usaldada selle teisele töötajale. Samas saate aru, et ka see pole ideaalne. Kahekordistades vÔtmete arvu, kahekordistate ka vÔtmevarguse tÔenÀosust.
Meeleheitel hĂ€vitate duplikaadi ja otsustate algse vĂ”tme pooleks jagada. NĂŒĂŒd vĂ”iks arvata, et vĂ”tme kogumiseks ja varahoidla avamiseks peavad fĂŒĂŒsiliselt kohal olema kaks usaldusvÀÀrset inimest, kellel on vĂ”tmekillud. See tĂ€hendab, et vargal on vaja varastada kaks tĂŒkki, mis on kaks korda raskem kui ĂŒhe vĂ”tme varastamine. Peagi mĂ”istad aga, et see skeem polegi palju parem kui ĂŒks vĂ”ti, sest kui keegi kaotab poole vĂ”tme, siis tĂ€isvĂ”tit enam tagasi ei saa.
Probleemi saab lahendada tĂ€iendavate vĂ”tmete ja lukkude seeriaga, kuid see lĂ€henemine nĂ”uab kiiresti ĐŒĐœĐŸĐłĐŸ vĂ”tmed ja lukud. Otsustate, et ideaalne lahendus oleks vĂ”tit jagada, et turvalisus ei sĂ”ltuks tĂ€ielikult ĂŒhest inimesest. Samuti jĂ€reldate, et fragmentide arvul peab olema mingi lĂ€vi, et kui ĂŒks fragment kaob (vĂ”i kui inimene lĂ€heb puhkusele), jÀÀks kogu vĂ”ti toimima.
Kuidas jagada saladust
Seda tĂŒĂŒpi vĂ”tmehaldusskeemile mĂ”tles Adi Shamir 1979. aastal, kui ta oma teose avaldas . Artiklis selgitatakse lĂŒhidalt nn
lĂ€viskeem salajase vÀÀrtuse (nt krĂŒptovĂ”tme) tĂ”husaks jagamiseks
osad. Siis, millal ja ainult siis, vÀhemalt
kohta
osad on kokku pandud, saate saladuse hÔlpsalt taastada
.
Turvalisuse seisukohast on selle skeemi oluline omadus see, et rĂŒndaja ei peaks teadma absoluutselt midagi, kui tal pole vĂ€hemalt
osad. Isegi kohalolu
osad ei tohiks anda mingit teavet. Me nimetame seda kinnisvara semantiline turvalisus.
PolĂŒnoomiline interpolatsioon
Shamiri lÀve skeem
kontseptsiooni ĂŒmber ehitatud polĂŒnoomiline interpolatsioon. Kui te pole selle kontseptsiooniga tuttav, on see tegelikult ĂŒsna lihtne. Tegelikult, kui olete kunagi joonistanud graafikule punkte ja seejĂ€rel ĂŒhendanud need joonte vĂ”i kĂ”veratega, olete seda juba kasutanud!

Kahe punkti kaudu saab joonistada piiramatu arvu 2. astme polĂŒnoome. Nende hulgast ainsa valimiseks on vaja kolmandat punkti. Illustratsioon:
Vaatleme esimese astmega polĂŒnoomi,
. Kui soovite selle funktsiooni graafikule joonistada, mitu punkti teil on vaja? Noh, me teame, et see on lineaarne funktsioon, mis moodustab sirge ja seega vajab see vĂ€hemalt kahte punkti. JĂ€rgmiseks vaatleme teise astmega polĂŒnoomfunktsiooni,
. See on ruutfunktsioon, seega on graafiku koostamiseks vaja vĂ€hemalt kolme punkti. Kuidas oleks kolmanda astmega polĂŒnoomiga? VĂ€hemalt neli punkti. Ja nii edasi.
TĂ”eliselt lahe asi selle omaduse juures on see, et arvestades polĂŒnoomfunktsiooni astet ja vĂ€hemalt
punktid, saame selle polĂŒnoomfunktsiooni jaoks tuletada lisapunkte. Nimetame nende lisapunktide ekstrapolatsiooni polĂŒnoomiline interpolatsioon.
Saladuse vÀljamÔtlemine
VĂ”ib-olla olete juba aru saanud, et siin tuleb mĂ€ngu Shamiri nutikas skeem. Ătleme oma saladuse
- Kas
. Me vÔime pöörata
graafiku punkti
ja leia astmega polĂŒnoomfunktsioon
, mis seda punkti rahuldab. Tuletame teile seda meelde
on meie nĂ”utavate fragmentide lĂ€vi, nii et kui seame lĂ€veks kolm fragmenti, peame valima polĂŒnoomfunktsiooni astmega kaks.
Meie polĂŒnoomil on vorm
Kus
Đž
â juhuslikult valitud positiivsed tĂ€isarvud. Me lihtsalt konstrueerime astmega polĂŒnoomi
, kus vaba koefitsient
- See on meie saladus
, ja iga jÀrgneva jaoks
on juhuslikult valitud positiivne koefitsient. Kui pöördume tagasi algse nÀite juurde ja eeldame, et
, siis saame funktsiooni
.
Sel hetkel saame luua fragmente ĂŒhendades
kordumatud tÀisarvud
Kus
(sest see on meie saladus). Selles nÀites tahame jagada neli fragmenti lÀvega kolm, nii et genereerime punkte juhuslikult
ja saatke igale neljale usaldusvÀÀrsele inimesele, vĂ”tme hoidjale, ĂŒks punkt. Anname sellest ka inimestele teada
, kuna seda peetakse avalikuks teabeks ja see on taastamiseks vajalik
.
Saladuse taastamine
Oleme juba arutanud polĂŒnoomi interpolatsiooni kontseptsiooni ja seda, kuidas see Shamiri lĂ€ve skeemi aluseks on
. Kui suvalised kolm neljast usaldusisikust soovivad taastada
, peavad nad ainult interpoleerima
oma ainulaadsete punktidega. Selleks saavad nad mÀÀrata oma punktid
ja arvutage Lagrange'i interpolatsiooni polĂŒnoom jĂ€rgmise valemi abil. Kui programmeerimine on teile selgem kui matemaatika, siis pi on sisuliselt operaator for, mis korrutab kĂ”ik tulemused ja sigma on for, mis liidab kĂ”ik kokku.


juures
saame selle lahendada jĂ€rgmiselt ja tagastada oma algse polĂŒnoomifunktsiooni:

Kuna me teame seda
, taastumine
lihtsalt tehtud:

Kasutades ebaturvalist tÀisarvulist aritmeetikat
Kuigi oleme Shamiri pÔhiideed edukalt rakendanud
, oleme jÀÀnud probleemiga, mida oleme seni ignoreerinud. Meie polĂŒnoomfunktsioon kasutab ebaturvalist tĂ€isarvulist aritmeetikat. Pange tĂ€hele, et iga tĂ€iendava punkti korral, mille rĂŒndaja meie funktsiooni graafikul saab, on teiste punktide jaoks vĂ€hem vĂ”imalusi. Seda nĂ€ete oma silmaga, kui joonistate tĂ€isarvude aritmeetika abil polĂŒnoomfunktsiooni jaoks jĂ€rjest suurema arvu punkte. See on vastuolus meie seatud turvaeesmĂ€rgiga, sest rĂŒndaja ei peaks teadma absoluutselt mitte midagi, kuni tal on vĂ€hemalt see olemas
kilde.
Et nĂ€idata, kui nĂ”rk on tĂ€isarvude aritmeetiline skeem, kaaluge stsenaariumi, kus rĂŒndaja sai kaks punkti
ja teab seda avalikku teavet
. Sellest teabest saab ta jÀreldada
, vÔrdub kahega, ja sisestage teadaolevad vÀÀrtused valemisse
Đž
.

SeejĂ€rel saab rĂŒndaja leida
, lugedes
:

Kuna oleme mÀÀratlenud
juhuslikult valitud positiivsete tÀisarvudena on vÔimalikke piiratud arv
. Seda teavet kasutades saab rĂŒndaja jĂ€reldada
, sest kÔik, mis on suurem kui 5, sobib
negatiivne. See osutub tÔeks, kuna oleme otsustanud 
SeejĂ€rel saab rĂŒndaja vĂ”imalikud vÀÀrtused vĂ€lja arvutada
asendamine
ĐČ
:

Piiratud valikutega
saab selgeks, kui lihtne on vÀÀrtusi valida ja kontrollida
. Siin on ainult viis vÔimalust.
Ălesande lahendamine ebaturvalise tĂ€isarvu aritmeetikaga
Selle haavatavuse kÔrvaldamiseks soovitab Shamir kasutada modulaarset aritmeetikat, asendades
edasi
Kus
Đž
â kĂ”igi algarvude hulk.
Tuletame kiiresti meelde, kuidas modulaararitmeetika töötab. Osutega kell on tuttav mÔiste. Ta kasutab kella, mis on
. Niipea kui tunniosuti lĂ€bib kaksteist, naaseb see ĂŒhele. Selle sĂŒsteemi huvitav omadus on see, et lihtsalt kella vaadates ei saa me jĂ€reldada, mitu pööret tunniosuti on teinud. Kui aga teame, et tunniosuti on neli korda möödunud 12, saame möödunud tundide arvu lihtsa valemi abil tĂ€ielikult kindlaks teha
Kus
on meie jagaja (siin
),
on koefitsient (mitu korda lÀheb jagaja algarvusse ilma jÀÀgita, siin
) ja
on jÀÀk, mis tavaliselt tagastab mooduloperaatori kÔne (siin
). KÔigi nende vÀÀrtuste tundmine vÔimaldab meil lahendada vÔrrandi
, aga kui koefitsiendist puudu jÀÀb, ei saa me kunagi algset vÀÀrtust taastada.
Saame nÀidata, kuidas see parandab meie skeemi turvalisust, rakendades skeemi meie eelmises nÀites ja kasutades
. Meie uus polĂŒnoomfunktsioon
ja uued punktid
. NĂŒĂŒd saavad vĂ”tmehoidjad meie funktsiooni rekonstrueerimiseks taas kasutada polĂŒnoominterpolatsiooni, ainult seekord peab liitmis- ja korrutustehtetega kaasnema mooduli redutseerimine
(nt
).
Seda uut nĂ€idet kasutades oletame, et rĂŒndaja Ă”ppis neist uutest punktidest kaks,
ja avalikku teavet
. Seekord vĂ€ljastab rĂŒndaja kogu tema kĂ€sutuses oleva info pĂ”hjal jĂ€rgmised funktsioonid, kuhu
on kÔigi positiivsete tÀisarvude hulk ja
tÀhistab mooduli koefitsienti
.

NĂŒĂŒd leiab meie rĂŒndaja uuesti
, arvutades
:

Siis proovib uuesti
asendamine
ĐČ
:

Seekord on tal tÔsine probleem. Valemil puuduvad vÀÀrtused
,
Đž
. Kuna nende muutujate kombinatsioone on lÔpmatu arv, ei saa ta lisateavet hankida.
Turvakaalutlused
Shamiri salajane jagamisskeem viitab turvalisus infoteooria seisukohalt. See tĂ€hendab, et matemaatika on vastupidav isegi piiramatu arvutusvĂ”imsusega rĂŒndajale. Ahel sisaldab siiski mitmeid teadaolevaid probleeme.
NÀiteks Shamiri skeem ei loo killud, mida tuleb kontrollidast inimesed vÔivad vabalt esitada vÔltskilde ja segada Ôige saladuse taastamist. Piisava teabega vaenulik killuhoidja vÔib muutudes isegi teise fragmendi toota
oma ÀranÀgemise jÀrgi. See probleem lahendatakse kasutades kontrollitavad salajagamisskeemid, nagu Feldmani skeem.
Probleemiks on ka see, et mis tahes fragmendi pikkus on vÔrdne vastava saladuse pikkusega, mistÔttu on saladuse pikkust lihtne mÀÀrata. Seda probleemi saab lahendada triviaalselt polsterdus salajane suvaliste numbritega kuni fikseeritud pikkuseni.
LĂ”puks on oluline mĂ€rkida, et meie turvaprobleemid vĂ”ivad ulatuda disainist endast kaugemale. Reaalmaailma krĂŒptograafiliste rakenduste puhul on sageli oht kĂŒlgkanalite rĂŒnnakuteks, kus rĂŒndaja pĂŒĂŒab hankida kasulikku teavet rakenduse tĂ€itmisajast, vahemĂ€llu salvestamisest, krahhidest jne. Kui see on muret tekitav, tuleks arenduse ajal hoolikalt kaaluda kaitsemeetmete kasutamist, nagu funktsioonid ja konstantse aja otsingud, mĂ€lu kettale salvestamise vĂ€ltimine ja mitmed muud kaalutlused, mis ei kuulu kĂ€esoleva artikli reguleerimisalasse.
Demo
Edasi Shamiri salajase jagamisskeemi interaktiivne esitlus. Demonstratsioon raamatukogu pÔhjal , mis ise on populaarse programmi JavaScripti port . Pange tÀhele, et suurte vÀÀrtuste arvutamine
,
Đž
vÔib aega vÔtta.
Allikas: www.habr.com
