Avaliku vtmega krptogtaafia Sven Laur Motivatsioon Snumite saatja

  • Slides: 37
Download presentation
Avaliku võtmega krüptogtaafia Sven Laur

Avaliku võtmega krüptogtaafia Sven Laur

Motivatsioon • Sõnumite saatja ja vastuvõtja on erinevate võimaluste ning huvidega. • Mõned osapooled

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

Olulised aastaarvud • 1976. Diffie-Hellmani võtmevahetusskeem - asümeetrilise krüptograafia algus. • 1977. Rivest, Shamir ja Adleman RSA. • 1985. El. Gamal 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

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

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 arvutuslikult efektiivselt võimalik leida dekrüpteerimisfunktsiooni 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

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: X Y on ühesuunaline kui on "lihtne"

Ühesuunalised funktsioonid (I) • Definitsioon. Funktsioon f: X Y on ühesuunaline kui on "lihtne" arvutada y=f(x), kuid teades ainult y on arvutuslikult võimatu 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

Ü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

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

Euleri funktsioon • Definitsioon. Arvu m jäägiks mooduli n järgi nimetatakse arvu 0 a

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,

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, . . . , 2 p, . . . , 3 p, . . . , 4 p, . . . , (q-1)p 0, 1, 2, 3, . . , q, . . . , 2 q, . . . , 3 q, . . . , 4 q, . . . , (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

RSA ehitus • Võtme genereerimine. Valida juhuslikult kaks paaritut algarvu p ja q. Avalik võti on n=pq ja arv b nii, et ab 1 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

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 (x y) z = x (y z) ja 1 x=x 1=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

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 a x=x a=y. Kui vastus on jaatav, siis nimetatakse andmetüüpi tehte suhtes rühmaks. • Elementi b=a-1, mille korral kehtib võrdus a b=b a=1 nimetatakse a pöördelemendiks.

Lagrange’i teoreem • Definitsioon. Rühmaelementide alamhulka, mis sisaldab ühikut 1 ja mis on kinnine

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. a. H H b. H Kui element ei kuulu alamrühma H, siis tekib hulk a. H, 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,

Alamrühm a • Definitsioon. Elemendi a poolt moodustatud alamrühmaks nimetatakse hulka a ={1, a, a 2, a 3. . . , 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.

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

Euleri teoreem • Iga pööratav element b hulgast U(Zn) rahuldab tingimust a (n) 1 mod n. a 2 • Kui hakata elementi a astendama, siis mingil hetkel peame saama varasema tulemuse. a 3 a a 4 ak 1 a 5 • Kuna a on pööratav saame liikuda ainult ühel viisi tagasi. • Lagrange' teoreemi tõttu jagub (n) arvuga k.

Miks RSA töötab? • Kui n=pq ja ab 1 mod (n), miks siis a

Miks RSA töötab? • Kui n=pq ja ab 1 mod (n), miks siis a b Dk (Ek(x)) (x ) x mod n • Kui x on pööratav, siis x (n) 1 mod n ja seega ab=k (n)+1, siis k ab (n)k+1 (n) x x x(x ) x 1 k 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

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 e 1 ja e 2 nii, et e 1 1 mod m, e 1 0 mod n e 2 0 mod m, e 2 1 mod n

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

Nulliteguri astmed Kui p ja q on algarvud, siis p (pq)+1 p mod qp. pi+2 pi+3 pi+1 pi+k pi • 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. p 2 . . . p . .

Aga kui element pole pööratav? • Kui element pole pööratav, siis on tal ühine

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.

RSA realiseerimine • RSA realiseerimiseks on tarvis realiseerida efektiivselt modulaarne astendamine. • Lihtne on

RSA realiseerimine • RSA realiseerimiseks on tarvis realiseerida efektiivselt modulaarne astendamine. • Lihtne on järjestikku arvutada x, x 2, x 4, . . . • Et tõsta arv astmesse b efektiivselt, tuleb b esitada kahendkujul b=11101102 ning seejärel xb x 118 x 2 x 4 x 16 x 32 x 64 mod n

Optimiseeritud algoritm z = 1; for(i=k-1; i=>0; --i){ z = z*z mod n; if(bi)

Optimiseeritud algoritm z = 1; for(i=k-1; i=>0; --i){ z = z*z mod n; if(bi) z=z*x mod n; } //x -astendatav b on k bitti pikk //loeme esmalt kõrgemad bitid //astendaja<<1 //astendaja+1 //astendaja==b • Algoritm teeb täpselt k modulaarset korrutamist, mille ligikaudne keerukus O(log 2 n), kuna k < log n, siis summarne keerukus O(log 3 n), mis on üldiselt kehv kuid talutav.

Võtme genereerimine • Suvalise pikkusega algarvu leidmine on raske, sest ülesanne on klassist NP.

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, . . .

Fermat' algarvutest Sisend on arv n 1. Valida juhuslikult a {2, . . . n-2} 2. Arvutada b an-1 mod n 3. Kui b 1, 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 b 1. Enamike kordarvude korral annab see algoritm õige vastuse tõenäosusega rohkem kui 1/2.

Miller-Rabini test 1. Avaldada n-1=2 km, kus m on paaritu. 2. Valida juhuslikult a

Miller-Rabini test 1. Avaldada n-1=2 km, 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 b 2 mod n. 6. Väljastada KORDARV.

Rabin-Milleri testi korrektsus • Kui n on algarv, siis 1 ühel on vaid kaks

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 k-1 m 2 on vähemalt a -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.

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(k 3), seega tuleb sumaarne keerukus ligikaudu O(k 4), mis on tõeline probleem pihuarvutitele ja kiipkaartidele.

RSA ründamine (I) • Euleri funktsiooni (n) teadmine on samaväärne arvu n faktoriseerimisega. q=n/p

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 p 2+( (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

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

RSA ründamine (III) • Kui me teame salajast võtit a, siis iga pööratav element w korral wab-1 1 mod n • Me avaldame ab-1=2 kr ja arvutame mooduli n kr r 2 r 4 r 2 järgi w , w , . . . , w • 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

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.

Protokolli vead (II) • Oletame, et Alice alustada salajast suhtlust Bobiga, selleks hangib ta

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. Anna Bobi võti. Alice Saladus Caroli võti Carol Saladus Bobi võti Bob

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

Väike avalik võti b=3 • Kui saatja tahab saata ühte avateksti x kolmele erinevale osapoolele, siis pealtkuulaja teab x 3 c 1 mod n 1 x 3 c 2 mod n 2 x 3 c 3 mod n 3 • Ning kasutades Hiina jäägiteoreemi, saab taastada x 3 d mod n 1 n 2 n 3, kuna x 3 on vaiksem kui n 1 n 2 n 3, 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

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.

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

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), genereerides signatuuri järgi avateksti.

Skeemi parandused • Igaüks saab võltsida suvalisi signatuure kujul (Ek(y), genereerides signatuuri järgi avateksti. • Selle vältimiseks võib kasutusele võtta erikujulised avatekstid x||f(x), kus f: {0, 1}k on suvaline funktsioon. • Sobivaid avateksti saamise tõenäosus võltsimisel on vaid 1/2 k, mis on väga väike.