nevena laković · tajne mora biti generisan na takav način da ne smije sadržati informaciju koja...
TRANSCRIPT
UNIVERZITET CRNE GORE
Prirodno-matematički fakultet Podgorica
Nevena Laković
Dijeljenje tajne
Specijalistički rad
Podgorica, 2015.
UNIVERZITET CRNE GORE
Prirodno-matematički fakultet Podgorica
Dijeljenje tajne
Specijalistički rad
Kriptografija Nevena Laković
Mentor: Vladimir Božović Matematika i računarske nauke
Podgorica, septembar 2015.
Apstrakt
U ovom radu ćemo prikazati protokole između dvije ili više osoba, u kojem be-
zbjednosni ciljevi različitih strana mogu biti u konfliktu. Fokusiraćemo se na proto-
kole dijeljenja tajne koji omogućavaju da se tajni podatak dijeli na više djelova, pri
čemu dobijeni djelovi ne govore ništa o cjelini. Cilj ove podjele da se omogući rekon-
strukcija početnog tajnog podatka koristeći unaprijed zadati broj validnih djelova,
odnosno nekog kvalifikovanog podskupa originalnog skupa djelova. Ovaj koncept je
vrlo značajan kriptografski alat sa brojnim primjenama u praksi. Jednu, konkretnu i
vrlo značajnu primjenu ćemo predstaviti u ovom radu.
3
Abstract
In this work we will show the protocols between two or more persons, in which
security goals of different sides could be in conflict. We focus on the secret sharing
protocols that enable dividing secret information into several parts, with the property
that the resulting parts are not saying anything about the whole. The aim of this
division is to enable the reconstruction of initial secret information using pre-defined
number of valid parts or a qualified subset of the original set of parts. This concept
is very important cryptographic tool with numerous applications in practice. One
specific and very important application will be presented here.
4
Sadržaj
5
Glava 1
Uvod
Razvoj elektronskih komunikacija doveo je do toga da se razmjena informacija
povjerljive sadržine odvija svakodnevno. Bilo da je u pitanju razmjena elektronske
pošte između poslovnih partnera ili pak korišćenja elektronskog bankarstva ili nekog
drugog vida razmjene povjerljivih informacija, bitno je da ne dođe do neovlašćenog
pristupa podacima koji se šalju. Da bi se prenos ovakvih informacija učinio sigurni-
jim, one se modifikuju na takav način da osoba kojoj one nisu namjenjene ne može da
ih protumači u slučaju da dođe u njen posjed. U cilju zaštite podatka od neželjenog
uništenja, potrebno je da napravimo njegove kopije na što više lokacija. Međutim,
proporcionalno sa povećanjem broja lokacija, povećava se rizik od neovlašcenog pri-
stupa i ovakav koncept je suprotan konceptu sigurnosti u kome broj kopija treba
da bude što manji. Šeme dijeljenja tajne prevazilaze ovaj problem, tako što se na
razlićitim lokacijama ne ostavlja kompletan podatak, već njegovi djelovi.
1
Glava 2
Uvod u kriptografiju
Kriptografija je naučna disciplina koja se bavi proučavanjem metoda za slanje po-
ruka u određenom obliku u kome su čitljive samo onom kome su i namijenjene. Sama
riječ kriptografija je grčkog porijekla i u doslovnom prevodu znači "tajno pisanje".
Osnovni zadatak kriptografije je da omogući dvijema osobama da komuniciraju preko
nesigurnog komunikacionog kanala na takav način da treća osoba, koja može nadzi-
rati komunikacioni kanal, ne može razumjeti samu poruku. Poruku koju treba poslati
obično nazivamo otvoreni tekst. Proces maskiranja poruke, koji ima svrhu sakrivanja
njenog originalnog sadržaja, zove se enkripcija ili šifrovanje. Rezulat ovog procesa se
naziva kriptovani tekst ili kriptogram. Inverznim procesom se od enkripcije, koji se
naziva dekripcija ili dešifrovanje, dobija se početni - otvoreni tekst. [?]
otvoreni tekst kriptovani tekst otvoreni tekst- -enkripcija dekripcija
Označimo sa P otvoreni tekst a sa C kriptovani tekst. Pod tekstom možemo pod-
razumijevati proizvoljan tekstualni fajl, niz bitova, digitalizovanu sliku... U opštem
slučaju se poruka prvo prevodi u neki cio broj ili niz brojeva čime bi se omogućila
manipulacija pomoću aritmetike računara (šifrovanje i dešifrovanje obično obavlja ra-
čunar). Bez gubljenja opštosti ćemo nadalje pod porukom podrazumijevati cio broj.
Šifrovanje i dešifrovanje možemo opisati funkcijama E i D za koje važi da je
2
C = E(P ), P = D(C), D(E(P )) = P.
Kriptografski algoritam možemo posmatrati kao funkciju koja se koristi za šifrovanje
odnosno dešifrovanje. Pošiljalac i primalac moraju da se dogovore oko procedure ši-
frovanja odnosno dešifrovanja. Kriptografski algoritmi koriste ključ, koji obezbjeđuje
informacije za jednostavno šifrovanje od strane pošiljaoca i lako dešifrovanje na strani
primaoca. Disciplina koja se bavi razbijanjem kriptovanog teksta naziva se kripto-
analiza. Oblast matematike koja obuhvata i kriptografiju i kriptpanalizu naziva se
kriptologija.
Prethodno definisane funkcije enkripcije i dekripcije, E i D, možemo definisati u za-
visnosti od parametra k, odnosno ključa. Skup K kojem pripada parametar, odnosno
kluč k, zovemo domen ključa. Stoga, govorimo o funkcijama enkripcije i dekripcije
koje zavise od ključa k i pišemo Ek odnosno Dk. U opštem slučaju ključevi za šifro-
vanje i dešifrovanje ne moraju biti jednaki. U tom slučaju imamo
C = Ek1(P ) i P = Dk2(C).
2.1 Podijela kriptografskih algoritama
Prema vrsti ključa možemo da razlikujemo:
• Simetrične algoritme - algoritmi kod kojih se ključ za dešifrovanje može izračunati
na osnovu ključa za šifrovanje i obrnuto. U velikom broju slučajeva su ovi ključevi
zapravo identični. Ovi algoritmi nazivaju se jos i algoritmima sa tajnim ključem.
Simetrični algoritmi se mogu dalje podijeliti na: lančane šifre i blokovske šifre. Lan-
čane šifre obrađuju bit po bit otvorenog teksta dok blokovske rade nad otvorenim
tekstom podijeljenim na grupe bitova.
3
• Asimetrične algoritme - algoritmi sa takozvanim javnim ključem. Ključ za šifro-
vanje je javan i različit je od ključa za dešifrovanje. Naravno ključ za dešifrovanje,
kod ovog tipa algoritama, ne može se (u bilo kom razumnom vremenu) izračunati na
osnovu javnog ključa.
2.2 Kriptoanalitički napadi
Osnovni cilj kriptografije je očuvanje tajnosti sadržaja poruke od nekog ko ”prislu-
škuje” kanal veze - napadača. Sa druge strane vidjeli smo da je kriptoanaliza nauka
određivanja otvorenog teksta na osnovu poruke (bez samog poznavanja ključa). Po-
stoji nekoliko tipova kriptoanalitičkih napada. Osnovna podjela je izvršena prema
količini inforomacija koju sam napadač poznaje (u svim varijantama se predpostavlja
da napadač poznaje algoritam za šifrovanje):
1. Napad na osnovu kriptovanog teksta
Napad na osnovu kriptovanog teksta predstavlja najopštiji i najteži napad. Kriptoa-
nalitičar ima na raspolaganju određeni broj kriptograma: C1, C2, . . . , Cn dobijenih od
nepoznatih poruka P1, P2, . . . , Pn. Cilj je dešifrovati ove poruke i naći algoritam za
dešifrovanje novih poruka, odnosno naći ključ k koji je korišćen prilikom šifrovanja.
2. Napad na osnovu parova (otvoren tekst, kriptovan tekst)
U ovom slučaju kriptoanalitičar poseduje određeni broj poruka i njihovih kriptograma:
(P1, C1), (P2, C2), . . . , (Pn, Cn). Kao i u prethodnom slučaju, potrebno je naći ključ
kojim je vršeno šifrovanje.
3. Napad na osnovu izabranog otvorenog teksta
Ova klasa napada je zahtjevnija od prethodne dva. Naime, podrazumijavamo da krip-
toanalitičar ima pristup mašini za enkripciju određen broj puta. Očigledno, ukoliko
postoje uslovi za ovakav napad, onda kriptoanalitičar lakše dolazi do informacija o
4
samom ključu.
Sigurnost algoritma se mjeri preko broja operacija koje treba izvršiti prilikom njego-
vog razbijanja. Za neki algoritam kažemo da je bezuslovno siguran ukoliko je nemo-
guće rekonstruisati otvoreni tekst bez obzira na količinu infromacija koju poseduje.
Nama su, naravno, od interesa oni algoritmi koji su praktično sigurni, čije je raz-
bijanje praktično neizvodljivo u odnosu na sadašnje računarske kapacitete i poznate
algoritme razbijanja.
5
Glava 3
Šema dijeljenja tajne
Tajno dijeljenje su svaki ponaosob izumjeli Adi Šamir i Džordž Blejkli 1979. go-
dine. U problemu dijeljenja tajne, tajnu ćemo označiti sa s i podijelićemo je na n
dijelova. Dijelove tajne ćemo označiti sa Di, i = 1, . . . , n i to su ključevi. Spajanjem
dovoljnog broja ključeva dobijamo tajnu s. Broj ključeva koji je potreban da bi se
tajna rekonstruisala zove se prag. Dio podatka, označen kao ključ u šemi dijeljenja
tajne mora biti generisan na takav način da ne smije sadržati informaciju koja bi
otkrila nešto o samoj tajni s ili o nekom drugom ključu.
Zadatak dijeljenja tajnog podatka na n djelova D1, D2, . . . , Dn treba da zadovolji slje-
deće:
• Sastavljanjem bilo kojih k, k ≤ n, ili više Di djelova rekonstruiše se početni podatak
S.
• Sastavljanjem bilo kojih k − 1 ili manje Di djelova nije moguće otkriti početni po-
datak S.
Ovako definisan problem naziva se dijeljenje tajne sa pragom k-od-n . Ako je k = n,
onda su potrebni svi djelovi da bi se tajna rekonstruisala, pa je prag jednak broju
ključeva. Šemu dijeljenja tajne odlikuje visok stepen sigurnosti i otpornost na krađu
6
podataka, jer i sa k− 1 ključeva ne smije se saznati tajna. Visok stepen pouzdanosti
ogleda se u tome što i sa uništavanjem n− k ključeva možemo generisati tajnu. [?]
3.1 Pristupne strukture
Primjer 1. Tajnu s, s ∈ N ,treba da podijelimo između četiri osobe A,B,C i D , tako
da spajanje dva ključa {A,B} , {B,C} ili {C,D} omogućava rekonstruisanje tajne, a
osobe {A,D} spajanjem svojih ključeva ne mogu rekonstruisati tajnu.
Nasumično biramo ključeve {D1 , D′1 , D2, D′2 , D3 , D′3 } ∈ N tako da važi uslov:
Di + D′i = s , i=1,2,3.
Ključ D1 daćemo osobi A, ključeve D′1 i D2 osobi B, D′2 i D3 osobi C i ključ D′3 osobi
D. Ovakva podjela ključeva zadovoljava traženi uslov.
Familije skupova koji rekonstruišu tajnu, kao i proširenja tih skupova sa ostalim
ključevima nazivaju se kvalifikovane familije. Ovakva struktura Γ koja ima pristup
(eng. access structure), sastavljena je od podskupova skupa {1, . . . , n}. Tada su
ključevi Di podijeljeni po prioritetima i ovo se radi kad postoji potreba za dijeljenjem
ključeva osobama na različitim hijerarhijskim nivoima ili potreba dijeljenja podataka
na nepouzdanim lokacijama. U primjeru 1 imamo tri kvalifikovana skupa {A,B} ,
{B,C} i {C,D}, ali i skupovi kao što su {A,B,C},{B,C,D} i {A,B,C,D} su takođe
kvalifikovane familije.
Definicija 1. Monotona struktura na skupu P je kolekcija Γ ako važi:
• P ∈ Γ
• Ako je A ∈ Γ i B skup takav da važi: A ⊂ B ⊂ P , tada je i B ∈ Γ .
U gornjem prijmeru pristupna struktura je monotona i to je svojstvo koje važi za
sve pristupne strukture kod dijeljenja tajni. Za monotonu strukturu važi da skupovi
7
iz Γ dolaze u lancima A ⊂ B ⊂ C ⊂ P . Skup koji čini početak lanca ćemo zvati
minimalni kvalifikovani skup i njega ćemo na pristupnoj strukturi Γ označavati sa
m(Γ). Sada možemo dati neformalnu definiciju, šta znači šema dijeljenja tajni.
Definicija 2. Šema dijeljenja tajni za monotonu pristupnu strukturu Γ nad skupom
P i prostorom tajni S je par algoritama koji se zovu dijeljenje i rekonstrukcija sa
sledećim svojstvima:
• Za tajnu s ∈ S, algoritam Dijeljenje (S,Γ) određuje vrijednost sA za svaki skup
A ∈ P . Vrijednost sA se naziva udio tajne s za dati skup A.
• Ulazni podatak za algoritam Rekonstrukcija je sO, za neki skup O ∈ P. Ovaj
algoritam vraća tajnu s ako je O ∈ Γ, a u suprotnom se ne vraća ništa.
Šema dijeljenja tajne se smatra sigurnom ako napadač ne može da sazna osnovne
informacije o tajni bez pristupa kvalifikovanom skupu. Takve šeme ćemo zvati be-
zbjedne šeme.
Primjer 2. Imamo skup P={A, B, C, D} sa pristupnom strukturom
Γ={{A,B}, {A,C} ,{A,D}, {B,C },{B,D},{C,D} ,{A,B,C} ,{A,B,D}, {B,C,D},{A,B,C,D}}
Minimalni kvalifikovani skup je {{A,B}, {A,C} ,{A,D}, {B,C },{B,D},{C,D}}
Primjetimo da bilo koja dva člana iz skupa P mogu rekonstruisati tajnu i takvu šemu
zovemo pristupna struktura sa pragom 2-od-4. Pristupne strukture možemo posma-
trati preko Bulovih funkcija. Razmotrimo skup m(Γ) minimalnog kvalifikovanog skupa
i definišimo formulu: ∨O∈m(Γ)
(∧O∈O
O
)
Naš prvi primjer možemo zapisati u obliku:
( A ∧ B) ∨ (B ∧ C) ∨ (C ∧ D).
Ovo je primjer formule koja je zadana u disjunktivnoj normalnoj formi [?]
8
3.2 Princip dijeljenja tajni
Upoznaćemo dvije metode za izgradnju šeme dijeljenja tajne za proizvoljnu mo-
notonu pristupnu strukturu. Pretpostavljaćemo da je prostor tajni S skup bitova
dužine i i uzećemo da s ∈ S označava tajnu koju želimo da podijelimo.
3.2.1 Ito-Nišizeki-Saito dijeljenje tajne
Ova šema dijeljenja tajni koristi DNF Bulove formule koje smo predstavili u pret-
hodnom dijelu. Svako ∨ se konvertuje u spajanje operacija, a svako ∧ u ⊕ operaciju.
Algoritam je sljedeći: Za svaki minimalni kvalifikovani skup O ∈ m(Γ) gene-
risaćemo dijeljenja si ∈ S, pri čemu je 1 ≤ i ≤ l slučajno, gdje je l =| O | i važi
s1 ⊕ . . .⊕ sl = s. Osoba A dobija udio si ako ima poziciju i u skupu O .
Primjer 3. Imamo formulu
(P ∧G) ∨ (V ∧ S ∧G).
Generišimo dijeljenja pet elemenata si ∈ S tako da
s = s1 ⊕ s2
= s3 ⊕ s4 ⊕ s5.
Četiri dijeljenja su definisana na sledeći način:
sP = s1
sV = s3
sS = s4
sG = s2 || s5 .
Primjetimo da osoba G posjeduje dva puta više podataka u odnosu na ostale, tako
da ova šema nije efikasna. Idealno bi bilo kad bi svaka osoba posjedovala n-ti dio
9
informacije kako bi se rekonstruisala tajna od n bita.
3.2.2 Replikacija dijeljenja tajni
U ovoj šemi prvo ćemo da napravimo skupmaksimalnih nekvalifikovanih sku-
pova. To su skupovi svih osoba, takvi da, ako dodamo jednu novu osobu dobijamo
kvalifikovani skup. Ove skupove ćemo obilježiti sa A1, . . . , At dok su Bi = P\Ai
njihovi teorijski komplementi. Potom, podijelimo s na t dijelova, tako da svaki do
djelova pripadne skupu Bi. Dakle, imamo
s = s1 ⊕ . . .⊕ st.
Osobi je data tajna si ako je ona iz skupa Bi.
Primjer 4. Neka su dati maksimalni nekvalifikovani skupovi
A1 = {P, V, S} , A2 = {V,G} i A3 = {S,G}
Njihovi komplementi su skupovi
B1 = {G} , B2 = {P, S} i B3 = {P, V }.
Generišimo tri dijeljenja s1, s2 i s1, tako da važi s = s1 ⊕ s2 ⊕ s3 a zatim definišimo
dijeljenja kao:
sP = s2 || s3,
sV = s3,
sS = s2,
sG = s1.
Dakle, samo kvalifikovani skupovi mogu rekonstruisati tajnu.
Primjer 5. Za prag 2-od-4 pristupne strukture imamo sljedeće nekvalifikovane sku-
pove:
10
A1 = {A}, A2 = {B}, A3 = {C} i A4 = {D}.
Pri formiranju komplemenata dobijamo:
B1 = {B,C,D} , B2 = {A,C,D} , B3 = {A,B,D} i B4 = {A,B,C}.
Formiramo dijeljenje na četiri osobe tako da: s = s1 ⊕ s2 ⊕ s3 ⊕ s4 i
sA = s2 || s3 || s4,
sB = s1 || s3 || s4,
sC = s1 || s2 || s4,
sD = s1 || s2 || s3.
Iako prethodne dvije konstrukcije osiguravaju mehanizam za izgradnju šeme dije-
ljenja tajne za bilo koju monotonu pristupnu strukturu, one nisu dovoljno efikasne.
Posebno su loše zbog praga pristupne strukture, pogotovo ako se broj osoba u skupu
povećava. U nastavku je prikazan efikasan mehanizam za prag dijeljenja tajni, koji
se zove Šamirovo dijeljenje tajne.
11
Glava 4
Rid Solomonovi kodovi
Korekcija grešaka na kodovima je mehanizam za prenos podataka od neke tačke
A do tačke B, takav da se određene greške koje se javljaju tokom prenosa (šum,
zlonamjerna promjena podataka...) mogu ispraviti. Prvi problem na koji nailazimo
je detekcija greške i u tom slučaju nas samo zanima da li je došlo do promjene u
podacima ili ne. U kriptografiji, za svaku grešku "krivimo"napadača, tako da često
pribjegavamo složenim mehanizmima za rješavanje problema.
Drugi problem je ispravljanje grešaka. Jasno, nije moguće se ispraviti sve greške,
ali je moguće ispraviti određen broj koji ne prelazi neki gornji limit. Za ovo poglavlje
ćemo podrazumijavti da je čitalac upoznat sa elementarnim konceptima iz Teorije
kodiranja. Jedan tip popularnih kodnih sistema, a na koje ćemo obratiti više pažnje,
su Rid-Solomonovi kodovi.
Razmotrimo skup polinoma, stepena manjeg ili jednakog t, nad konačnim poljem Fq
P = {f0 + f1X + · · ·+ ftXt : fi ∈ Fq}.
Ideja je da se svaka riječ dužine t zapravo odgovara jednom polinomu iz naznačenog
skupa. Veličina skupa mogućih riječi dužine t je qt+1. Svaku od datih riječi kodiramo
tako što polinom evaluiramo nad određenom skupu tačaka iz nekog skupa X. Dakle,
12
Rid-Solomonov kod je zapravo skup
C = {f(x1), . . . , f(xn) : f ∈ P , xi ∈ X}.
Iz nekih praktičnih razloga koji će biti jasni kasnije, podrazumijavamo da 0 6∈ X.
Sljedeći primjer pokazuje kako se vrši kodiranje podatka.
Primjer 6. Pretpostavimo da Rid-Solomonov kod ima parametre q=101, n=7, t = 2
i X = {1, 2, 3, 4, 5, 6, 7}. Pretpostavimo da želimo da kodiramo riječ (10, 57, 68). Kao
što smo već ukazali, ova riječ se može predstaviti u obliku polinoma
f = 20 + 57X + 68X2.
Datu riječ kodiramo kao f(i) (mod q) za i = 1, . . . , 7 i dobijamo
c = (44, 2, 96, 86, 83, 14).
Dakle, originalna riječ (10, 57, 68) se kodira kao c = (44, 2, 96, 86, 83, 14).
4.1 Dekodiranje Rid-Solomonovih kodova
U procesu dekodiranja kod Rid-Solomonovih kodova, prvo ćemo se baviti jedno-
stavnijim slučajevima i pretpostaviti da do greške pri prenosu podataka nije došlo.
Na osnovu date kodne riječi c = (c1, . . . , cn), tražimo odgovarajući polnom f , odnosno
koeficijente fj, tako da važi:
f =t∑
j=0
fjXj.
13
Polinom stepena t je jednoznačno određen sa t + 1 tačkom. Dok je t < n možemo
vratiti f , kad nema grešaka, tako što generišemo n linearnih jednačina putem:
ci = f(xi), xi ∈ X.
Imamo sistem linearnih jednačina:
c1 = f0 + f1x1 + · · ·+ ftxt1
...
cn = f0 + f1x1 + · · ·+ ftxtn
Rješavanjem ovog sistema jednačina u polju Fq možemo dobiti polinom f , a samim
tim i podatak, odnosno originalnu riječ. Polinom f možemo dobiti i korišćenjem
Lagranžove interpolacije. Pretpostavimo da smo prvo izračunali polinome
δi(X) =∏
xj∈X,j 6=i
X − xjxi − xj
, 1 ≤ i ≤ n
Pri čemu za svako i važe svojstva:
• δi(xi) = 1.
• δi(xj) = 0, i 6= j.
• deg δi(X) = n− 1.
Konačno, Lagranžovom interpolacijom dobijamo polinom
f(X) =n∑
i=1
ci · δi(X).
Prethodne osobine polinoma δi(X) nasleđuje i polinom f(X):
• f(xi) = ci, za svako i.
• deg f(X) ≤ n− 1.
Dakle, Lagranžova interpolacija nalazi jedinstven polinom koji sadrži n datih tačaka.
14
4.2 Detekcija greške
Vidjeli smo da pomoću Lagranžove interpolacije na kodnoj riječi možemo rekon-
struisati polinom stepena t kada nema grešaka. Međutim, kada greške postoje u
primljenoj kodnoj riječi manja je vjerovatnoća da se dobije važeći polinom. U tom
slučaju, služimo se algoritmom koji otkriva i ispravlja greške.
Koristićemo primjer 6, s tim što ćemo pretpostaviti da smo greškom prilikom prenosa
dobili riječ
c = (44, 2, 25, 23, 86, 83, 14).
Drugim riječima to je jednako poslatoj kodnoj riječi osim što je na trećoj poziciji 96
zamjenjen sa 25. U postupku Lagranžove interpolacije, po modulu q = 101, dobijamo
δ1(X) = 70X6 + 29X5 + 46X4 + 4X3 + 43X2 + 4X + 7
δ2(X) = 85X6 + 12X5 + 23X4 + 96X3 + 59X2 + 49X + 80
δ3(X) = 40X6 + 10X5 + 83X4 + 23X3 + 48X2 + 64X + 35
δ4(X) = 14X6 + 68X5 + 33X4 + 63X3 + 78X2 + 82X + 66
δ5(X) = 40X6 + 90X5 + 99X4 + 67X3 + 11X2 + 76X + 21
δ6(X) = 85X6 + 49X5 + 91X4 + 91X3 + 9X2 + 86X + 94
δ7(X) = 70X6 + 45X5 + 29X4 + 60X3 + 55X2 + 43X + 1,
odnosno:
f(X) = 44·δ1(X)+· · ·+14·δ7(X) = 60+58X+94X2+84X3+66X2+66X4+98X5+89X6.
Kako je polinom stepena šest, a ne stepena t = 2, prijemnik zna da postoji najmanje
jedna greška u kodnoj riječi koju je dobio. Zasad, nije jasno gdje je greška niti kako
je ispraviti.
15
4.3 Berlekamp-Velč algoritam
Sada ćemo predstaviti efikasnu metodu za ispravljanje grešaka u klasi Rid-Solomonovih
kodova, koja se naziva Berlekamp-Velč algoritam. Ideja je da se interpolira polinom
u dvije promjenlive kroz date tačke. Pretpostavimo da nam je data kodna riječ sa s
nedostajućih vrijednosti, a da je broj grešaka ograničen sa:
e < t <n− s
3
To znači da je zapravo dato n − s vrijednosti yi = f(xi). Dakle, znamo da među
parovima (xi, yi) ima najviše e pogrešnih, odnosno onih koji ne pripadaju traženom
polinomu f(X). Kao što smo najavili, prvo konstruišemo polinom sa dvije promjen-
ljive:
Q(X, Y ) = f0(X)− f1(X) · Y,
gdje je f0 polinom stepena najviše 2 · t a f1 stepena t. Pretpostavimo da važi uslov
f1(0) = 1 i neka su koeficijenti polinoma fi, i = 1, 2 neke promjenljive koje želimo
da odredimo. Na osnovu stepena ova dva polinoma i dodatnog uslova f1(0) = 1,
primjećujemo da je broj promjenljivih dat sa:
v = (2 · t+ 1) + (t+ 1)− 1 = 3 · t+ 1.
Želimo da polinom Q(X, Y ) interpoliramo našim tačkama (xi, yi). Zamjenom vrijed-
nosti xi i yi dobijamo linearnu jednačinu sa nepoznatim koeficijenatima polinoma fi.
Budući da imamo n−s tačaka, broj linearnih jednačina je n−s. Nakon što odredimo
f0 i f1 računamo
f =f0
f1
.
16
Da bi potvrdili ovo, posmatrajmo polinom sa jednom promjenljivom
P (X) = Q(X, f(X)),
gdje je f(X) polinom koji želimo da odredimo. Imamo degP (X) ≤ 2t. Polinom
P (X) ima najmanje n− s− e nula, odnosno validnih parova. Broj nula je najmanje
n− s− e > n− e− t > 3t− t = 2t, e < t <n− s
3.
Dakle, polinom P (X) ima više nula nego što je njegov stepen, pa to mora biti nula
polinom, odnosno
f0 − f1 · f = 0, gdje jef1 6= 0.
Vratimo se na prethodni primjer. Neka nam je proslije]ena netačna kodna riječ
c = (44, 2, 25, 23, 86, 83, 14).
Znamo da je osnovni kod vezan za polinome stepena t = 2 , pa pošto je 2 = t <
n−s3
= 73tačno, onda znamo da možemo ispraviti grešku. Koristeći pomenuti metod
želimo da odredimo polinom Q(X, Y ) forme
Q(X, Y ) = f0,0 + f1,0X + f2,0X2 + f3,0X
3 + f4,0X4 − (1 + f1,1X + f2,1X
2)Y
17
koji prolazi kroz sedam datih tačaka. Dakle, imamo šest promjenljivih koje želimo da
odredimo i sedam jednačina. Ove jednačine čine linearni sistem po modulu q = 101,
1 1 12 13 14 −44 · 1 −44 · 12
1 2 22 23 24 −2 · 2 −2 · 22
1 3 32 33 34 −25 · 3 −25 · 32
1 4 42 43 44 −23 · 4 −23 · 42
1 5 52 53 54 −86 · 5 −86 · 52
1 6 62 63 64 −83 · 6 −83 · 62
1 7 72 73 74 −14 · 7 −14 · 72
·
f0,0
f1,0
f2,0
f3,0
f4,0
f1,1
f2,1
=
44
2
25
23
86
83
14
Rješavajući sistem dobijamo:
1 1 1 1 1 57 57
1 2 4 8 16 97 93
1 3 9 27 81 26 78
1 4 16 64 54 9 36
1 5 25 24 19 75 72
1 6 36 14 84 7 42
1 7 49 40 78 3 21
·
f0,0
f1,0
f2,0
f3,0
f4,0
f1,1
f2,1
=
44
2
25
23
86
83
14
(mod101).
pa je:
(f0,0, f1,0, f2,0, f3,0, f4,0, f1,1, f2,1) = (20, 84, 49, 11, 0, 67, 0).
Dobijamo dva polinoma
f0(X) = 20 + 84X + 49X2 + 11X3
f1(X) = 1 + 67X.
18
Na kraju, nalazimo:
f(X) =f0(X)
f1(X)= 20 + 57X + 68X2
što je polinom sa kojim smo počeli na početku ove oblasti. Dakle, ispravili smo grešku
u prenešenoj kodnoj riječi c. [?]
19
Glava 5
Šamirovo dijeljenje tajni
Šamirov algoritam je algoritam dijeljenja tajne sa pragom (t + 1)-od-n. Pretpo-
stavićemo da postoji autoritet koji želi da podijeli tajnu s ∈ Fq. On generiše tajni
polinom f(X)
f(X) = s+ f1X + · · ·+ ftXt,
stepena t pri čemu je f(0) = s, tako što na slučajan način bira fi ∈ Fp, za i = 1, . . . , t.
Potom, izvršava evaluaciju ovog polinoma na primjer, na skupu X = {1, 2, . . . , n},
i dobija si = f(i). Primjetimo da je vektor
(s1, . . . , sn)
kodna riječ Rid-Solomonovog koda. Sada, svakom od n članova algoritma za dijeljenje
tajne opredeljuje uređeni par (i, si), za i = 1, . . . , n. Dakle, ukoliko bilo kojih t + 1
članova zajedno prilože svoje opredijeljenje podatke, tada se originalni polinom može
povratiti preko Lagranžove interpolacije pa otuda i tajna s. Zapravo, rekonstrukcija
tajne se može efikasnije izvesti korišćenjem jednačine
s = f(0) =n∑
i=1
siδi(0).
20
Sada, ako za skup Y ⊂ X definišemo vektor rY kao rY = (rxi,Y , . . . , rxi,Y )xi∈Y dobi-
jamo javnu rekombinaciju vektora, gdje važi
rxi,Y =∏
xj∈Y,xj 6=xi
−xixi − xj
.
Ako iz podskupa Y ⊂ X dobijemo dio tajni natrag, gdje je |Y | > t, možemo rekon-
struisati tajnu s jednostavnim sumiranjem:
s =∑xi∈Y
rxi,Y · si.
Takođe, ako od skupa članova Y dobijemo neke moguće vrijednosti dijeljenja, tada
možemo povratiti originalnu tajnu preko Berlekamp-Velč algoritma za dekodiranje
Rid-Solomonovog koda uz prisustvo grešaka. Pretpostavimo da je broj grešaka ogra-
ničen sa e, gdje je
e < t <|Y |3.
Interesantno svojstvo Šamirovog dijeljenja tajni je da ga je moguće potpuno sprovesti
bez centralnog autoriteta u slučaju t = n−1. Pretpostavimo da imamo n članova koji
žele da podijele tajnu, odnosno neki tajni podatak, pri čemu ih ne zanima unaprijed
ta tajna. Bitno im je da je podijele koristeći n-od-n šemu dijelejnja tajne. Da bi ovo
uradili, svaki učesnik ponaosob generiše slučajni cijeli broj si kao svoj dio. To, samo
po sebi, definiše polinom stepena n − 1, koji se može rekonstruisati isključivo onda
kad svi članovi budu prilože svoje tajne podatke.
21
Glava 6
Primjena
U ovom poglavlju je prezentovana primjena šeme dijeljenja tajne, u realnom okru-
ženju. Pretpostavimo da neka firma osnuje agenciju za izdavanje RSA sertifikata
svojim zaposlenima da bi im se omogućilo da pristupe raznim korporativnim uslu-
gama. RSA privatni ključ je vrlo osjetljiv, jer ako je privatni ključ ugrožen, onda bi
cijela kompanija korporativne infrastrukture mogla biti ugrožena. Pretpostavimo da
je javni ključ (N, e) a privatni ključ je d. Da bi kompanija ublažila rizik ona dijeli
privatni ključ na tri dijela i staviti ih u tri različite dionice na tri različita kontinenta.
Na primjer, jedan će biti u Aziji, jedan u Americi i jedan u Evropi.
Čim kompanija definiše RSA ključ, generiše tri cijela broja d1, d2, d3 , takva da:
d = d1 + d2 + d3 (mod φ(N)).
Kompanija potom uklanja sve informacije o kluču d, a pothranjuje d1 na sigurni
računar u Aziji, d2 na sigurni računar u Americi i d3 u Evropi. Pretpostavimo da
sada zaposleni žele da dobiju digitalni sertifikat. Ovo je u suštini RSA potpis na
string m. Zaposleni šalju string m na tri kompjutera, koji odgovaraju sa
si = mdi , i = 1, 2, 3.
22
Važeći RSA potpis se dobija množenjem tri dijela:
s = s1 · s2 · s3 = md1+d2+d3 = md.
Dakle, ova šema riješava problem stavljanja originalnog potpisa ključa na samo jednu
lokaciju. Međutim, ono što je loše je to što radnik mora da bude na vezi za tri servera
kako bi dobio svoj sertifikat. To je, u realnim uslovima, često nemoguće, a i može se
postaviti pitanje efikasnosti. Bilo bi bolje kad bi to sveli na dva, kako bi se kompanija
mogla nositi sa prekidima u radu servera i ostalim tehničkim problemima. Ono što
želimo je 2-od-3, pa moramo primjeniti algoritam Šamirovog dijeljenja tajne.
Problem je, između ostalog, što broj φ(N) mora ostati tajan, a imenioci u Lagran-
žovoj interpolacionoj formuli ne moraju biti uzajamno prosti sa Φ(N). Predloženo je
mnogo riješenja za ovaj problem RSA praga, ali najjednostavnije i najelegantnije je
dao Soup, što ovdje i predstavljamo.
Pretpostavimo da želimo t-od-n dijeljenje RSA tajnog ključa d, gdje je e prost
broj i e > n. Prilagodimo Šamirovu šemu na sledeći način: prvo biramo polinom
stepena t− 1, odaberemo fi po modulu φ(N) na slučajan način i dobijamo:
f(X) = d+ f1X + ...+ ft−1Xt−1.
Zatim, svakom serveru dajemo di = f(i). Smatramo da je broj osoba n fiksan. Neka
je ∆ = n!.
Sada pretpostavimo da korisnik želi da dobije potpis poruke m, odnosno želi da
izračunamd (mod N). Korisnik šaljem na svaki server, na kojima se računaju djelovi
potpisa
si = m2∆di (mod N).
23
Ovi dijelovi potpisa se šalju nazad korisniku. Sada pretpostavimo da korisnik dobija
dijelove iz skupa Y = {i1, . . . , it} ⊂ {1, . . . , n}, veličine veće ili jednake od t. Uzmimo
u obzir "rekombinacioni" Lagranžov vektor definisan sa
rij ,Y =∏
ik∈Y,ij 6=ik
−ikij − ik
.
Sada, želimo da izračunamo dobijeni rezultat moduo φ(N), ali je to nemoguće.
Međutim, napominjemo da imenilac iz gore navedenog izraza dijeli ∆, pa imamo
∆ · rij ,Y ∈ Z. Stoga, korisnik može da izračuna
s′ =∏ij∈Y
s2·∆·rij ,Yij
(mod N).
Dobijamo:
s′ = (m4·∆2
)∑
ij∈Y rij ,Y ·dij = m4·∆2·d (mod N).
Poslednja jednakost je tačna na osnovu Lagranžove interpolacije po modulu φ(N).
Iz ovog parcijalnog potpisa moramo rekonstruisati originalni potpis. Da bismo to
uradili, koristićemo činjenicu da smo pretpostavili da je e > n i da je e prost broj.
To znači da je e uzajamno prost sa 4 ·∆2, pa preko proširenog Euklidovog algoritma
možemo da izračunamo cijele brojeve u i v tako da važi
u · e+ v · 4 ·∆2 = 1.
Odavde se potpis izračunava kao:
s = mu · siv(mod N).
Ovo je važeći RSA potpis za ovaj javni-privatni ključ jer:
se = (mu · s′v)e
24
= me·u ·m4·e·v·∆2·d
= mu·e+4·v·∆2
= m.
25
Glava 7
Zaključak
Protokoli za dijeljenje tajni služe za distribuciju tajnog podatka nekoj grupi uče-
snika, tako da svako dobija po jedan njegov dio. Osnovno svojstvo ovih protokola je
da dobijeni djelovi ne govore ništa o cjelini. Tačnije, tajni podatak može biti rekon-
struisan samo kada posjedujemo dovoljan, odnosno kvalifikovan broj validnih djelova.
Ukoliko imamo manje od predviđenog, definisanog "praga", nije moguće rekonstrui-
sati originalni tajni podatak.
Šeme dijeljenja tajne su idealno sredstvo za čuvanje informacija velikog stepena
važnosti. Svaki od djelova mora biti čuvan strogo poverljivo, jer bi njihovo otkrivanje
moglo ugroziti sigurnost i početnog, tajnog podatka. Protokoli za tajno dijeljenje
dozvoljavaju da se unaprijed odredi nivo povjerljivosti i pouzdanosti, što im daje
visok stepen upotrebne fleksibilnosti.
26
Bibliografija
[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein,
Introduction to Algorithms, The MIT Press, 2001.
[2] Nigel Smart, Cryptography: An Introduction, McGraw-Hill Education, 2003.
[3] Mladen Vuković, Matematička logika 1, PMF-Matematički odjel- Sveučilište u
Zagrebu, 2007.
[4] Dragoje Božović, Vizuelno-kriptografski algoritmi dijeljenja tajne, Specijsli-
stički rad, PMF Podgorica, 2014.
27