Shamirin salainen jakamisjärjestelmä

Harkitse tilannetta, jossa sinun on turvattava pankkiholvi. Sitä pidetään täysin valloittamattomana ilman avainta, joka annetaan heti ensimmäisenä työpäivänä. Tavoitteesi on säilyttää avain turvallisesti.

Oletetaan, että päätät pitää avaimen aina mukanasi, jolloin voit tarvittaessa käyttää tallennustilaa. Mutta huomaat nopeasti, että tällainen ratkaisu ei skaalaudu hyvin käytännössä, koska fyysistä läsnäoloasi vaaditaan aina kun avaat varaston. Entä sinulle luvattu loma? Lisäksi kysymys on vielä pelottavampi: entä jos hukkaat ainoan avaimesi?

Lomaasi ajatellen päätät tehdä kopion avaimesta ja uskoa sen toiselle työntekijälle. Ymmärrät kuitenkin, että tämäkään ei ole ihanteellinen. Kaksinkertaistamalla avainten määrän kaksinkertaistat myös avainvarkauden todennäköisyyden.

Epätoivoissasi tuhoat kaksoiskappaleen ja päätät jakaa alkuperäisen avaimen kahtia. Nyt luulisi, että kahden luotettavan henkilön, joilla on avaimenpalaset, pitäisi olla fyysisesti paikalla avaimen noutamiseksi ja holvin avaamiseksi. Tämä tarkoittaa, että varkaan on varastettava kaksi kappaletta, mikä on kaksi kertaa vaikeampaa kuin yhden avaimen varastaminen. Ymmärrät kuitenkin pian, että tämä järjestelmä ei ole paljon parempi kuin yksi avain, koska jos joku kadottaa puolet avaimesta, koko avainta ei voida palauttaa.

Ongelma voidaan ratkaista sarjalla lisäavaimia ja lukkoja, mutta tämä lähestymistapa vaatii nopeasti много avaimet ja lukot. Päätät, että ihanteellinen suunnittelu olisi jakaa avain, jotta turvallisuus ei ole täysin yhden henkilön varassa. Päätät myös, että fragmenttien lukumäärälle on oltava jokin kynnys, jotta jos yksi fragmentti katoaa (tai jos henkilö lähtee lomalle), koko avain pysyy toimivana.

Kuinka jakaa salaisuus

Adi Shamir ajatteli tämäntyyppistä avaintenhallintajärjestelmää vuonna 1979, kun hän julkaisi työnsä "Kuinka jakaa salaisuus". Artikkelissa selitetään lyhyesti ns Shamirin salainen jakamisjärjestelmä kynnysmalli salaisen arvon (kuten salausavaimen) tehokkaaseen jakamiseen Shamirin salainen jakamisjärjestelmä osat. Sitten, aina ja vain silloin Shamirin salainen jakamisjärjestelmä ja Shamirin salainen jakamisjärjestelmä osat on koottu, voit helposti palauttaa salaisuuden Shamirin salainen jakamisjärjestelmä.

Turvallisuuden näkökulmasta tämän järjestelmän tärkeä ominaisuus on, että hyökkääjän ei pitäisi tietää yhtään mitään, ellei hänellä ole vähintään Shamirin salainen jakamisjärjestelmä osat. Jopa läsnäolo Shamirin salainen jakamisjärjestelmä osat eivät saa antaa mitään tietoa. Kutsumme tätä omaisuutta semanttinen turvallisuus.

Polynomiinterpolointi

Shamirin kynnysjärjestelmä Shamirin salainen jakamisjärjestelmä rakennettu konseptin ympärille polynomin interpolaatio. Jos tämä käsite ei ole sinulle tuttu, se on itse asiassa melko yksinkertainen. Itse asiassa, jos olet joskus piirtänyt pisteitä kaavioon ja sitten yhdistänyt ne viivoilla tai käyrillä, olet jo käyttänyt sitä!

Shamirin salainen jakamisjärjestelmä
Kahden pisteen kautta voit piirtää rajattoman määrän 2-asteisia polynomeja. Valitaksesi niistä ainoan, tarvitset kolmannen pisteen. Kuva: Wikipedia

Tarkastellaan polynomia, jonka aste on yksi, Shamirin salainen jakamisjärjestelmä. Jos haluat piirtää tämän funktion kaavioon, kuinka monta pistettä tarvitset? Tiedämme, että tämä on lineaarinen funktio, joka muodostaa suoran, joten se tarvitsee vähintään kaksi pistettä. Tarkastellaan seuraavaksi polynomifunktiota, jolla on aste kaksi, Shamirin salainen jakamisjärjestelmä. Tämä on neliöfunktio, joten kaavion piirtämiseen tarvitaan vähintään kolme pistettä. Entä polynomi, jolla on aste kolme? Vähintään neljä pistettä. Ja niin edelleen.

Todella siistiä tässä ominaisuudessa on, että ottaen huomioon polynomifunktion aste ja ainakin Shamirin salainen jakamisjärjestelmä pisteet, voimme johtaa lisäpisteitä tälle polynomifunktiolle. Kutsumme näiden lisäpisteiden ekstrapolointia polynomin interpolaatio.

Salaisuuden keksiminen

Olet ehkä jo tajunnut, että tässä Shamirin älykäs suunnitelma tulee peliin. Sanotaanpa salaisuutemme Shamirin salainen jakamisjärjestelmä - Onko Shamirin salainen jakamisjärjestelmä. Voimme kääntyä Shamirin salainen jakamisjärjestelmä kaavion pisteeseen Shamirin salainen jakamisjärjestelmä ja keksiä polynomifunktio asteella Shamirin salainen jakamisjärjestelmä, joka täyttää tämän seikan. Muistutetaan tästä Shamirin salainen jakamisjärjestelmä tulee olemaan vaadittujen fragmenttien kynnys, joten jos asetamme kynnysarvoksi kolme fragmenttia, meidän on valittava polynomifunktio, jolla on aste kaksi.

Polynomillamme on muoto Shamirin salainen jakamisjärjestelmäMissä Shamirin salainen jakamisjärjestelmä и Shamirin salainen jakamisjärjestelmä — satunnaisesti valitut positiiviset kokonaisluvut. Rakennamme vain polynomin asteen kanssa Shamirin salainen jakamisjärjestelmä, jossa vapaa kerroin Shamirin salainen jakamisjärjestelmä - Tämä on salaisuutemme Shamirin salainen jakamisjärjestelmä, ja jokaiselle seuraavalle Shamirin salainen jakamisjärjestelmä termeillä on satunnaisesti valittu positiivinen kerroin. Jos palataan alkuperäiseen esimerkkiin ja oletetaan, että Shamirin salainen jakamisjärjestelmä, niin saamme funktion Shamirin salainen jakamisjärjestelmä.

Tässä vaiheessa voimme luoda fragmentteja yhdistämällä Shamirin salainen jakamisjärjestelmä ainutlaatuisia kokonaislukuja Shamirin salainen jakamisjärjestelmäMissä Shamirin salainen jakamisjärjestelmä (koska se on salaisuutemme). Tässä esimerkissä haluamme jakaa neljä fragmenttia, joiden kynnys on kolme, joten luomme satunnaisesti pisteitä Shamirin salainen jakamisjärjestelmä ja lähetä yksi piste jokaiselle neljälle luotetulle henkilölle, avaimen säilyttäjälle. Kerromme siitä myös ihmisille Shamirin salainen jakamisjärjestelmä, koska tämä katsotaan julkiseksi tiedoksi ja on välttämätöntä palauttamisen kannalta Shamirin salainen jakamisjärjestelmä.

Salaisuuden palauttaminen

Olemme jo keskustelleet polynomin interpolaation käsitteestä ja siitä, kuinka se on Shamirin kynnysjärjestelmän perusta Shamirin salainen jakamisjärjestelmä. Kun joku kolmesta neljästä luottamushenkilöstä haluaa palauttaa Shamirin salainen jakamisjärjestelmä, niiden tarvitsee vain interpoloida Shamirin salainen jakamisjärjestelmä omilla ainutlaatuisilla pisteillään. Tätä varten he voivat määrittää pisteensä Shamirin salainen jakamisjärjestelmä ja laske Lagrangen interpolaatiopolynomi seuraavan kaavan avulla. Jos ohjelmointi on sinulle selkeämpää kuin matematiikka, niin pi on pohjimmiltaan operaattori for, joka kertoo kaikki tulokset, ja sigma on for, joka lisää kaiken.

Shamirin salainen jakamisjärjestelmä

Shamirin salainen jakamisjärjestelmä

At Shamirin salainen jakamisjärjestelmä voimme ratkaista sen näin ja palauttaa alkuperäisen polynomifunktiomme:

Shamirin salainen jakamisjärjestelmä

Koska me tiedämme sen Shamirin salainen jakamisjärjestelmä, elpyminen Shamirin salainen jakamisjärjestelmä tehty yksinkertaisesti:

Shamirin salainen jakamisjärjestelmä

Käyttää vaarallista kokonaislukuaritmetiikkaa

Vaikka olemme onnistuneesti soveltaneet Shamirin perusideaa Shamirin salainen jakamisjärjestelmä, meille jää ongelma, jonka olemme tähän asti jättäneet huomiotta. Polynomifunktiomme käyttää vaarallista kokonaislukuaritmetiikkaa. Huomaa, että jokaista lisäpistettä kohti, jonka hyökkääjä saa funktiomme kaaviosta, on vähemmän mahdollisuuksia muille pisteille. Voit nähdä tämän omin silmin, kun piirrät kasvavan määrän pisteitä polynomifunktiolle kokonaislukuaritmetiikkaa käyttäen. Tämä on haitallista ilmoittamamme turvallisuustavoitteen suhteen, koska hyökkääjän ei pitäisi tietää mitään, ennen kuin heillä on ainakin Shamirin salainen jakamisjärjestelmä fragmentteja.

Osoittaaksesi kuinka heikko kokonaislukuaritmeettinen piiri on, harkitse skenaariota, jossa hyökkääjä sai kaksi pistettä Shamirin salainen jakamisjärjestelmä ja tietää siitä julkista tietoa Shamirin salainen jakamisjärjestelmä. Näistä tiedoista hän voi päätellä Shamirin salainen jakamisjärjestelmä, yhtä suuri kuin kaksi, ja liitä tunnetut arvot kaavaan Shamirin salainen jakamisjärjestelmä и Shamirin salainen jakamisjärjestelmä.

Shamirin salainen jakamisjärjestelmä

Hyökkääjä voi sitten löytää Shamirin salainen jakamisjärjestelmä, laskenta Shamirin salainen jakamisjärjestelmä:

Shamirin salainen jakamisjärjestelmä

Koska olemme määritelleet Shamirin salainen jakamisjärjestelmä satunnaisesti valittuina positiivisina kokonaislukuina mahdollisia on rajoitettu määrä Shamirin salainen jakamisjärjestelmä. Näiden tietojen perusteella hyökkääjä voi päätellä Shamirin salainen jakamisjärjestelmä, koska kaikki yli 5 riittää Shamirin salainen jakamisjärjestelmä negatiivinen. Tämä osoittautuu todeksi, koska olemme päättäneet Shamirin salainen jakamisjärjestelmä

Hyökkääjä voi sitten laskea mahdolliset arvot Shamirin salainen jakamisjärjestelmäkorvaamalla Shamirin salainen jakamisjärjestelmä в Shamirin salainen jakamisjärjestelmä:

Shamirin salainen jakamisjärjestelmä

Rajoitetut vaihtoehdot Shamirin salainen jakamisjärjestelmä tulee selväksi, kuinka helppoa arvojen valitseminen ja tarkistaminen on Shamirin salainen jakamisjärjestelmä. Tässä on vain viisi vaihtoehtoa.

Ongelman ratkaiseminen vaarallisella kokonaislukuaritmetiikalla

Tämän haavoittuvuuden poistamiseksi Shamir ehdottaa modulaarista aritmetiikkaa korvaamalla Shamirin salainen jakamisjärjestelmä päälle Shamirin salainen jakamisjärjestelmäMissä Shamirin salainen jakamisjärjestelmä и Shamirin salainen jakamisjärjestelmä — kaikkien alkulukujen joukko.

Muistetaan nopeasti kuinka modulaarinen aritmetiikka toimii. Kello osoittimilla on tuttu käsite. Hän käyttää kelloa Shamirin salainen jakamisjärjestelmä. Heti kun tuntiosoitin ylittää kaksitoista, se palaa yhteen. Tämän järjestelmän mielenkiintoinen ominaisuus on se, että pelkällä kelloa katsomalla emme voi päätellä, kuinka monta kierrosta tuntiosoitin on tehnyt. Jos kuitenkin tiedämme, että tuntiosoitin on kulunut 12 neljä kertaa, voimme määrittää kuluneiden tuntien määrän täysin yksinkertaisella kaavalla Shamirin salainen jakamisjärjestelmäMissä Shamirin salainen jakamisjärjestelmä on jakajamme (tässä Shamirin salainen jakamisjärjestelmä), Shamirin salainen jakamisjärjestelmä on kerroin (kuinka monta kertaa jakaja menee alkuperäiseen lukuun ilman jäännöstä, tässä Shamirin salainen jakamisjärjestelmä) ja Shamirin salainen jakamisjärjestelmä on loppuosa, joka yleensä palauttaa modulo-operaattorikutsun (tässä Shamirin salainen jakamisjärjestelmä). Kaikkien näiden arvojen tunteminen antaa meille mahdollisuuden ratkaista yhtälön Shamirin salainen jakamisjärjestelmä, mutta jos kerroin puuttuu, emme koskaan voi palauttaa alkuperäistä arvoa.

Voimme osoittaa kuinka tämä parantaa järjestelmämme turvallisuutta soveltamalla mallia edelliseen esimerkkiimme ja käyttämällä Shamirin salainen jakamisjärjestelmä. Uusi polynomifunktiomme Shamirin salainen jakamisjärjestelmäja uudet kohdat Shamirin salainen jakamisjärjestelmä. Nyt avaintenpitäjät voivat jälleen käyttää polynomiinterpolaatiota funktiomme rekonstruoimiseen, vain tällä kertaa yhteen- ja kertolaskuoperaatioiden mukana tulee modulo-pelkistys Shamirin salainen jakamisjärjestelmä (esim Shamirin salainen jakamisjärjestelmä).

Oletetaan tätä uutta esimerkkiä käyttäen, että hyökkääjä oppi kaksi näistä uusista kohdista, Shamirin salainen jakamisjärjestelmäja julkista tietoa Shamirin salainen jakamisjärjestelmä. Tällä kertaa hyökkääjä, kaikkien hänellä olevien tietojen perusteella, tulostaa seuraavat toiminnot missä Shamirin salainen jakamisjärjestelmä on joukko positiivisia kokonaislukuja, ja Shamirin salainen jakamisjärjestelmä edustaa moduulikerrointa Shamirin salainen jakamisjärjestelmä.

Shamirin salainen jakamisjärjestelmä

Nyt hyökkääjämme löytää taas Shamirin salainen jakamisjärjestelmä, lasketaan Shamirin salainen jakamisjärjestelmä:

Shamirin salainen jakamisjärjestelmä

Sitten hän yrittää uudelleen Shamirin salainen jakamisjärjestelmäkorvaamalla Shamirin salainen jakamisjärjestelmä в Shamirin salainen jakamisjärjestelmä:

Shamirin salainen jakamisjärjestelmä

Tällä kertaa hänellä on vakava ongelma. Kaavasta puuttuu arvoja Shamirin salainen jakamisjärjestelmä, Shamirin salainen jakamisjärjestelmä и Shamirin salainen jakamisjärjestelmä. Koska näiden muuttujien yhdistelmiä on ääretön määrä, hän ei voi saada lisätietoa.

Turvallisuusnäkökohdat

Shamirin salainen jakamisjärjestelmä ehdottaa turvallisuus tietoteorian näkökulmasta. Tämä tarkoittaa, että matematiikka kestää jopa hyökkääjää, jolla on rajoittamaton laskentateho. Piiri sisältää kuitenkin edelleen useita tunnettuja ongelmia.

Esimerkiksi Shamirin järjestelmä ei luo tarkistettavat palaset, eli ihmiset voivat vapaasti esittää väärennettyjä fragmentteja ja häiritä oikean salaisuuden palauttamista. Vihamielinen fragmentinpitäjä, jolla on riittävästi tietoa, voisi jopa tuottaa toisen fragmentin vaihtamalla Shamirin salainen jakamisjärjestelmä oman harkintasi mukaan. Tämä ongelma ratkaistaan ​​käyttämällä todennettavissa olevat salaiset jakamisjärjestelmät, kuten Feldmanin järjestelmä.

Toinen ongelma on, että minkä tahansa fragmentin pituus on yhtä suuri kuin vastaavan salaisuuden pituus, joten salaisuuden pituus on helppo määrittää. Tämä ongelma voidaan ratkaista triviaalisesti pehmuste salaisuus mielivaltaisilla numeroilla kiinteään pituuteen saakka.

Lopuksi on tärkeää huomata, että turvallisuushuolemme voivat ulottua itse suunnittelua pidemmälle. Tosimaailman salaussovelluksissa on usein olemassa sivukanavahyökkäysten uhka, jolloin hyökkääjä yrittää poimia hyödyllistä tietoa sovelluksen suoritusajasta, välimuistista, kaatumisista jne. Jos tämä on huolenaihe, kehittämisen aikana tulee harkita huolellisesti suojatoimenpiteiden käyttöä, kuten funktioita ja vakioaikahakuja, muistin tallentamisen levylle estämistä ja monia muita seikkoja, jotka eivät kuulu tämän artikkelin soveltamisalaan.

esittely

Päälle tämä sivu Siellä on interaktiivinen esittely Shamirin salaisesta jakamisjärjestelmästä. Demonstraatio perustuu kirjastoon ssss-js, joka itsessään on suositun ohjelman JavaScript-portti ssss. Huomaa, että suurten arvojen laskeminen Shamirin salainen jakamisjärjestelmä, Shamirin salainen jakamisjärjestelmä и Shamirin salainen jakamisjärjestelmä voi kestää jonkin aikaa.

Lähde: will.com

Lisää kommentti