1 / 39

Klassikaline krüptograafia

Klassikaline krüptograafia. Ahto Buldas. Krüptosüsteem. P - lõplik avatekstide hulk C - lõplik krüptogrammide hulk K - lõplik võtmeruum(võimalike võtmete hulk) Iga K  K korral on olemas efektiivselt arvutatavad funktsioonid E K : P  C ja D K : C  P ,

toviel
Download Presentation

Klassikaline krüptograafia

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Klassikaline krüptograafia Ahto Buldas

  2. Krüptosüsteem • P - lõplik avatekstide hulk • C - lõplik krüptogrammide hulk • K - lõplik võtmeruum(võimalike võtmete hulk) • Iga KK korral on olemas efektiivselt arvutatavad funktsioonid EK:PC ja DK:CP, mis iga xP korral rahuldavad samasust: DK(EK(x)) = x.

  3. Krüpteeritud andmeedastus Carol (ründaja) x y y x Alice E D Bob K K Turvaline kanal Võtmeallikas Ründajal ei tohi olla võimalik krüptogrammi y põhjal tuletada avateksti x või võtit K.

  4. Pikkade sõnumite edastus: • Avatekst X = x1x2…xn • Iga i=1…n korral arvuta yi = EK(xi) • Krüptogramm Y = y1y2…yn

  5. Krüpteerimisfunktsiooni omadusi • Krüpteerimisfunktsioon EK peab olema iga K väärtuse korral injektiivne, st seosest y = EK(x) = EK(x’) järeldub x = x’. • Vastasel korral ei teaks Bob, millise sõnumi (kas x või x’) krüptogramm y on. • Kui P=C, siis krüpteerimisfunktsioon EK on hulga P permutatsioon.

  6. Nihutusšiffer(I) • Tähestiku tsükliline nihe mingi kindla väärtuse võrra. • Näiteks Caresari šifris kolme võrra: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C • NB! Enne erinevat tüüpi šifrite käsitlemist tutvume modulaararitmeetikaga.

  7. Kongruentsus mooduli m järgi • Definitsioon. Täisarve a ja b nimetatakse kongruentseteks mooduli (posit. täisarvu) m järgi ja kirjutatakse ab (mod m), kui täisarv ba jagub jäägita arvuga m (tähistakse m|ba). • Igale täisarvule a vastab parajasti üks arv a’ hulgast Zm ={x Z | 0x<m}, nii et aa’ (mod m). Seda arvu tähistatakse a’ = a mod m.

  8. Arvuvald Zm • Hulgas Zm saab defineerida liitmise ja korrutamise operatsioonid järgmiselt: ab = (a + b) mod m, ab = (ab) mod m. • Näiteks arvuvallas Z3: 2  2 = 2  2 = 1, 1  2 = 0, ja arvuvallas Z5: 2  3 = 0, 3  3 = 1 = 3  2 ja 3  4 = 2.

  9. Tavatehete omaduste ülekantavus arvuvalda Zm • Kõigi täisarvude a ja b korral kehtivad seosed: (a mod m) mod m = (a mod m), (a mod m)  (b mod m) = (a + b) mod m, (a mod m)  (b mod m) = (ab) mod m. • Sellest järeldub operatsioonidel  ja  on samasugused omadused kui tavalisel liitmisel ja korrutamisel, mistõttu neid võib tähistada tavaliste tehtemärkidega: + 

  10. Arvuvalla Zm “tavalised” omadused: • Kommutatiivsus: a + b = b + a, ab = ba • Assotsiatiivsus: (a+b)+c=a+(b+c), (ab)c=a(bc) • Nullelement: a + 0 = 0 + a = a, a  0 = 0  a = 0 • Ühikelement: a  1 = 1  a = a • Distributiivsus: (a+b)c=ac+bc,

  11. Arvuvalla Zm “erilised”omadused: • Elemendi a vastandelement (-a) on ma, sest a + (ma) = m 0 (mod m). • Nullitegurid: kahe mittenullise elemendi korrutis võib tulla null. Näiteks hulgas Z6 on 2  3 = 0.

  12. Nihutusšiffer(II) • P = C = K = Z26 EK(x) = (x + K) mod 26 DK(y) = (yK) mod 26 = (y + (26 K)) mod 26 • Kui K=3, siis saame Caesari šifri. • Teksti krüpteerimiseks asendatakse tähed arvudega 0 … 25: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

  13. Krüpteerimisnäide • Olgu meil sõnum: “Kohtume kell kaks” • Kodeerime sõnumi: K O H T U M E K E L L K A K S 10 14 7 19 20 12 4 10 4 11 11 10 0 10 18 • Kasutame võtit K=7: 17 21 14 0 1 19 11 17 11 18 18 17 7 17 25 R V O A B T L R L S S R H R Z

  14. Dekrüpteerimisnäide • Krüpteerimiseks leiame K pöördväärtuse 26 K = 26  7 = 19 ja kasutame sama võtet: • Krüptogrammi RVOABTLRLSSRHRZ iga tähe y koodi teisendame eeskirjaga x = (y + (26 K)) mod 26 = (y + 19) mod 26. • Näiteks esimene täht R(17) teisendub täheks (17+19) mod 26 = 36 mod 26 = 10, st K.

  15. Nihutusšifri murdmine • Oletame, et edastati strateegilise tähtsusega krüptogramm: Y= NDVVLGRQNDUYDVHG. • Proovime järjest läbi kõik võtmed alates võtmest K=1 ja üritame dekrüpteerida, kuni saame loomuliku keele teksti: K=1 (-K=25): MCUUKFQPMCTXCUGF K=2 (-K=24): LBTTJEPOLBSWBTFE K=3 (-K=23): KASSIDONKARVASED Seega: K=3 ja X= KASSID ON KARVASED

  16. Märkused ja järeldus • Nihutusšifrit on kerge murda, sest õige võtme leidmiseks on vaja keskmiselt läbi proovida 26/2=13 võtmekandidaati. • Arvuti murrab nihutusšifri mõne hetkega, kui tal on kasutada vastava loomuliku keele sõnastik.

  17. Afiinne šiffer • P=C=Z26 • Iga võti K on paar (a,b), kus a,bZ26 • Krüpteerimine: E(x) = ax + b mod 26 • Küsimus: Kas iga võtme korral on funktsioon E injektiivne? • Vastus on eitav: kui a=13 ja b=0, siis x1=0 ja x2=2 annavad sama krüptogrammi 0, sest E(2) = 2  13 mod 26 = 0 = 0  13 mod 26 = E(0)

  18. Afiinse šifri pööratavus • Võrrand ax + b y (mod 26) on samaväärne võrrandiga axy  b (mod 26). • Nihketeisendus on injektiivne. Seega on meie küsimus samaväärne küsimusega, millal on elemendil a arvuvallas Z26 olemas pöördelement a-1, nii et a-1(a x) = x, iga xZ26 korral, st a-1a = 1.

  19. Vastuse annab arvuteooria • Definitsioon. Positiivsete täisarvude x ja y suurimaks ühisteguriks süt(x,y) nimetatakse suurimat arvu, millega mõlemad arvud x ja y jaguvad jäägita, st süt(x,y) = max{ d: d|x ja d|y }. Teoreem. Element aZm on pööratav parajasti siis, kui süt(a,m) = 1.

  20. Tõestus: • Kui süt(a,m) = 1 ja ax1ax2(mod m), siis ax1ax2 = a(x1x2) jagub arvuga m. Seega m=m1m2, kus m1|a ja m2|(x1x2). Arv m1 on järelikult arvude m ja a ühine tegur, mistõttu m1süt(a,m) = 1. Seega m1=1 ja järelikult x1x2 0 (mod m) ja x1 x2(mod m). • Kui z=süt(a,m) > 1, siis a=a1z ja m=zm1. Võtame x1=m1 ja x2=0. Saame ax1 = am1 = (a1z)m1 = a1(zm1) = a1m 0 (mod m) ax2 = a  0  0 (mod m), mis tähendabki, et a ei ole pööratav.

  21. Kui palju on pööratavaid elemente? • Tähistame hulga Zm pööratavate elementide arvu (m) – nn. Euleri funktsioon. • Algarv: positiivne ühest suurem täisarv, mis jagub vaid 1 ja iseendaga: 2, 3, 5, 7, 11, 13, ... • Aritmeetika põhiteoreem: iga posit. täisarv m on ühesel viisil esitatav algarvude astmete korrutisena: m = p1e1 … pses. • Näiteks 60 = 22 31 51, 56 = 23 71 ja 26 = 21 131

  22. Euleri teoreem • Teoreem (Euler). Kui m = p1e1 … pses, siis (m) = (p1e1  p1e11)... (pses  pses1). Näiteks (26) = (21) (13  1) = 12 ja (60) = (42) (3  1) (5  1) = 16. Järeldus. Afiinse šifri erinevate võimalike võtmete arv on 26(26) = 2612 = 312.

  23. Üldine afiinne šiffer • P=C=Zm • K = {(a,b): a,bZm ja süt(a,m)=1} • Ea,b(x) = ax + b mod m • Da,b(y) = a-1(yb) mod m Küsimus: Kuidas leida pöördelementi a-1?

  24. Eukleidese algoritm • Põhineb seostel: Kui a=b, siis süt(a,b)=a Kui a>b, siis süt(a,b)= süt(ab,b) Kui a<b, siis süt(a,b)= süt(a,ba) • Esitab suurima ühisteguri lineaarkombinatsioonina süt(a,b) = a + b, kus  ja  on (mitte tingimata positiivsed) täisarvud.

  25. Näide a=26 ja b=7 süt(26,7) = süt(a,b) = süt(a-b,b) = süt(19,7) = süt(a-2b,b) = süt(12,7) = süt(a-3b,b) = süt(5,7) = süt(a-3b,b-(a-3b)) = süt(a-3b, -a+4b) = süt(5,2) = süt((a-3b)-(-a+4b),-a+4b)= süt(2a-7b, -a+4b)= süt(3,2) = süt((2a-7b)-(-a+4b),-a+4b)= süt(3a-11b, -a+4b)= süt(1,2) = süt(3a-11b,(-a+4b)-(3a-11b))= süt(3a-11b,-4a+15b)= süt(1,1) = 1 = -4a + 15b

  26. Pöördväärtuse leidmise idee • Teoreem. Kui a + m = 1, siis  = a-1 arvuvallas Zm. Tõestus. a mod m = (1  m) mod m = 1. Järeldus. Võrdusest 1 = -4  26 + 15  7 järeldub, et 7-1 = 15 arvuvallas Z26.

  27. Vigenere šiffer • P=C=K=(Z26)m • Kui K=(k1,…,km), siis • EK(x1,…,xm) = (x1+ k1,…, xm+ km) • DK(y1,…,ym) = (y1k1,…, ymkm)

  28. Arvutusnäide Näide. Olgu K=KALAD ja Y= VIGENEREONMURTAV KALADKALADKALADK siis saame FIREQORPOQWUCTDF • Vigenere šifris on erinevate võtmete arv 26m, mis piisavalt suure m korral välistab võtmete läbiproovimise. Kui m=5, siis |K|107 , mis välistab käsitsi proovimise, kuid mitte arvuti abiga teostatud proovimise!

  29. Hilli šiffer (1929) • P=C=(Z26)m • Idee: Krüptogrammi Y iga tähe kood on lineaarkombinatsioon võtmetähtedest ja teistest tähtedest m-elemendilises plokis. • X=(x1…xm), Y=(y1…ym) ja K- mm maatriks Y=XK • NB! Vignere šifri m-tähelises plokis ei mõjuta teised tähed ega võtmeelemendid ühegi tähe koodi.

  30. Hilli- ja Vigenere šifrite võrdlus • Vigenere šifri (vasakul) iga väljund yi sõltub ainult vastavast sisendist xi. • Hilli šifri (paremal) iga väljund yi sõltub kõikidest sisenditest x1,…, xm. x1 x2 … xm x1 x2 … xm E k1 k2 … km E E E - lineaarteisendus K y1 y2 … ym y1 y2 … ym

  31. Hilli šiffer: näide • Olgu m=2, X=(x1,x2), Y=(y1,y2) ja K-maatriks: K = Siis kehtivad lineaarvõrrandid: y1 = 11x1 + 3x2 y2 = 8x1 + 7x2 11 83 7

  32. Hilli šifri pööratavus • Tuleb leida maatriksi K pöördmaatriks K-1. Kui y=xK , siis yK-1 = (xK)K-1 = x(KK-1 ) = xI = x. • Võti K peab olema pööratav maatriks. Pööratavaid maatrikseid on suurusjärgus 26m(m-1). Ka suhteliselt väikeste m-de korral on võtmete läbiproovimine suhteliselt raske isegi arvutiga.

  33. Permutatsioonšiffer • Hilli šifri erijuht. • P=C=(Z26)m • K - hulga {1…m} permutatsioonide hulk Sm. • E(x1,…,xm) = (x(1),…,x(m)) = (y1,..., ym) • D(y1,…,ym) = (x1,…,xm) • Saab esitada lineaarteisendusena, kui permutatsioon  esitada permutatsiooni-maatriksina K: (x1,…,xm) K = (x(1),…,x(m))

  34. Näide: permutatsioon ja pöördpermutatsioon 1 2 3 4 5 6 6 2 5 1 4 3 • Permutatsioon  = • Vastav pöördpermutatsioon -1 = • Ja vastav permutatsioonimaatriks: 1 2 3 4 5 6 4 2 6 5 3 1 0 0 0 1 0 00 1 0 0 0 00 0 0 0 0 10 0 0 0 1 00 0 1 0 0 01 0 0 0 0 0

  35. Näide: permutatsioonšifri kasutamine: 1 2 3 4 5 6 6 2 5 1 4 3 • Olgu  = ja sõnum JAHPII LUPART OLIRON GIJUHT IAIJPH TURLAP NLOORI TIHGUJ • Erinevaid permutatsioone on |Sm|=m!, mis kasvab küllalt kiiresti. • Permutatsioonšiffer on ka käsitsi kasutatav.

  36. Jadašifrid • Genereeritakse võtmejada z0, z1, … • Teisendadatske sisendjada X: x0, x1, … Y= y0y1 … = Ez0(x0) Ez1(x1) … • Võtmejada saamise eeskiri: zi = fi(K, x0, x1,…, xi-1) Jadašifrit nimetatakse sünkroonseks, kui võtmejada element ei sõltu sisenditest (avatekstist).

  37. Vigenere šiffer kui jadašiffer • Vigenere šiffer on sünkroonne jadašiffer, kui defineerida zi = fi(k0,…,km-1) = ki mod m, ja yi = xi + zi mod 26. • Jadašifreid kirjeldatakse enamasti kaheelemendilise tähestiku Z2={0,1} baasil. See võimaldab nende efektiivset aparatuurset realiseerimist.

  38. Lineaarsed nihkeregistrid • Jadašifrid, kus kasutatakse lineaarset seoseid: zi = ki, kui i=0…m-1 ja zi+m = c0zi + c1zi+1+…+cm-1zi+m-1 mod 2.   ci+m-1 c0 c1 zi zi+m-1 zi+m zi+1 ...

  39. Lineaarne nihkeregister: näide  • zi+4 = zi + zi+1 mod 2, st c0=c1=1 ja c2=c3=0. • Võti (0,0,0,0) annab nullise väljundjada ja ei ole loomulikult krüpteerimiseks sobilik. • Võti K=(k0,k1,k2,k3)=(1,0,0,0) annab väljundjada: 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 … zi zi+1 zi+2 zi+3 zi+4

More Related