370 likes | 597 Views
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.
E N D
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. • Võtmevahetuse vältimine võimaldab luua tundmatute osapoolte vahel lihtsalt kaitstud andmevahetuse.
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.
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.
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.
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.
Ü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.
Ü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.
Laiendatud Eukleidese algoritm • Eelnevast teame, et kui süt(a,n)=1 parajasti siis, kui leidub b nii, et ab 1mod n. Seda saab leida laiendatud Eukleidese alg. abil
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).
Euleri funktsiooni arvutamine • Olgu p algarv, siis jäägid on 0,1,2,4,5,...,p-1 ja seega ühistegurita on (p)=p - 1jää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).
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
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.
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.
aH H bH 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. Kui element ei kuulu alamrühma H, siis tekib hulk aH, mis ei kuulu ka alamrühma H. Tekkivad hulgad on lõikumatud
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.
a2 a3 a a4 ak a5 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. 1
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) 1mod 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.
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
pi+2 pi+3 pi+1 pi+k pi p p2 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.
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)abpabkab pk x mod n • süt(x,n)=q on analoogiline eelnevaga.
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 xbx118 x2x4x16x32x64 mod n
Optimiseeritud algoritm z = 1; //x -astendatav b on k bitti pikk for(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(log2n), kuna k < log n, siis summarne keerukus O(log3 n), mis on üldiselt kehv kuid talutav.
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.
Fermat' algarvutest Sisend on arv n 1. Valida juhuslikult a{2,...n-2} 2. Arvutada b an-1 mod n 3. 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.
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.
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.
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.
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.
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.
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.
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.
Anna Bobi võti. Anna Bobi võti. Saladus Saladus Alice Carol Bob Caroli võti Bobi võti 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.
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.
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-1ei tohi jaguda 3-ga.
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)).
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.