Krüptoloogia II: Sissejuhatus teoreetilisse krüptograafiasse Ahto Buldas 22. september 2003
2
Sisukord Saateks v 1 Entroopia ja infohulk 1 1.1 Sissejuhatus............................ 1 1.2 Kombinatoorne entroopia.................... 1 1.3 Optimaalsed prefiksivabad koodid ja Huffmani puud...... 6 1.4 Shannoni entroopia omadused.................. 10 1.5 Tingimuslik entroopia...................... 12 1.6 Entroopia aksiomaatika...................... 14 2 Shannoni salastusteooria 19 2.1 Krüptosüsteemi tõenäosuslik mudel............... 19 2.2 Täieliku salastuse definitsioon.................. 20 2.3 Täieliku salastuse hind..................... 21 2.4 Võtme korduvkasutus ja selle turvalisus............. 22 2.5 Kokkuvõte............................. 25 3 Keerukusteooria elemendid 27 3.1 Arvutatavus............................ 27 3.1.1 Turingi masin....................... 28 3.1.2 Keeled ja ülesanded.................... 30 3.1.3 Arvutusaeg ja keerukus.................. 30 3.2 Mittedetermineeritud Turingi masin............... 31 3.2.1 Klass NP......................... 32 3.2.2 P versus NP....................... 34 3.3 Stohhastiline Turingi masin................... 34 3.3.1 Klassid RP, corp ja ZPP............... 35 3.3.2 Klass PP......................... 36 i
ii SISKORD 3.3.3 Klass BPP........................ 36 3.4 Arvutused nõuannetega..................... 39 4 Teoreetilise krüptograafia põhimõisted 41 4.1 Primitiivid, vastased ja turvaparameeter............ 41 4.2 Aeg-edukus suhe ja turvalisuse definitsioon........... 42 4.3 Reduktsiooni mõiste....................... 43 4.4 Reduktsiooni tüübid....................... 44 5 Ühesuunalised funktsioonid 47 5.1 Ühesuunalise funktsiooni mõiste................. 47 5.2 Nõrk ühesuunalisus........................ 47 5.3 Ühesuunalise funktsiooni tugevdamine............ 48 5.3.1 Laiendused........................ 49 5.3.2 Pöördlaiendused...................... 50 5.3.3 Funktsiooni g ühesuunalisuse tõestus.......... 52 5.4 Funktsioonid osaliselt avaliku sisendiga............. 54 5.5 Funktsiooni g konstruktsiooni omadused............ 54 5.6 Jaotused ja operatsioonid nendega................ 55 5.7 Lineaarne reduktsioon...................... 56 5.8 Dsikreetne logaritm ja eneselereduktsioon............ 58 6 Pseudojuhuarvud 61 6.1 Pseudojuhuarvude definitsioon.................. 61 6.2 Väljundi venitamine....................... 65 7 Varjatud bitid 69 7.1 Piiratud sõltumatusega tõenäosusruumid............ 69 7.2 Näiteid tõenäosusruumidest................... 70 7.2.1 (mod p)-ruum...................... 70 7.2.2 (mod p)-ruum ja k-kaupa sõltumatus......... 71 7.2.3 Skalaarkorrutisega ruum................. 72 7.2.4 Lõpliku korpuse ruum.................. 73 7.2.5 Üldine skalaarkorrutisega ruum............. 74 7.3 Tšebõšovi võrratus........................ 75 7.4 Kinnituste valimid........................ 78 7.4.1 Esimene meetod...................... 78 7.4.2 Teine meetod....................... 79
SISKORD iii 7.5 Graafi tipuhulga tükeldamise probleem............. 79 7.6 Skalaarkorrutise bitt on varjatud................ 81 7.7 Juhuarvude generaator varjatud bitist.............. 83 7.8 Tõestus lemmale varjatud bitist................. 84 8 Jadašifrid 89 8.1 Jadašifri definitsioon....................... 89 8.2 Lihtne passiivne rünne...................... 90 8.3 Näide turvalisest jadašifrist.................... 90 8.4 Üldine passiivne rünne...................... 91 8.5 Kovariatsioon ja selle omadused................. 93 8.6 Turvalisus üldise passiivse ründe vastu............. 94 8.7 Lihtne valitud avatekstiga rünne................. 96 8.8 Üldine valitud avatekstiga rünne................. 98 9 Blokkšifrid 103 9.1 Motivatsioon........................... 103 9.2 Blokkšifri definitsioon....................... 104 9.3 Valitud avatekstiga rünne.................... 105 9.4 Pseudojuhuslike funktsioonide generaatorid........... 106 9.5 Blokkšifri konstruktsioon..................... 110 9.6 Permutatsioonigeneraatorid ja Feisteli konstruktsioon..... 112 9.7 Kolmekordse Feisteli struktuuri turvalisus........... 114 9.8 Indeksivabad blokkšifrid..................... 121
iv SISKORD
Saateks Käesolev õppematerjal on mõeldud üliõpilastele ja kraadiõppuritele tutvumaks teoreetilise krüptograafia kui teaduse alustega. Materjal on koostatud seoses vastavasisuliste loengukursustega Tartu Ülikoolis ja Tallinna Tehnikaülikoolis aastail 2001 2003. Krüptograafia arenemine inseneritarkuse eklektilisest kogumist süstemaatiliseks teaduslikuks distsipliinist sai alguse seoses Claude Shannoni teedrajavate töödega aastail 1945 1949, kui tekkis informaatika teoreetiline käsitlus. Informatsiooni kaitse on olnud üks krüptograafia tekke ajenditest, mistõttu alustamegi materjali esitamist käsitlusega entroopiast kui informatsiooni mõõdust. Teine peatükk on pühendatud Shannoni salastusteooriale, milles defineeritakse entroopia mõistele tuginedes nn. täieliku salastuse tingimus. Üks Shannoni teooriast tulenev põhijäreldus on praktika seisukohalt murettekitav täieliku salastuse saavutamiseks peab kasutatav salajane võti olema sama mahukas nagu kõik kaitstavad (krüpteeritud) sõnumid kokku, mis teeb salastuse väga kulukaks. Seetõttu on krüptograafia üks peamisi eesmärke uurida meetodeid, kuidas saab piiratud mahuga salajasest võtmest genereerida suure mahuga salajast võtit, ilma et seejuures tekiks praktikas olulist turvakadu. Shannoni teooriast tulenevalt ei ole ühe võtme massiline korduvkasutus praktikas võimalik ilma täieliku salastuse tingimust rikkumata, mistõttu ainus tee edasi on selle tingimuse enda ülevaatamine. Shannoni teooria arvestab sisuliselt piiramatu arvutusvõimsusega vastastega (kõik, mida saab arvutada, on ka efektiivselt arvutatav). Hilisem kogemus aga näitas, et seda nõuet saab oluliselt nõrgendada. Eelmise sajandi 60-ndail aastail tekkima hakanud teoreetiline arvutiteadus tõstis esile asjaolu, et paljusid lahendatavaid (ja pealtnäha lihtsaid) kombinatoorikaülesandeid ei ole võimalik arvuti abil lahendada, sest see võtaks liiga kaua aega isegi siis, kui tööle rakendada kogu maailmas leiduvad arvutid. Tekkis keerukusteooria, mis lõi aluse piiratud arvutusvõimsusega vastaste käsitlusele. Ülevaade v
vi SAATEKS keerukusteooriast on esitatud kolmandas peatükis. Formaalset turvalisuse definitsiooni piiratud võimsusega vastase korral ei ole enam hästi võimalik esitada entroopia terminites. Keerukusteooriast tuntud reduktsioonid (ühe kombinatoorikaülesande taandamine teisele) osutusid sobilikuks meetodiks turvalisuse defineerimisel. Need võeti esimesena kasutusele eelmise sajandi 80-ndate aastate alguses Silvio Micali jt. poolt. Reduktsioonid võimaldavad tõestada turvalisust kui lauset: Kui kombinatoorikaülesande X lahendamiseks on vaja arvutusressursse mahus T, siis süsteemi Y murdmiseks on vaja ressursse mahus T. Neljandas peatükis antakse ülevaade keerukusteoreetilisest lähenemisest krüptograafiale. Reduktsioonide meetod annab võimaluse konstrueerida šifreid, mis kasutavad piiratud mahuga salajast võtit, kuid samas võimaldavad kaitsta pikki sõnumeid ja on tõestatavalt turvalised piiratud võimsusega vastaste suhtes. Peatükkides 5-9 näidataksegi seda, kuidas selliseid šifreid konstrueerida ja kuidas tõestada nende turvalisust, eeldades teatud kombinatoorikaülesande (näiteks kahe algarvu korrutise tegurdamine) raskust. Reduktsioonide meetodile tuginedes konstrueeritakse jada- ja blokkšifrid nn. ühesuunalistest funktsioonidest, mida loetakse teoreetilise krüptograafia üheks algprimitiiviks. Ühesuunalist funktsiooni on lihtne arvutada, kuid raske pöörata. Tänaseks on teada mitmeid funktsioone, mis usutakse olevat ühesuunalised. Nende põhjal (reduktsioonide abil) koostatud šifrite murdmine lükkaks ümber ka hüpoteesi nimetatud funktsioonide ühesuunalisusest, mistõttu on lehendatud ka esialgne ülesanne leida turvaline meetod piiratud mahuga krüptograafilise võtme kasutamiseks pikkade sõnumite krüpteerimiseks. Käesolevas õppematerjalis ei käsitleta avaliku võtmega krüptograafiat, mis põhineb nn. salauksega funktsioonidel (trapdoor functions). See võib emapilgul näida õppematerjali tõsise puudusena. Samas, käesolev õppematerjal ei olegi mõeldud andmaks ülevaadet kogu nüüdisaegsest krüptograafiast vaid ennekõike on see mõeldud andmaks ettekujutust meetodist, mida teoreetiline krüptograafia kasutab. Õppematerjal on koostatud eeldusel, et lugejal on eelteadmised ülikooli esimeste kursuste matemaatikaprogrammi ulatuses (analüüs, elementaarne tõenäosusteooria, algebra). Informatsiooniteooria ja keerukusteooria ülevaade sisaldub õppematierjalis. Seetõttu ei eelda esitatud materjali omandamine otseselt lisamaterjalide lugemist. Järgnev loetelu sisaldab krüptograafiaalaseid kirjutisi, mis olid aluseks käesoleva õppematerjali/loengukonspekti koostamisel:
Michael Luby. Pseudorandomness and Cryptographic Applications. Princeton Computer Science Notes. Princeton niversity Press, 1996. ISBN 0-961-02546-0. Christos H. Papadimitriou. Computational Complexity. Addison-Wesley 1994. ISBN 0-201-53082-1. Douglas R. Stinson. Cryptography: Theory and Practice. CRC Press, 1995. ISBN 0-8493-8521-0. Dominic Welsh. Codes and Cryptography. Oxford niversity Press, 1988. ISBN 0-19-853287-3. vii
viii SAATEKS
Peatükk 1 Entroopia ja infohulk 1.1 Sissejuhatus Olgu meil mingi diskreetne juhuslik suurus X erinevate väärtuste hulgaga S = {x 1,..., x n }. Seda võib vaadelda katsena, mille tulemusena saadakse väärtus x i S tõenäosusega p i = Prob[X = x i ]. Intuitiivselt defineeritakse juhusliku suuruse X entroopia H[X] kui informatsiooni hulk, mida selle suuruse väärtuse teadasaamine (katse sooritamine) meile annab. Paljudes käsitlustes antakse entroopia definitsioonina nn. Shannoni entroopia avaldis H[X] = i p i log p i, (1.1) kus summeerimine toimub üle selliste indeksite i, mille korral p i > 0. Selline lähenemine on aga kõike muud kui pedagoogiline toodud valemi seost entroopia intuitiivse definitsiooniga on raske näha. Me alustame intuitiivsest definitsioonist ja jõuame valemi (1.1) põhjenduseni. 1.2 Kombinatoorne entroopia Vaatleme esmalt juhtu, kus tõenäosusjaotus on ühtlane, st p i = 1/n, iga i {1,...,n} korral. Kui palju infot annab meile X-i väärtuse teadasaamine? Kujutleme mõttelist katset, kus üks katsealune A (oraakel) teab tegelikku väärtust ette ja teine katsealune B püüab seda teada saada esitades oraaklile küsimusi, kusjuures iga küsimuse vastus võib olla kas jah või ei. Informaatikule kohaselt väljendudes, iga vastus sisaldab ühe biti informatsiooni. 1
2 PEATÜKK 1. ENTROOPIA JA INFOHLK Katsealusel B on kaks ekvivalentset viisi suuruse X väärtuse teadasaamiseks. Ta võib kas teha ise katse või küsida X-i väärtuse bitt-haaval oraakli A käest. Seega võib katses sisalduva infohulga mõõduks võtta küsimuste arvu oraaklile, mis garanteerib suuruse X väärtuse teadasaamise. Vajalik küsimuste arv sõltub aga sellest, milline on küsimuste esitamise strateegia ja milline on tegelik X-i väärtus. Näiteks võib B küsida järjest (ükshaaval) kõiki väärtusi x 1,...,x n. See strateegia on edukas niipea, kui saadakse esimene jah vastus. Keskmine küsimuste arv on n/2, kusjuures halvimal juhul läheb vaja n 1 küsimust. Entroopia defineerimisel on mõistlik lähtuda strateegiast, mis annab minimaalse vajaliku küsimuste arvu. Selgub, et n/2 ei ole kaugeltki minimaalne (ei keskmise ega halvima juhu mõttes). Järgnevas näitame, et Shannoni entroopia (1.1) on keskmise vajaliku küsimuste arvu alamtõke. Kõigepealt defineerime küsimuste esitamise strateegia kui teatavat liiki (nn. prefiksivaba) koodi. Definitsioon 1 Injektiivset funktsiooni D f {0, 1} nimetatakse prefiksivabaks koodiks, kui f(y) f(x) z 1,...,z m mitte ühegi erinevate elementide paari x y, ja elementide z 1,..., z m {0, 1} korral. Prefiksivaba koodi sõnu (kujutisi) võib vaadelda kui jah/ei vastuste komplekte. Igale komplektile koodis vastab kindel hulga D element. Lemma 1 Iga 0 < r R korral ln r r 1, kusjuures võrdus kehtib parajasti siis kui r = 1. Lemma 2 (Kullback-Liebleri võrratus) Kui X on juhuslik suurus väärtuste hulgaga D ja D π [0...1] on funktsioon, nii et x D π(d) 1, siis s = Prob[X = x] Prob [X = x] ln X X π(x) x D 0, kusjuures võrdus kehtib parajasti siis, kui π(x) = Prob[X = x] iga x korral. X
1.2. KOMBINATOORNE ENTROOPIA 3 Tõestus. s = Prob [X = x] ln π(x) X Prob[X = x] x D X ( ) π(x) Prob[X = x] 1 X Prob[X = x] x D X = Prob[X = x] X x D }{{} =1 π(x) 0. x D }{{} 1 Niipea, kui π(x) Prob[X = x] mingi x korral muutub eelmise lemma tõttu võrratus rangeks. X Lemma 3 (Krafti võrratus) Iga prefiksivaba koodi D f {0, 1} kehtib võrratus: s = 2 f(x) 1, x D korral kus f(x) tähistab koodsõna f(x) pikkust. Tõestus. Kõigepealt esitame summa s veidi teisel kujul, kasutades tähistusi c n = {x D: f(x) = n}, st c n on kõigi n-bitiste koodsõnade arv. Siis s = c n 2 n. n=0 Kui D on lõplik hulk, siis leidub alati selline m 0, millest alates c m+1 = c m+2 =... = 0. Arutleme, kui suur võib maksimaalselt olla c m. On selge, et ideaaljuhul võib olla c m = 2 m, sest täpselt nii palju on kõikvõimalikke m-bitiseid koodsõnu. Koodi prefiksivabadusest tulenevalt ei tohi aga m- bitised sõnad sisaldada algosana (prefiksina) lühemaid samasse koodi kuuluvaid sõnu. Näiteks kui kood sisaldab tühisõna, siis c m = 0, sest tühisõna võib vaadelda mis tahes sõna algosana. Kui kood sisaldab ühebitist sõna 1, siis m-bitiste koodsõnade hulgas ei tohi esineda 1-ga algavaid sõnu, mida on täpselt 2 m 1. Kui lisaks sõnale 1 sisaldab kood ka kahebitist sõna 01, siis ei saa m-bitiste koodsõnade hulgas olla 01 -ga algavaid sõnu, mida on täpselt 2 m 2 tükki. Seega kehtib võrratus: c m 2 m c 0 2 m 0 c 1 2 m 1 c 2 2 m 2... c m 1 2 1,
4 PEATÜKK 1. ENTROOPIA JA INFOHLK mille läbi jagamisel 2 m -ga ja liikmete viimisel vasakule poole, saame s = c 0 2 0 + c 1 2 1 + c 2 2 2 + c 3 2 3 +... + c m 2 m 1. (1.2) Olgu lisatud, et teoreemi väide kehtib iga loenduva (mitte ainult lõpliku!) koodi korral. Võrratus (1.2) jääb kehtima iga lõpliku osasumma korral, millest järeldub rea s koonduvus ühest väiksemaks või sellega võrdseks arvuks. Teoreem 1 Kui X on juhuslik suurus võimalike väärtuste hulgaga D, siis iga prefiksivaba koodi D f {0, 1} sõnade keskmine pikkus on ülalt tõkestatud suuruse X Shannoni entroopiaga, st Expect[ f(x) ] H[X]. X Tõestus. Kasutame Kullback-Liebleri ja Krafti võrratusi: Expect[ f(x) ] H[X] = Expect[ f(x) H[X]] X X = ( ) 1 Prob[X = x] f(x) log 2 X Prob[X = x] x D X = x D Prob X [X = x] log 2 0. Prob X [X = x] 2 f(x) Definitsioon 2 Juhusliku suuruse X kombinatoorseks entroopiaks nimetatakse suurust Hcomb[X] = min Expect[ f(x) ], f X kus miinimum arvutatakse üle kõigi prefiksivabade koodide D f {0, 1}. Näitasime juba, et H[X] Hcomb[X]. Nüüd näitame, et kombinatoorne entroopia ei erine palju Shannoni entroopiast, st Hcomb[X] H[X] + 1. Teoreem 2 (Shannon 1948) H[X] Hcomb[X] H[X] + 1.
1.2. KOMBINATOORNE ENTROOPIA 5 Tõestus. Olgu X juhuslik suurus väärtuste hulgaga D = {x 1,...,x N }, kusjuures p i = Prob[X = x i ] 0 iga i {1,...,N}. Olgu elemendid indekseeritud nii, et p 1 p 2...p N. Piisab kui näitame, et leidub prefiksivaba kood f, nii et teoreemi väites olev võrratus kehtib. Vajaliku koodi konstrueerimiseks defineerime suurused a 1 = 0 a 2 = p 1 a 3 = p 1 + p 2 a 4 = p 1 + p 2 + p 3... a N = p 1 + p 2 + p 3 +... + p N 1. Olgu m i selline positiivne täisarv, nii et 2 m i+1 > p i 2 m i. (1.3) On selge, et m 1 m 2... m N. Defineerime a i kui kahendmurru, mis saadakse arvu a i esitusest, millest kustutatakse kõik peale m i komakoha, st a i = a i + 2 mi a i, kus a i < 1. Defineerime koodi f, nii et f(x i ) olgu arvu a i kümnendkohtadest koosnev järjend pikkusega m i. Näitame, et defineeritud kood on tõepoolest prefiksivaba. Olgu 1 i < j N ja f(x j ) = f(x i ) z. Et m i m j, siis vastupidi olla ei saa. Siit järeldub, et a i + 2 mi a i = a i = p 1 +... + p i 1 a j + z = a 2 mi j = p 1 +... + p j 1, kus z < 1. Võrratuse a j > a i tõttu 0 < z a i < 1. Lahutades teisest võrrandist esimese, saame 2 m i > 2 m i (z a i ) = a j a i = p i +... + p j 1 2 m i, mis on vastuolu. Järelikult on defineeritud kood prefiksivaba. Võrratustest (1.3) järeldub, et log 2 p i m i log 2 (p i ) + 1, millest omakorda saame hinnata koodi keskmist pikkust l = N i=1 p i m i : N N H[X] = p i ( log 2 p i ) l p i ( log 2 (p i ) + 1) = H[X] + 1. i=1 i=1
6 PEATÜKK 1. ENTROOPIA JA INFOHLK 1.3 Optimaalsed prefiksivabad koodid ja Huffmani puud Prefiksivaba koodi f nimetatakse optimaalseks, kui Expect[ f(x) ] = Hcomb[X]. X Ehkki selliste koodide olemasolu on selge, ei ole me seni näidanud kuidas optimaalseid koode konstrueerida. Selgub, et kui uurida optimaalsete koodide üldisi omadusi, siis need üldised omadused reedavad meile ka optimaalse koodi leidmise algoritmi, mida tema avastaja järgi nimetatakse Huffmani algoritmiks. Vaatleme juhuslikku suurust X väärtuste hulgaga D = {x 1,...,x n } ja vastavate tõenäosustega p 1,..., p n, kusjuures eeldame, et p 1 p 2... p n > 0. Kui f on kood, siis tähistame l f (x i ) = f(x i ). Koodi keskmist pikkust tähistame: n l f = p i l f (x i ) i=1 On selge, et kui n = 2, siis optimaalne kood f saadakse defineerides f(x 1 ) = 0 ja f(x 2 ) = 1, mis annab keskmiseks koodi pikkuseks l f = p 1 + (1 p) 1 = 1. Lemma 4 Kui f on optimaalne prefiksivaba kood ja p i > p j, siis l f (x i ) l f (x j ). Tõestus. Kui l f (x i ) > l f (x j ), siis defineerime uue koodi f, mis käitub sarnaselt koodiga f, välja arvatud kohtadel x i ja x j, kus f (x i ) = f(x j ) ja f (x j ) = f(x i ). Siis oleks p i l f (x i ) + p j l f (x j ) = p i l f (x j ) + p j l f (x i ) = p i l f (x i ) + p j l f (x j ) (p i p j )(l f (x i ) l f (x j )) }{{} >0 < p i l f (x i ) + p j l f (x j ), mistõttu ka l f = i p il f (x i ) < i p il f (x i ) = l f, mis oleks vastuolus koodi f optimaalsusega.
1.3. OPTIMAALSED PREFIKSIVABAD KOODID JA HFFMANI PD7 Lemma 5 Olgu f optimaalne prefiksivaba kood juhuslikule suurusele X väärtuste hulgaga D = {x 1,...,x n } ja tõenäosustega p 1,...,p n, kusjuures p 1... p n > 0 ja l f (x 1 )... l f (x n ). Siis l f (x n 1 ) = l f (x n ) ja leidub i {1,...,n 1}, nii et koodid f(x i ) ja f(x n ) erinevad ainult viimase märgi poolest (näiteks f(x n ) = w 1 ja f(x i ) = w 0). Tõestus. Oletame, et l f (x n 1 ) < l f (x n ). Siis f(x n ) on ainuke pikim kood. Olgu näiteks f(x n ) = w 1. On selge, et kood w ei ole ühegi teise koodi f(x 1 ),..., f(x n 1 ) algosa, sest see saaks olla võimalik vaid siis, kui w {f(x 1 ),...,f(x n 1 )}, sest w on vähemalt sama pikk kui mis tahes kood sellest hulgast. Samuti ei ole ükski koodidest f(x 1 ),...,f(x n 1 ) koodi w algosa, sest siis oleks ta ühtlasi koodi f(x n ) algosa. Seega, kui asendada väärtuse x n kood f(x n ) koodiga w, saaksime koodi, mis oma efektiivsuselt ületaks koodi f, mis on aga võimatu koodi f optimaalsuse tõttu. Seega on koodid f(x n 1 ) ja f(x n ) tõepoolest ühepikkused. Kui f(x n ) = w c, kus c {0,1} ja iga i {1,...,n 1} erineksid koodid f(x i ) ja f(x n ) rohkem kui viimase märgi poolest, siis kood w ei oleks ühegi koodi f(x 1 ),...,f(x n 1 ) algosa. Vastasel korral oleks mingi i {1,...,n 1} korral f(x i ) = w c, kus c {0,1}, sest f(x i ) w + 1 = f(x n ) ja w f(x i ), sest vastasel korral f(x i ) oleks koodi f(x n ) algosa. Järelikult saab elemendi x n koodi f(x n ) asendada lühema koodiga w, mis on vastuolus koodi f optimaalsusega. Kui elementide x 1,...,x n tõenäosused on vastavalt (p 1,...,p n ) (seda jada nimetame ka jaotuseks), siis kasutame edaspidi koodi tähistusena (lisaks funktsioonile f) ka lõplikku jada f : (w 1,..., w n ), kus w i = f(x i ). Teoreem 3 Olgu f : (w 1,...,w n ) jaotuse (p 1,...,p n ) optimaalne prefiksivaba kood. Kui p 1... p n > 0, w 1... w n, w n 1 = w 0 ja w n = w 1, siis g: (w 1,...,w n 2, w) on optimaalne prefiksivaba kood jaotusele (p 1,...,p n 2, p n 1 + p n ). Tõestus. Kõigepealt näitame, et kood g on prefiksivaba. Ühelt poolt on selge, et ükski koodsõnadest w 1,...,w n 2 ei saa olla sõna w algosa, sest muidu ei oleks kood f ise prefiksivaba. Kui w oleks sõna w i algosa, siis w i w + 1 tõttu kas w i = w 0 või w i = w 1, millest aga järelduks, et w i {w n 1, w n }, mis on vastuolus koodi f prefiksivabadusega. Oletame, et g ei ole optimaalne. Siis leiduks kood γ : (v 1,...,v n 2, v), nii et n 2 n 2 l γ = p i v i + (p n 1 + p n ) v < p i w i + (p n 1 + p n ) w = l g. i=1 i=1
8 PEATÜKK 1. ENTROOPIA JA INFOHLK Defineerime uue koodi ϕ: (v 1,..., v n 2, v 0, v 1) jaotusele (p 1,...,p n ) ja näitame, et kood ϕ on efektiivsem koodist f. Tõepoolest, l ϕ = = < = n 2 p i v i + (p n 1 + p n )( v + 1) i=1 n 2 p i v i + (p n 1 + p n ) v + p n 1 + p n i=1 n 2 p i w i + (p n 1 + p n ) w + p n 1 + p n i=1 n 2 p i w i + (p n 1 + p n )( w + 1) = l f. i=1 See on aga vastuolus koodi f optimaalsusega. Teoreem 4 Olgu g: (w 1,...,w n 2, w) optimaalne prefiksivaba kood jaotusele (p 1,...,p n 2, p n 1 + p n ), kus p 1... p n > 0. Siis f : (w 1,...,w n 2, w 0, w 1) on optimaalne prefiksivaba kood jaotusele (p 1,...,p n ). Tõestus. Näitame kõigepealt, et f on prefiksivaba. On selge, et koodid w 0 ja w 1 ei saa olla koodide w 1,...,w n 2 algosad, sest siis oleks ka kood w ise vastavate koodide algosa, mis aga oleks vastuolus koodi g prefiksivabadusega. Kui mingi i {1,..., n 2} korral oleks kood w i koodi w 0 algosa, siis järelikult w i = w 0, sest muidu oleks w i juba sõna w algosa. Kuid võrdus w i = w 0 tähendaks, et w 0 oleks koodi w i algosa, mille võimatust me aga just põhjendasime. Järelikult on f prefiksivaba. Kui f ei oleks optimaalne, siis leiduks optimaalne (NB!) kood ϕ: (v 1,...,v n 2, v n 1, v n ), nii et l ϕ < l f. Lemmale 5 tuginedes võib eeldada üldisust kitsendamata, et v n 1 = v 0 ja v n = v 1. Näitame, et kood γ : (v 1,..., v n 2, v) jaotusele (p 1,...,p n 2, p n 1 +p n ) on
1.3. OPTIMAALSED PREFIKSIVABAD KOODID JA HFFMANI PD9 efektiivsem koodist g. Tõepoolest, l γ = = n 2 p i v i + (p n 1 + p n ) v i=1 n 2 p i v i + p n 1 ( v + 1) + p n ( v + 1) p n 1 p n i=1 = l ϕ p n 1 p n < l f p n 1 p n n 2 = p i w i + p n 1 ( w + 1) + p n ( w + 1) p n 1 p n = i=1 n 2 p i w i + (p n 1 + p n ) w i=1 = l g. Vastuolu koodi g optimaalsusega. Nüüd on selge, kuidas leida optimaalset prefiksivaba koodi. Eeskirja (nn. Huffmani algoritmi) võib esitada järgmise kahe sammuna. (1) Triviaalse jaotuse (1) optimaalne kood on ( ), kus tähistab tühisõna. (2) Kui n > 1, ja (p 1,..., p n ) on jaotus, nii et p 1... p n > 0, siis optimaalne kood saadakse kui: (2a) protseduuri rekursiivselt rakendades leitakse optimaalne prefiksivaba kood (w 1,...,w n 2, w) jaotusele (p 1,...,p n 2, p n 1 + p n ); ja (2b) moodustatakse kood (w 1,..., w n 2, w 0, w 1). Huffmani algoritmi rakendamist võib vaadelda ka kui puu (nn. Huffmanni puu) ehitamist. Huffmani puu konstrueeritakse alt üles järgmisel meetodil: (0) Puu lehtedeks võetakse esialgsed tõenäosused p 1,...,p n. (1) Järjestatakse tõenäosused suuruse järjekorras. (2) Võetakse kaks kõige väiksemat tõenäosust (st p n 1 ja p n ) ja moodustatakse nendest uus tipp, mis on ühtlasi tõenäosustele p n 1 ja p n vastavate tippude ühine vanem, ning millele vastav tõenäosus on p n 1 +p n.
10 PEATÜKK 1. ENTROOPIA JA INFOHLK (3) Alustatakse protseduuri uuesti alates sammust (0), lähtudes tõenäosustest p 1,...,p n 2, p n 1 + p n. Protsess lõpeb, kui alles jääb üksainus tipp (Huffmani puu juur), mille tõenäosus on loomulikult 1. Seejärel omistatakse iga tipu juures kahele järglastele osutavale servale arvud 1 ja 0 (meelevaldses järjestuses). Lehe kood on 0/1-jada, mis tekib kui liikuda juurtipust antud leheni. 0 1/4 1 0 7/12 1 0 5/12 1 1/4 0 1 1/6 1/4 1/8 1/8 1/3 00 01 100 101 11 Joonis 1.1: Huffmani puu näide. Näiteks kui tõenäosused on p 1 = 1 3, p 2 = 1 4, p 3 = 1 6, p 4 = 1 8, p 5 = 1 8, siis esimese sammuna ühendatakse viimased kaks tõenäosust, saades uue jada p 1 = 1 3, p 2 = 1 4, p 3 = 1 6, p 45 = 1 4, mille vähim element on loomulikult 1/6. Samas on suuruselt järgmise elemendi kandidaate kaks: p 2 ja p 45. Valime selleks kandidaadiks p 2. Tekkiv uus tõenäosuste jada on p 1 = 1, p 3 23 = 5, p 12 45 = 1. Järgnevalt kuuluvad 4 ühendamisele p 1 ja p 45, kusjuures tekib uus tipp tõenäosusega 7 1.4 Shannoni entroopia omadused Teoreem 5 Kui X on juhuslik suurus väärtuste hulgaga D = {x 1,...,x n }, siis kehtib võrratus H[X] log 2 n, kusjuures võrdus kehtib parajasti siis, kui iga x D korral Prob[X = x] = 1/n. 12.
1.4. SHANNONI ENTROOPIA OMADSED 11 Tõestus. Tõestame, et vahe log 2 n H[X] 0. Kasutame Kullback- Liebleri võrratust. Olgu p i = Prob[X = x i ]. log 2 n H[X] = = = n p i log 2 n + i=1 n p i log 2 p i i=1 n p i log 2 (n p i ) i=1 n i=1 0. p i log 2 p i 1 n Kullback-Liebleri võrratusest tuleneb ka, et võrdus kehtib ainult siis, kui p i = 1. Eeldades, et p n i = 1, saame n H[X] = i p 1 i log 2 p i = log 2 n, millest järeldub et tõestatud maksimum tõepoolest ka saavutatakse. Teoreem 6 Olgu X ja Y kaks juhuslikku suurust. Siis H[X, Y ] H[X] + H[Y ], kusjuures võrdus kehtib vaid siis, kui X ja Y on sõltumatud. Tõestus. Olgu suuruste X ja Y väärtste hulkadega vastavalt D X = {x 1,...,x n } ja D Y = {y 1,...,y m }. Olgu p i = Prob[X = x i ], q j = Prob[Y = y j ] ja r ij = Prob[X = x i ja Y = y j ]. Kasutades võrdusi p i = j r ij ja q j = i r ij Hindame suurust e = H[X] + H[Y ] H[X, Y ]. e = = = n i=1 n i=1 n i=1 p i log 2 1 p i + m j=1 m j=1 m j=1 r ij log 2 1 p i + q j log 2 1 q j + m j=1 r ij log 2 r ij p i q j 0, n i=1 n i=1 m r ij log 2 r ij j=1 r ij log 2 1 q j + n i=1 m r ij log 2 r ij sest i j p iq j = ( i p i) ( j q j) = 1 ning võrratus järeldub seetõttu otseselt Kullback-Liebleri võrratusest. Samuti järeldub otseselt, et võrdus kehtib parasjagu siis, kui r ij = p i q j, millest tuleneb suuruste X ja Y sõltumatus. j=1
12 PEATÜKK 1. ENTROOPIA JA INFOHLK 1.5 Tingimuslik entroopia Olgu X ja Y juhuslikud suurused väärtuste hulkadega D X ja D Y. Olgu y D Y muutuja Y mingi fikseeritud väärtus. Võib defineerida uue juhusliku suuruse X y, mille väärtuste piirkond on D X ja elemendi x D X tõenäosus on p(x y) = Prob[X = x Y = y]. Suuruse X y entroopia H[X y] = 1 p(x y) log 2 p(x y) x D X tähendab intuitiivselt informatsioonihulka, mille me saame suuruse X tegeliku väärtuse teadasaamisel, eeldusel, et me teame juba, et Y = y. Suuruse H[X y] keskväärtust tähistame H[X Y ] = Prob[Y = y] H[X y] y D Y = 1 p(y)p(x y) log 2 p(x y) x D X y D Y = x,y p(x, y) log 2 p(x y). ja nimetame suuruse X tingimuslikuks entroopiaks suuruse Y suhtes. Intuitiivselt tähendab H[X Y ] informatsiooni hulka, mis annaks suuruse X teadasaamine, eeldusel, et suuruse Y tegelik väärtus on juba teada. Teoreem 7 H[X, Y ] = H[Y ] + H[X Y ].
1.5. TINGIMSLIK ENTROOPIA 13 Tõestus. H[X, Y ] = x,y = x,y = x,y p(x, y) log 2 p(x, y) p(x, y) log 2 p(y)p(x y) p(x, y)[log 2 p(y) + log 2 p(x y)] = x,y = y p(x, y) log 2 p(y) p(x, y) log 2 p(x y) x,y ( ) p(x, y) log 2 p(y) + H[X Y ] } {{ } =p(y) = H[Y ] + H[X Y ]. x Selle teoreemi väide on igati kooskõlas tingimusliku entroopia intuitiivse seletusega. Ta väidab, et suurustes X ja Y on kokku täpselt niipalju informatsiooni, kui seda saab suuruse Y teadasaamisest pluss see informatsioon, mida on vaja suuruse X väärtuse teadasaamiseks, eeldades, et Y on juba teada. Sageli kasutatakse ka järgmist infohulga mõistet. Suurust I[X; Y ] = H[X] H[X Y ] nimetatakse infohulgaks, mis sisaldub suuruses Y suuruse X kohta. Teoreem 8 Infohulk on sümmeetriline, st. I[X; Y ] = I[Y ; X], ja mittenegatiivne, st I[X; Y ] 0, kusjuures I[X; Y ] = 0 parajasti siis, kui X ja Y on sõltumatud juhuslikud suurused. Tõestus. Võrdustest H[Y ]+H[X Y ] = H[X, Y ] = H[X]+H[Y X] tuleneb, et I[X; Y ] = I[Y ; X]. Mittenegatiivsus tuleneb seoste ahelast: I[X; Y ] = H[X] H[X Y ] = H[X] + H[Y ] (H[Y ] + H[X Y ]) = H[X] + H[Y ] H[X, Y ] 0, kusjuures võrdus kehtib parajasti siis, kui X ja Y on sõltumatud.
14 PEATÜKK 1. ENTROOPIA JA INFOHLK 1.6 Entroopia aksiomaatika Näitasime entroopia kombinatoorse definitsiooni (kombinatoorse entroopia) seotust Shannoni entroopiaga. Nüüd näitame, et Shannoni entroopia avaldiseni võib jõuda üldistest kaalutlustest lähtudes. Näitame, et eeldades entroopialt kui infohulga mõõdult teatud loomulikke omadusi, saame tõestada, et seljuhul peab entroopia olema arvutatav Shannoni entroopia avaldisega. Vaatleme juhusliku suuruse X entroopiat kui funktsiooni H, mille argumendiks (sisendiks) on suuruse X võimalike väärtuste tõenäosustest moodustatud jada p 1,...,p i,..., st iga positiivsetest reaalarvudest koosnev jada, mis rahuldab tingimust i p i = 1. Vaatleme komplekti kaheksast omadusest, millest igaühe kohta tõestame, et Shannoni entroopia seda omadust rahuldab. Lõpuks näitame, et kui mingi funktsioon H rahuldab toodud kaheksat omadust, siis langeb ta kordaja täpsusega kokku Shannoni entroopiaga, st H(X) = λ H[X]. Omadus 1 H(p 1,..., p n ) on iga fikseeritud n korral maksimaalne parajasti siis, kui p 1 =... = p n = 1/n. Teoreemist 5 tulenevalt kehtib see omadus Shannoni entroopia korral. Omadus 2 Hulga {1,...,n} iga permutatsiooni σ korral H(p 1,...,p n ) = H(p σ(1),...,p σ(n) ). On selge, et suuruse entroopia saab oleneda ainult tõenäosustest endist, mitte aga nende mõttelisest järjestusest. Shannoni entroopia on sümmeetriline avaldis kõigi tõenäosuste suhtes ja seetõttu on antud omaduse kehtivus selge, ega vaja eraldi tõestamist. Omadus 3 H(p 1,..., p n ) 0 ja võrdus kehtib parajasti siis, kui p i = 1 mingi i {1,..., n} korral. On selge, et Shannoni entroopia rahuldab seda omadust, sest iga liidetav 1 p i log 2 p i on mittenegatiivne. Seega saab H[X] null olla ainult siis, kui kõik 1 summeeritavad liikmed on võrdsed nulliga. Kui aga p i log 2 p i mingi i korral, siis p i 0 tõttu (vastasel korral p i -ga liige summasse ei kuuluks) saame, et 1 log 2 p i = 0, millest järeldub, et p i = 1. Omadus 4 H(p 1,..., p n, 0) = H(p 1,...,p n ).
1.6. ENTROOPIA AKSIOMAATIKA 15 On selge, et nulltõenäosusega väärtuste lisamine võimalike väärtuste hulgale ei saa mõjutada entroopiat. Shannoni entroopia avaldis rahuldab seda nõuet, sest nulltõenäosused ei lähe avaldises arvesse. Omadus 5 H( 1 n,..., 1 n ) < H( 1 n+1,..., 1 n+1 ). On selge, et n erineva väärtusega ühtlase jaotusega juhuslik suurus sisaldab vähem entroopiat kui n + 1 erineva väärtusega ühtlase jaotusega juhuslik suurus. Shannoni entroopia korral on võrratuse kehtivus selge, sest logaritmfunktsiooni monotoonsuse tõttu log 2 n < log 2 (n + 1). Omadus 6 H(p 1,...,p n ) on pidev funktsioon, st väike argumentide muutus ei põhjusta suuri muutusi väljundis. 1 See omadus on loomulik, sest tühised muudatused tõenäosustes ei saa põhjustada suuri muutusi entroopias. Shannoni entroopia on pidev funktsioon, sest ta on pidevate operaatorite (liitmine, korrutamine, logaritm) kompositsioon. Ainus, mis võiks põhjustada mittepidevust, on asjaolu, et nullised tõenäosused summast välja jäävad. Et aga lim x 0 x log x = 0, siis see kahtlus on alusetu. Omadus 7 H( 1,..., 1 ) = H( 1,..., 1) + H( 1,..., 1 ) suvaliste positiivsete täisarvude m ja n mn mn n n m m korral. Intuitiivselt tähendab see võrdus seda, et kui juhuslik katse koosneb kahest sõltumatust katsest ühel katsel on m võimalikku võrdse tõenäosusega tulemust ja teisel n võrdse tõenäosusega tulemit siis liitkatse entroopia on võrdne komponent-katsete entroopiate summaga. Shannoni entroopia korral tuleneb nimetatud omadus logaritmi omadusest: log(mn) = log m + log n. Omadus 8 Olgu p = p 1 +... + p m ja q = q 1 +... + q n, kus p + q = 1 ja nii p i kui q j on mittenegatiivsed reaalarvud. Siis H(p 1,...,p m, q 1,...,q n ) = H(p, q)+p H ( p1 p,..., p ) ( m q1 +q H p q,..., p ) n. q 1 Formaalselt väljendudes, iga argumendi (p 1,...,p n ) korral (kus p 1 p 2... p n ) ja iga ɛ > 0 korral leidub δ > 0, nii et kui (p 1 p 1 )2 +... + (p n p n) 2 < δ mingi argumendi (p 1,..., p n ) korral, siis H(p 1,..., p n ) H(p 1,...,p n ) < ɛ.
16 PEATÜKK 1. ENTROOPIA JA INFOHLK Intuitiivne selgitus sellele omadusele on järgmine. Oletame, et toimub hobuste võidujooks, milles osalevad m musta ja n valget hobust. Mustade hobuste võitmise tõenäosused on vastavalt p 1,...,p m ning valgete tõenäosused q 1,...,q n. Olgu X juhuslik suurus, mille tegelikuks väärtuseks on võitev hobune (ei ole vahet kas must või valge). Olgu Y juhuslik suurus, millel on kaks võimalikku väärtust: must ja valge, vastavalt sellele, kas võitis must või valge hobune. On selge, et suuruse Y entroopia on H(p, q). Kui te küsite kõiketeadja oraakli käest, kas võidab must või valge hobune, siis saate te just niipalju informatsiooni. Kui oraakel vastab, et võidab must hobune, siis konkreetsete mustade hobuste võidu tõenäosused asenduvad (teie jaoks) tingimuslike tõenäosustega p 1,..., pm ja entroopia on seega H p p p = H( p 1,..., pm ). Sama p p arutelu võiks läbi viia juhul kui oraakel vastab teile, et võidab valge hobune. Viimasel juhul oleks entroopia H q = H( q 1,..., qn ). On ilmselt ükskõik, millisel moel te saate võitva hobuse teada: kas vaadates võistluse lõpuni, või q q siis küsides oraakli käest esmalt, mis värvi hobune võidab ja seejärel (teades värvi) küsite, milline neist võidab. Infohulk, mille te saate esimesel juhul, on H(p 1,...,p m, q 1,...,q n ) ja teisel juhul H(p, q) (esimese vastuse infomaht) pluss keskväärtus suurustest H p ja H q. See arutelu annabki toodud valemi. Shannoni entroopia kooskõla antud valemiga tuleneb juba tõestaud võrdusest H[X] = H[Y ] + H[X Y ]. Teoreem 9 Kui funktsioon H rahuldab omadusi 1-8, siis H(p 1,..., p n ) = λ H[X], kus X on juhuslik suurus, mille väärtuste tõenäosused on p 1,...,p n. Tõestus. Olgu H funktsioon, millel on kõik omadused 1-8. Tähistame g(n) = H( 1,..., 1 ), st funktsioon g on defineeritud iga positiivse naturaalarvu n N korral. Omadusest 7 järelduvalt g(n k ) = g(n) + g(n k 1 ), n n millest järeldub seos g(n k ) = k g(n), (1.4) mis kehtib kõigi positiivsete naturaalarvude n, k N korral. Olgu nüüd r, s, n N suvalised positiivsed naturaalarvud. On selge, et leidub m N, nii et r m s n r m+1. (1.5)
1.6. ENTROOPIA AKSIOMAATIKA 17 Omadusest 5 tulenevalt g(r m ) g(s n ) g(r m+1 ), millest võrduse (1.4) põhjal saame m g(r) n g(n) (m + 1) g(r). Samal ajal, rakendades naturaallogaritmi võrratuse (1.5) liikmetele, saame võrratused m ln r n ln n (m + 1) ln r. Teisendades neid kahte sarnast võrratuste ahelat, saame süsteemi millest järeldub, et { m g(n) n m ln n n g(r) m + 1 n n lnr m + 1, n n ja g(s) lns = g(r) lnr g(s) lns g(r) ln r 1, iga positiivse n N korral. Siit n = c = const, st iga positiivse natu- järeldub, et g(s) = ln s g(r) ln r raalarvu s korral g(s) = c ln s = λ log 2 s. Olgu p = t n ratsionaalarv, kus t, n Q. Omandusest 8 järelduvalt: mingi positiivne g(n) = H( 1 n,..., 1 n ) = H( t n, n t n ) + t n g(t) + n t g(n t), n millest tulenevalt H(p, 1 p) = H( t n, n t n ) = g(n) t n g(t) n t g(n t) n = λ log 2 n λ t n log 2 t λ n t n log 2(n t) [ = λ t n log 2 n n t n log 2 n + t n log 2 t + n t ] n log 2(n t) [ ] t = λ n log t n t 2 n n log n t 2 n = λp log 2 p λ(1 p) log 2 (1 p). See võrdus kehtib iga ratsionaalarvu p [0, 1] korral. Funktsiooni H pidevuse (Omadus 6) tõttu kehtib võrdus ka iga reaalarvu r [0, 1] korral. Tõestuseks, et H(p 1,...,p n ) = λ n i=1 p i log 2 p i suvaliste reaalarvude p 1 +... + p n = 1 korral, kasutame induktsiooni n järgi. Oleme juba tõestanud, et väide kehtib n = 2 korral. Oletame, et ta kehtib n 1 korral. Defineerime p = p 1 +... +
18 PEATÜKK 1. ENTROOPIA JA INFOHLK p n 1 ja q = p n. Kasutame Omadust 8 ja induktsiooni eeldust: H(p 1,..., p n ) = H(p, q) + p H( p 1 p,..., p n 1 p ) + q H(1) n 1 = λp log 2 p λq log 2 q λp i=1 n 1 p i p log p i 2 p = λp log 2 p λp n log 2 p n λ p i (log 2 p i log 2 p) i=1 n 1 n 1 = λp log 2 p λp n log 2 p n λ p i log 2 p i + λ log 2 p = λ n p i log 2 p i = λ H[X], i=1 i=1 i=1 p i }{{} =p Kus X on juhuslik suurus, mille võimalike väärtuste tõenäosused on p 1,...,p n.
Peatükk 2 Shannoni salastusteooria 2.1 Krüptosüsteemi tõenäosuslik mudel Formaalse definitsiooni turvalisusele andis esimesena informatsiooniteooria loojaks peetav Claude Shannon 1949. aastal. Ta käsitles nii avateksti X, võtit Z kui ka krüptogrammi Y juhuslike suurustena, mille jaotusi saab hinnata vastane, kellel on juurdepääs krüptogrammile Y. Eeldatavasti on nimetatud suurused seotud funktsionaalse seosega: Y = E Z (X), kus E Z on iga Z väärtuse korral injektiivne funktsioon krüpteerimisalgoritm. Eeldame, et X, Y ja Z valitakse teatud fikseeritud lõplikest hulkadest, mida tähistame vastavalt X, Y ja Z. Olgu p(x) = Prob[X = x] tõenäosus, et X avatekst on x X. Näiteks kui avatekst on eesti keele täht, mis esineb eestikeelses tekstis, siis väljendab p(x) tähe x esinemissagedust eesti keeles. Olgu p(z) = Prob[Z = z] tõenäosus, et võti omandab väärtuse z Z. Eeldame, et X ja Z on sõltumatud juhuslikud suurused. 1 Nimetatud eeldused lubavad anda lihtsa valemi väljundjaotuse arvutamiseks sisendjaotuse põhjal. Kõigepealt anname valemi tingimusliku tõenäosuse p(y x) = Prob[Y = y X = x] arvutamiseks. Selleks võtame kasutusele järgmise tähistuse Z(x, y) = {z Z: E z (x) = y}, 1 See eeldus on loomulik, sest võti genereeritakse tavaliselt enne kui tekib sõnum, mida soovitakse edastada. Teiselt poolt, sõnum, mida edastatakse ei ole enamikul praktilistest juhtudest kuidagi seotud võtme väärtusega. 19
20 PEATÜKK 2. SHANNONI SALASTSTEOORIA st Z(x, y) Z on kõigi selliste võtmete hulk, mille abil avatekst x krüpteeritakse avatekstiks y. Tõenäosus p(x, y) avaldub seljuhul järgmise valemiga: p(y x) = Prob[Z Z(x, y)] = p(z). (2.1) Z z Z(x,y) Tõenäosus p(y) = Prob[Y = y] on arvutatav täistõenäosuse valemi järgi: p(y) = p(y x) p(x) = p(z) p(x). (2.2) x X x X z Z(x,y) Kasutades Bayesi valemit, saab arvutada ka duaalse tingimusliku tõenäosuse, mis iseloomustab (vastase) teavet avateksti x kohta, eeldusel, et krüptogramm y on teada: p(x) p(y x) p(x y) =. (2.3) p(y) 2.2 Täieliku salastuse definitsioon Loomulik on defineerida krüptosüsteemi turvalisus tingimusena, et krüptogramm Y (ja selle statistilised omadused) ei anna mingisugust informatsiooni avateksti kohta, st I(Y ; X) = 0. Kasutades seost I(Y ; X) = H[X] H[X Y ], saab sama tingimuse avaldada entroopia kaudu järgmiselt: H[X Y ] = H[X], (2.4) mis, nagu eelnevalt tõestatud, on samaväärne tingimusega, et X ja Y on sõltumatud juhuslikud suurused. Seega, kasutades juhuslike suuruste sõltumatuse definitsiooni ja Bayesi valemit (2.3), saame et tingimus (2.4) on samaväärne mõlemaga järgmistest tingimustest x X, y Y: x X, y Y: p(x) = p(x y), p(y) = p(y x). See asjaolu lubab meil üsna lihtsalt tõestada nihkešifri y = x + z mod p turvalisuse. Teoreem 10 Nihkešiffer y = E z (x) = x+z mod p (kus x, y, z {0,..., p 1}) on turvaline kui z {0,...,p 1}.
2.3. TÄIELIK SALASTSE HIND 21 Tõestus. Tõestuseks arvutame tõenäosuse p(y) ja näitame, et see on võrdne tõenäosusega p(y x). Alustame tähelepanekust, et Z(x, y) = 1, sest iga x, y {0,...,p 1} korral on võrrandil x + z y (mod p) parajasti üks lahend z. Vastavalt valemile (2.2), p(y) = x X = 1 p z Z(x,y) x X z Z(x,y) p(z) p(x) p(x) = 1 Z(x, y) p(x) p x X = 1 p(x) p = 1 p. x X Teiselt poolt, vastavalt valemile (2.1), p(y x) = z Z(x,y) p(z) = z Z(x,y) 1 Z(x, y) = = 1 p p p, millest järeldubki suuruste X ja Y sõltumatus ja seega ka nihkešifri turvalisus. 2.3 Täieliku salastuse hind Nagu nägime, leidub šifreid, mis tagavad täieliku salastuse, st on turvalised selles mõttes, et krüptogramm ei sisalda mingit informatsiooni avateksti kohta, eeldusel, et võti Z ei ole teada. Järgnevast lihtsast arutelust selgub, et täieliku turvalisuse saavutamise hind on väga kõrge: kasutatav võti Z peab olema sama mahukas kui edastatav sõnum X. Tuletame meelde, et võtit saab kasutada vaid üheainsa sõnumi krüpteerimiseks, mistõttu võib ka öelda, et võti peab olema sama mahukas kui kõik edastatavad sõnumid kokku. Järgnevas põhjenduses kasutatakse entroopia üldisi omadusi, mis on tõestatud eelmises peatükis ja kahte lisaeeldust:
22 PEATÜKK 2. SHANNONI SALASTSTEOORIA Krüptogrammi taastatavus kasutaja, kellel on võti Z, suudab üheselt taastada krüptogrammile Y vastava avateksti X. Ehk entroopia keeles: krüptogramm ja võti sisaldavad piisavalt informatsiooni avateksti üheseks taastamiseks: H[X Y, Z] = 0. Täielik salastus krüptogramm Y üksi ei sisalda mingit informatsiooni avateksti X kohta. H[X Y ] = H[X]. Neist eeldustest lähtuvalt saame, et H[X] = H[X Y ] H[X, Z Y ] = H[Z] + H[X Y, Z] }{{} 0 = H[Z]. Seega võtme infosisaldus on vähemalt sama suur kui krüptogrammi infosisaldus, mistõttu on võtme kodeerimiseks vaja vähemalt umbes sama arv bitte kui krüptogrammi kodeerimiseks. 2.4 Võtme korduvkasutus ja selle turvalisus Eelmises osas saadud tulemus ütleb küll seda, et täielikult turvalise šifri saamiseks peab võti olema sama pikk kui avatekst. Samas, ei järeldu ülalsaadud tulemusest otseselt see, et võtme korduvkasutus tekitab praktikas olulise turvalisuse kao. Näiteks kui ühte võtit kasutada kümme korda, siis kui palju infot võtmest sellega vastasele lekitatakse? Ei ole ju otseselt välistatud, et korduvkasutus põhjustab praktikas vaid marginaalse turvakao. Käesolevas osas näitame, et kui edastatavad sõnumid X on loomuliku keele tekstid, siis juba paarikümne tähelise sõnumi krüptogramm sisaldab piisava hulga informatsiooni võtme (ja seega ka avateksti) üheseks tuvastamiseks. Alustame ühe üldise tulemusega krüptosüsteemidest, mille abil saab anda hinnangut infohulgale, mis sisaldub krüptogrammis Y võtme Z kohta: Teoreem 11 H[Z Y ] = H[Z] + H[X] H[Y ].
2.4. VÕTME KORDVKASTS JA SELLE TRVALISS 23 Tõestus. Definitsiooni järgi H[Z, X, Y ] = H[Y Z, X] + H[Z, X] = H[Z, X], sest H[Y Z, X] = 0 (kuna Y on funktsioon (Z, X)-paarist). Eeldatavasti on X ja Z sõltumatud suurused, mistõttu H[Z, X] = H[Z]+H[X]. Sarnaselt eelnevale arutelule ja eeldusele avateksti ühesest taastatavusest krüptogrammi ja võtme abil (H[X Z, Y ] = 0) saame, et H[Z, X, Y ] = H[Z, Y ], mistõttu: H[Z Y ] = H[Z, Y ] H[Y ] = H[Z, X, Y ] H[Y ] = H[Z, X] H[Y ] = H[Z] + H[X] H[Y ], mida oligi vaja näidata. Oletame, et edastatav sõnum koosneb n blokist X 1 X 2...X n, mis krüpteeritakse blokkideks Y 1 Y 2...Y n, nii et Y i = E Z (X i ), st kõigi blokkide krüpteerimiseks kasutatkse ühte ja sama võtit Z. Kui ründaja teab, et X 1 X 2...X n on loomuliku keele sõna tähtedega X 1,...,X n X, siis võib ta läbi proovida kõik võtmed Z Z, mis krüptogrammi Y 1 Y 2...Y n dešifreerimisel annavad loomuliku keele sõna. Sobilike kandidaatide hulgas on ka tegelik võti Z. Ülejäänud kandidaate nimetatakse valevõtmeteks. Intuitiivselt on selge, et mida vähem on n-täheliste kombinatsioonide seas loomuliku keele sõnu, seda vähem võtmekandidaate tekib ja seda edukam on kirjeldatud rünne. Selleks, et hinnata kirjeldatud ründe edukust kvantitatiivselt, võtame kasutusele järgmised tähistused: Λ juhuslik suurus, mille väärtusteks on loomuliku keele tähed tõenäosustega, millega nad esinevad loomuliku keele tekstides. Λ n juhuslik suurus, mille väärtusteks on n-tähelised loomuliku keele teksti lõigud (ilma vahede ja kirjavahemärkideta) tõenäosusega, millega nad esinevad loomuliku keele tekstides. Definitsioon 3 Loomuliku keele entroopiaks nimetatakse suurust ja liiasuseks suurust H Λ = lim n H[Λ n ] n, H Λ R Λ = 1 log 2 X = log 2 X H Λ. log 2 X
24 PEATÜKK 2. SHANNONI SALASTSTEOORIA Liiasus väljendab liiase info hulga log 2 X H Λ suhet koguinfo hulgale, mida sisaldab juhuslikult ja ühtlaselt valitud avatekst X X. Selleks, et suurust H Λ mõõta mingi konkreetse loomuliku keele korral, on vaja läbi uurida suur kogus selle keele tekste. On kindlaks tehtud, et inglise keele entroopia on vahemikus 1.0 H Λ 1.5, mida keskmistades (väärtuseks 1.25) saame liiasuseks R Λ 0.75. Siit järeldub, et vaid neljandik inglisekeelse teksti mahust on väärtuslik, st sobivalt kodeerides (pakkides) on võimalik inglisekeelseid tekste ligi neli korda lühendada. Olgu Y n väljundjaotus, mis on indutseeritud sisendjaotuse Λ n (ja võtme Z jaotuse) poolt. Kui n on piisavalt suur, siis on õige võti üheselt määratud ja seega mingi n = n 0 korral H[Z Y n 0 ] = 0, mistõttu vastavalt teoreemile 11, H[Z] + H[Λ n 0 ] H[Y n 0 ] 0, Eeldades, et n 0 on piisavalt suur, saame kasutada lähendit H[Λ n 0 ] n 0 H Λ = n 0 (1 R Λ ) log 2 X. Eeldades, et Y = X ja et H[Y n 0 ] n 0 log 2 Y (vaadeldakse ideaalset šifrit, mille väljund on lähedane ühtlasele jaotusele 2 ), saame et H[Z] + n 0 H Λ n 0 log 2 X 0 H[Z] + n 0 (1 R Λ ) log 2 X n 0 log 2 X 0 H[Z] n 0 R Λ log 2 X 0. log 2 (s n + 1) H[Z] nr Λ log 2 X. Eeldades, et võti Z Z, saame järgmise tulemuse: Teoreem 12 Kui X = Y ja Z Z, siis keskmine valevõtmete arv s n Z 1. X nr Λ Võttes n 0 log 2 Z R Λ, saame et teoreemi väites oleva võrratuse parem log 2 X pool on null ja võrratus ei anna mingit garantiid valevõtmete arvu kohta. Näiteks asendusšifri korral on X = 26 ja Z = 26!. Võttes R Λ = 0.75 saame, et n 0 25. See on üsna täpselt kooskõlas praktikaga, et 20 30 täheline krüptogramm on suure tõenäosusega üheselt dešifreeritav. 2 Šifri väljundi modelleerimine ühtlase jaotusega on tänapäeval üpris levinud heuristika, mis on end ka hästi õigustanud. Siiski on huvitav teada, et seda kasutas juba Shannon oma esimeses infoteooriat ja krüptograafiat puudutavas artiklis.
2.5. KOKKVÕTE 25 2.5 Kokkuvõte Eelmises osas kirjeldatud ründe läbiviimiseks piisab avateksti liiasusest, mis eristab korrektsed avatekstid mittekorrektsetest tekstidest ja võimaldab seega vastasel kõiki võtmeid läbi vaadates selgitada välja võtmekandidaatide hulk, mis väheneb iga kord kui ründaja saab teada uusi krüptogramme. See rünne ei sõltu kasutatavast krüptosüsteemist ja õnnestub niipea, kui avateksti jaotus erineb ühtlasest jaotusest (mis peaaegu alati ongi nii) ja kui võtme entroopia on väiksem avateksti entroopiast. Üks olulisimaid eeldusi kirjeldatud ründe teostatavuseks on vastase piiramatud arvutusressursid. See asjaolu aga ei paista olevat tegelikkusega kooskõlas. Kui näiteks võti Z on n-bitine, siis juba suhteliselt väikeste n väärtuste (näiteks n = 80) korral on kõikide võtmekandidaatide läbiproovimine praktikas võimatu, seda isegi juhul kui ülesande täitmisse kaasataks kogu maailmas saada olev arvutusvõimsus. Seega on piiramatu võimsusega vastase kontseptsioon praktiliste järelduste jaoks liiga jäme. Vaja oleks arvestada ka ründeks vajalikku arvutusmahtu, st kasutada piiratud võimsusega vastase kontseptsiooni. Sobilik matemaatiline teooria keerukusteooria tekkis alles eelmise sajandi 60-ndate aastate keskel. Järgnevas peatükis tutvume keerukusteooria põhimõistetega, mis lubavad meil edaspidi kasutada piiratud võimsusega vastase kontseptsiooni ja seeläbi muuta teoreetilise krüptograafia järeldusi praktilisemateks.
26 PEATÜKK 2. SHANNONI SALASTSTEOORIA
Peatükk 3 Keerukusteooria elemendid 3.1 Arvutatavus Intuitiivselt tähendab mingi funktsiooni A f B arvutatavus seda, et hulkade A ja B elemendid on sobivalt kodeeritud ja leidub arvutiprogramm (lõplik käskude jada), mis iga elemendi a A koodist Code(a) arvutab lõpliku aja jooksul välja elemendi f(a) = b B koodi Code(b). Praktiliselt kõike (mitte küll kõiki matemaatilisi objekte) on võimalik kodeerida 0-dest ja 1-dest koosnevate jadade abil. Seetõttu me valimegi koodideks kõigi lõplike 0, 1-jadade hulga, mida tähistame siin ja edaspidi {0, 1}. Kõigi k-elemendiliste 0, 1-jadade hulka tähistame {0, 1} k. Arvestame ka 0 pikkusega jada, mida tähistame tavaliselt ɛ. Seega {0, 1} = k N{0, 1} k, kus N = {0, 1, 2,...} on kõigi naturaalalrvude hulk. Kaugeltki mitte kõik funktsioonid N f N ei ole arvutatavad. See tuleneb juba ainuüksi faktist, et kõigi selliste funktsioonide hulk N N on mitteloenduv, samal ajal kui lõplikke programme (ükskõik, mis keeles nad on esitatud ja kuidas kodeeritud) on ainult loenduv hulk. Harjutus 1 Tõesta, et {0, 1} on loenduv ja N N mitte. 27
28 PEATÜKK 3. KEERKSTEOORIA ELEMENDID 3.1.1 Turingi masin Selleks, et matemaatilise rangusega käsitleda arvutatavust, tuleb defineerida abstraktne arvuti. Kõige enam kasutatud mudel on nn Turingi masin, mis on teatud liiki lõplik automaat M koos lõpmatu järjestikmäluga (nn. lint), millele ligipääs on võimalik kursori (või ka pea ) kaudu. Lint on sisuliselt jada L = (l 0, l 1, l 2,...), mille iga element l i {0, 1, ɛ}, kus ɛ tähendab nö tühja pesa. Igal arvutussammul võib muuta ainult seda pesa, millel on kursor, st pesa l k. Kursor k on seega naturaalarv, mis näitab, millise pesaga masin parasjagu tegeleb. Igal arvutussammul saab kursorit nihutada paremale (st k := k+1), vasakule k := k 1 või jätta paigale (k jääb muutumatuks). Eeldatakse, et korrektselt koostatud masinas ei muutu kursor k iialgi negatiivseks (piltlikult, lint ei jookse maha). Arvutuse esimesel sammul k = 0. Igal sammul on masin mingis olekus s S, kus S on mingi lõplik hulk. Erilise tähtsusega on algolek s 0, milles automaat on arvutusprotsessi alguses, ja nn. lõppolek h, millega tähistatakse masina töö lõppemist. Järgmise sammu olek s, lindi seis l k ja kursori asend k arvutatakse funktsioonidega s := δ s (s, l k ) S l k := δ l (s, l k ) {0, 1, ɛ} k := δ k (s, l k ) {k, k + 1, k 1}. Lindi algseisu loetakse masina sisendiks ja lõppseisu väljundiks. Näiteks funktsiooni N f N arvutatavus tähendab seda, et leidub Turingi masin M, mis teisendab lindile L salvestatud arvu x N koodi arvu y = f(x) koodiks, mis on salvestatud lindile hetkeks, kui masin jõuab olekusse h. Näiteks nullfunktsioon f(x) = 0, x N on arvutatav, sest leidub teda arvutav kahe-olekuline Turingi masin, mis on esitatud Joonisel 3.1 tabelina. Siin on eeldatud, et lindil L on esialgu arvu x kood, mis lõpeb tühja pesaga. Lindi lõpupoole võib olla veel mittetühje pesasid, kuid need ei tule kodeerimise/dekodeerimise juures arvesse.
3.1. ARVTATAVS 29 s l k s l k (k k) s 0 0 s 1 0 +1 1 s 1 0 +1 ɛ h 0 0 s 1 0 s 1 ɛ +1 1 s 1 ɛ +1 ɛ h ɛ 0 Joonis 3.1: Nullfunktsiooni arvutav Turingi masin tabelina Harjutus 2 Simuleeri ülaltoodud Turingi masina tööd sisendi (lindi algseisu) L = (0, 1, 1, ɛ,...) korral. Harjutus 3 Leida Turingi masin, mis arvutab funktsiooni y = 2x + 1, eeldades, et arv x = b 0 2 0 + b 1 2 1 +... + b n 2 n (kus b i {0, 1}) kodeeritakse lindi seisuga L = (b n, b n 1,..., b 1, b 0, ɛ, ɛ,...). Harjutus 4 Sama, mis eelmises ülesandes, kasutades kodeeringut vastupidises bittide järjestuses, et L = (b 0, b 1,..., b n 1, b n, ɛ, ɛ,...). Ehkki Turingi masin võib näida ülilihtsa arvutusseadmena, usutakse, et tema abil saab arvutada absoluutselt kõike, mis on kuidagi arvutatav. Sellist uskumust nimetatakse Turingi teesiks. Et see tees ise ei ole matemaatiline lause ( kuidagi arvutatav ei ole defineeritud), siis ei saa ka seda teesi matemaatiliselt tõestada. Edaspidi me lihtsalt usume seda teesi ja enamikul juhtudest ei süvene Turingi masinate siseellu. Programmide kirjeldamiseks kasutame programmeerimiskeelt meenutavat pseudokoodi. Näiteks võiks Joonisel 3.1 esitatud Turingi masinat esitada järgmise pseudokoodina: k := 0 s0: IF L[k] = ɛ THEN L[k] := 0, HALT ELSE k := k + 1, GOTO s1 s1: IF L[k] = ɛ THEN HALT ELSE L[k] := ɛ, k := k + 1, GOTO s1 Harjutus 5 Kirjutada programm, mis simuleerib Turingi masina tööd.