1 / 36

Klassikaliste šifrite murdmine

Klassikaliste šifrite murdmine. Ahto Buldas. Kerckhoffi eeldused. Carol teab, kuidas krüpteerimisalgoritm ja dekrüpteerimisalgoritm töötavad. Kogu salastus tagatakse võtme salastusega. Põhjused: Algoritme on üsna raske varjata, kui need on tehtud paljude spetsialistide ühistööna.

vera
Download Presentation

Klassikaliste šifrite murdmine

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. Klassikaliste šifrite murdmine Ahto Buldas

  2. Kerckhoffi eeldused • Carol teab, kuidas krüpteerimisalgoritm ja dekrüpteerimisalgoritm töötavad. • Kogu salastus tagatakse võtme salastusega. Põhjused: • Algoritme on üsna raske varjata, kui need on tehtud paljude spetsialistide ühistööna. • “Tavainimeste” poolt välja mõeldud algoritmid on enamjaolt kergesti murtavad.

  3. Rünnete tüübid: passiivsed • Teadaolev krüptogramm -- ründajal on teada krüptogramm Y. Ründaja püüab leida avateksti X. • Teadaolev avatekst -- ründajal on teada mingi hulk avatekst-krüptogramm paare (X1,Y1),…,(Xn,Yn) ja krüptogramm Y. Ründaja püüab leida vastavat avateksti X.

  4. Rünnete tüübid: aktiivsed 1. Faas: 2. Faas: Valitav avatekst -- • Ründajal on teatava aja jooksul kasutada algoritm EK() musta kastina. • Seejärel antakse ründajale krüptogramm y ja ta peab ära arvama vastava avateksti x. y xi x: y=EK(x) EK Carol Carol yi = EK(xi) (x1,y1), …, (xn,yn)

  5. Rünnete tüübid: aktiivsed 1. Faas: 2. Faas: y yi x: y=EK(x) DK Carol Carol xi = DK(yi) (x1,y1), …, (xn,yn) • Valitav krüptogramm -- • Ründajal on teatava aja jooksul kasutada algoritm DK() musta kastina. • Seejärel antakse ründajale krüptogramm y ja ta peab ära arvama vastava avateksti x.

  6. Rünnetes kasutatavad põhivõtted • Võtmekandidaatide läbiproovimine. • Loomuliku keele statistiliste omaduste (tähtede ja täheühendite sagedus jne.) ülekanduvus krüptogrammile. • Võtme vahetu leidmine avatekst-krüptogramm paaridest.

  7. Tähtede sagedusvahemikud eestikeelses proosatekstis A 0.115 0.140 B 0.007 0.010 D 0.036 0.047 E 0.105 0.124 F 0.000 0.001 G 0.017 0.022 H 0.015 0.021 I 0.087 0.102 J 0.018 0.022 K 0.045 0.055 L 0.057 0.064 M 0.035 0.042 N 0.042 0.052 O 0.034 0.044 P 0.015 0.022 R 0.021 0.032 S 0.080 0.096 T 0.068 0.080 U 0.056 0.067 V 0.019 0.026 Õ 0.010 0.015 Ä 0.010 0.015 Ö 0.003 0.006 Ü 0.006 0.010

  8. Tähtede sagedused ingliskeelses proosatekstis A0.082 B 0.015 C 0.028 D 0.043 E0.127 F 0.022 G 0.020 H 0.061 I 0.070 J 0.002 K 0.008 L 0.040 M 0.024 N 0.067 O 0.075 P 0.019 Q 0.001 R 0.060 S 0.063 T 0.091 U 0.028 V 0.010 W 0.023 X 0.001 Y 0.020 Z 0.001

  9. Afiinse šifri murdmine • Olgu meil järgmine krüptogramm, mis on saadud ingliskeelsest tekstist: ZRHKREOFZFMMPZKEVNIMRHHRRPROHVUFEFTFZ Tähtede sagedused 37-tähelises krüptogrammis on järgmised: Z 4 R 6 H 4 K 2 E 3 O 2 F 5 M 3 P 2 V 2 N 1 I 1 U 1 T 1

  10. Hüpotees 1: • R tähendab e-d ja F tähendab t-d. Saame võrrandisüsteemi: 4 a + b = 17 19 a + b = 5 millest järeldub, et (arvuvallas Z26) 15a = -12 = 14. Aga 14 on nullitegur, sest 14  13 = 7  2  13 = 7  26  0 (mod 26), kuid samal ajal süt(15,26)=1 ja seega peaks ka a olema nullitegur, mis on vastuolus krüpteerimisfunktsiooni injektiivsusega. Seetõttu puudub süsteemil lahend arvuvallas Z26 ja hüpotees on ebakorrektne.

  11. Hüpotees 2: • R tähendab e-d ja F tähendab a-d. Saame võrrandisüsteemi: 4 a + b = 17 0 a + b = 5 • Siit saame, et b=5 ja 4a=12, millest a=3. • Leiame a-1 = 9 ja seega on dekrüpteerimisfunktsioon kujul x= D(y) = 9(y-5) mod 26. • Proovime dekrüpteerida ja saame: YESTERDAYALLMYTROUBLESSEEMEDSOFARAWAY • Kuna tulemus on ingliskeelne tekst, siis on ülesanne lahendatud.

  12. Asendusšifri murdmine • Olgu meil järgmine eestikeelse sõnumi krüptogramm, kus sõnavahed on säilinud. pün gõtu näglg puurnsgoog obüinä urni öüttni oühg grgtüi puurnbvjögog püöäüä sbrjsgi öüvvg pbtjrjä tjtijlg tgöüpj gjlg pdäpnä gõtur urrg muurgä og puõõgrnp og äjginä ög ännä vntpn fmj vnppgij oüüäöjlg vunän pbõagrj näöüsg ännä gtinä puurnbvjögog ögrrj õggsgöüäö snigln pnõoüögig og gõtur jn urtüi tffi jtgs gjlg süürj sböjrig ög aböönä ögmarn og mgppgä pnõoüögsg pün ög urn pnõoüögtüi üshjä vggõ õnig püssgõiüä vnppgij oüüäöjlg vunää öjsg pbõag oüüõij og pfänä äuäntgr snä puursjnäöjõ förjä pün öj öjsg öugä urnöj

  13. 1 etapp: sagedustabeli koostamine a 4 0.009 b 9 0.021 d 1 0.002 e 0 f 5 0.012 g 65 0.150 A h 2 0.005 i 19 0.044 j 31 0.072 E,I,S k 0 l 7 0.016 m 4 0.009 n 41 0.095 E,I,S o 17 0.039 p 28 0.065 r 25 0.058 s 17 0.039 t 17 0.039 u 23 0.053 v 10 0.023 õ 16 0.037 ä 34 0.079 E,I,S ö 29 0.067 ü 29 0.067 Järeldus: g tähistab suure tõenäosusega A tähte. Tähed j, n ja ä tähistavad suure tõenäosusega tähti {E,I,S} mingis järjestuses.

  14. Tähtede esinemissagedus sõna esimese tähena K 0.130 T 0.110 S 0.095 M,V 0.085 P 0.070 A,E,O,J 0.060 • Eesti keele proosatekstides on tähtede esinemissagedused sõna esimese tähena väljendatavad järgmise tabelina: • Krüptogrammis on tähtede esinemissagedused esitähena väljendatavad järgmise tabelina: p 18 0.225K g 7 0.086 M,V,T,S n 2 0.025 o 10 0.125 S,T,M,V u 5 0.063 ö 11 0.136 S,T,M,V s 5 0.063 t 3 0.038 m 2 0.025 ä 4 0.050 f 2 0.025 v 6 0.075 M,V,T,S õ 2 0.025 j 2 0.025 ü 1 0.013

  15. Tähtede esinemissagedus sõna teise tähena A 0.200 E 0.150 I 0.110 U 0.100 O,Õ,Ä 0.060 N 0.050 Ö,Ü 0.015 • Eesti keele proosatekstides on tähtede esinemissagedused sõna esimese tähena väljendatavad järgmise tabelina: • Krüptogrammis on tähtede esinemissagedused esitähena väljendatavad järgmise tabelina: ü 12 0.150 E,I,U õ 3 0.036 ä 2 0.025 u 10 0.125 E,I,U b 6 0.075 r 6 0.075 j 7 0.086 g 14 0.175 A d 1 0.013 n 12 0.150 E,I,U m 1 0.013 t 2 0.025 f 2 0.025 s 1 0.013 ö 1 0.013

  16. PPeale tõenäolisi asendusi gA, pK, äS, öT saame järgmise teksti: • Kün Aõtu nSAlAKuurnsAooA obüinS urni Tüttni oühAArAtüi KuurnbvjTAoAKüTSüS sbrjsAi TüvvAKbtjrjS tjtijlA tATüKj AjlAKdSKnSAõtur urrA muurAS oAKuõõArnK oASjAinSTASnnS vntKn fmj vnKKAij oüüSTjlA vunSn KbõaArj nSTüsASnnSAtinSKuurnbvjTAoATArrj õAAsATüST sniAln KnõoüTAiA oAAõtur jn urtüi tffi jtAs AjlA süürj sbTjriATA abTTnSTAmarn oA mAKKASKnõoüTAsAKün TA urn KnõoüTAtüi üshjS vAAõ õniAKüssAõiüS vnKKAij oüüSTjlA vunSSTjsAKbõaA oüüõij oAKfSnSSuSntAr snSKuursjnSTjõ fTrjSKün Tj TjsATuAS urnTj • Sõnas “KüTSüS” peab ‘ü’ tähendama mingit täishäälikut. Kõige tõenäolisemalt E, I või U. Ainult U annab üldtarvitatava sõna “KUTSUS”, mistõttu eeldame edaspidi asendust üU

  17. Peale asendust üU ja saame teksti: KUnAõtu nSAlAKuurnsAooA obUinS urni TUttni oUhAArAtUi KuurnbvjTAoAKUTSUS sbrjsAi TUvvAKbtjrjS tjtijlA tATUKj AjlAKdSKnSAõtur urrA muurAS oAKuõõArnK oASjAinSTASnnS vntKn fmj vnKKAij oUUSTjlA vunSn KbõaArj nSTUsASnnSAtinSKuurnbvjTAoATArrj õAAsATUST sniAln KnõoUTAiA oAAõtur jn urtUi tffi jtAs AjlA sUUrj sbTjriATA abTTnSTAmarn oA mAKKASKnõoUTAsAKUn TA urn KnõoUTAtUi UshjS vAAõ õniAKUssAõiUS vnKKAij oUUSTjlA vunSSTjsAKbõaA oUUõij oAKfSnSSuSntAr snSKuursjnSTjõ fTrjSKUn Tj TjsATuAS urnTj Seega tõenäoliselt on n, u ja j tähendused kas E või I. Vaadates esimest sõna “KUn”, saame et ainult I sobib nendel eeldustel n tähenduseks. Seega võtame edaspidises aluseks asenduse nI. Järelikult kas u või j peaksid teisenema täheks E. Vaadates samas kontekstis sõna “TuAS”, ei sobiks u koodiks kuidagi E, sest sõna “TEAS” ei ole üldtarvitatav eestikeelne sõna. Seega võib oletada, et jE.

  18. Tehes asendused nI ja jE, saame teksti: KUIAõtu ISAlAKuurIsAooA obUiIS urIi TUttIi oUhAArAtUi KuurIbvETAoAKUTSUS sbrEsAi TUvvAKbtErES tEtiElA tATUKEAElAKdSKISAõtur urrA muurAS oAKuõõArIK oASEAiISTASIIS vItKI fmE vIKKAiE oUUSTElA vuISIKbõaArEISTUsASIISAtiISKuurIbvETAoATArrE õAAsATUST sIiAlIKIõoUTAiA oAAõtur EI urtUi tffi EtAs AElA sUUrE sbTEriATA abTTISTAmarI oA mAKKASKIõoUTAsAKUITA urIKIõoUTAtUi UshES vAAõ õIiAKUssAõiUS vIKKAiE oUUSTElA vuISSTEsAKbõaA oUUõiE oAKfSISSuSItAr sISKuursEISTEõ fTrESKUITETEsATuAS urITE

  19. Ja veidi veel nuputamist annab avateksti: KUI ARNO ISAGA KOOLIMAJJA JÕUDIS OLID TUNNID JUBA ALANUD KOOLIÕPETAJA KUTSUS MÕLEMAD TUPPA KÕNELES NENDEGA NATUKE AEGA KÄSKIS ARNOL OLLA HOOLAS JA KORRALIK JA SEADIS TA SIIS PINKI ÜHE PIKKADE JUUSTEGA POISI KÕRVALE ISTUMA SIIS ANDIS KOOLIÕPETAJA TALLE RAAMATUST MIDAGI KIRJUTADA JA ARNOL EI OLNUD NÜÜD ENAM AEGA MUULE MÕTELDA TA VÕTTIS TAHVLI JA HAKKAS KIRJUTAMA KUI TA OLI KIRJUTANUD UMBES PAAR RIDA KUMMARDUS PIKKADE JUUSTEGA POISS TEMA KÕRVA JUURDE JA KÜSIS SOSINAL MIS KOOLMEISTER ÜTLES KUI TE TEMA TOAS OLITE Ja vastava asenduse: A B D E F G H I J K L M N O P R S T U V Õ Ä Ö Ü g h i j k l m n o p r s t u v õ ä ö ü a b d e f

  20. Kui sõnavahesid ei ole antud ... • Siis kasutatakse tähepaaride ja tähekolmikute esinemissagedusi. • Inglise keeles on kõige levinumad paarid TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA, ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE, HI, OF. • Kõige levinumad kolmikud THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS, ETH, FOR, DTH.

  21. Vigenere’i šifri murdmine • Kõigepealt leitakse võtmemärkide arv m statistiliste meetoditega. • Seejärel leitakse (ka statistiliste meetoditega) võtmemärkide (k1,…,km) vahed (m-1 tükki). • Avaldatakse kõik võtmemärgid üheainsa võtmemärgi kaudu. • Proovitakse sagedusanalüüsi abil saadavaid võtmekandidaate.

  22. Kasiski test • Kirjeldati esimesena Friedrich Kasiski poolt aastal 1863. • Idee: kaks identset avateksti lõiku krüpteeritakse identseteks lõikudeks, kui nende lõikude alguspunktide vahe jagub m-ga. • Vastupidi: Kaks identset krüptogrammi lõiku pikkusega vähemalt kolm annavad suure tõenäosusega identsed avateksti lõigud.

  23. Kokkulangevuse indeks • Olgu X=x1x2…xn, kus xi{A,…Z}. Def. Jada Xkokkulangevuse indeksiks Ic(X) nimetatakse tõenäosust, et kaks juhuslikult valitud elementi x ja x’ on võrdsed. • f0,f1,…f25 -- tähtede A,B,…Z esinemiste arv. Siis: Ic(X) = f0(f0-1) + … + f25(f25-1) n(n-1)

  24. Tõestus: • Kahte elementi saab jadast X valida täpselt n(n-1)/2 erineval viisil. • Otsitav tõenäosus avaldub järgmiselt: Pr[x=x’] = Pr[x=x’=A] + … + Pr[x=x’=Z]. • Pr[x=x’=A] = f0(f0-1)/n(n-1), sest kahte A-ga võrdset elementi on võimalik jadast X valida täpselt f0(f0-1)/2 erineval viisil.

  25. Indeks Ic(X) loomuliku keele teksti ja juhusliku sõne korral • Kui X on inglisekeelne tekst, siis: Ic(X) p02 + … + p252 = 0.065, kus pi on i-nda tähemärgi esinemise tõenäosus. • Seevastu täiesti juhusliku sõne korral on Ic(X)  26[1/26]2 = 1/26 = 0.038.

  26. Võtmepikkuse leidmine: põhiidee • Valime mingi arvu m ja jagame krüptogrammi Y=y1y2…yn veergudeks järgmisel viisil: Y1: y1y1+my1+2m … y1+km Y2: y2y2+my2+2m … y2+km …………………… Ym: ymy2my3m …y(k+1)m • Kui m on õige võtmepikkus, siis on Yi lähedane inglisekeelsele tekstile ja Ic(Yi)  0.065. • Kui aga m ei ole õige võtmepikkus, siis on Yi lähedasem juhuslikule sõnele, sest erinevad tähed krüpteeritakse erinevate võtmemärkidega

  27. Omavahelise kokkulangevuse indeks • Olgu X=x1x2…xn ja Y=y1y2…yn’ kus xi ja yi{A,…Z}. Def. Jadade X ja Yomavahelisekokkulangevuse indeksiks Ic(X,Y) nimetatakse tõenäosust, et kaks juhuslikult valitud elementi xX ja yY on võrdsed. Kui f0,f1,…f25 -- tähtede A,B,…Z esinemiste arv jadas X ja f’0,f’1,…f’25 -- tähtede A,B,…Z esinemiste arv jadas Y, siis: Ic(X,Y) = f0f’0 + … + f25f’25 nn’

  28. Tõestus • Elemente xX ja yY valida täpselt nn’ erineval viisil. • Otsitav tõenäosus avaldub järgmiselt: Pr[x=y] = Pr[x=y=A] + … + Pr[x=y=Z]. • Pr[x=y=A] = f0f’0/nn’, sest kahte A-ga võrdset elementi on võimaik valida täpselt f0f’0erineval viisil.

  29. Võtme K=(k1,…,km) leidmine (I) • Hindame suurust Ic(Yi,Yj). Valime vastavatest jadadest kaks elementi. Tõenäosus, et mõlemad elemendid on võrdsed A-ga on p-kip-kj kus indeksid on võetud mod 26. Tõenäosus, et mõlemad valitud elemendid on B-d, on p1-kip1-kjjne. • Seega Ic(Yi,Yj) = h ph-kiph-kj = h phph+ki-kj sõltub ainult vahest ki-kj. • Kui ki-kj=0, siis Ic(Yi,Yj)0.065. Kui aga Kui ki-kj0, siis Ic(Yi,Yj)0.040.

  30. Võtme K=(k1,…,km) leidmine (II) f0f’-g + … + f25f’25-g nn’ • Olgu Ic(X,Yg) = • Kui Ic(Yi,Yjg)  0.065, siis suure tõenäosusega g=ki-kj. • Kui piisaval arvul vahesid ki-kj on teada saadud, siis lahendatakse lineaarvõrrandisüsteem, millest kõik võtmetähed avaldatakse ühe võtme (näiteks k1) kaudu.

  31. Hilli šifri murdmine (I) • Teadaoleva krüptogrammiga rünne on suhteliselt keeruline. • Teadaoleva avatekstiga rünne on aga lihtne. Olgu Xj = (x1j, x2j,…, xmj) ja Yj=(y1j, y2j,…, ymj) ja meil on vähemalt m erinevat m-elemendilist jada. Olgu X=[xij] ja Y=[yij] vastavad mm maatriksid. Siis krüpteerimisfunktsioon on maatrikskorrutis Y = X·K.

  32. Hilli šifri murdmine (II) • Kui maatriks X on pööratav, siis saab võtme avadada järgmiselt: K = X-1Y. • Kui X ei ole pööratav, siis tuleb hankida lisainfot avatekst/krüptogramm paaridena.

  33. Hilli šifri murdmine: näide • Olgu m=2 ja ründaja teab paare: EK(5,17) = (15,16) ja EK(8,3) = (2,5). • Vastav maatriksvõrrand on K = • ja selle võrrandi lahend K =  =  =  5 17 8 3  15 16 2 5   5 17-1 8 3  15 16 2 5   9 1  2 15 15 16 2 5   7 19 8 3 

  34. Nihkeregistri murdmine (I) • Oletame, et ründaja teab, et võti on m-bitine ja tema valduses on üks avatekst/krüptogramm paar: X=(x1,…,xn) ja Y=(y1,…,yn), kus n  2m. • Esimene samm: leiame vastavad võtmebitid: zi= yi - xi mod 2.

  35. Nihkeregistri murdmine (II) • Teine samm. Kasutades seost: zm+i = c0zi + c1zi+1 + … + cm-1zi, kirjutame välja järgmise maatriksvõrrandi: (zm+1,zm+2,…,z2m) = (c0,c1,…,cm-1) z1z2 … zmz2z3 … zm+1……………….zmzm+1 … z2m-1 

  36. Nihkeregistri murdmine (III) • Lahendame selle võrrandi ci-de suhtes ja saame: (c0,c1,…,cm-1) = (zm+1,zm+2,…,z2m) • Registri struktuuri teadmine on piisav võtmejada ekstrapoleerimiseks (mõlemas suunas!) z1z2 … zm-1z2z3 … zm+1……………….zmzm+1 … z2m-1 

More Related