Shamirova tajna shema dijeljenja

Razmotrite scenarij u kojem trebate osigurati bankovni trezor. Smatra se apsolutno neosvojivim bez ključa, koji dobivate prvog dana rada. Vaš cilj je sigurno pohraniti ključ.

Recimo da ste odlučili držati ključ uvijek sa sobom, omogućavajući pristup pohrani prema potrebi. Ali brzo ćete shvatiti da takvo rješenje nije dobro skalirano u praksi, jer je vaša fizička prisutnost potrebna svaki put kada otvorite skladište. Što je s odmorom koji vam je obećan? Osim toga, još je strašnije pitanje: što ako ste izgubili jedini ključ?

S obzirom na godišnji odmor, odlučili ste napraviti kopiju ključa i povjeriti je drugom zaposleniku. Međutim, shvaćate da ni to nije idealno. Udvostručenjem broja ključeva udvostručujete i šanse za krađu ključeva.

U očaju uništavate duplikat i odlučujete prepoloviti originalni ključ. Sada biste pomislili da bi dvije osobe od povjerenja s fragmentima ključa morale biti fizički prisutne da uzmu ključ i otvore trezor. To znači da lopov treba ukrasti dva komada, što je dvostruko teže nego ukrasti jedan ključ. Međutim, ubrzo shvatite da ova shema nije puno bolja od samo jednog ključa, jer ako netko izgubi pola ključa, cijeli ključ se ne može vratiti.

Problem se može riješiti s nizom dodatnih ključeva i brava, ali ovaj će pristup brzo zahtijevati много ključeve i brave. Odlučili ste da bi idealan dizajn bio dijeljenje ključa tako da se sigurnost ne oslanja u potpunosti na jednu osobu. Također zaključujete da mora postojati neki prag za broj fragmenata tako da ako se jedan fragment izgubi (ili ako osoba ode na odmor), cijeli ključ ostane funkcionalan.

Kako podijeliti tajnu

O ovoj vrsti sheme upravljanja ključevima razmišljao je Adi Shamir 1979. kada je objavio svoj rad "Kako podijeliti tajnu". U članku se ukratko objašnjavaju tzv Shamirova tajna shema dijeljenja shema praga za učinkovito dijeljenje tajne vrijednosti (kao što je kriptografski ključ) u Shamirova tajna shema dijeljenja dijelovi. Tada, kada i samo kada barem Shamirova tajna shema dijeljenja od Shamirova tajna shema dijeljenja dijelovi su sastavljeni, možete jednostavno vratiti tajnu Shamirova tajna shema dijeljenja.

Sa sigurnosne točke gledišta, važno svojstvo ove sheme je da napadač ne bi trebao znati apsolutno ništa osim ako ima barem Shamirova tajna shema dijeljenja dijelovi. Čak i prisutnost Shamirova tajna shema dijeljenja dijelovi ne bi trebali pružati nikakve informacije. Ovo svojstvo nazivamo semantička sigurnost.

Interpolacija polinoma

Shamirova shema praga Shamirova tajna shema dijeljenja izgrađen oko koncepta polinomska interpolacija. Ako niste upoznati s ovim konceptom, zapravo je vrlo jednostavan. Zapravo, ako ste ikada nacrtali točke na grafikonu i zatim ih povezali linijama ili krivuljama, to ste već koristili!

Shamirova tajna shema dijeljenja
Kroz dvije točke možete povući neograničen broj polinoma stupnja 2. Da biste odabrali jedan od njih, potrebna vam je treća točka. Ilustracija: Wikipedia

Razmotrimo polinom prvog stupnja, Shamirova tajna shema dijeljenja. Ako želite iscrtati ovu funkciju na grafikonu, koliko točaka trebate? Pa, znamo da je ovo linearna funkcija koja tvori pravac i stoga su joj potrebne najmanje dvije točke. Zatim, razmotrite polinomsku funkciju drugog stupnja, Shamirova tajna shema dijeljenja. Ovo je kvadratna funkcija, pa su najmanje tri točke potrebne za iscrtavanje grafa. Što kažete na polinom trećeg stupnja? Najmanje četiri boda. I tako dalje.

Stvarno cool stvar u vezi ovog svojstva je da, s obzirom na stupanj polinomske funkcije i najmanje Shamirova tajna shema dijeljenja bodova, možemo izvesti dodatne točke za ovu polinomsku funkciju. Nazivamo ekstrapolacijom tih dodatnih točaka polinomska interpolacija.

Izmišljanje tajne

Možda ste već shvatili da ovdje Shamirova pametna shema stupa na scenu. Recimo našu tajnu Shamirova tajna shema dijeljenja - Je Shamirova tajna shema dijeljenja. Možemo se okrenuti Shamirova tajna shema dijeljenja do točke na grafikonu Shamirova tajna shema dijeljenja i doći do polinomske funkcije sa stupnjem Shamirova tajna shema dijeljenja, što zadovoljava ovu točku. Prisjetimo se toga Shamirova tajna shema dijeljenja će biti naš prag potrebnih fragmenata, pa ako postavimo prag na tri fragmenta, moramo odabrati polinomsku funkciju sa stupnjem dva.

Naš polinom će imati oblik Shamirova tajna shema dijeljenjaGdje Shamirova tajna shema dijeljenja и Shamirova tajna shema dijeljenja — slučajno odabrani prirodni brojevi. Samo konstruiramo polinom sa stupnjem Shamirova tajna shema dijeljenja, gdje je slobodni koeficijent Shamirova tajna shema dijeljenja - Ovo je naša tajna Shamirova tajna shema dijeljenja, te za svaki sljedeći Shamirova tajna shema dijeljenja izrazi postoji nasumično odabrani pozitivni koeficijent. Ako se vratimo na izvorni primjer i pretpostavimo da Shamirova tajna shema dijeljenja, tada dobivamo funkciju Shamirova tajna shema dijeljenja.

U ovom trenutku možemo generirati fragmente povezivanjem Shamirova tajna shema dijeljenja jedinstveni cijeli brojevi u Shamirova tajna shema dijeljenjaGdje Shamirova tajna shema dijeljenja (jer je to naša tajna). U ovom primjeru želimo distribuirati četiri fragmenta s pragom od tri, tako da nasumično generiramo bodove Shamirova tajna shema dijeljenja i pošaljite po jedan bod svakoj od četiri osobe od povjerenja, čuvarima ključa. To također dajemo ljudima do znanja Shamirova tajna shema dijeljenja, jer se to smatra javnom informacijom i neophodno je za oporavak Shamirova tajna shema dijeljenja.

Oporavak tajne

Već smo raspravljali o konceptu polinomske interpolacije i o tome kako je ona temelj Shamirove sheme praga Shamirova tajna shema dijeljenja. Kada bilo koja tri od četiri povjerenika žele vratiti Shamirova tajna shema dijeljenja, trebaju samo interpolirati Shamirova tajna shema dijeljenja sa svojim jedinstvenim točkama. Da bi to učinili, mogu odrediti svoje bodove Shamirova tajna shema dijeljenja i izračunajte Lagrangeov interpolacijski polinom pomoću sljedeće formule. Ako vam je programiranje jasnije od matematike, onda je pi u biti operator for, koji množi sve rezultate, a sigma je for, što sve zbraja.

Shamirova tajna shema dijeljenja

Shamirova tajna shema dijeljenja

u Shamirova tajna shema dijeljenja možemo to riješiti ovako i vratiti našu izvornu polinomsku funkciju:

Shamirova tajna shema dijeljenja

Pošto to znamo Shamirova tajna shema dijeljenja, oporavak Shamirova tajna shema dijeljenja učinjeno jednostavno:

Shamirova tajna shema dijeljenja

Korištenje nesigurne aritmetike cijelih brojeva

Iako smo Shamirovu temeljnu ideju uspješno primijenili Shamirova tajna shema dijeljenja, ostaje nam problem koji smo do sada ignorirali. Naša polinomska funkcija koristi nesigurnu aritmetiku cijelog broja. Imajte na umu da za svaki dodatni bod koji napadač dobije na grafu naše funkcije, ima manje mogućnosti za druge bodove. To možete vidjeti vlastitim očima kada crtate sve veći broj točaka za polinomsku funkciju koristeći aritmetiku cjelobrojnih brojeva. Ovo je kontraproduktivno za naš navedeni sigurnosni cilj, jer napadač ne bi trebao znati apsolutno ništa dok ne sazna barem Shamirova tajna shema dijeljenja fragmenti.

Da biste pokazali koliko je slab aritmetički krug cjelobrojnih brojeva, razmotrite scenarij u kojem je napadač dobio dva boda Shamirova tajna shema dijeljenja i zna javne informacije koje Shamirova tajna shema dijeljenja. Iz ove informacije može zaključiti Shamirova tajna shema dijeljenja, jednako dva, i ubacite poznate vrijednosti u formulu Shamirova tajna shema dijeljenja и Shamirova tajna shema dijeljenja.

Shamirova tajna shema dijeljenja

Napadač tada može pronaći Shamirova tajna shema dijeljenja, brojeći Shamirova tajna shema dijeljenja:

Shamirova tajna shema dijeljenja

Budući da smo definirali Shamirova tajna shema dijeljenja kao nasumično odabranih pozitivnih cijelih brojeva, postoji ograničen broj mogućih Shamirova tajna shema dijeljenja. Koristeći ove informacije, napadač može zaključiti Shamirova tajna shema dijeljenja, budući da će biti dovoljno sve što je veće od 5 Shamirova tajna shema dijeljenja negativan. Ovo se pokazalo točnim budući da smo utvrdili Shamirova tajna shema dijeljenja

Napadač tada može izračunati moguće vrijednosti Shamirova tajna shema dijeljenjazamjenjujući Shamirova tajna shema dijeljenja в Shamirova tajna shema dijeljenja:

Shamirova tajna shema dijeljenja

S ograničenim mogućnostima za Shamirova tajna shema dijeljenja postaje jasno kako je lako odabrati i provjeriti vrijednosti Shamirova tajna shema dijeljenja. Ovdje postoji samo pet opcija.

Rješavanje problema nesigurnom cjelobrojnom aritmetikom

Kako bi se uklonila ova ranjivost, Shamir predlaže korištenje modularne aritmetike, zamjenu Shamirova tajna shema dijeljenja na Shamirova tajna shema dijeljenjaGdje Shamirova tajna shema dijeljenja и Shamirova tajna shema dijeljenja — skup svih prostih brojeva.

Prisjetimo se na brzinu kako modularna aritmetika funkcionira. Sat s kazaljkama poznat je koncept. Ona koristi sat koji je Shamirova tajna shema dijeljenja. Čim satna kazaljka prijeđe dvanaest, vraća se na jedan. Zanimljivo svojstvo ovog sustava je da jednostavnim pogledom na sat ne možemo zaključiti koliko je okretaja napravila satna kazaljka. Međutim, ako znamo da je satna kazaljka četiri puta prešla 12, pomoću jednostavne formule možemo u potpunosti odrediti broj sati koji su prošli Shamirova tajna shema dijeljenjaGdje Shamirova tajna shema dijeljenja je naš djelitelj (ovdje Shamirova tajna shema dijeljenja), Shamirova tajna shema dijeljenja je koeficijent (koliko puta djelitelj ulazi u izvorni broj bez ostatka, ovdje Shamirova tajna shema dijeljenja), i Shamirova tajna shema dijeljenja je ostatak, koji obično vraća modulo poziv operatora (ovdje Shamirova tajna shema dijeljenja). Poznavanje svih ovih vrijednosti omogućuje nam rješavanje jednadžbe za Shamirova tajna shema dijeljenja, ali ako promašimo koeficijent, nikada nećemo moći vratiti izvornu vrijednost.

Možemo pokazati kako ovo poboljšava sigurnost naše sheme primjenom sheme na naš prethodni primjer i korištenjem Shamirova tajna shema dijeljenja. Naša nova polinomska funkcija Shamirova tajna shema dijeljenja, i nove bodove Shamirova tajna shema dijeljenja. Sada čuvari ključeva ponovno mogu koristiti interpolaciju polinoma za rekonstrukciju naše funkcije, samo ovaj put operacije zbrajanja i množenja moraju biti popraćene modulo redukcijom Shamirova tajna shema dijeljenja (npr Shamirova tajna shema dijeljenja).

Koristeći ovaj novi primjer, pretpostavimo da je napadač naučio dvije od ovih novih točaka, Shamirova tajna shema dijeljenja, i javno informiranje Shamirova tajna shema dijeljenja. Ovaj put napadač na temelju svih informacija koje ima ispisuje sljedeće funkcije, gdje Shamirova tajna shema dijeljenja je skup svih pozitivnih cijelih brojeva, i Shamirova tajna shema dijeljenja predstavlja koeficijent modula Shamirova tajna shema dijeljenja.

Shamirova tajna shema dijeljenja

Sada naš napadač ponovno pronalazi Shamirova tajna shema dijeljenja, računajući Shamirova tajna shema dijeljenja:

Shamirova tajna shema dijeljenja

Zatim pokušava ponovno Shamirova tajna shema dijeljenjazamjenjujući Shamirova tajna shema dijeljenja в Shamirova tajna shema dijeljenja:

Shamirova tajna shema dijeljenja

Ovaj put ima ozbiljan problem. U formuli nedostaju vrijednosti Shamirova tajna shema dijeljenja, Shamirova tajna shema dijeljenja и Shamirova tajna shema dijeljenja. Budući da postoji beskonačan broj kombinacija ovih varijabli, on ne može dobiti nikakve dodatne informacije.

Sigurnosna razmatranja

Shamirova shema dijeljenja tajni sugerira sigurnost sa stajališta informacijske teorije. To znači da je matematika otporna čak i protiv napadača s neograničenom računalnom snagom. Međutim, sklop i dalje sadrži nekoliko poznatih problema.

Na primjer, Shamirova shema ne stvara fragmenti koje treba provjeriti, to jest, ljudi mogu slobodno predstavljati lažne fragmente i ometati oporavak ispravne tajne. Neprijateljski čuvar fragmenta s dovoljno informacija mogao bi čak proizvesti još jedan fragment promjenom Shamirova tajna shema dijeljenja prema vlastitom nahođenju. Ovaj problem se rješava pomoću provjerljive sheme dijeljenja tajni, kao što je Feldmanova shema.

Drugi problem je što je duljina bilo kojeg fragmenta jednaka duljini odgovarajuće tajne, pa je duljinu tajne lako odrediti. Ovaj problem se može riješiti trivijalnim podstava tajna s proizvoljnim brojevima do fiksne duljine.

Na kraju, važno je napomenuti da se naša zabrinutost za sigurnost može proširiti izvan samog dizajna. Za kriptografske aplikacije u stvarnom svijetu često postoji prijetnja od napada sporednih kanala gdje napadač pokušava izvući korisne informacije iz vremena izvršavanja aplikacije, predmemoriranja, rušenja itd. Ako je to zabrinjavajuće, tijekom razvoja treba pažljivo razmotriti korištenje zaštitnih mjera kao što su funkcije i pretraživanja u konstantnom vremenu, sprječavanje spremanja memorije na disk i brojna druga razmatranja koja su izvan opsega ovog članka.

demo

Na ovu stranicu Postoji interaktivna demonstracija Shamirove sheme dijeljenja tajni. Demonstracija na temelju knjižnice ssss-js, koji je i sam JavaScript priključak popularnog programa ssss. Imajte na umu da izračunavanje velikih vrijednosti Shamirova tajna shema dijeljenja, Shamirova tajna shema dijeljenja и Shamirova tajna shema dijeljenja može potrajati.

Izvor: www.habr.com

Dodajte komentar