Avaliku võtmega krüptogtaafia

37
Avaliku võtmega krüptogtaafia Sven Laur

description

Avaliku võtmega krüptogtaafia. Sven Laur. Motivatsioon. Sõnumite saatja ja vastuvõtja on erinevate võimaluste ning huvidega. Mõned osapooled pole alati võtme salajas hoidmisest motiveeritud. Maksimaalse avatuse printsiip. - PowerPoint PPT Presentation

Transcript of Avaliku võtmega krüptogtaafia

Page 1: Avaliku võtmega krüptogtaafia

Avaliku võtmega krüptogtaafia

Sven Laur

Page 2: Avaliku võtmega krüptogtaafia

Motivatsioon

• Sõnumite saatja ja vastuvõtja on erinevate võimaluste ning huvidega.

• Mõned osapooled pole alati võtme salajas hoidmisest motiveeritud.

• Maksimaalse avatuse printsiip.

• Võtmevahetuse vältimine võimaldab luua tundmatute osapoolte vahel lihtsalt kaitstud andmevahetuse.

Page 3: Avaliku võtmega krüptogtaafia

Olulised aastaarvud• 1976. Diffie-Hellmani võtmevahetusskeem --

asümeetrilise krüptograafia algus.• 1977. Rivest, Shamir ja Adleman RSA.• 1985. ElGamal krüptosüsteem -

esimene tõenäosuslik krüptosüsteem; - 1994. DSS(Digital Signature Standard).

• 1994. Bellare ja Rogaway tõestatavalt turvaline RSA skeem.

• 2000. Schnorr üldise diskreetse logaritmi probleemi turvalisuse tõestus.

Page 4: Avaliku võtmega krüptogtaafia

Minimaalsed nõuded

• Peab leiduma kaks võtit ka ja ks, mis määravad ära teisendused Ek ja Dk.

• Saatja peab olema võimeline krüpteerima suvalist avateksti.

• Vastuvõtja peab olema võimeline dekrüpteerima suvalist krüptogrammi.

• Vastuvõtjal peab olema võimatu efektiivselt arvutada dekrüpteerimisfunktsiooni Dk.

Page 5: Avaliku võtmega krüptogtaafia

Avalik ja salajane võti

• Definitsioon. Krüptosüsteem (P, C, K, E, D) on avaliku võtmega krüptosüsteem, kui teades krüpteerimisfunktsiooni Ek ei ole arvutus-likult efektiivselt võimalik leida dekrüptee-rimisfunktsiooni Dk. Avalik võti ka koos muu avaliku teabega määrab ära Ek ning salajane võti ks omakorda teisenduse Dk. Harilikult on avalik võti kõigile soovijatele kättesaadav.

Page 6: Avaliku võtmega krüptogtaafia

Vältimatud skeemi osad

• Kuna Ek peab olema permutatsioon, siis on seda võimalik alati pöörata.

• Avaliku võtmega krüptograafia vajab seega funktsioone, mis on lihtsalt arvutatavad, kuid "raskesti" pöötatavad.

• Näiteks telefoniraamatust nime järgi numbri määramine on lihtne, numbri järgi nime määramine on keeruline.

Page 7: Avaliku võtmega krüptogtaafia

Ühesuunalised funktsioonid (I)

• Definitsioon. Funktsioon f: XY on ühe-suunaline kui on "lihtne" arvutada y=f(x), kuid teades ainult y on arvutuslikult võima-tu efektiivselt määrata x nii, et f(x)=y. Funktsioonil f on on salauks C, kui teades seda teavet C on võimalik funktsiooni f efektiivselt pöörata.

Page 8: Avaliku võtmega krüptogtaafia

Ühesuunalised funktsioonid(II)

• Selliste funktsioonide olemasolu pole tõestatud, kuid leidub sobilikke kandidaate.

• Üks tuntumaid kandidaate on arvu xb arvutamine mooduli n järgi(1977).

• Lihtne on leida võrrandi xb y mod n lahendeid kõiki võimalikke x väärtusi proovides, kuid see on arvutuslikult ebaefektiivne, kui n on suur.

Page 9: Avaliku võtmega krüptogtaafia

Laiendatud Eukleidese algoritm

• Eelnevast teame, et kui süt(a,n)=1 parajasti siis, kui leidub b nii, et ab 1 mod n. Seda saab leida laiendatud Eukleidese alg. abil

n = k1a + r1 r1 = n - k1aa = k2r1 + r2 r2 = a - k2r1

ri = ki+2ri+1 + ri+2 ri+2 = ri - ki+2ri+1

rn-2 = knrn-1+rn rn = rn-2 - knrn-1

rn-1 = kn+1rn+1 1 = rn-1 - kn+1rn

Page 10: Avaliku võtmega krüptogtaafia

Euleri funktsioon

• Definitsioon. Arvu m jäägiks mooduli n järgi nimetatakse arvu 0 a < n, kui m = nk + a ning k on täisarv.

• Definitsioon. Jääki a nimetatkse pöörata-vaks mooduli n järgi kui leidub jääk b nii, et ab 1 mod n. Kõigi jääkide arvu mooduli n järgi, mis on pööratavad, nimetatakse Euleri funktsiooniks (n).

Page 11: Avaliku võtmega krüptogtaafia

Euleri funktsiooni arvutamine

• Olgu p algarv, siis jäägid on 0,1,2,4,5,...,p-1 ja seega ühistegurita on (p)=p - 1 jääki.

• Kui n=pq, siis saab jäägid üles kirjutada kujul

0,1,2,..,p,...,2p,...,3p,...,4p,...,(q-1)p

0,1,2,3,..,q,...,2q,...,3q,...,4q,...,(p-1)q

• ning seega (pq)=n-p-q+1=(p-1)(q-1).

Page 12: Avaliku võtmega krüptogtaafia

RSA ehitus

• Võtme genereerimine. Valida juhuslikult kaks paaritut algarvu p ja q. Avalik võti on n=pq ja arv b nii, et ab1 mod (n). Salajane võti on arv a. Avatekstid ja krüptogrammid on arvu n jäägid.

• Krüpteerimine ja dekrüpteerimine.

Ek = xb mod n

Dk = ya mod n

Page 13: Avaliku võtmega krüptogtaafia

Mis on rühm?

• Meile tuntud tehted + ja on tegelikult kahe kohalised funktsioonid(näiteks C++ ja Java).

• Et defineerida (x,y) on esmalt tarvis määratleda andme tüüp, millel see tegutseb.

• Korrutamisel on olemas kaks peamist omadust (xy) z = x(yz) ja 1x=x1=x.

• Mõnikord ei kuulu 1 andmetüüpi ja vahel pole ta sisu üldse seotud arvuga 1.

Page 14: Avaliku võtmega krüptogtaafia

Mis ikkagi on rühm?

• Kui 1 vastab meie andmetüübile ning tehe täidab mõlemat peamist omadust, siis tekib küsimus, kas kõikvõimalike y korral leidub lahend võrranditele ax=xa=y. Kui vastus on jaatav, siis nimetatakse andmetüüpi tehte suhtes rühmaks.

• Elementi b=a-1, mille korral kehtib võrdus ab=ba=1 nimetatakse a pöördelemendiks.

Page 15: Avaliku võtmega krüptogtaafia

Lagrange’i teoreem

• Definitsioon. Rühmaelementide alamhulka, mis sisaldab ühikut 1 ja mis on kinnine korrutamise ja pöördelemendi leidmise suhtes, nimetatakse alamrühmaks.

• Lagrange teoreem. Iga lõpliku alamrühma elementide arv jagab rühma elementide arvu.

H

aH

bH

Kui element ei kuulu alamrühma H, siis tekib hulk aH, mis ei kuulu ka alamrühma H. Tekkivad hulgad on lõikumatud

Page 16: Avaliku võtmega krüptogtaafia

Alamrühm a

• Definitsioon. Elemendi a poolt moodustatud alamrühmaks nimetatakse hulka

a={1,a,a2,a3...,a-1,a-2,...}.

• Jääkide hulk mooduli n suhtes rahuldab korrutamise kahte peamist omadust. Kui a ja b on pööratavad siis süt(a,n)=süt(b,n)=1, siis on seda ka ab sest süt(ab,n)=1. Seega pööratavate elementide hulk U(Zn) on rühm.

Page 17: Avaliku võtmega krüptogtaafia

Euleri teoreem

• Iga pööratav element b hulgast U(Zn) rahuldab tingimust a(n) 1 mod n .

•Kui hakata elementi a astendama, siis mingil hetkel peame saama varasema tulemuse.

• Kuna a on pööratav saame liikuda ainult ühel viisi tagasi.

• Lagrange' teoreemi tõttu jagub (n) arvuga k.

a

a2 a3

a4

a5ak

1

Page 18: Avaliku võtmega krüptogtaafia

Miks RSA töötab?

• Kui n=pq ja ab1 mod (n), miks siis

Dk (Ek(x)) (xb)a x mod n

• Kui x on pööratav, siis x(n) 1 mod n ja seega ab=k(n)+1, siis

xab x(n)k+1 x(x(n))k x1k x mod n

• Seega iga pööratava elemendi korral saame avateksti edukalt kätte.

Page 19: Avaliku võtmega krüptogtaafia

Hiina jäägiteoreem

• Kui m ja n on ühistegurita arvud ja meil on kongurentside süsteem

x a mod m ja x b mod n, siis on võimalik üheselt taastada arv x

mooduli mn järgi.• Leitakse e1 ja e2 nii, et

e1 1 mod m, e1 0 mod n

e2 0 mod m, e2 1 mod n

Page 20: Avaliku võtmega krüptogtaafia

Nulliteguri astmed

Kui p ja q on algarvud, siis p(pq)+1 p mod qp.

• Mooduli p järgi on jada elemendid . kongurentsed jäägiga 0. • Mooduli q järgi tekib tsükkel, sest . p on pööratav mooduli q järgi.• Hiina jäägiteoreemi tõttu ei saa . mooduli pq järgi olla pi kahte eellast.• Seega moodustavad p astmed .suure . tsükli, mille pikkus on q-1.

pi

pi+1

pi+2 pi+3

pi+k

p2p

Page 21: Avaliku võtmega krüptogtaafia

Aga kui element pole pööratav?

• Kui element pole pööratav, siis on tal ühine tegur arvuga n=pq. On kolm võimalust:

• süt(x,n)=n, siis x 0 ja seega xab 0 mod n.

• süt(x,n)=p, siis x=pk, kus k on pööratav, seega saame

xab (pk)ab pabkab pk x mod n

• süt(x,n)=q on analoogiline eelnevaga.

Page 22: Avaliku võtmega krüptogtaafia

RSA realiseerimine

• RSA realiseerimiseks on tarvis realiseerida efektiivselt modulaarne astendamine.

• Lihtne on järjestikku arvutada x, x2,x4,...

• Et tõsta arv astmesse b efektiivselt, tuleb b esitada kahendkujul b=11101102 ning seejärel

xb x118 x2x4x16x32x64 mod n

Page 23: Avaliku võtmega krüptogtaafia

Optimiseeritud algoritm

z = 1; //x -astendatav b on k bitti pikkfor(i=k-1; i=>0; --i){ //loeme esmalt kõrgemad bitid

z = z*z mod n; //astendaja<<1 if(bi) z=z*x mod n; //astendaja+1} //astendaja==b

• Algoritm teeb täpselt k modulaarset korruta-mist, mille ligikaudne keerukus O(log2 n), kuna k < log n, siis summarne keerukus O(log3 n), mis on üldiselt kehv kuid talutav.

Page 24: Avaliku võtmega krüptogtaafia

Võtme genereerimine

• Suvalise pikkusega algarvu leidmine on raske, sest ülesanne on klassist NP.

• Teada on, et n-is algarv on ligikaudeselt p(n)n/ln n, seega tõenäosus, et täisarv x on algarv on ligikaudu 1/ln(x).

• Leidub kaks tõenäosuslikku algoritmi, mille väljundid on KORDARV või ALGARV, kuid vahel peavad need kordarvu algarvuks.

Page 25: Avaliku võtmega krüptogtaafia

Fermat' algarvutestSisend on arv n1. Valida juhuslikult a{2,...n-2}2. Arvutada b an-1 mod n3. Kui b1, siis KORDARV muidu ALGARV• Kui n on algarv, siis (n)=n-1 ja vastus on

korrektne. Kui n on kordarv ja a pole pööratav b1. Enamike kordarvude korral annab see algoritm õige vastuse tõenäosusega rohkem kui 1/2.

Page 26: Avaliku võtmega krüptogtaafia

Miller-Rabini test

1. Avaldada n-1=2km, kus m on paaritu.

2. Valida juhuslikult a{2,...,n-2}.

3. Arvutada b am mod n.

4. Kui b 1 mod n, siis väljastada ALGARV.

5. for i = 0,1,..,k-1 do

Kui b -1 mod n, siis väljastada ALGARV,

muidu b b2 mod n.6. Väljastada KORDARV.

Page 27: Avaliku võtmega krüptogtaafia

Rabin-Milleri testi korrektsus

• Kui n on algarv, siis 1 ühel on vaid kaks ruutjuurt -1 ja 1. Kuna an-1 1 mod n, siis on vähemalt a2k-1m -1 mod n.

• Kui n on kordarv, siis tõenäosusega vähem kui 1/4 vastatakse ALGARV.

• Rabin-Milleri algoritm toimib paremini, kui Fermat' algoritm tuvastades mõned eriti halvad kordarvud -- Carmichaeli arvud.

Page 28: Avaliku võtmega krüptogtaafia

Miks võtme leidmine võtab aega?

• Algarve otsitakse valides juhuslikult paaritu arvu pikkusega k. Tõenäosus, et see arv on algarv on ligikaudu 1/k, seega tuleb keskmiselt võtta k arvu ja testida neid.

• Mõlema testi keerukus on ligikaudu O(k3), seega tuleb sumaarne keerukus ligikaudu O(k4), mis on tõeline probleem pihu-arvutitele ja kiipkaartidele.

Page 29: Avaliku võtmega krüptogtaafia

RSA ründamine (I)

• Euleri funktsiooni (n) teadmine on samaväärne arvu n faktoriseerimisega.

q=n/p , (n)=(p-1)(q-1) p(n)=(p-1)(n-p)

• Tulemuseks on harilik ruutvõrrand üle ratsionaalarvude

p2+((n)-n-1)p+n=0,

mida on võimalik kiiresti ligikaudselt lahendada ning saada nii üks arvu n tegur.

Page 30: Avaliku võtmega krüptogtaafia

RSA ründamine (II)

• Salajase võtme efektiivne arvutamine on samaväärne arvu tegurdamisega.

• Mooduli n korral on arvul 1 olemas neli ruutjuurt!

• Kui meil õnnestub leida ühejuur x, mis pole 1, siis n jagab (x+1)(x-1). Kuna n ei saa jagada ainult ühte tegurit, siis jagab p ühte ja q teist ning süt(x+1,n) on n päristegur.

Page 31: Avaliku võtmega krüptogtaafia

RSA ründamine (III)

• Kui me teame salajast võtit a, siis iga pööratav element w korral wab-11 mod n

• Me avaldame ab-1=2kr ja arvutame mooduli n järgi wr, w2r, w4r,..., w2kr

• Otsime jadast üles esimese w astme, mis on 1. Kui sellele eelneb w aste, mis pole -1, siis oleme leidnud, 1 mitteriviaalse ruutjuure ning me saame n tegurdada. Edu on umbes 1/2.

Page 32: Avaliku võtmega krüptogtaafia

Protokolli vead (I)

• Kuna algarvude leidmine on tülikas, siis võiks usaldatav osapool leida n=pq ning jagada soovijatele võtmete paare ai,bi.

• Kuna paari (ai,bi) teades on võimalik arv n efektiivselt tegurdada, siis saab leida (n) ning seejärel on osalejal lihtne leida teiste osalejate salajased võtmed vastavalt võtmegenereerimisalgoritmile.

Page 33: Avaliku võtmega krüptogtaafia

Protokolli vead (II)

• Oletame, et Alice alustada salajast suhtlust Bobiga, selleks hangib ta Bobi avaliku võtme ning teatab oma plokkšifri võtme. Tegelikult toimub hoopis midagi muud.

Alice BobCarol

Anna Bobi võti. Anna Bobi võti.

Bobi võtiCaroli võti

Saladus Saladus

Page 34: Avaliku võtmega krüptogtaafia

Väike avalik võti b=3• Kui saatja tahab saata ühte avateksti x

kolmele erinevale osapoolele, siis pealtkuulaja teab

x3 c1 mod n1

x3 c2 mod n2 x3 c3 mod n3

• Ning kasutades Hiina jäägiteoreemi, saab taastada x3 d mod n1n2n3, kuna x3 on vaiksem kui n1n2n3, siis saab x teada harilikku kuupjuurt võttes, mis on kerge.

Page 35: Avaliku võtmega krüptogtaafia

Kiipkaardi eksponendid

• Kiirema krüpteerimise jaoks kasutatakse b=3 ja b=216+1, see võib tuua kaasa lihtsamaid võimalusi tekstide ründamiseks.

• Üldiselt soovitatakse võtta algarvud p ja q nii, et p-1, q-1, p+1, q+1, r-1 ja r'-1 omaksid suuri algarvulisi tegureid, kus r ja r' on suured p-1 ja q-1 alarvulised tegurid.

• Kui b=3, siis p-1 ja q-1 ei tohi jaguda 3-ga.

Page 36: Avaliku võtmega krüptogtaafia

Signatuuriskeemid

• Vahel on tarvis tuvastada Alice seotust tekstiga. Siis kasutatakse signeerimisskeeme.

• Alice erineb teistest selle poolest, et ta oskab dekrüpteerida oma võtmele vastavaid tekste.

• Alice võimet dekrüpteerida Ek(x), saab kontrollida vaadates Alice'i vastust Dk(Ek(x)).

• Seda saab simuleerida kui, Alice dekrüpteerib avateksti x, sest Dk(Ek(x))=Ek(Dk(x)).

Page 37: Avaliku võtmega krüptogtaafia

Skeemi parandused

• Igaüks saab võltsida suvalisi signatuure kujul (Ek(y), y), genereerides signatuuri järgi avateksti.

• Selle vältimiseks võib kasutusele võtta erikujulised avatekstid x||f(x), kus f:{0,1}k{0,1}k on suvaline funktsioon .

• Sobivaid avateksti saamise tõenäosus võltsimisel on vaid 1/2k, mis on väga väike.