You are on page 1of 375

Vilius Stakenas

Kodai ir ifrai

Pratarme
Kas daniausiai raoma knygu pratarmese? Patarimai, kaip skaityti. Skaitykite, kaip norite. Galiu tik papasakoti, kaip a skaitau. Pirm kart skaitau knyg, noredamas nusprsti, ar verta j skaityti antr kart. Skaitydamas antr kart, noriu isitikinti, ar teisingai pasielgiau nusprends perskaityti j vel. Trei kart skaitau noredamas gerai suprasti, kas knygoje parayta. Ketvirt kart  noredamas suvokti, kas parayta nelabai gerai arba neparayta i viso. O penkt ir kitus kartus skaitau galvodamas, kaip butu galima j perrayti. Tikriausiai apie tai galvoti verta skaitant jau pirmji kart. Nes tikras knygos skaitymas ir yra jos perraymas. Net jeigu tai vyksta vien mintyse. Kitoks skaitymas tera laiko gaiimas. O kokias knygas verta perrayti, arba pergalvoti, ar pergyventi, jeigu norite? Tokias, kurios pasakoja istorijas. Deja, matematines knygos retai pasakoja istorijas. Daniausiai jos panaios i laiptus, kuriais tenka kopti nuo vieno apibreimo prie kito, nuo vienos teoremos prie kitos. O danai  net ir be tureklu! O k reikia pasakoti istorij? Tai reikia neskubant atskleisti, kas yra u ito, o paskui  u ano kampo. Kokia kliutis ir koks netiketas budas j iveikti. Sritis, kuriai skirta i knyga  tikrai gera erdve istorijoms skleistis. Joje lyg kokioje senoves prekybos keliu sankryoje susitinka i skirtingu pusiu atkeliavusios svokos ir idejos. Ir pati ji skirta nuolatinio judesio, keliones rupesiams  skaitmenines informacijos perdavimo udaviniams. Keliones  visada sunkumai ir nuotykiai. Klausimai, kas imanoma, o kas ne. Kaip pasirengti, k pasiimti, kaip apsisaugoti? Trumpai tariant, knygoje pasakojama apie patikimo skaitmenines informacijos perdavimo ir apsaugos udavinius bei ju sprendimo budus. Taiau tai ne receptu rinkinys, o tam tikru matematiniu ideju sklaida. Galbut kas nors pamanys, kad neverta vargti bandant jas suprasti. O a manau, kad kaip tik tokie ygiai, kurie reikalauja itvermes bei ryto, ir yra io to verti. Knygos skaitymui reikalingos matematines inios. Kiek buvo imanoma, stengiausi jas priminti, idestyti. Taiau yra skyriu, kuriuose vartojamos matematines svokos ir teiginiai knygoje isamiau neaptariamos. Pavyzdiui, prie skaitant informacijos teorijai skirt dali pravartu prisiminti kelet pagrindiniu tikimybiu teorijos svoku ir teiginiu: slygin tikimyb, pilnosios tikimybes formul, atsitiktinio dydio vidurki... Nenuslepsiu vieno knygos trukumo  joje nera udaviniu. Taiau galima tai pavadinti ir privalumu: knyga plonesne, o udaviniu ir kitu papildymu rasite ios knygos tinklalapyje .... NAUJOJI VILNIA 2006 Pastaba: is tekstas nuo spaudai iteiktojo skiriasi redakcinio pobudio (ir rinkimo klaidu) taisymais.

Kodai ir ifrai
INFORMACIJOS TEORIJA
1 Informacijos altiniai . . . . . . . . . . . . . . . . . . . 1.1. Ivykiai ir ispudiai . . . . . . . . . . . . . . . . . 1.2. Informacijos altiniai ir kiekiai . . . . . . . . . . 1.3. altiniai be atminties ir su ja . . . . . . . . . . . 1.4. Slygines entropijos . . . . . . . . . . . . . . . . 1.5. Informacijos altiniu entropijos . . . . . . . . . . 1.6. Markovo altiniu entropija . . . . . . . . . . . . . 1.7. Informacijos altinis  kalba . . . . . . . . . . . . altinio kodavimas . . . . . . . . . . . . . . . . . . . . . 2.1. Kodai ir kodavimas . . . . . . . . . . . . . . . . . 2.2. Kodu pavyzdiai . . . . . . . . . . . . . . . . . . 2.3. Momentiniai arba p-kodai . . . . . . . . . . . . . 2.4. Optimalus kodai . . . . . . . . . . . . . . . . . . 2.5. Shannono ir Fano kodai . . . . . . . . . . . . . . 2.6. Humano kodai . . . . . . . . . . . . . . . . . . . Duomenu spuda . . . . . . . . . . . . . . . . . . . . . . . 3.1. Aritmetinis kodavimas . . . . . . . . . . . . . . . 3.2. Kintamu kodu metodas . . . . . . . . . . . . . . 3.3. Bloku ilgiu kodavimas . . . . . . . . . . . . . . . 3.4. odyno metodas . . . . . . . . . . . . . . . . . . 3.5. Kelk i prieki ir kitos geros idejos . . . . . . . . Kanalai ir kodai . . . . . . . . . . . . . . . . . . . . . . . 4.1. Perdavimo kanalai . . . . . . . . . . . . . . . . . 4.2. Perdavimo kanalu ivairove . . . . . . . . . . . . . 4.3. Kanalo talpa . . . . . . . . . . . . . . . . . . . . 4.4. Patikimo perdavimo kaina . . . . . . . . . . . . . 4.5. Kodai ir dekodavimo taisykles . . . . . . . . . . . 4.6. Shannono teorema dvinariam kanalui . . . . . . . 4.7. Tik matematikams: Shannono teoremos irodymas 4.8. Kai nepaisoma saugaus greiio . . . . . . . . . . Pastabos ir nuorodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 9 12 14 18 21 25 28 28 31 34 37 42 45 49 50 52 55 58 60 64 64 66 68 71 73 77 81 86 88 90

KODAVIMO TEORIJA

Hammingo geometrija . . . . . . . . . . . . . . . . . . . . . . 3

KODAI IR IFRAI 6.1. Sekme aplanko pasiruousius . . . . . . . 6.2. Hammingo atstumas ir kodai . . . . . . . 6.3. Tobulieji kodai . . . . . . . . . . . . . . . 6.4. Bendrieji kodu konstravimo udaviniai . . 6.5. Ekvivalentus kodai . . . . . . . . . . . . . Hadamardo kodai . . . . . . . . . . . . . . . . . . 7.1. Matricos . . . . . . . . . . . . . . . . . . . 7.2. Hadamardo matricos . . . . . . . . . . . . 7.3. Dvi konstrukcijos . . . . . . . . . . . . . . 7.4. Hadamardo kodai . . . . . . . . . . . . . . Baigtiniai kunai ir tiesines erdves . . . . . . . . . 8.1. Dalybos liekanu kunas . . . . . . . . . . . 8.2. Tiesines odiu erdves ir poerdviai . . . . 8.3. Daugianariai . . . . . . . . . . . . . . . . 8.4. Kunu pletiniai . . . . . . . . . . . . . . . 8.5. Generuojantys elementai . . . . . . . . . . 8.6. Minimalieji daugianariai . . . . . . . . . . Tiesiniai kodai . . . . . . . . . . . . . . . . . . . 9.1. Kodavimas tiesiniais kodais . . . . . . . . 9.2. Kontroline tiesinio kodo matrica . . . . . 9.3. Sindromai, lyderiai ir dekodavimas . . . . 9.4. Hammingo kodu eima . . . . . . . . . . . 9.5. Maksimalaus atstumo kodai . . . . . . . . 9.6. Marcelio Golay kodai . . . . . . . . . . . . 9.7. Reedo-Mullerio kodai . . . . . . . . . . . . 9.8. Veiksmai su kodais . . . . . . . . . . . . . 9.9. is tas apie odiu svorius . . . . . . . . . Cikliniai kodai . . . . . . . . . . . . . . . . . . . 10.1. Daugianariu kodai . . . . . . . . . . . . . 10.2. Daugianariu iedai ir idealai . . . . . . . . 10.3. Daugiau nei paprasti daugianariu kodai . 10.4. Reedo-Solomono kodu periura . . . . . . 10.5. BCH kodai . . . . . . . . . . . . . . . . . 10.6. BCH kodu dekodavimas . . . . . . . . . . 10.7. Klaidu pliupsniai . . . . . . . . . . . . . . Ssuku kodai . . . . . . . . . . . . . . . . . . . . 11.1. Tiesiniai registrai ir daugianariu daugyba 11.2. Ssuku kodai . . . . . . . . . . . . . . . . 11.3. Viterbi algoritmas . . . . . . . . . . . . . Pastabos ir nuorodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 93 96 98 102 104 104 105 107 109 111 112 114 118 122 125 127 131 131 134 137 141 145 148 153 160 168 171 171 175 176 179 182 184 189 191 191 194 196 198

10

11

12 13

KRIPTOGRAFIJA

Ivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 13.1. Kriptologijos demenys . . . . . . . . . . . . . . . . . . 200 13.2. ifrai ir paraai . . . . . . . . . . . . . . . . . . . . . . 202

KODAI IR IFRAI 13.3. Algoritmai ir protokolai . . . . . . . . . . . . . . . 13.4. Kriptosistemu saugumas . . . . . . . . . . . . . . . Klasikine kriptograja . . . . . . . . . . . . . . . . . . . . 14.1. Skytale ir kitos perstatos . . . . . . . . . . . . . . 14.2. Keitiniai ir ifrai . . . . . . . . . . . . . . . . . . . 14.3. Vigenere ifras . . . . . . . . . . . . . . . . . . . . 14.4. Vigenere ifro analize . . . . . . . . . . . . . . . . . 14.5. Friedmano kappa testas . . . . . . . . . . . . . . . 14.6. Nauji laikai  nauji iukiai . . . . . . . . . . . . . 14.7. Rotoriai ir Enigma . . . . . . . . . . . . . . . . . . Informacijos teorija ir kriptosistemos . . . . . . . . . . . . 15.1. Shannono modelis . . . . . . . . . . . . . . . . . . 15.2. Kriptosistemos dydiu entropijos . . . . . . . . . . 15.3. Rakto iminimo takas . . . . . . . . . . . . . . . . Blokiniai ifrai . . . . . . . . . . . . . . . . . . . . . . . . 16.1. Dvi schemos . . . . . . . . . . . . . . . . . . . . . 16.2. DES . . . . . . . . . . . . . . . . . . . . . . . . . . 16.3. AES . . . . . . . . . . . . . . . . . . . . . . . . . . 16.4. Penki reimai . . . . . . . . . . . . . . . . . . . . . Srautiniai ifrai . . . . . . . . . . . . . . . . . . . . . . . . 17.1. Golombo pseudoatsitiktines sekos . . . . . . . . . . 17.2. Statistiniai testai . . . . . . . . . . . . . . . . . . . 17.3. Tiesiniu registru sistemos . . . . . . . . . . . . . . 17.4. I paprastu  sudetingesni . . . . . . . . . . . . . . 17.5. A5 ir Bluetooth E0 . . . . . . . . . . . . . . . . . . Sudetingumo teorijos pradmenys . . . . . . . . . . . . . . 18.1. Udaviniai ir ju sprendimai . . . . . . . . . . . . . 18.2. P ir NP udaviniu klases . . . . . . . . . . . . . . 18.3. Nepilnas NP pilnu problemu sraelis . . . . . . . 18.4. Tikimybiniai algoritmai . . . . . . . . . . . . . . . Skaiiu teorijos svokos ir algoritmai . . . . . . . . . . . . 19.1. Euklido algoritmas . . . . . . . . . . . . . . . . . . 19.2. Apie iedus Zn . . . . . . . . . . . . . . . . . . . . 19.3. Kvadratiniai lyginiai . . . . . . . . . . . . . . . . . 19.4. Naturiniu skaiiu skaidymas . . . . . . . . . . . . . 19.5. Generuojantys elementai ir diskretieji logaritmai . Vieojo rakto kriptosistemos . . . . . . . . . . . . . . . . . 20.1. Kuprines ir ifrai . . . . . . . . . . . . . . . . . . . 20.2. RSA . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3. RSA saugumas . . . . . . . . . . . . . . . . . . . . 20.4. Pohligo-Hellmano ir Massey-Omura kriptosistemos 20.5. Rabino kriptosistema . . . . . . . . . . . . . . . . . 20.6. Blomo-Goldwasserio tikimybine kriptosistema . . . 20.7. ElGamalio kriptosistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 205 207 210 210 214 216 221 223 226 229 234 234 237 241 244 244 246 248 252 258 258 260 263 267 270 273 273 277 280 282 284 285 288 291 295 298 302 304 306 308 311 313 315 316

14

15

16

17

18

19

20

KODAI IR IFRAI 20.8. McElliece'as: deifravimas yra dekodavimas . . . . Skaitmeniniu parau schemos . . . . . . . . . . . . . . . . 21.1. RSA skaitmeniniai paraai . . . . . . . . . . . . . . 21.2. Rabino skaitmeninis paraas . . . . . . . . . . . . . 21.3. ElGamalio skaitmeninio parao schema . . . . . . . 21.4. Schnorro skaitmeninio parao schema . . . . . . . . 21.5. DSA . . . . . . . . . . . . . . . . . . . . . . . . . . 21.6. Nepaneigiami skaitmeniniai paraai . . . . . . . . . 21.7. Slaptieji kanalai skaitmeniniu parau schemose . . Maios funkcijos . . . . . . . . . . . . . . . . . . . . . . . 22.1. Kokios maios funkcijos yra saugios? . . . . . . . . 22.2. Blokiniai ifrai ir maios funkcijos . . . . . . . . . . 22.3. SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . 22.4. Aritmetine maios funkcija . . . . . . . . . . . . . Paslapties dalijimo schemos . . . . . . . . . . . . . . . . . 23.1. Shamiro paslapties dalijimo schemos su slenksiais 23.2. Dar dvi schemos . . . . . . . . . . . . . . . . . . . 23.3. Leidimu strukturos . . . . . . . . . . . . . . . . . . Kriptograniai protokolai . . . . . . . . . . . . . . . . . . 24.1. Raktu paskirstymas . . . . . . . . . . . . . . . . . 24.2. Irodymai, nesuteikiantys iniu . . . . . . . . . . . . 24.3. Skaitmeniniai pinigai . . . . . . . . . . . . . . . . . 24.4. Elektroniniai rinkimai . . . . . . . . . . . . . . . . 24.5. Pokeris telefonu . . . . . . . . . . . . . . . . . . . . Quo vadis? . . . . . . . . . . . . . . . . . . . . . . . . . . 25.1. Slepimo menas . . . . . . . . . . . . . . . . . . . . 25.2. Kvantai ir bitai . . . . . . . . . . . . . . . . . . . . Pastabos ir nuorodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 320 321 324 325 327 328 330 333 334 334 337 338 340 341 341 344 345 348 348 350 353 355 357 359 359 361 365

21

22

23

24

25 26

1. INFORMACIJOS ALTINIAI

Informacijos teorija
Informacija, informacijos kiekis  ias svokas dabar vartoja visi. Kai svok vartoja visi, ji neivengiamai tampa daugiareikme. Todel monems ir yra sunku susitarti del to, k kiekvienas gerai imano: odiai tie patys, bet ju reikmes skiriasi. Vieniems informacija  tai inios, kurios vertinamos prasmes ir reikmes kriterijais, kitiems  bet kokie duomenys apie reikini, kurie tiriami specialiais metodais... Matematinis poiuris i informacij i pirmo vilgsnio gali pasirodyti keistas. Kalbant apie informacij, neminima nei reikme, nei prasme, taigi subjektyvaus suvokimo nera nei eelio, taiau, kita vertus, subjektyvus suvokejo ispudis dalyvauja ioje teorijoje daugiau nei eelis. Informacijos kiekio svoka apibreta taip, kad didesne suvokejo nuostaba atitinka didesni gautos informacijos kieki.

1 Informacijos altiniai
1.1. Ivykiai ir ispudiai
Ivykio sukeltas ispudis tuo didesnis, kuo labiau netiketas yra tas ivykis. Sugalvokime mat netiketumo dydiui ireikti.

Isivaizduokime koki nors bandym, kurio baigtys daugiau ar maiau priklauso nuo atsitiktinumu, pavyzdiui, egzamin. Jeigu gerai pasiruos egzaminui studentas bus ir gerai ivertintas  nenustebsime. Taiau jeigu gerai ivertintas bus tas studentas, kuris nelabai stengesi pasiruoti  nuostabos bus kur kas daugiau. Abu ivykiai nera vienodai tiketini, todel ir musu reakcija i juos skiriasi. Ar galima sugalvoti bud ivykio sukeltai nuostabai imatuoti? Pabandykime pasvarstyti, kokias savybes privaletu tureti toks ivykio sukeltos nuostabos matas. 1. Ivykio A nuostabos matas turi buti tolydi ivykio tikimybes p = P (A) funkcija f (p), igyjanti neneigiamas reikmes. 2. Kadangi maiau tiketini ivykiai stebina labiau, tai funkcija f (p) turi buti nedidejanti intervale (0; 1]. 3. Jeigu tuo paiu metu ivyksta du nepriklausomi ivykiai, tai ju sukelta nuostaba turi buti lygi abieju ivykiu skyrium sukeltu nuostabu sumai, t. y. turi buti

f (p q) = f (p) + f (q),

p, q (0, 1].

KODAI IR IFRAI 4. Ivykiai, kurie visada ivyksta, musu nestebina, taigi f (1) = 0.

Galima irodyti, kad visas ivardytas slygas tenkina tik vienos eimos funkcijos.

1 teorema. Jeigu funkcija f (p), apibreta intervale (0; 1], tenkina 1)-4) slygas, tai egzistuoja toks b > 1, kad
1 f (p) = logb . p
(1)

Kita vertus, kiekvienam b > 1 funkcija f (p), apibreta (1), tenkina 1)-4) slygas. Irodymas. Kad (1) funkcijos tenkina visas ivardytas slygas, isitikinti nesunku prisiminus logaritmines funkcijos savybes. Irodysime, kad kitokiu funkciju, tenkinaniu 1)-4) slygas, nera. Tarkime, funkcija f tenkina ias slygas. Apibrekime

h(u) = f (eu ),

u 0.

Jeigu surastume funkcij h(u), tai, pasinaudoj ja, gautume:

f (p) = h ln

1 , p

0 < p 1.

(2)

Irodysime, kad funkcija h yra tiesine, t. y. h(u1 + u2 ) = h(u1 ) + h(u2 ). Tai iplaukia i funkcijos f ketvirtosios savybes:

h(u1 + u2 ) = f (eu1 eu1 ) = f (eu1 ) + f (eu1 ) = h(u1 ) + h(u2 ).


Pasinaudoj matematine indukcija, gauname, kad lygybe

h(u1 + u2 + . . . + uk ) = h(u1 ) + h(u2 ) + . . . + h(uk )


teisinga bet kokiam neneigiamu skaiiu rinkiniui u1 , u2 , . . . , uk . Irodysime, kad visiems teigiamiems racionaliesiems skaiiams u = m n teisinga lygybe h(u) = h(1)u. Pasinaudoj funkcijos tiesikumu, gauname

1 1 + + ... + n n 1 1 + + ... + h(1) = h n n 1 1 m h = h(1) , h n n n = h

m n

1 1 =mh , n n 1 1 =nh , n n m = h(1) . n

Jeigu u > 0 yra bet koks skaiius, o un ir vn dvi i u konverguojanios racionaliuju skaiiu sekos, un < u < vn , tai

h(un ) < h(u) < h(vn ),

h(1) un < h(u) < h(1) vn .

1. INFORMACIJOS ALTINIAI

Imdami ribines seku reikmes, gauname h(u) = h(1) u. Kadangi h(1) > 0, tai galime parinkti b > 1, kad butu

h(1) =

1 . ln b

Tada i (2) gausime, kad f yra tokia kaip (1) . Nuostabos dydio matavimo funkcij galime pasirinkti i begalines eimos. Pasirinkime b = 2, tada

1 2

= log2

1 = 1. 2

Taigi nuostabos, kuri patiriame, kai simetrika moneta atvirsta herbu i viru, matas lygus vienetui. O kokio didumo nuostab patiriame suinoj, kad ivyko ivykis, kurio tikimybe lygi nuliui? Labai didel? Nebutinai. Jeigu mestas akmuo ant emes nenukris, taiau pakibs ore, tikrai labai nustebsime. Taiau galima pateikti ir kitokiu pavyzdiu. Tarkime, bandymas  intervalo [0; 1] skaiiaus parinkimas. Jeigu bus parinktas, pavyzdiui, skaiius 2/3, niekas ypatingai nenustebs. Taiau juk tokio ivykio tikimybe lygi nuliui! Taigi tokiems atvejams reiktu sukurti kitoki nuostabos matavimo matematini modeli.

1.2. Informacijos altiniai ir kiekiai


Kaip imatuoti informacijos kieki, kuri mums perduoda altinis? Tikrai ne pavartotu enklu skaiiumi, nes, pavyzdiui, septyniu enklu formule a a a a nepasako mums daugiau nei a4 .

Puikiausiai inome: ne knygos puslapiu skaiius lemia knygos vert. Pavartotu enklu skaiius ir jais perduotas informacijos kiekis toli grau ne tas pats. Kada manome, kad gavome daug informacijos? Kai suinome daug naujo, daug tokiu dalyku, kuriu iki iol neinojome, kitaip tariant  kai igyjame daug netiketu iniu. Ivykio netiketumo mat jau turime, belieka ji susieti su informacijos altinio svoka. inias reikiame enklais, t. y. abeceles simboliais. Tegu

A = {a1 , a2 , . . .}
kokia nors abecele, daugtakis reikia, kad abecele gali buti ir begaline. Taiau daniausiai mums pakaks dvejetaines abeceles B = {0, 1}. Informacijos altinis  tam tikras procesas, kuris parenka mums ios abeceles simboli. Koks tai procesas  nelabai k galime pasakyti, ties sakant, matematiniam tyrinejimui tai nera svarbu. Todel veriau jo i viso

10

KODAI IR IFRAI

jo neminekime. Tiesiog tapatinkime informacijos altini su diskreiuoju atsitiktiniu dydiu, igyjaniu reikmes i aibes (abeceles) A = {a1 , a2 , . . .}. Tai  diskretusis informacijos altinis. Jeigu vietoj skaiios abeceles A imtume koki nors begalin neskaii aib, pavyzdiui, realiuju skaiiu aib ar interval, galetume apibreti nediskretuji informacijos altini. Gautos i dydio X informacijos kiekis priklauso nuo jo igytos reikmes tikimybes. Viso altinio informatyvum galime matuoti reikmiu suteikiamu informacijos kiekiu vidurkiu.

1 apibreimas. Diskreiojo atsitiktinio dydio X, igyjanio reikmes i baigtines abeceles, entropija vadinsime skaiiu 1 H(X) = log2 P (X = x). P (X = x)
x,P (X=x)>0

inoma, itaip galime apibreti ir dydio, igyjanio reikmes i begalines, taiau skaiios abeceles, entropij, bet ji ne visada butu baigtine. Kitas klausimas  kaip reiktu apibreti atsitiktinio dydio, igyjanio reikmes i, pavyzdiui, realiuju skaiiu aibes, entropij? Tokio atvejo taip pat neketiname tyrineti, taiau jei idomu  vilgtelkite i knygas, nurodytas literaturos srae. Taigi jei informacijos altini sutapatiname su atsitiktiniu dydiu, tai dydio entropija ireikia altinio informatyvum, matuoja patiriam jo atvilgiu netiketum. Atsitiktinio dydio entropij vadinsime tiesiog informacijos altinio entropija. Pavyzdys. Metama moneta nukrenta herbu i viru su tikimybe p. Ruoiamasi mesti j n kartu, mums bus praneti visu metimu rezultatai. Koks tokio informacijos altinio informatyvumas, t. y. entropija? Rezultatai, kurie bus mums praneti  enklu H, S (herbas, skaiius) n ilgio sekos. Tai ir yra musu informacijos altinio abeceles simboliai. Jeigu sekoje x = x1 x2 . . . xn herbo enklas pasitaiko m kartu, tai tokios sekos tikimybe P (X = x) = pm q nm , q = 1 p. Taigi altinio entropija
n

H(X) =
m=0

m Cn pm q nm log2

1 1 = log2 m q nm p p

n m mCn pm q nm + m=0

log2

1 q

n m (n m)Cn pm q nm = n log2 m=0

1 1 + log2 . p q

Jeigu mums butu praneta tiktai, kiek kartu ikrito herbas, turetume kit informacijos altini Y, kurio reikmes  skaiiai {0, 1, . . . , n}. Tokio altinio informatyvumas, t. y. entropija, butu maesnis. Nesunku suskaiiuoti, kad
n

H(Y ) = H(X)
m=0

m m Cn pm q nm log2 Cn .

1. INFORMACIJOS ALTINIAI

11

Tarkime, dvieju altiniu abeceles yra vienodo dydio, o simboliu tikimybes atitinkamai p1 , p2 , ..., pn ir q1 , q2 , ..., qn . Pirmojo altinio simboliu suteikiami informacijos kiekiai yra log2 1  log2 qi . Suskaiiav pirmojo altinio entropij, gautume dydi
n 1 pi ,

antrojo

H=
i=1

pi log2

1 . pi

O koki dydi gautume, jeigu, skaiiuodami pirmojo altinio entropij, pasinaudotume antrojo altinio simboliu suteikiamais informacijos kiekiais? Atsakymas, pasirodo, toks  visada ne maiau u H. Taip buna ir gyvenime: inios apie paprast ivyki, pranetos jo nemaiusiu moniu, gali virsti tikra sensacija.

2 teorema.

Tegu

p1 , p2 , ..., pn

ir

q1 , q2 , ..., qn

yra du tikimybiniai skirstiniai, t. y. teigiamu skaiiu, kuriu suma lygi vienetui, sekos. Tada n n 1 1 pi log2 pi log2 . (3) pi qi
i=1 i=1

Irodymas. Pastebekime, kad pakanka irodyti nelygyb, gaut i (3), pakeitus joje dvejetainius logaritmus naturiniais. Jeigu tokios nelygybes abi puses padauginsime i 1/ ln 2, gausime (3) nelygyb. Nesunku isitikinti, kad funkcija f (x) = x 1 ln x, apibreta intervale (0; +), igyja maiausi reikm, kai x = 1, taigi
f (1) f (x),
arba

ln x x 1,

ir lygybe teisinga tik tada, kai x = 1. Irodymui ubaigti reikia tik keliu eiluiu: qi qi 1, (i = 1, 2, . . . , n), ln pi pi
n

pi ln
i=1 n

qi pi 1 pi

pi
i=1 n i=1

qi 1 = 0, pi 1 . qi

pi ln
i=1

pi ln

teisinga, netgi nebutina, kad skaiiu qi suma butu lygi vienetui, pakanka, kad galiotu nelygybe q1 + q2 + . . . + qn 1.

Pastaba. Isiiurej i irodym, greitai pastebesime: kad nelygybe butu

12 Jeigu istatysime i (3) qi = 1/n, gausime


n

KODAI IR IFRAI

pi log2
i=1

1 log2 n. pi

Jeigu ir pi = 1/n, tai i nelygybe virsta tikslia lygybe. Taigi teisingas toks teiginys.

3 teorema. Jeigu atsitiktinis dydis X igyja n reikmiu, tai


H(X) log2 n.
Lygybe H(X) = log2 n teisinga tada ir tik tada, kai visos reikmes igyjamos su vienodomis tikimybemis.

1.3. altiniai be atminties ir su ja


Matematikai netyrineja tikroves reikiniu! Jie tyrineja reikiniu modelius. Taigi reikia nutarti, koki informacijos altinio modeli pasirinksime.

altini tapatinome su atsitiktiniu dydiu, igyjaniu reikmes i abeceles. altini, kuris isenka pateiks vos vien enkl, nagrineti nelabai idomu. Toliau nagrinesime tokius altinius, kurie niekada nepavargsta, t. y. gali generuoti simbolius be paliovos.

2 apibreimas. Informacijos altiniu vadinsime atsitiktiniu dydiu, igyjaniu reikmes i tos paios abeceles A, sek U1 , U2 , . . . I pirmuju n atsitiktiniu dydiu galime sudaryti vektoriu
U (n) = U1 , U2 , . . . , Un .
io vektoriaus reikmes  n ilgio abeceles A odiai, juos ymesime tiesiog u = u1 u2 . . . un . Dydius Um gali sieti ivairiausi ryiai: generuodamas m-ji simboli, altinis gali atsiminti, kokius simbolius pateike mums anksiau. Paprasiausias atvejis  kai altinis visai neturi atminties. Jeigu atsitiktiniai dydiai Um yra nepriklausomi, tai sakysime, kad altinis neturi atminties. Jeigu neturinio atminties altinio dydiai Um yra vienodai pasiskirst, ji vadinsime Bernulio altiniu. tai paprasiausias Bernulio altinio pavyzdys. Metykime t pai monet ir usiraykime rezultatus: 0  jei atvirto herbas, 1  jei skaiius. Gautieji dvejetaines abeceles odiai  tokio altinio perduoti duomenys. Jeigu metysime eiasieni kauliuk ir raysime rezultatus, gausime Bernulio altinio su eiu simboliu abecele generuotus odius... Netureti atminties galima vienu budu, o j tureti  daugeliu. Apibreime paprasiausias altiniu, turiniu atminti, ruis. altinio atminties savybems nusakyti naudosime slygines tikimybes.

3 apibreimas.

1. INFORMACIJOS ALTINIAI

13

4 apibreimas. Jeigu su visomis n > 1 ir aij A reikmemis atsitiktiniai dydiai tenkina slyg
P (Un = ain |Un1 = ain1 , . . . , U1 = ai1 ) = P (Un = ain |Un1 = ain1 ),
tai altini vadinsime Markovo altiniu. Taigi Markovo altinio atmintis labai trumpa: generuojamas simbolis priklauso tik nuo vieno prie ji generuoto simbolio. Ta atmintis gali silpti arba stipreti, paprasiausiu atveju  ji nesikeiia, t. y. perejimo tikimybes

pij = P (Un = ai |Un1 = aj )


nepriklauso nuo n. Toki Markovo altini vadinsime stacionariuoju. Apibrekime Markovo altini, kurio atminties gylis yra m. Tegu m 1 yra ksuotas naturinis skaiius, o atsitiktiniai dydiai Uj su visomis n > m ir aij A reikmemis tenkina slyg

5 apibreimas.

P (Un = ain |Un1 = ain1 , . . . , U1 = ai1 ) = P (Un = ain |Un1 = ain1 , Un2 = ain2 , . . . , Unm = ainm ).
Toki altini vadinsime m-osios eiles Markovo altiniu. Taigi m-os eiles Markovo altinis prisimena m jau generuotu simboliu. Jeigu tos atminties pobudis, t. y. atitinkamos n-ojo simbolio slygines tikimybes, nesikeiia, tai m-osios eiles Markovo altinis yra stacionarus. Informacijos teorijos pagrindus sukure C. Shannonas. Pagrindines svokos ir teiginiai idestyti jo darbe Mathematical theory of Communication. Jame pateiktos ir Bernulio bei Markovo altiniu svokos. C. Shannonas parode, kaip ie altiniai gali buti vaizduojami busenu diagramomis. altinio busen nusako jo atmintis, taigi altinio busenu kiekis lygus jo atsimenamu odiu skaiiui. Perdavus simboli, pasikeiia atminties turinys, t. y. altinio busena, r. breini.

AA

A B AC BA AB

B C

C CC

BB

BC CA

CB

14

KODAI IR IFRAI
Diagramomis pavaizduoti trys altiniai, perduodantys abeceles A = {A, B, C} simbolius. Pirmasis altinis  Bernulio, kiti du  Markovo.

Pirmojoje diagramoje pavaizduotas Bernulio altinis. Jis neturi atminties, todel gali buti vieninteles tuios galvos busenos. Prie liniju, rodaniu griim i t pai busen, parayti altinio perduodami simboliai. Noredami isamiai aprayti altini tokia diagrama, turetume prie liniju prirayti iu simboliu perdavimo tikimybes. Kitos dvi diagramos vaizduoja pirmosios ir antrosios eiles Markovo altinius. Pirmosios eiles Markovo altinis gali buti triju busenu. Busen nusako tie simboliai, kuriuos altinis atsimena. Prie perejimo liniju nera parayti perduodami simboliai, nes jie sutampa su nauj busen reikianiu simboliu. Antrosios eiles Markovo altinio diagramoje taip pat nebutina rayti perduodamus simbolius: jie sutampa su naujos busenos paskutiniuoju simboliu. Taiau prie perejimo liniju reiktu parayti atitinkamas perejimo tikimybiu reikmes. Kaip nusakyti musu niekada neisenkanio altinio informatyvum, t. y. entropij? Pirmuju n generuotu simboliu odis yra atsitiktinio vektoriaus U (n) reikme. Galime apskaiiuoti entropij H(U (n) ) = H(U1 , U2 , . . . , Un ). Jeigu altinis nepavargs ir neprades kartotis, tai tikriausiai entropija H(U (n) ) neapretai dides. Paprasiausia ideja bandant surasti visos begalines sekos informatyvum  nagrineti, kaip keiiasi santykis H(U (n) )/n.

6 apibreimas.

Jeigu egzistuoja baigtine riba

H = lim

H(U1 , U2 , . . . , Un ) , n

tai skaiiu H vadinsime altinio entropija. Taiau kaipgi apskaiiuoti t entropij?

1.4. Slygines entropijos


Nustatysime kelias labai svarbias informacijos kiekio savybes. Vien ju, bene pai svarbiausi, visi gerai inome. Kaip nusakyti inias, kurias mums suteike laikraiu X1 , X2 , . . . , Xn usnis? inios, kurias suradome X1 , inios i X2 , kuriu nebuvo X1 , inios i X3 , kuriu neradome X1 , X2 , ir taip toliau...

Isivaizduokime, kad laukiame, koki reikm igis diskretusis atsitiktinis dydis X, pavyzdiui, koki viet uims Lietuvos krepinio komanda pasaulio empionate. Neapibretumo, netikrumo matu galime laikyti atsitiktinio dydio entropij H(X). Tarkime, suinojome kito atsitiktinio dydio Y reikm y, pavyzdiui, suinojome, kad Lietuva laimejo rungtynes prie JAV komand 10 taku skirtumu. Aiku, kad apie galutin komandos viet lenteleje galvosime jau kitaip: galbut klaustuku sumaes, o gal prieingai  tik padauges.

1. INFORMACIJOS ALTINIAI

15

Nauj busen galime apibudinti slygine dydio X entropija su slyga, kad dydis Y igijo reikm y .

7 apibreimas. Slygine diskreiojo atsitiktinio dydio X entropija su slyga, kad Y igijo reikm y, vadinsime skaiiu
H(X|Y = y) =
x

P (X = x|Y = y) log2

1 . P (X = x|Y = y)

Slygine atsitiktinio dydio X entropija atsitiktinio dydio Y atvilgiu vadinsime skaiiu H(X|Y = y)P (Y = y). H(X|Y ) =
y

Slygin entropij galime apibreti ne tik vieno dydio, bet ir keliu dydiu, t. y. atsitiktinio vektoriaus, atvilgiu. Idomu, kad suinota dydio Y reikme gali padidinti neapibretum X atvilgiu, t. y. gali buti teisinga nelygybe H(X|Y = y) > H(X). Suinoj apie vien dideli laimejim, galime pagalvoti, kad loterija yra geresnis budas pinigams ileisti, negu iki iol maneme, taiau isamesni duomenys apie laimejimus galbut paskatins susidaryti dar skeptikesn nuomon, t. y. visada teisinga nelygybe H(X|Y ) H(X). tai tikriausiai pats paprasiausias pavyzdys. Tegu yra dvi vienodos urnos, vienoje  du juodi rutuliai, kitoje  vienas baltas, kitas juodas. Pirmoji urna paymeta skaiiumi 1, antroji - skaiiumi 2. Atsitiktinai pasirenkama viena i urnu, i jos itraukiamas rutulys. Dydio X reikme  rutulio spalva, dydio Y  urnos numeris. Nesunku isitikinti, kad

1 P (X = balta) = , 4
Taigi H(X) =
1 2

3 P (X = juoda) = . 4

+ 3 log2 4

4 3

0.8113. Taiau H(X|Y = 2) = 1, H(X|Y ) = 0.5.

H(X|Y = 1) = 0,

4 teorema.
lygybes

Visiems diskretiesiems atsitiktiniams dydiams teisingos ne-

H(X|Y ) H(X),

H(X|Y, Z) H(X|Y ).

Pirmoji nelygybe virsta tikslia lygybe tada ir tik tada, kai X ir Y yra nepriklausomi. Irodymas. Irodysime tik pirmj nelygyb, antrosios irodymas analogikas. Pagal slygines entropijos apibreim

H(X|Y ) =
y

H(X|Y = y)P (Y = y),

(4)

16

KODAI IR IFRAI

H(X|Y = y) =
x

P (X = x|Y = y) log2

1 . P (X = x|Y = y)

(5)

Pritaik nelygyb (3) su pi = P (X = x|Y = y) ir qi = P (X = x) slyginei entropijai (5), gausime

H(X|Y = y)
x

P (X = x|Y = y) log2

1 . P (X = x)

(6)

i nelygybe virsta tikslia lygybe tada ir tik tada, kai

P (X = x|Y = y) = P (X = x).
Tai teisinga tada ir tik tada, kai atsitiktiniai dydiai X, Y yra nepriklausomi. Irodymui ubaigti pakanka pasinaudoti iveriu (6) slygines entropijos iraikoje (4):

H(X|Y )
y

P (Y = y)
x

P (X = x|Y = y) log2

1 P (X = x)

=
x

1 log2 P (X = x) log2

P (Y = y)P (X = x|Y = y)
y

=
x

1 P (X = x) = H(X). P (X = x)

Diskretuji atsitiktini dydi X , igyjanti reikmes i aibes Am , vadinsime diskreiuoju m-maiu vektoriumi. Galime isivaizduoti, kad atsitiktinis vektorius X  tai atsitiktiniu dydiu rinkinys

X = X1 , X2 , . . . , Xm ,

Xi igyja reikmes i A.

(7)

Diskreiojo atsitiktinio vektoriaus entropija apibreiama taip pat kaip ir atsitiktinio dydio, juk atsitiktini vektoriu galime interpretuoti kaip atsitiktini dydi, igyjanti reikmes i atitinkamo ilgio odiu aibes. Atsitiktinio vektoriaus X = X1 , X2 , . . . , Xn entropij ymesime H(X) = H(X1 , X2 , . . . , Xn ), atsitiktinio dydio (arba vektoriaus) Y slygin entropij atsitiktinio vektoriaus X atvilgiu H(Y |X) = H(Y |X1 , X2 , . . . , Xn ). lygybe

5 teorema. Bet kokiems diskretiesiems atsitiktiniams dydiams teisinga


(8)

H(X1 , . . . , Xn ) = H(X1 ) + H(X2 |X1 ) + . . . + H(Xn |X1 , . . . , Xn1 ).

Lygyb (8) vadinsime entropiju grandines taisykle. Jos prasme turetu buti gana aiki. inias, kurias igyjame perskait laikraius X1 , X2 , . . . , Xn ,

1. INFORMACIJOS ALTINIAI galime idestyti i grandin taip: inios i laikraioX1 (entropijaH(X1 )) + inios i laikraioX2 , kuriu nebuvo laikratyje X1 , ir t. t.

17

Irodymas. I pradiu irodykime lygyb dvieju diskreiuju dydiu (vektoriu)


atveju:

H(X, Y ) = H(X) + H(Y |X).


Patogumo delei ymekime:

(9)

p(x, y) = P (X = x, Y = y), p(x) = P (X = x), p(y) = P (Y = y), p(y|x) = P (Y = y|X = x).


Kadangi p(x, y) = p(x)p(y|x), tai

log2
Tada

1 1 1 = log2 + log2 . p(x, y) p(x) p(y|x) 1 = p(x, y) 1 1 p(x, y) log2 + . p(x) x,y p(y|x) 1 p(x) = H(X), p(x)

H(X, Y ) =
x,y

p(x, y) log2

p(x, y) log2
x,y

Taiau

p(x, y) log2
x,y

1 = p(x)

log2
x

1 p(x)

p(x, y) =
y x

log2

p(x, y) log2
x,y

1 p(y|x)

=
x

p(x)
y

p(y|x) log2

1 = p(y|x)

p(x)H(Y |X = x) = H(Y |X).


x

Taigi (9) lygybe irodyta. Bendrji grandines taisykles atveji dabar nebesunku irodyti matematine indukcija. Kadangi atveju n = 2 lygyb irodeme, tai pakanka isitikinti, kad i (8) lygybes su n = m iplaukia lygybe su n = m + 1. Jeigu pritaikysime (9) su X = X1 , X2 , . . . , Xm ir Y = Xm+1 , gausime

H(X1 , X2 , . . . , Xm , Xm+1 ) = H(X1 , X2 , . . . , Xm )+H(Xm+1 |X1 , X2 , . . . , Xm ).


Pasinaudoj indukcijos prielaida, gausime (8) su n = m + 1. Entropij H(X, Y ) galime ireikti dvejopai:

H(X, Y ) = H(X) + H(Y |X) = H(Y ) + H(X|Y ).

(10)

18 I iu lygybiu gauname:

KODAI IR IFRAI

H(X) H(X|Y ) = H(Y ) H(Y |X).


Pasinaudoj 4 teorema, gauname, kad H(X) H(X|Y ) 0. i dydi galime paprastai interpretuoti: dydis H(X) yra iniu, kurias suteikia X, matas, dydis H(X|Y )  iniu, kurias suteikia X, bet ne Y, matas. Vadinasi, skirtumas H(X) H(X|Y ) yra matas tu iniu, kurias suteikia tiek X, tiek Y.

8 apibreimas. Tegu X ir Y yra diskretieji dydiai (vektoriai). Abipuses informacijos kiekiu vadinsime dydi
I(X, Y ) = H(X) H(X|Y ) = H(Y ) H(Y |X).
I (10) ir (11) gauname: (11)

H(X, Y ) = H(X) + H(Y ) I(X, Y ).

H(X, Y )

H(X|Y ) I(X, Y ) H(Y |X)

H(X)

H(Y )

Visus svarbiausius dvieju dydiu entropiju sryius paprasta prisiminti pasinaudojus ia diagrama. Tiesiog isivaizduokite, kad dydiai reikia atitinkamu sriiu plotus, raykite ju sryius ir nesuklysite.

1.5. Informacijos altiniu entropijos


Apibreime informacijos altinio informatyvumo mat ir ji apskaiiuosime, kai altinis pats paprasiausias  Bernulio.

Kaip ir anksiau atsitiktiniu dydiu, igyjaniu reikmes baigtineje abeceleje, sek U = U1 , U2 , . . . interpretuokime kaip informacijos altini. Apibrekime jo entropij (informatyvum) taip:

9 apibreimas.

Jeigu egzistuoja riba


n

lim

H(U1 , U2 , . . . , Un ) , n

1. INFORMACIJOS ALTINIAI tai jos reikm vadinsime altinio entropija ir ymesime H(U). Prisiminkime grandines taisykl:

19

H(U1 , U2 , . . . Un ) = H(U1 ) + H(U2 |U1 ) + . . . + H(Un |U1 , U2 , . . . Un1 ). (12)


Kai altinis neturi atminties, tai

H(U1 , U2 , . . . Un ) = H(U1 ) + H(U2 ) + H(U3 ) + . . . + H(Un ).


Jeigu U yra Bernulio altinis, tai visi atsitiktiniai dydiai Ui yra vienodai pasiskirst, todel ir ju entropijos lygios:

H(U1 , U2 , . . . Un ) = nH(U1 ).
Taigi gavome paprasiausio altinio entropijos reikm:

6 teorema. Bernulio altinio U = U1 , U2 , . . . entropija yra


H(U) = H(U1 ).
Kad atsitiktiniu dydiu entropija yra labai svarbi svoka ivairiuose sryiuose, dar ne kart pamatysime. Panagrinekime, kaip ja galima ireikti vien svarbi Bernulio altiniu savyb. Tegu A = {a1 , a2 , . . . , ar } yra altinio abecele, o

p1 = P (U1 = a1 ), p2 = P (U1 = a2 ), . . . , pr = P (U1 = ar )


simboliu pasirodymo tikimybes. Tarkime, x = x1 x2 . . . xn yra altinio perduotas simboliu srautas, t. y. atsitiktiniu dydiu U1 , U2 , . . . , Un reikmiu seka. Suskaiiav, kiek kartu iame sraute pasitaiko abeceles simboliai a1 , a2 , . . . , ar , gausime sveikuju neneigiamu skaiiu (simboliu daniu) sek

n1 , n2 , . . . , nr ,

n1 + n2 + . . . + nr = n.

Jeigu daug kartu mestume simetrik monet ir raytume rezultatus, t. y. ksuotume, ar moneta atvirto herbu, ar skaiiumi i viru, daniausiai gautume tokias sekas, kuriose herbo ir skaiiaus pasirodymu daniai butu apylygiai skaiiai. Tai tipines simetrinikos monetos n metimu rezultatu sekos. Kitokios sekos pasitaikytu labai retai. Analogikai tipines musu Bernulio altinio generuotos simboliu sekos butu tokios, kurioms n2 nr n1 p1 , p2 , . . . , pr . n n n Netipines sekos (kai n didelis skaiius) pasirodytu labai retai. Nagrinekime koki nors tipin Bernulio altinio sek x = x1 x2 . . . xn . Ivertinsime tokios sekos pasirodymo tikimyb:

P (U (n) = x) = P (U1 = x1 )P (U2 = x2 ) P (Un = xn ) = pn1 pn2 pnr = p1n p2n prn r 1 2
n1 n2 nr

20 Kadangi seka yra tipine, tai

KODAI IR IFRAI

P (U (n) = x) (pp1 pp2 ppr )n = 2 r 1 2

r i=1

pi log2

1 pi

= 2nH(U1 ) .

Nustateme idomi Bernulio altinio savyb: visu jo generuotu tipiniu n ilgio seku tikimybes yra beveik vienodos ir yra ireikiamos entropija. Kiek yra tokiu tipiniu seku? I gautos tikimybiu iraikos nesunku padaryti ivad, kad ju yra madaug 2nH(U1 ) . Tiesa, ios musu ivados grindiamos nepakankamai grietais matematiniais samprotavimais. Taiau galima suformuluoti tikslu matematini teigini ir ji irodyti.

7 teorema. Tegu U yra Bernulio altinis, A = {a1 , a2 , . . . , ar } jo abecele, > 0  bet koks pasirinktas skaiius. Kai n yra pakankamai didelis skaiius, vektoriaus U (n) reikmiu aib An galima ireikti tipiniu reikmiu aibes
An = {x An , : 2n(H(U1 )+ ) P (U (n) = x) 2n(H(U1 ) ) }
ir netipiniu reikmiu aibes An \An sjunga, kad butu teisingos nelygybes:

P (U (n) An ) 1 ,

|An | (1 )2n(H(U1 ) ) .

i Bernulio altinio savybe informacijos teorijoje vadinama asimptotikai tolygaus pasiskirstymo savybe (AEP  asymptotic equipartition property, angl.). J turi ir kiti altiniai, pavyzdiui, geri Markovo altiniai. Taigi jeigu altinio entropija yra H ir jis turi asimptotikai tolygaus pasiskirstymo savyb, tai galima isivaizduoti, kad kai n didelis skaiius, tai altinis su madaug vienodomis tikimybemis generuoja 2nH n ilgio seku, o kitos sekos beveik nepasitaiko. Neretai i savybe padeda geriau suprasti sudetingus informacijos ir kodavimo teorijos desnius. Asimptotikai tolygaus pasiskirstymo savybe yra didiuju skaiiu desnio ivada. Pirmiausia suformuluokime i desni.

8 teorema. Jeigu V1 , V2 , . . . yra nepriklausomu vienodai pasiskirsiusiu atsitiktiniu dydiu, turiniu vidurki EVj = a, seka, tai bet kokiam > 0 atsiras toks n0 = n0 ( ), kad su visais n n0 teisingas ivertis
P V1 + V2 + . . . + Vn a n 1 .
(13)

7 teoremos irodymas. ymesime pk = P (Uj = ak ), k = 1, 2, . . . , r. Apibreime atsitiktinius dydius Vj taip:


jei Uj = ak , tai Vj = log2

1 . pk

Atsitiktiniai dydiai, kuriu reikmes reikiamos tikimybemis, gana neiprasti. Galbut juos bus lengviau suvokti pasitelkus paprastesni pavyzdi. Tarkime,

1. INFORMACIJOS ALTINIAI

21

atsitiktinio dydio reikmes  skaiiai, urayti ant atvirtusios paridento nesimetriko kauliuko sieneles. Jeigu ant sieneliu uraysime tu sieneliu atvirtimo tikimybes (arba kokios nors iu tikimybiu funkcijos reikmes), gausime nauj atsitiktini dydi, kurio reikmes reikiamos atitinkamu baigiu tikimybemis. Atsitiktiniai dydiai Vj yra nepriklausomi ir vienodai pasiskirst, ju vidurkis lygus r 1 EVj = = H(U1 ). pk log2 pk
k=1

Taigi jiems galime taikyti didiuju skaiiu desni (13). Pastebekime, kad jei U (n) = x, tai

V1 + V2 + . . . + Vn 1 1 = log2 . (n) = x) n n P (U
Taigi didiuju skaiiu desnis teigia: jei n n0 ( ), tai

P U (n) = x :

1 1 log2 H(U1 ) (n) = x) n P (U

1 .

Taiau i nelygybe yra ekvivalenti nelygybei P (U (n) An ) 1 . Antroji teoremos nelygybe gaunama taip:

P (U (n) An ) =
xAn

P (U (n) = x) 1 = 2n(H(U1 ) ) |An |.

2n(H(U1 )

) xAn

Po akivaizdiu pertvarkiu gauname antrj teoremos nelygyb.

1.6. Markovo altiniu entropija


Sudetingu altiniu entropijas apskaiiuoti sunku. Kartais pavyksta.

Kai U yra m-osios eiles Markovo altinis, tai

H(Ut |U1 , U2 , . . . , Ut1 ) = H(Ut |Utm , Utm+1 , . . . , Ut1 ).


Nagrinekime paprasiausi Markovo altinio atveji, t. y. atveji, kai atminties gylis m = 1. Tada grandines taisykl galime urayti taip:

H(U1 , U2 , . . . Un ) = H(U1 ) + H(U2 |U1 ) + . . . + H(Un |Un1 ).


Panagrinekime, nuo ko priklauso slygines entropijos

(14)

H(Um |Um1 ) =
a

H(Um |Um1 = a)P (Um1 = a).

22

KODAI IR IFRAI

Jeigu altinis yra stacionarus, tai H(Um |Um1 = a) priklauso tik nuo perejimo tikimybiu, bet ne nuo m. Vadinasi, tokio altinio atveju priklausomybes nuo m prieastis  tikimybes P (Um1 = a). Jeigu ios tikimybes, didejant m stabilizuojasi, t. y. arteja prie ribiniu reikmiu, tai prie ribines reikmes arteja ir H(Un |Un1 ). i riba ir bus altinio entropija. Toks yra teoremos apie stacionaraus Markovo altinio entropij irodymo kelias. O tai ir pati teorema. Markovo altinis,

9 teorema.

Tegu U = U1 , U2 , . . . yra stacionarus pirmos eiles

p(b|a) = P (Um = b|Um1 = a)


altinio perejimo tikimybes, be to, egzistuoja ribos

(a) = lim P (Un = a).


n

(15)

Tada altinio entropija lygi

H(U) =
aA

(a)Ha ,

Ha =
bA

p(b|a) log2

1 . p(b|a)

Taiau kada gi (15) ribos egzistuoja? Atsakym i i klausim galetume surasti Markovo grandiniu teorijoje. Kone kiekviename solidesniame tikimybiu teorijos vadovelyje surasite skyriu, skirt Markovo grandinems.1 . O mes apsiribokime keliais paprastais, taiau idomiais pavyzdiais. Gali buti, kad Markovo altinio dydiu tikimybes P (Un = a) i viso nepriklauso nuo indekso n. Tada tikimybiu rinkini

(a) = P (Un = a)
vadiname stacionariuoju skirstiniu. Kadangi

P (Un+1 = x) =
y

p(x|y)P (Un = y),

tai stacionariojo skirstinio tikimybes turi tenkinti lygyb

(x) =
y

p(x|y)(y),

x A = {a1 , . . . , ar }.

(16)

Jeigu i stacionariojo skirstinio tikimybiu sudarysime vektoriu, o i perejimo tikimybiu  matric P, tai visas (16) lygybes galesime urayti viena eilute taip:

((a1 ), . . . , (am )) = ((a1 ), . . . , (ar ))P,


1

P = (pij ), pij = p(aj |ai ).

r., pvz., J. Kubilius. Tikimybiu teorija ir matematine statistika. Vilnius 1980. Tikimybiu ribu egzistavimo tema destoma skyrelyje Markovo grandiniu ergodines teoremos).

1. INFORMACIJOS ALTINIAI

23

Pavyzdys. Tegu pirmosios eiles stacionaraus Markovo altinio U = U1 , U2 , . . . dydiai igyja reikmes i dvejetaines abeceles B = {0, 1}, o perejimo tikimybes 1 P= . 1
altini su ia perejimo tikimybiu matrica galime pavaizduoti tokia diagrama:

altinio tikimybes: p(0|0) = 1 , p(0|1) = , p(1|0) = , p(1|1) = 1 .

Surasime stacionariojo skirstinio tikimybes 0 = (0), 1 = (1). I lygybes 0 , 1 = 0 , 1 P gauname toki lygiu sistem:

(1 )0 + 1 = 0 , 0 + (1 )1 = 1 .
Yra be galo daug skaiiu poru 0 , 1 , tenkinaniu i sistem, taiau tik viena pora tenkina slyg 0 + 1 = 1. i pora

0 =

, +

1 =

ir yra iekomas stacionarusis skirstinys. altinio entropija

H(U) =

h() + h() , +

h(u) = u log2

1 1 + (1 u) log2 , 0 < u < 1. u 1u

dvi jo virunes jungia i briaunu sudarytas kelias. Galime isivaizduoti, kad grafo virunes  tai miestai, kuriuos lanko keliautojas. Nuvyks i miest, keliautojas mums pasiunia atviruk. Taigi galime tarti, kad musu informacijos altinio U = U1 , U2 , . . . dydiu reikmes  aplankytu viruniu numeriai (miestu pavadinimai). Jeigu, budamas viruneje i, kitam keliones etapui jis su vienodomis tikimybemis renkasi bet kuri i virunes ieinani briaun, tai U yra stacionarus Markovo altinis. Tegu grafas turi i viso m viruniu, o i-osios virunes laipsnis (keliu, vedaniu i ios virunes, skaiius) lygus Wi . Apibrekime dydius:
ij

Pavyzdys. Tegu G yra jungusis neorientuotas grafas, t. y. bet kurias

1, jei virunes i, j sujungtos briauna, 0, jeigu nesujungtos.

24 Tada perejimo tikimybiu matric galime urayti taip: 13 1m 12 . . . W1 0 W1 W1 23 2m 21 0 . . . W2 W2 W P= 2 . . . ... ... . ... ...
Wm
m1

KODAI IR IFRAI

Wm

m2

Wm

m3

...

Stacionarusis skirstinys egzistuoja ir yra labai paprastas. tai jis:

(i) =

Wi W1 + W2 + . . . + Wm

i = 1, 2, . . . , m.

Jeigu abejojate, ar skirstinys tikrai stacionarusis  istatykite i (16) ir isitikinkite. Taigi apskaiiuoti musu atviruku altinio entropij nesunku. altinio U entropij apibreeme kaip rib

H = lim

H(U1 , U2 , . . . , Un ) . n n

J danai galima interpretuoti ir kitaip.

10 apibreimas. altini U = U1 , U2 , . . . vadinsime stacionariu, jeigu su bet kokiu k 0 atsitiktinio vektoriaus


Vm = Um , Um+1 , . . . , Um+k
reikmiu tikimybes nepriklauso nuo m. Jeigu altinis stacionarus, tai entropijos

H(Um |Umk , Umk+1 , . . . , Um1 )


nepriklauso nuo m, bet tik nuo k. Isitikinkime, kad stacionaraus altinio atveju entropiju seka

Hn = H(Un |U1 , U2 , . . . , Un1 )


maeja, kai n auga. Pasinaudoj entropijos savybe H(X|Y, Z) H(X|Y ) ir altinio stacionarumu, gauname

H(Un+1 |U1 , U2 , . . . , Un ) H(Un+1 |U2 , . . . , Un ) = H(Un |U1 , . . . , Un1 ).


Taigi seka Hn monotonikai maeja.

10 teorema. Jeigu altinis yra stacionarus, tai jo entropija


H = lim H(Un |U1 , U2 , . . . , Un1 ).
n

(17)

Irodymas. Paymekime monotonikai maejanios sekos


Hn = H(Un |U1 , U2 , . . . , Un1 )

1. INFORMACIJOS ALTINIAI

25

rib H . Tegu > 0  pasirinktas maas skaiius. Tada kai n > n0 ( ), tai H Hn (1 + )H . Pasinaudoj grandines taisykle, gauname

H(U1 , U2 , . . . , Un ) = H(U1 ) + H(U2 |U1 ) + . . . + H(Un |U1 , U2 , . . . , Un1 ) = H1 + H2 + . . . + Hn .


Taigi kai n > n0 ( ),

nH H(U1 , U2 , . . . , Un )
i<n0

Hi + (1 + )(n n0 )H .

Dabar jau nesunku, pasinaudojus entropijos apibreimu

H = lim

H(U1 , U2 , . . . , Un ) n n

irodyti (17) lygyb. Sryi (17) galime interpretuoti taip: stacionaraus altinio entropija  tai jo neapibretumo (arba informatyvumo, arba idomumo) kiekis, kuris dar liko po to, kai suinojome labai ilg io altinio generuot simboliu sraut.

1.7. Informacijos altinis  kalba


Kalbetojo odiai yra tarpusavyje susij, taiau iek tiek ir atsitiktiniai. Matematinio modelio, tiksliai nusakanio tokio altinio savybes, niekada nesukursime. Taiau galime panagrineti apytikslius, t. y. ireikianius tik nedaugeli tu altiniu savybiu modelius.

Koks matematinis modelis tinka musu kalbai aprayti? Kokios taisykles valdo musu kalbos srautus, neinome, utat puikiai mokame jomis naudotis. iniu daniausiai igyjama gretinant ir lyginant. Galima, pavyzdiui, generuoti abeceles simboliu srautus pagal tam tikras taisykles ir lyginti juos su naturalios kalbos tekstais arba paprasiausiai  vadovaujantis subjektyviu, taiau patikimu kalbos jausmu, sprsti, ar generuotas srautas nors kiek panaus i tikrovik. Lietuviu kalbos abeceleje yra 32 raides; noredami atskirti odius, galime i abecel itraukti ir tarp, tada bus 33 simboliai. Paprasiausias budas generuoti abeceles simboliu sraut  rinkti simbolius nepriklausomai vienas nuo kito su vienodomis, lygiomis 1/33 tikimybemis. Tokiu budu bandytume modeliuoti lietuviu kalbos tekst, naudodamiesi Bernulio altiniu, kuriam visos raides yra lygiavertes. tai itaip generuoto srauto pavyzdelis:
HURVGLKUHERKC ZHAN SSZ DKGS AZEHJJNYVNFIMIEJMKUUFUIHNEPUPIAJGCNYZPYVHKNYTMKDZ EIPNLMPSZ

Tekste yra 200 simboliu, iskaitant tarpus. Raides A, , B, C, D, ... jame pasikartoja atitinkamai 6, 10, 4, 3, 9, . . . kartus. I tikr kalb nepanau ne kiek. Toki kalbos modeli pavadinkime nulines eiles artiniu.

26

KODAI IR IFRAI

io altinio entropija lygi H0 = log2 33 5.0444. Galime patobulinti modeli, ityr daug kalbos tekstu ir nustat simboliu pasitaikymo danius

p(1) =

n1 n2 , p(2) = , n n

...,

p(33) =

n33 , n

ia n  bendras simboliu skaiius, o ni  i-osios raides pasikartojimu skaiius. Dabar galime naudoti iuos danius kaip Bernulio altinio generuojamu simboliu tikimybes. itaip gauname iek tiek geresni modeli  pirmosios eiles artini. tai tokio altinio generuoto teksto pavyzdys:
TEAEASTIIO UGKL R TAMU IAMGO UIOMTRMSAJIOI MIIIIENAKSMIII M NUYIIVAK DMTPIEVNLOOTPOKSOOILJAISN

Jeigu skaiiuosime entropij, gausime H1 4, 34.2 Kitas ingsnis, tikslinant kalbos modeli  keisti Bernulio altinius Markovo altiniais. Ityr itin daug tekstu, galetume nustatyti raidiu poru (digramu) tikimybes ir slygines tikimybes (kad po raides i sutiksime raid j ):

p(i, j) =

ni,j , n

p(j|i) =

p(i, j) , p(i)

ia ni,j yra raidiu poros i, j pasitaikymu skaiius, n  bendras poru skaiius. Toks altinis  Markovo grandine su vienetiniu atminties gyliu  antrosios eiles artinys. Suskaiiav altinio entropij, gautume H2 3, 59. Taiau iekoti tikimybiu ir generuoti tokio altinio sraut yra daug sudetingiau. inoma, kai turime kompiuterius ir mokame programuoti  anoks ia ir sudetingumas. C. Shannonas sugalvojo, kaip generuoti tokio altinio sraut kitaip. tai jo ideja. Pasiimkite koki nors stor knyg, atsitiktinai atsiverskite koki nors puslapi, atsitiktinai pasirinkite bet koki raid ir j uraykite. Po to vel atsitiktinai atverskite puslapi ir, pradedami nuo viraus, iekokite uraytosios raides. Rad j, uraykite raid, kuri seka po jos. Tada vel atsitiktinai atverskite puslapi... Kokia elegantika ideja! J paprasta igyvendinti programa. tai tokiu budu generuoto teksto pavyzdys:
MERIKAIGUOTOSUGANDADE VIENIA JU GIAMSTO PES NOS AIS THBUTGIS CIU TAIU RTERESNEISIAIHINEDAUDANI

O toliau  galime pasitelkti antrosios, treiosios ... eiles Markovo grandines. Tokiu altiniu generuotus srautus irgi galime kurti Shannono metodu. Teksto fragmentas, generuotas naudojant antros eiles Markovo grandiniu modeli:
2 Entropiju reikmes gautos iuose, lietuviu kalbos tekstu statistinems savybems skirtuose darbuose: R. Merkyte. Apie lietuviu kalbos informatyvum. Lietuvos matematikos rinkinys, t. XVIII, nr.3, p. 109116. J. Damskiene. Lingvistiniu elementu statistines charakteristikos. VU MIF, Matematines statistikos katedra. Magistro darbas. 2001, p. 148.

1. INFORMACIJOS ALTINIAI

27

SUTIKIMINTYTU DVELIAUJU PAS BUVO NUOTI MISE ARGINIJOIS TROGIA PASAUDAMASTAS MATRIP IMO DAVIMU PO LAN

Ir treiosios eiles:
A TY PADETIEK NETU UBAS BUVO PATYTI MAISADIUI ASTI IR TIKALE PASAS IO TO TAIS TEKSANDOMA APIE ISI

Dar vienas poiuris i kalbos entropij. Tarkime, kad kalbos, kurios odiai parayti naudojantis abecele A, |A| = N, altinis turi asimptotikai tolygaus pasiskirstymo savyb. Tai reikia, kad tipiniu (prasmingu) n ilgio sakiniu skaiius Tn yra madaug Tn 2nH , ia H yra kalbos entropija. Tarkime, visus iuos tipinius sakinius norime koduoti aibes Am odiais. Koks m turi buti? Visi sakiniai turi buti koduojami skirtingai, todel m ilgio odiu turi utekti:

2nH N m = 2m log2 N ,

taigi m

nH . log2 N

Taiau sakiniai uraomi vartojant n simboliu, taigi perteklius yra

n m nR,

R=1

H . log2 N

Dydis R vadinamas kalbos perteklikumu (redundancy, angl.). Perskait odius infrmcjs mtas, be abejo, supratote ju prasm. Danai t pai prasm galima perteikti ir trumpiau, taiau... monems bendraujant, perteklikumas tiesiog butinas! Jeigu netikite  atlikite bandym. Prie kreipdamiesi i mogu kokiu nors reikalu, sugalvokite toki sakini, kad jame butu vien tik butini odiai, nei vieno, kurio galima atsisakyti. Rezultatas bus tikriausiai toks: jusu paprays paaikinti dar kart!

28

KODAI IR IFRAI

2 altinio kodavimas
Senoves egiptieiu, graiku ratai  papiruso ar pergamento ritineliai, senoves romenai rae ant vaku padengtu mediniu lenteliu. Taigi romenai  knygu puslapiu iradejai. Lotynikas odis codex, reikia medio kamien, i kurio tie puslapiai buvo daromi. Tokia yra odio kodas kilme.

2.1. Kodai ir kodavimas


ia kakoks kodas,  sako mones, pamat enklu, kuriu prasmes i karto negalima ivelgti, sek. Turima galvoje, kad enklai surayti pagal tam tikras taisykles. Taigi kodas  tam tikras budas inioms urayti. Taiau matematiniam tyrinejimui reikalingas tikslesnis kodo apibreimas.

Kad galetume sudaryti kod, reikia enklu rinkinio (abeceles) ir naudojimosi tais enklais taisykliu. Prisiminkime kelet jau ne kart vartotu svoku.

11 apibreimas. Baigtin abeceles A simboliu sek x1 . . . xm vadinsime m ilgio odiu. Jei x yra odis, tai |x| ymesime jo ilgi. Jei x, y yra du tos paios abeceles odiai, tai xy ymesime sudurtini odi, kuris gaunamas tiesiog sujungiant x ir y. odi x vadinsime io sudurtinio odio priedeliu, o y  priesaga. Abeceles A ilgio m odiu aib ymime Am , o visu odiu aib  A . Tegu A ir B yra dvi abeceles (gali buti, kad A = B ). Koduoti abeceles A odius reikia keisti juos abeceles B odiais. Taigi kodavimo taisykle yra funkcija c : A B .
Vertimas i vienos kalbos i kit taip pat yra kodavimas: vienos kalbos sakiniai keiiami i kitos kalbos sakinius. Tik kodavimo taisykle nera grietai apibreta. Jeigu abeceliu A = {0, 1, . . . , r 1} ir B = {0, 1, 2, . . . , t 1} elementus interpretuosime kaip skaiiavimo sistemu su pagrindais r ir t skaitmenis, tai iu abeceliu odius galesime suvokti kaip naturinius skaiius. Kiekvien funkcij f : N N, apibret naturiniu skaiiu aibeje ir toje pat aibeje igyjani reikmes, galime suvokti kaip kodavimo taisykl cf : A B , jeigu funkcijos f argument uraysime skaiiavimo sistemoje su pagrindu r, o jos reikm  sistemoje su pagrindu t. Pavyzdiui, funkcij f (n) = n atitinka tokia kodavimo (skaiiavimo sistemos keitimo) taisykle: jei a1 r0 + a2 r1 + + ak rk1 = b1 t0 + b2 t1 + + bl rl1 , ai A, bj B, tai cf (a1 a2 ak ) = b1 b2 bl . Kodavimo taisykliu yra be galo daug, ju yra tiek pat kiek realiuju skaiiu, t. y. kodavimo taisykliu aibe yra kontinuumo galios. Kad galetume

2. ALTINIO KODAVIMAS

29

naudotis kodavimo taisykle, turime j apibreti. Apibreimas  vel tam tikros baigtines abeceles odis. Galbut i abecele yra didiule, sudaryta i keliu maesniu abeceliu raidiu ir matematiniu enklu, taiau vis tiek baigtine. Vadinasi, jos odiu (o taip pat ir kodavimo taisykliu apibreimu) aibe yra skaiti. Taigi yra be galo daug kodavimo taisykliu, kuriu i viso negalima mums priimtinu budu apibreti! Taiau uuot abstrakiai svarst apie kodavimo taisykles, veriau pasielkime itin praktikai: nagrinekime tik tokias kodavimo taisykles, kurias galima apibreti nurodius, kaip koduojami pavieniai abeceles A simboliai. Tegu A ir B yra dvi baigtines abeceles, o c : A B injektyvus atvaizdis. Kodavimo taisykl c : A B ,

12 apibreimas.

c (x1 x2 xn ) = c(x1 )c(x2 ) c(xn ),

xi A,

vadinsime atvaizdio c tsiniu. Abeceles B odi 1 x2 xn ) vadinsime odio x1 x2 xn kodu. Taigi turime itin paprast bud kodavimo taisyklems konstruoti: reikia apibreti atvaizdi c : A B ir pratsti ji iki funkcijos A B . Kadangi svarbiausias ios konstrukcijos elementas yra atvaizdis c : A B , tai danai butent ji ir vadinsime kodu. Tegu abeceleje A yra nustatyta tvarka, t. y. jos raides yra sunumeruotos: A = {a1 , a2 , . . . , ar }. Tada kod c : A B galime apibreti tiesiog suraydami odius c(ai ) i eil (sudarydami gretini):

c (x

c1 , c2 , . . . , cr ,

ci = c(ai ).

Taigi abeceles A galima ir nemineti; danai taip ir darysime  kodu vadinsime tiesiog atitinkamos abeceles odiu gretini, arba tiesiog odiu poaibi

C = {c1 , c2 , . . . , cr } B .
Kartais, nagrinejant kodus, patogu juos vaizduoti grafais. Graf isivaizduosime kaip geometrini darini ploktumoje. Jo virunes vaizduoja takai, o briaunas  orientuotos arba neorientuotos tuos takus jungianios atkarpos. Svarbus mums bus specialus grafas, kuri vadinsime mediu, jo briaunas  akomis (r. bre.). Vien jo virun vadinsime aknimi; kiekvienai kitai virunei egzistuoja vienintelis kelias, jungiantis virun su aknimi. i keli sudaraniu briaunu skaiiu vadinsime virunes atstumu iki aknies. Sakysime, kad dvi virunes yra tame pat lygyje, jei ju atstumai iki aknies yra tie patys. Virunes, turinias tik vien ak, vadinsime lapais.
Lapas Lapas aknis

30
Medis

KODAI IR IFRAI

Medi vadinsime q-nariu, jei i kiekvienos virunes ieina ne daugiau kaip q aku; jeigu i kiekvienos virunes, kuri nera lapas, ieina lygiai q aku, tai medi vadinsime reguliariuoju q-nariu. Jei visu reguliariojo q -nario medio lapu atstumai iki aknies yra vienodi, tai medi vadinsime pilnuoju q-nariu mediu. Tegu B yra abecele, turinti r simboliu. Kiekvienai pilnojo r-nario grafo akai priskirkime svori'  vien abeceles simboli taip, kad i tos paios virunes ieinanios akos turetu skirtingus simbolius. Jeigu V yra n-ojo lygio virune, tai keli, kuris veda i aknies i V , atitinka n ilgio abeceles B odis. Keliai, vedantys i n-ojo lygio virunes, abipus vienareikmikai vaizduojami aibes B n odiais. Jei kelias i virun V atitinka odi a, tai visus odius, kurie turi priedeli a, atitinka keliai, einantys per virun V . Tegu c : A B yra koks nors kodas. I medio, kuri susiejome su abeceles B odiais, virun V ikelkime abeceles A simboli a, jei kelias, jungiantis akni su virune V , vaizduoja odi c(a). Nutrinkime akas, kurios neieina i kelius, vedanius i abeceles A simboliais paymetas virunes. Gautji medi vadinsime kodo c mediu.
E 0 I H G F 2 10 2 1 0 D C B 2 10 2 10 0 A

Kodo c : A B medis, A = {A, B, C, D, E, F, G, H, I}, B = {0, 1, 2}.

Taigi kiekvien kod galime pavaizduoti mediu, kurio akoms priskirti kodo abeceles simboliai. Keliai, vedantys i aknies i lapus, atitinka kodo odius. Kitaip suymej medio briaunas, gautume kit kod. Taiau po kitu apdaru sleptusi ta pati struktura. Kodu mediai  puikus instrumentas pasleptai strukturai atskleisti ir tyrineti.

2. ALTINIO KODAVIMAS

31

2.2. Kodu pavyzdiai


Kokiu tik kodu mones nera naudoj! Egiptieiu, maju, kinu ramenys  irgi kodai. Tai taisykles, kurios tikroves daiktams ir reikiniams priskiria nedidelius pieinius. Ju kurejai vadovavosi savo menine nuovoka... Panagrinekime kelet senu ir dabartiniu kodu, kuriu sandara pagrista formaliomis taisyklemis.

Antikines Graikijos istorikas Polibijus (apie 208 m. pr. Kr.) rao, kad, perduodami karines inias, graikai naudojosi ugnies kodu. Abecel A sudaro 24 graikikos raides, B = { , , , , }; ia ymi deganti fakel. inoma, galime fakelus keisti skaiiais ir naudoti abecel B = {1, 2, 3, 4, 5}.
11 12 13 14 15 21 22 23 o 24 25 31 32 33 34 35 41 42 43 44 45 51 52 53 54

Polibijaus apraytas ugnies kodas. Noredami perduoti, pavyzdiui, raid , ryininkai vienoje kalvos vietoje turejo ikelti vien deganti fakel, o kitoje  du.

Renesanso laikotarpiu ir veliau kodu apibreimai sudarydavo itisas knygas. Tose knygose nurodoma, kuo raant keisti odius ir itisus sakinius. Kodai budavo naudojami perduodamu tekstu prasmei paslepti. S. Morse (17911872) irastas telegrafas  pirmasis moderniuju laiku ryiu irenginys. Jam pritaikytas kodas  tiesiog technine butinybe. S. Morse kodas tai lotynikos abeceles A ir odiu, sudarytu i taku ir brukneliu atitiktis. Tiesa, tie odiai atskiriami pauze. Taigi i tiesu abecel B sudaro trys simboliai.
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

Morse kodas pritaikytas telegrafui.

32 A N B O C P D Q E R F S G T

KODAI IR IFRAI H I J U V W K X L Y M Z

Apie 1820 metus Louis Braille sukurtas kodas akliesiems. I 3 2 matricos taku galima sudaryti 64 enklus; nepavartotais abeceles enklais galima koduoti danai pasitaikanius odius.

Kit telegrafui pritaikyt kod apie 1880 metus sukure J. M. Baudot'as. Kiekvienas simbolis koduojamas penkiu dvejetainiu enklu odiu. Taiau kiekvienas toks odis priskiriamas dviem enklams: raidei ir simboliui. Raidiu srities pradi enklina odis 00001, o simboliu srities  11000. Taigi iuo kodu galima koduoti i viso 2 32 2 = 62 skirtingus enklus. Baudot'o kodas naudotas ne tik telegrafui, bet ir pirmuju kartu kompiuteriams. Pirmieji kompiuteriai duomenims koduoti dvejetaines abeceles odiais naudojo Baudot'o kod. Kol kompiuteriai buvo naudojami tik kaip skaiiuokliai, to kodo uteko. Taiau emus kompiuterius taikyti plaiau, enklu, kuriuos galima koduoti Baudot'o kodu, nebeuteko. 1963 metais buvo paskelbtas naujas kodavimo standartas ASCII (American Standard Code for Information Interchange). Kiekvienam enklui koduoti naudojami septyni bitai, maosios ir didiosios lotynikos abeceles raides koduojamos skirtingai. Numatyti ir ekrane nevaizduojamu tarnybiniu simboliu kodai. Kodas pritaikytas visu pirma amerikieiu vartotojams, taiau ir Amerikoje jis ne i karto prigijo. Pavyzdiui, IBM net iki 1980 metu naudojo savo kod EBCDIC (Extended Binary Coded Decimal Interchange Code). Kai prireike koduoti ir kitu abeceliu enklus, buvo pridetas dar vienas bitas ir atsirado ivairus iplestinio ASCII kodo variantai.
Raide A B C D E F G H I J K L M N O P Kodas 10000 00110 10110 11110 01000 01110 01010 11010 01100 10010 10011 11011 01011 01111 11100 11111 Simbolis 1 8 9 0 2 7 + 6 ( = ) 5 % Raide Q R S T U V W X Y Z RP SP IV EP ER Kodas 10111 00111 00101 10101 10100 11101 01101 01001 00100 11001 00001 11000 11000 10001 00011 00000 Simbolis / T arpas 4
? , 3 : RP SP IV EP ER

2. ALTINIO KODAVIMAS
Baudot'o kodas. Tas pats dvejetainis odis priskiriamas dviem enklams  raidei ir simboliui. RP reikia raidiu srities pradi, SP  simboliu srities; IV reikia ivesties simboli, EP  eilutes pabaig, ER  klaidos enkl. enklu paymeti odiai, kuriems simboliai nepriskirti.
Simbolis NUL SOH ST X ET X EOT EN Q ACK BEL BS T AB LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 N AK SY N ET B CAN EM SU B ESC FS GS RS US Kodas 0000000 0000001 0000010 0000011 0000100 0000101 0000110 0000111 0001000 0001001 0001010 0001011 0001100 0001101 0001110 0001111 0010000 0010001 0010010 0010011 0010100 0010101 0010110 0010111 0011000 0011001 0011010 0011011 0011100 0011101 0011110 0011111 Simbolis ! # $ % & ( ) + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Kodas 0100000 0100001 0100010 0100011 0100100 0100101 0100110 0100111 0101000 0101001 0101010 0101011 0101100 0101101 0101110 0101111 0110000 0110001 0110010 0110011 0110100 0110101 0110110 0110111 0111000 0111001 0111010 0111011 0111100 0111101 0111110 0111111 Simbolis @ 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 [ \ ] Kodas 1000000 1000001 1000010 1000011 1000100 1000101 1000110 1000111 1001000 1001001 1001010 1001011 1001100 1001101 1001110 1001111 1010000 1010001 1010010 1010011 1010100 1010101 1010110 1010111 1011000 1011001 1011010 1011011 1011100 1011101 1011110 1011111 Simbolis 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 { | }

33

Kodas 1100000 1100001 1100010 1100011 1100100 1100101 1100110 1100111 1101000 1101001 1101010 1101011 1101100 1101101 1101110 1101111 1110000 1110001 1110010 1110011 1110100 1110101 1110110 1110111 1111000 1111001 1111010 1111011 1111100 1111101 1111110 1111111

ASCII kodas. Tarnybiniai simboliai paymeti santrumpomis, pavyzdiui, STX reikia Start of text ir t. t.

Paskutiniajame XX amiaus deimtmetyje pradetas kurti ir diegti naujas kodavimo standartas  Unicode. Kiekvienam simboliui priskiriamas eiolikos bitu (dvieju baitu) dvejetaines abeceles odis, taigi enklu, kuriuos galima koduoti, yra daugiau nei 65 tukstaniai. Taiau itaip koduojant atminties prireikia dvigubai daugiau negu koduojant ASCII. Sugalvota ir geru ieiiu. Viena ju  UTF-8 kodas, kurio struktura susijusi su Unicode, bet koduojama skirtingo ilgio (nuo vieno iki keturiu baitu) dvejetainiais odiais. Vieno baito odiais koduojamos lotynikos abeceles raides, skaitmenys

34

KODAI IR IFRAI

ir skyrybos enklai, dvieju baitu  iplestines lotynikos abeceles simboliai (taip pat ir lietuvikos raides), triju baitu  Azijos aliu abeceliu enklai...

2.3. Momentiniai arba p-kodai


Jeigu i savo kompiuteri siuniate suspaustos informacijos archyv, teks palaukti ryio pabaigos, kad galetumete pradeti skaityti. Jeigu siuniate, pavyzdiui, tinklalapi, o ryys letas, tai turinys rykeja palengva. Taiau kas parayta teksto pradioje, galite suinoti nesulauk ryio pabaigos. Taigi galime sakyti, kad tinklalapio informacijai koduoti panaudotas momentinis kodas.

Jei kodavimas yra raymas, tai dekodavimas  skaitymas. Ne kiekvien rat galima vienareikmikai perskaityti, ne kiekvieno kodo odius galima vienareikmikai dekoduoti. Kod c : A B vadinsime dekoduojamu, jeigu jo tsinys : yra injektyvus atvaizdis. Dekoduojamo kodo svok apibrekime neminedami altinio abeceles A.

13 apibreimas.
c A

duojamu, jeigu lygybe

14 apibreimas.

Kod C = {c1 , c2 , . . . , cr } B vadinsime deko-

x1 x2 . . . xk = y1 y2 . . . yl ,

xi , yj C,

galima tada ir tik tada, kai k = l ir xi = yi , i = 1, 2, . . . , k. Taigi kodas yra dekoduojamas, jeigu dviems skirtingiems altinio odiams i A visada priskiriami skirtingi odiai i B . Pavyzdys. Tegu A = {A, B, C}, o kodas c : A {0, 1} apibreiamas taip: c(A) = 0, c(B) = 10, c(C) = 110. inoma, kad toks kodas yra dekoduojamas. Kai tik gauname paskutini altinio simboliui priskirto odio enkl, galime nustatyti ir pati altinio simboli. Pavyzdys. O dabar su tomis pat abecelemis kaip ankstesniame pavyzdyje apibrekime kit kod:

c (A) = 0,

c (B) = 01,

c (C) = 011.

Isivaizduokime, kad siuntejas kodavo savo praneim iuo kodu ir siunia gaut sraut simbolis po simbolio. Taigi gavejas mato vis ilgejani nuliuvienetu eilut. Jeigu pirmasis simbolis yra 0, gavejas dar negali nusprsti, koks buvo pirmasis altinio simbolis: jis galejo buti bet kuris i triju. Jeigu antrasis gavejo simbolis bus 0, gavejas gales nusprsti, kad pirmasis simbolis buvo A, taiau jeigu antrasis gautas simbolis bus 1, gavejas negales nieko nusprsti, kol nesulauks treiojo simbolio.

2. ALTINIO KODAVIMAS

35

Ir vis delto  toks kodas yra dekoduojamas. Paprasiausias dekodavimo budas: sulaukti, kol perdavimas baigsis, ir dekoduoti gaut sraut nuo galo i prieki! Akivaizdus iu dvieju dekoduojamu kodu skirtumas: pirmuoju atveju altinio simboli galejome nustatyti vien tik i jam priskirto odio, antruoju atveju  ne, tekdavo iek tiek lukteleti. Naturalu tokius kodus kaip pirmasis pavadinti momentiniais. Juos galima labai paprastai apibudinti visikai neminint nei gavejo, nei jo rupesiu. Kod c : A B vadinsime p-kodu, jeigu nei vienas odis c(a), a A, nera jokio kito odio c(a ), a A, a = a , priedelis. Kiek pagalvoj, tikrai isitikinsite, kad

15 apibreimas.

momentiniai kodai ir p-kodai yra vienas ir tas pats!


Kodo naudojimo aplinkybes, suprantama, diktuoja ir kodu vertinimo kriterijus. Taiau galime suformuluoti kelis reikalavimus, kurie pageidautini beveik bet kokiu atveju. Kodas turi buti dekoduojamas; kuo jo odiai trumpesni, kuo ju daugiau  tuo geriau. Taiau bet kokiems pageidavimams yra ribos: parink daug trumpu odiu, negalesime buti tikri, kad kodas bus dekoduojamas. Panagrinekime i udavini: kiek ir kokio ilgio odiu gali tureti kodas, kad jis butu dekoduojamas? Du paprasti pavyzdiai pades suvokti esm. Pavyzdys. Tegu kodo abecele dvejetaine: B = {0, 1}. Ar galime i ios abeceles odiu sudaryti kod, kad ju ilgiai butu 2; 2; 2; 3; 3? Atsakymas labai paprastas: vos pradej toki kod konstruoti, greitai ir ubaigsime:

c1 = 00,

c2 = 01,

c3 = 10,

c4 = 111,

c5 = 110.

Sudareme p-kod; taigi jis yra dekoduojamas. O dabar pabandykime sukonstruoti dekoduojam kod, kurio vienas odis butu trumpesnis negu ankstesniame pavyzdyje. Pavyzdys. Ar galima i dvejetaines abeceles odiu sudaryti dekoduojam kod, kad odiu ilgiai butu 2; 2; 2; 2; 3? Bandykime kaip anksiau:

c1 = 00,

c2 = 01,

c3 = 10,

c4 = 11,

c5 =?

Akivaizdu, kad p-kodo sudaryti negalesime. Taiau galbut galima sudaryti nors ir ne momentini, taiau dekoduojam kod? Atsakym duoda tokia teorema. kodas i n odiu, ju ilgiai yra s1 , s2 , . . . , sn . Tada teisinga nelygybe
n

11 teorema. Tegu B yra abecele, b = |B|, C B yra dekoduojamas


bsi 1.
i=1

(18)

36

KODAI IR IFRAI

Irodymas. Paymekime s = max si , pasirinkime naturaluji r ir panagrinekime lygyb


rs

(b

s1

+ ... + b

sn r

) =
l=1

Nl bl .

(19)

Kokia gi koecientu Nl prasme? Koecientas Nl lygus skaiiui l ilgioodiu, kuriuos galima sudaryti i r kodo C odiu juos jungiant. Kodas C yra dekoduojamas, todel visi ie sudurtiniai odiai (jeigu ju i viso yra!) skirtingi. Kadangi i viso l ilgio odiu yra bl , tai Nl |Bl | = bl , Nl bl 1. Dabar i (19) nelygybes gauname

(bs1 + . . . + bsn )r rs,

arba bs1 + . . . + bsn r1/r s1/r .

i nelygybe teisinga su visomis r reikmemis; be to, kaire nelygybes puse nepriklauso nuo r. Neapretai didindami r, gausime

r1/r s1/r = e

ln r + ln s r r

1.

Taigi (18) nelygybe irodyta. Dabar jau galime teigti, kad dekoduojamo kodo i dvinares abeceles odiu su ilgiais 2; 2; 2; 2; 3 sukonstruoti negalima, nes odiu ilgiai netenkina (18) slygos. Isitikinkime, kad (18) nelygybe garantuoja, kad kodas su i anksto nustatytais odiu ilgiais s1 , s2 , . . . , sn gali buti sukonstruotas.

12 teorema. Tegu B yra abecele, b = |B|, o s1 , s2 , . . . , sn yra naturalieji skaiiai, tenkinantys (18) nelygyb. Tada egzistuoja p-kodas C = {c1 , c2 , . . . , cn }, kad |ci | = si , i = 1, 2, . . . , n. Irodymas. Tegu s = max si , o nm (m = 1, 2, . . . , s) yra kiekis skaiiu si , kurie lygus m. Taigi ni 0 ir n1 + n2 + . . . + ns = n. Dabar (18) nelygyb galime urayti taip
n1 b1 + n2 b2 + . . . + ns bs 1.
(20) Dauginkime abi (20) nelygybes puses i b, b2 , . . . , bs ir pertvarkykime gautas nelygybes, palikdami kaireje puseje tik n1 , n2 , . . . , ns :

n1 b (n2 b1 + n2 b2 + . . . + ns bs+1 ), n2 b2 n1 b (n3 b1 + n2 b2 + . . . + ns bs+2 ), ..................................... nt bt n1 bt1 n2 bt2 . . . nt1 b (nt+1 b1 + n2 b2 + + ns bs+t ), ..................................... ns bs n1 bs1 n2 bs2 . . . ns1 b.

2. ALTINIO KODAVIMAS

37

Kadangi ni 0, tai deinese nelygybiu pusese apskliausti reikiniai yra neneigiami, todel, nubrauk juos, nelygybiu nesugadinsime:

n1 b, n2 b2 n1 b, ..................................... nt bt n1 bt1 n2 bt2 nt1 b, ..................................... ns bs n1 bs1 n2 bs2 ns1 b.


Dabar galime imtis kodo medio konstravimo. I aknies iveskime visas b akas. Lapais paverskime n1 viruniu. I nepanaudotu viruniu iveskime po b aku. Antrajame lygyje turesime b2 n1 b viruniu, n2 i ju paverskime lapais. Antroji nelygybe garantuoja, kad tai mums pavyks. I nepanaudotu antrojo lygio viruniu veskime po b aku i treiji lygi. Sukurkime n3 lapu treiajame lygyje. Treioji nelygybe vel garantuoja mums sekm. Tskime konstrukcij; s-ajame lygyje ksuokime ns lapu ir nutrinkime kelius, vedanius i aknies i nepanaudotas s-ojo lygio virunes. Gausime kodo medi. Belieka vienu i daugelio budu priskirti akoms abeceles simbolius. (18) nelygybe vadinama Krafto-McMillano nelygybe. L. G. Kraftas 1949 m. j irode p-kodams, B. McMillanas 1956 m.  bet kokiems dekoduojamiems kodams. Kodo su parinktais odiu ilgiais egzistavimo irodymas yra konstruktyvus: jame nurodytas algoritmas tokiam kodui sudaryti. Dar viena ivada, kuri iplaukia i ios teoremos, yra tokia: galime nagrineti vien tik p-kodus. I tiesu, bet koki dekoduojam kod galima pakeisti atitinkamu p-kodu, turiniu tiek pat to paties ilgio odiu.

2.4. Optimalus kodai


Optimalus marrutai taupo musu laik ir iteklius. T pati daro ir optimalus kodai.

Kaip konstruoti dekoduojamus kodus, inome. Dabar nagrinesime, kaip juos pritaikyti informacijos altiniams. Musu naudojamas modelis toks: informacijos altinis  tai atsitiktiniu dydiu, igyjaniu reikmes i abeceles A, seka U = U1 , U2 , . . . . inoma, tikroveje begaliniai simboliu srautai niekada nepasitaikys. Jeigu apsiribosime tik altinio perduotu n ilgio simboliu srautu, tai sakysime, kad nagrinejame dalini altini

Un = U1 , U2 , . . . , Un .
altini U1 galime tiesiog sutapatinti su atsitiktiniu dydiu U1 . Nuo io altinio ir pradekime, t. y. kol kas nagrinekime vieno abeceles A = {a1 , a2 , . . . , ar } simbolio kodavim.

38 Paymekime simboliu perdavimo tikimybes:

KODAI IR IFRAI

pi = P (U1 = ai ),

i = 1, 2, . . . , r.

Tegu B = {b1 , b2 , . . . , bs } yra kita abecele. Nagrinesime dekoduojamus kodus

c : A B .
inome, kad pakanka nagrineti p-kodus. Tokio kodo odiai gali buti ivairaus ilgio. altinio generuot sraut koduojame jungdami to srauto simboliams priskirtus kodo odius. Butu geriau, jeigu daniau pasitaikantiems simboliams butu priskirti trumpesni, o reiau  ilgesni odiai. Kodo tinkamum altiniui galime vertinti vartodami vidutinio odiu ilgio svok. skaiiu

16 apibreimas.

Vidutiniu p-kodo c : A B odiu ilgiu vadinsime


r

(c) =
i=1

|c(ai )| pi .

p-kod c : A B vadinsime optimaliu altinio U1 kodu, jeigu

() = min (c), c
c

ia minimumas imamas pagal visus p-kodus c : A B . Tegu b = |B| yra kodo abeceles simboliu skaiius, o t  naturalusis skaiius, tenkinantis nelygybes

bt1 < r bt .
Tada odiu aibeje B t yra ne maiau odiu kaip abeceleje A ir bet kuris injektyvus atvaizdis c : A Bt yra p-kodas. Tokio kodo vidutinis odio ilgis (c ) = t; taigi optimalaus kodo reikia iekoti kodu, tenkinaniu nelygyb
r

(c) =
i=1

pi |c(ai )| t,

(21)

aibeje. Ar optimalus kodas visada egzistuoja? Juk kartais reikmes, su kuria funkcija igyja minimali ar maksimali reikm apibreimo srityje, gali ir nebuti: pavyzdiui, intervale (0; 1) negalime rasti nei paties maiausio, nei didiausio skaiiaus. Tegu p yra maiausia i tikimybiu pi , i = 1, 2, . . . , r. Tada i (21) gauname
r r

p
i=1

|c(ai )| t;
i=1

|c(ai )| t/p .

2. ALTINIO KODAVIMAS Taigi optimalaus kodo reikia iekoti kodu, tenkinaniu nelygyb
r

39

|c(ai )| t/p ,
i=1

aibeje. Kadangi i aibe yra baigtine, tai ir optimalu kod visada galima rasti. teisinga nelygybe

13 teorema. Kiekvienam dekoduojamam altinio U kodui c : A B


(c) H(U1 ) . log2 b

Tarkime, abecele B yra dvejetaine. Tada (c) reikia vidutini skaiiu dvejetainiu simboliu (bitu), naudojamu altinio simboliams koduoti. Entropij H(U1 ) galime suvokti kaip informacijos vienetu (bitu) kieki, kuri perduoda altinis. Tada teoremos nelygyb (c) H(U1 ) galime paaikinti taip: vidutinis kodo odiu ilgis bitais turi buti ne maesnis kaip altinio perduodamu bitu kiekis. Irodymas. Paymekime si = |c(ai )| kodo odiu ilgius, pi = P (U1 = ai )  altinio simboliu tikimybes. Vertinsime skirtum

H(U1 ) (c) = log2 b =

1 log2 b 1 log2 b

pi log2
i=1 n

1 si log2 b pi
n

pi log2
i=1

bsi 1 = pi log2 b ln 2

pi ln
i=1

bsi . pi

Pasinaudoj nelygybe ln x x 1 (x > 0), gausime


n i=1

bsi pi ln pi

pi
i=1

bsi 1 pi

=
i=1

si

i=1

pi 0.

Paskutin nelygyb gavome pasinaudoj tuo, kad dekoduojamam kodui teisinga Krafto-McMillano nelygybe, t. y.
n

bsi 1,
i=1

o tikimybiu suma lygi vienetui. Taigi gavome

H(U1 ) (c) 0. log2 b


Teorema irodyta. I teoremos irodymo matyti, kad atskiru atveju, kai altinio tikimybes yra skaiiaus b laipsniai, t. y. pi = bsi , i = 1, 2, . . . , n, teoremos nelygybe virsta

40

KODAI IR IFRAI

tikslia lygybe: (c) = H(U1 ). Aiku, kad toks altinio tikimybiu ir kodo abeceles dydio ryys yra iskirtinis atvejis. O k galime pasiekti bendruoju atveju? nelygybe

14 teorema. Egzistuoja altinio U kodas c : A B , kuriam teisinga


() < c H(U1 ) + 1. log2 b
(22)

Irodymas. Tarkime, altinio tikimybes irikiuotos didejimo tvarka:


p1 p2 . . . pr .
Parinkime naturaliuosius skaiius 1 s1 s2 . . . sr , kad jie tenkintu nelygybes bsi pi < bsi +1 , i = 1, 2, . . . , r. Akivaizdu, kad juos galime parinkti vieninteliu budu. Kadangi
r r

bsi
i=1 i=1

pi = 1,

tai galima sudaryti p-kod c : A B , kad |(ai )| = si . Isitikinkime, kad c iam kodui teisinga (22) nelygybe. I tikruju, i nelygybes pi < bsi +1 gauname

si 1 < logb
Taigi
r

1 , pi

si <

1 1 log2 + 1. log2 b pi

() = c
i=1

1 pi si < log2 b

r i=1

1 pi log2 + pi

pi =
i=1

H(U1 ) + 1. log2 b

Teorema irodyta. I abieju teoremu galime padaryti toki ivad:

15 teorema. Optimalus altinio U1 kodas tenkina nelygyb


H(U1 ) H(U1 ) () < c + 1. log2 b log2 b
(23)

O dabar aptarkime didiojo altinio U generuoto simboliu srauto kodavim. Tarkime, kad reikia koduoti dalinio altinio Un = U1 , U2 , . . . , Un generuotus odius, t. y. odius i aibes An . iems odiams koduoti galime sugalvoti koki nors taisykl cn : An B .

2. ALTINIO KODAVIMAS Vidutinis kodo odiu ilgis

41

(cn ) =
aAn

|cn (a)|P (Un = a).

Jeigu ilginsime koduojam sraut, t. y. n dides, tai dides ir (cn ). Apibrekime dydi, kuris nusako, kiek vidutinikai B abeceles simboliu kodas panaudoja vienam altinio simboliui koduoti. Tegu cn : An B yra altinio Un = U1 , U2 , . . . , Un kodas. Kodo vienetines snaudos koecientu vadinsime skaiiu

17 apibreimas.

(cn ) (cn ) = . n
inome, kad altiniai buna ivairus. Nagrinekime paprasiausi atveji  Bernulio altini. Jeigu U yra Bernulio altinis, tai atsitiktiniai dydiai Ui yra vienodai pasiskirst ir nepriklausomi. Taigi optimalus kodas ir pirmajam, ir antrajam, ir kitiems srauto simboliams koduoti yra tas pats. Sudar optimalu kod c : A B vienam simboliui koduoti, galetume apibreti altinio Un = U1 , U2 , . . . , Un kod cn : An B kaip c tsini:

cn (x1 x2 . . . xn ) = c(x1 )c(x2 ) . . . c(xn ),


Nesunku isitikinti, kad

xj A.

(24)

(cn ) = n(c),

(cn ) = (c),

taigi vienetines kodo cn snaudos butu tokios paios kaip ir kodo c. Jeigu c butu optimalus kodas vienam simboliui koduoti, tai i irodytu teoremu gautume

H(U1 ) H(U1 ) (cn ) < + 1. log2 b log2 b

(25)

Dar kart pasinaudokime tomis paiomis teoremomis, taiau kitaip. Galime suvokti Un = U1 , U2 , . . . , Un kaip vien abeceles An simboli perduodanti altini. Pritaik 13 ir 14 teoremas, gausime, kad egzistuoja kodas cn : An B , tenkinantis slyg

H(U1 , U2 , . . . , Un ) H(U1 , U2 , . . . , Un ) (cn ) < + 1, log2 b log2 b


arba

H(U1 , U2 , . . . , Un ) H(U1 , U2 , . . . , Un ) 1 (cn ) < + . n log2 b n log2 b n

(26)

is teiginys teisingas bet kokiems altiniams. Jeigu nagrinejame Bernulio altini, tai H(U1 , U2 , . . . , Un ) = nH(U1 ) = nH(U). Taigi i (26) gauname toki teigini:

42

KODAI IR IFRAI

16 teorema. Jeigu U = U1 , U2 , . . . yra Bernulio altinis, tai kiekvienam n egzistuoja dalinio altinio Un = U1 , U2 , . . . , Un kodas cn : An B , tenkinantis slyg H(U) H(U) 1 (cn ) < + , log2 b log2 b n
ia H(U) = H(U1 ) yra altinio entropija. Nedaug pasikeistu teiginys, jeigu atsisakytume slygos, kad altinis butu Bernulio!

17 teorema. Tegu U = U1 , U2 , . . . yra informacijos altinis, kurio entropija yra H(U). Tada bet kokiam skaiiui > 0 egzistuoja toks n( ), kad kiekvienam n > n( ) egzistuoja dalinio altinio Un = U1 , U2 , . . . , Un kodas cn : An B , tenkinantis slyg
H(U) H(U) (cn ) < + . log2 b log2 b
Teigini galime irodyti samprotaudami visikai taip pat kaip Bernulio altinio atveju ir pasiremdami bendruoju altinio entropijos apibreimu.

2.5. Shannono ir Fano kodai


Du praktiki budai kodams konstruoti. Deja, garantijos, kad gausime pati geriausi kod, nera.

Irodydami vien ankstesnio skyrelio teorem, panaudojome kod, kurio odiu ilgius apibreia nelygybes

bsi pi < bsi +1 ,

i = 1, 2, . . . , r.

Irodymui pakako, kad toks kodas tikrai egzistuoja. Sudar kodo medi, galetume sukonstruoti daug kodu, turiniu s1 s2 . . . sr ilgio odius. iuos kodus vadinsime Shannono kodais. Vien i ju pasinaudoj paties Shannono metodu, galime sukonstruoti ir nebraiydami kodo medio. Tegu b > 1 yra naturalusis skaiius (musu atveju - abeceles simboliu skaiius). Kiekvien intervalo (0; 1) skaiiu galime urayti b-aine trupmena: d1 d2 d3 + 2 + 3 + . . . , di {0, 1, . . . , b 1}. = b b b Elementus bi vadinsime b-ainiais skaitmenimis. Visi skaiiai uraomi bainemis trupmenomis vieninteliu budu, iskyrus paprastsias nesuprastinamas trupmenas m , k 1. bk Pavyzdiui, su b = 3

5 0 1 2 0 0 1 1 2 2 = + 2 + 3 + 4 + ... = + 2 + 3 + 4 + 5 + ... 27 3 3 3 3 3 3 3 3 3

2. ALTINIO KODAVIMAS

43

Susitarkime, kad tokioms trupmenoms bus naudojama trupmena su nuliu uodega, t. y. i tiesu baigtine trupmena. Dabar Shannono kodo konstrukcij galima aprayti taip. Tegu pi yra altinio simboliu tikimybes, o si  Shannono kodo odiu ilgiai:

p1 p2 . . . pn , bsi pi < bsi +1 , s1 s2 . . . sn .


Sudarykime tikimybiu sumas:

i = 1, 2, . . . , r,

F1 = 0, F2 = p1 , F3 = p1 + p2 , . . . , Fr = p1 + p2 + . . . + pr1 .
Dabar Shannono kod c : A B , A = {a1 , . . . , ar }, B = {1, 2, . . . , b} apibrekime taip:

c(ai ) = odis i pirmuju si skaiiaus Fi skleidinio b-aine trupmena skaitmenu.


Pavyzdiui, c(a1 ) = 00 . . . 0, i viso odyje yra s1 nuliu. Jeigu toks kodas yra p-kodas, tai jis tikrai yra Shannono kodas. Isitikinkime, kad joks odis wk = c(ak ) negali buti kito odio wk+m = c(ak+m ), m 1, priedelis. Jeigu taip butu, tai skaiiu Fk skleidinio b-aine trupmena pirmieji sk skaitmenys sutaptu su Fk+m skleidinio pirmaisiais sk skaitmenimis. Tada butu b1 1 b1 Fk+m Fk < s +1 + s +2 + . . . = s . bk bk bk sk . Taigi tar, kad c nera p-kodas, gavome Taiau Fk+m Fk pk b prietar. Sukonstruotas kodas yra tikrai p-kodas. Pavyzdys. Panagrinekime pavyzdi su tikimybemis p1 = p2 = 0, 3; p3 = 0, 2; p4 = p5 = 0, 1 ir b = 2, 3. Shannono kodu odiu ilgiai bus tokie:

s1 s2 s3 s4 s5 b=2 2 2 3 4 4 b=3 2 2 2 3 3
Taigi dvejetaines abeceles atveju pakaks triju skleidinio skaitmenu, o trejetaines  dvieju.

F0 b = 10 0 b = 2 0, 00 . . . b = 3 0, 00 . . .

F1 0, 3 0, 01 . . . 0, 02 . . . . . .

F2 0, 6 0, 100 . . . 0, 12 . . .

F3 0, 8 0, 1100 . . . 0, 210 . . .

F4 0, 9 0, 1110 . . . 0, 220 . . .

Skaiiai Fi deimtaineje, dvejetaineje ir trejetaineje sistemose. Urayti skaitmenys po kablelio sudaro Shannono kodo odius. Apskaiiav gauname, kad dvejetainio Shannono kodo vidutinis odiu ilgis lygus 2, 6, o trejetainio  2, 2.

44

KODAI IR IFRAI

Dar vien kodu sudarymo bud sugalvojo R. M. Fano. Ji C. Shannonas mini savo darbe Mathematical Theory of Communication, pabredamas, kad abiem algoritmais gaunami kodai beveik tokie patys. Todel kodavimo literaturoje iais metodais sukonstruoti kodai danai vadinami tiesiog ShannonoFano kodais. Geriausia Fano kodo konstrukcij nagrineti pasitelkus pavyzdi. Tarkime, altinis generuoja abeceles

A = {a, b, c, d, e, f, g, h}
simbolius, iu simboliu tikimybes pateiktos lenteleje:

a
1 24

b
1 24

c
2 24

d
2 24

e
3 24

f
4 24

g
5 24

h
6 24

altiniui koduoti norime sudaryti dvejetaines abeceles kod. Kodo sudarymas prasideda nuo abeceles dalijimo i dvi dalis siekiant, kad abieju daliu simboliu tikimybiu sumos skirtusi kiek imanoma maiau. Antrajame ingsnyje i dvi dalis dalijamos pirmajame ingsnyje sudarytos abeceles simboliu aibes ir taip toliau, kol nebera ko dalinti. Baigus dalyti galima nubraiyti kodo medi ir, priskyrus jo akoms simbolius, sukonstruoti kod. Tokios konstrukcijos pavyzdys pateiktas breinyje. abcdef
1 1 2 2 3 4 24 24 24 24 24 24 1 1 2 2 24 24 24 24 1 1 24 24 1 24 1 24 2 2 24 24 2 24 2 24 3 4 24 24 3 24 4 24 5 24

gh
5 6 24 24 6 24

0 0 0 0 a 1 b 0 1 c d 0 e 1 1 f

1 0 g 1 h

Kiekviename ingsnyje simboliu grupes dalijamos i dvi dalis taip, kad abieju daliu simboliu tikimybiu sumos skirtusi kiek imanoma maiau. Akylas skaitytojas pastebes, kad priepaskutiniame ingsnyje vien toki dalijim galima buvo atlikti ir geriau. Taiau toks geresnis dalijimas nepakeistu vidutinio kodo ilgio. Pagal padalyt abecel galime nubraiyti kodo medi.

2. ALTINIO KODAVIMAS

45

iuo metodu galime konstruoti kodus ne vien tik i dvejetaines abeceles. Jeigu kodo abeceleje yra s simboliu, tai pirmajame ingsnyje abecel reikia dalyti i s daliu, siekiant, kad visu daliu simboliu tikimybiu sumos butu apylyges. Abi kodo sudarymo taisykles  Shannono ir Fano  negarantuoja, kad, naudodamiesi jomis, gausime optimalu kod. Kaipgi sudaryti optimalius kodus?

2.6. Humano kodai


Jeigu butu pasiulyta rinktis: atlikti projekt ar laikyti egzamin, daugelis studentu rinktusi pirmji variant. Taip 1951 metais nusprende ir D. A. Humanas, pasirinks atsiskaitymui profesoriaus R. M. Fano pasiulyt udavini  sukurti efektyvu dvejetaini kod. Nors udavinys neatrode sunkus, taiau darbas nesiseke. Iki egzamino liko vos savaite, ir D. A. Humanas jau ketino atsisakyti projekto ir pradeti ruotis egzaminui. Ir tada vystelejo ideja...

Tegu A = {a1 , a2 , . . . , ar } yra altinio abecele, p(ai ), i = 1, 2, . . . , r,  abeceles simboliu perdavimo tikimybes. i tikimybiu rinkini  diskretuji tikimybini skirstini  ymesime

P (A) = p(a1 ), p(a2 ), . . . , p(ar ) .


Pasirinkime abecel B kodo odiams sudaryti. Musu tikslas  isiaikinti, kaip, turint por A, P (A) , galima sudaryti optimalu kod

c : A B .
Optimalaus kodo sudarymo algoritm 1952 m. paskelbe D. A. Humanas, tad algoritmas ir vadinamas jo vardu. Juo naudojantis sudarytus kodus vadinsime Humano kodais (r-nariais Humano kodais, kai noresime pabreti, kiek simboliu naudojama koduojant). I pradiu panagrinesime kodavimo dvinares abeceles odiais atveji, t. y. atveji, kai B = {0, 1}. Humano algoritm galima suskaidyti i dvi proceduras. Pirmoji  abeceliu redukcija:

A1 , P (A1 ) A2 , P (A2 ) . . . Ar1 , P (Ar1 ) ;


ia Ak yra abeceles, A1 = A, |Ak | = r k + 1, o P (Ak )  ias abeceles atitinkantys diskretieji skirstiniai, t. y. simboliu tikimybiu rinkiniai. Antroji procedura  Humano kodu sudarymas:

cr1 cr2 . . . c1 ;

(27)

ia ck  por Ak , P (Ak ) atitinkantis Humano kodas. Abeceliu redukcijos procese (27) ingsniai atliekami pagal toki taisykl:

46

KODAI IR IFRAI

jei Ak = {a1 , . . . , ark+1 }, P (Ak ) = p(a1 ), . . . , p(ark+1 ) ir tikimybes p(ai ), p(aj ) yra maiausios, tai

Ak+1 = P (Ak+1 ) =

Ak \ {ai , aj } { ai , aj }, P (Ak ) \ {p(ai ), p(aj )} {p( ai , aj )},

p( ai , aj ) = p(ai ) + p(aj ).
Taigi pereinant prie naujos abeceles, du maiausias tikimybes turintys simboliai keiiami nauju (musu schemoje is naujas simbolis vaizduojamas tiesiog simboliu pora), o jam priskiriama tikimybe lygi maiausiuju tikimybiu sumai. Nesunku pastebeti, kad abecele Ak+1 turi vienu simboliu maiau negu Ak , tad redukcijos procesas baigiasi, kai gaunama tik du simbolius turinti abecele. Abeceliu redukcijos proces atitinka kodo medio braiymas nuo viraus. Vaizduokime abeceles elementus grafo virunemis, kurioms priskirti svoriai  tuos simbolius atitinkanios tikimybes. Tada dvieju simboliu suliejimas i vien reikia, jog i dvieju viruniu vedamos akos i nauj  vidin.
0.1 0.3 0.2 0.3 0.4 0.1 0.3 0.6 0.2 0.3 0.4 0.1 0.3 0.6 0.2 0.3 0.4

Humano kodo sudarymas tikimybiu skirstiniui P (A) = 0, 1; 0, 2; 0, 3; 0, 4 . Vienas i kodu, sudarytas pagal kodo medi, toks: C = {111, 110, 10, 0}. Jo vidutinis ilgis lygus 1, 9.

Patogu vaizduoti abeceliu redukcij ir lentele. 1 lentele sudaryta tam paiam skirstiniui kaip ir diagramoje pavaizduotas medis. Stulpelyje Ak suraytos abeceles Ak simbolius atitinkanios tikimybes, vaigdutes deineje ymi, kurie simboliai kitu ingsniu bus jungiami i vien, pabraukimas reikia, kad tikimybe (simbolis) ankstesniu ingsniu yra gauta i dvieju. Tuti stulpeliai skirti kodams, kuriuos gausime atlik (27) perejimus, urayti.

A1
0.4 0.3

c1

A2
0.4

c2

A3 0.6
0.4

c3

0.3 0.3

0.2 0.1

1 lentele. Humano kodo sudarymas

2. ALTINIO KODAVIMAS

47

Dabar isamiau aptarkime (27) proces, t. y. kodo sudarym. Jeigu abeceliu redukcij interpretuojate kaip kodo medio braiym, tai kodo sudarymas pagal gaut medi  jau inomas dalykas. Vis delto (27) perejimus apraykime formaliai. Kadangi abecel Ar1 sudaro tik du simboliai, tai kad ir koks butu j atitinkantis diskretusis skirstinys, optimalus kodas yra akivaizdus: vien simboli reikia koduoti 0, kit  1. 1. Abeceles Ar1 simbolius koduojame 0 ir 1. 2. Jei abecelei Ak , k r1, kodas ck sudarytas ir simbolis a Ak1 Ak , tai ck1 (a) = ck (a). Jei a, a Ak , tai ck1 (a) = ck ( a, a )0, ck1 (a ) = ck ( a, a )1. Dabar galime upildyti tuius 1 lenteles stulpelius.

A1
0.4 0.3

c1
0 10 110 111

A2
0.4

c2
0 10 11

A3 0.6
0.4

c3
1 0

0.3 0.3

0.2 0.1

2 lentele. Humano kodo sudarymas

Skaitytojas, be abejo, pastebes, jog algoritm nesunku modikuoti, kad jis tiktu kodui i s-nares abeceles odiu sudaryti. Redukuojant abeceles, vienu simboliu reikia keisti ne por, bet s simboliu rinkini. Tiesa, gali atsitikti, kad po paskutines redukcijos gausime abecel i maiau nei s simboliu. Siekdami, kad ju liktu lygiai s, nustatykime, kiek simboliu reikia sujungti pirmuoju redukcijos ingsniu. Jei |A| = r, |B| = s ir abeceliu redukcijos procese atlikome t ingsniu, pirmajame sujungdami u r simboliu, o visuose kituose po s, tai r = (u 1) + (t 1)(s 1) + s, arba

u r (mod (s 1)), 2 u s.
i slyga vienareikmikai apibreia pirmuoju ingsniu sujungiamu simboliu skaiiu. 3 lenteleje apraytas trinario Humano kodo sudarymas. Kadangi koduojamu simboliu skaiius r = 6, s = 3, tai pirmuoju ingsniu reikia sujungti 2 simbolius.

48

KODAI IR IFRAI

A1
0.4 0.2 0.2 0.1

c1
1 2 00 01 020 021

A2
0.4 0.2

c2
1 2 00 01 02

A3 0.4
0.4 0.2

c3
0 1 2

0.2 0.1 0.1

0.05 0.05

3 lentele. Humano kodo sudarymas i trinares abeceles odiu

Irodysime, jog Humano kodai yra optimalus. Apsiribosime teoremos irodymu dvinares abeceles Humano kodams. Irodymo idejos lieka tos paios ir bendruoju atveju, bet, panaudojus jas, sukurti irodym nera itin paprasta. Jei a A, tai i simboli atitinkani tikimyb ymesime p(a). I pradiu irodysime toki teigini.

18 teorema. Jei a1 , a2 A ir p(a1 ), p(a2 ) yra maiausios nenulines tikimybes, tai egzistuoja optimalus kodas d, kad
|d(a1 )| = |d(a2 )| = max |d(a)|,
a

o odiai d(a1 ), d(a2 ) skiriasi tik paskutiniu simboliu. Irodymas. Priminsime, kad nagrinejame tik p-kodus. Jei kodas d yra optimalus, tai dydio

(d) =
aA

p(a)|d(a)|

reikme yra maiausia. Tarkime, egzistuoja tik vienas optimalaus kodo d odis d(a), turintis maksimalu ilgi. Sutrumpin odi d(a) paskutiniu simboliu, gautume nauj pkod d , kuriam (d ) = (d)p(a) < l(d). Tai prietarautu kodo d optimalumui. Vadinasi, egzistuoja keli maksimalaus ilgio odiai. Sakykime, bet kuri tokiu odiu pora skiriasi kuriuo nors ne paskutiniu simboliu. Sutrumpin visus maksimalaus ilgio odius paskutiniais simboliais, vel gautume geresni u d kod. Taigi egzistuoja du maksimalaus ilgio odiai d(a1 ), d(a2 ), kurie skiriasi tik paskutiniu simboliu. Jeigu {a1 , a2 } = {a1 , a2 }, tai kodas d tenkina teoremos slygas. Jeigu {a1 , a2 } = {a1 , a2 }, tai, turedami galvoje, kad odiu a1 , a2 tikimybes maiausios, tarkime p(a1 ) p(a1 ), p(a2 ) p(a2 ).

3. DUOMENU SPUDA

49

Sukeit kodo d odius d(a1 ) ir d(a1 ), d(a2 ) ir d(a2 ), gausime nauj kod d , kuris simbolius a1 , a2 koduoja maksimalaus ilgio odiais d (a1 ) = d(a1 ), d (a2 ) = d(a2 ), besiskirianiais tik paskutiniu simboliu. Kadangi d yra optimalus kodas, tai (d ) (d). Kita vertus,

(d ) = (d) (|d(a1 )| |d(a1 )|)(p(a1 ) p(a1 )) (|d(a2 )| |d(a2 )|)(p(a2 ) p(a2 )) (d).
Taigi kodas d irgi yra optimalus. Jis tenkina teoremos slygas.

kad visi jie yra optimalus. Kodas cr1 yra, inoma, optimalus. Tarkime, kodas ck , 1 < k r 1, yra optimalus, ir nagrinekime kod ck1 . Tarkime, a, a Ak1 yra maiausias pasirodymo tikimybes p(a) ir p(a ) turintys simboliai, kuriuos sujung gauname abecel Ak . Jei kodas ck1 nera optimalus, tai i 18 teoremos iplaukia, jog egzistuoja optimalus abeceles Ak1 kodas d, atitinkantis diskretuji skirstini P (Ak1 ), kad odiu d(a), d(a ) ilgiai yra maksimalus, o odiai skiriasi tik paskutiniu simboliu. Taigi

19 teorema. Humano kodai yra optimalus. Irodymas. Visi kodai (27) kodu grandineje yra Humano kodai. Irodysime,

(d) =
aAk1

p(a)|d(a)| <
aAk1

p(a)|ck1 (a)| = (ck1 ).

(28)

I kodu ck1 , d gausime abeceles Ak kodus ck ir d , jei simboli a, a koduosime odiais, kuriuos gauname sutrumpin ck1 (a) ir d(a) paskutiniu simboliu. Tada

(ck ) = (ck1 ) |ck1 (a)|p(a) |ck1 (a )|p(a ) + (|ck1 (a)| 1)(p(a) + p(a )), (ck ) = (ck1 ) (p(a) + p(a )).
Analogikai

(d ) = (d) (p(a) + p(a )).


Kadangi pagal prielaid kodas ck yra optimalus, tai (ck ) (d ). Taiau i gautu lygybiu iplaukia, jog tada taip pat (ck1 ) (d). Tai prietarauja (28) nelygybei, vadinasi, prielaida, kad kodas ck1 nera optimalus, yra klaidinga. Teorema irodyta.

3 Duomenu spuda
Bernulio altiniu informacijai koduoti sukonstravome optimalu Humano kod. Taiau Bernulio altiniu savo gyvenime beveik nesutinkame! Niekas

50

KODAI IR IFRAI

nedris teigti, kad ios dienos dienraio straipsnis, skaitmeniniu fotoaparatu padaryta nuotrauka ar muzikinis iraas yra informacijos srautai, kuriuos sukure Bernulio altiniai! Vis delto, jei altinis ir nera Bernulio, tai nereikia, kad jis nepanaus i ji. Naturalioje kalboje simboliai turi savo pasitaikymo danius. Taigi manydami, kad kalbos srautus generuoja Bernulio altinis su tikimybemis, lygiomis simboliu pasitaikymo daniams, ir taikydami kalbai koduoti Humano kod, elgsimes teisingai. Koduoti duomenys uims maiau vietos, taigi juos suspausime, taiau tikriausiai ne tiek, kiek imanoma. Juk Humano kodu koduojame neatsivelgdami i koduojamu duomenu struktur  vien tik i altinio tikimybes. Darbuodamiesi visai nekreipiame demesio, ar koduojama seka yra budinga altiniui, ar ne. Taigi optimalus kodai nebutinai visada optimalus. Slyginai galime suskirstyti ivairius duomenu spaudimo metodus i dvi grupes  statistinius ir kitokius. Statistiniais vadiname tuos metodus, kurie remiasi iniomis apie simboliu danius. Taigi duomenu spaudimas koduojant juos Humano kodu  statistinis metodas.

3.1. Aritmetinis kodavimas


Matematineje analizeje garbing viet uima susitraukianiu intervalu lema: jeigu sukonstruosite udaru nykstamai maejanio ilgio intervalu teleskop [a1 ; b1 ] [a2 ; b2 ] . . . egzistuos skaiius, priklausantis visiems intervalams. Aritmetinis kodavimas yra panaus metodas: simboliu blokui konstruojamas panaus teleskopas, kol jo gale randamas skaiius  simboliu bloko kodas.

Bernulio altinio generuotu duomenu aritmetinis kodavimas yra statistinis metodas: ir koduojant, ir dekoduojant reikia inoti abeceles A = {a1 , a2 , . . . , ar } simboliu pasirodymo danius p1 , p2 , . . . , pr . iuo metodu sudaryt kod vadinsime aritmetiniu. Tarkime, koduojami n ilgio odiai, visu galimu odiu aibe yra An . Kiekvienam ios aibes odiui x = ai1 ai2 . . . ain intervale I = [0; 1] tam tikru budu priskirkime jo teritorij  interval I(x) = I(i1 , i2 , . . . , in ). Pasirupin, kad skirtingiems odiams x, y ju intervalai I(x), I(y) nesikirstu, odio x kodu galetume laikyti bet kuri skaiiu I(x). Ura i skaiiu dvejetaine iraika galetume pasiusti dvejetainiu simboliu odi gavejui, tikedamiesi, kad pagal skaiiu jis susiras interval I(x) ir pati odi x. Kaip i ideja gali buti igyvendinta? odi x = ai1 ai2 . . . ain atitinkanio intervalo iekosime konstruodami teleskop:

I I(i1 ) I(i1 , i2 ) . . . I(i1 , i2 , . . . , in1 ) I(i1 , i2 , . . . , in1 , in ) = I(x).


Pirmiausia paskirsime intervalus pavienems raidems:

I(1) = [0; p1 ), I(2) = [p1 ; p1 + p2 ), I(3) = [p1 + p2 ; p1 + p2 + p3 ), . . . , I(r) = [p1 + p2 + . . . + pr1 ; 1).

3. DUOMENU SPUDA Toliau intervalu priskyrim galime aprayti rekurentikai. Jeigu

51

I(i1 , i2 , . . . , im1 ) = [; + ),
tai

I(i1 , i2 , . . . , im1 , 1) = [; + p1 ), I(i1 , i2 , . . . , im1 , 2) = [ + p1 ; + (p1 + p2 )), ......... I(i1 , i2 , . . . , im1 , r) = [ + (p1 + . . . + pr1 ); 1).
tai ir visa esme. Taiau tikriausiai pravartu j pabreti ir skaitiniu pavyzdiu. Pavyzdys. Tegu abeceles A = {1, 2, 3, 4, 5} simboliu tikimybes yra

p1 = 0, 2; p2 = 0, 25; p3 = 0, 15; p4 = 0, 1; p5 = 0, 3.
Tarkime, reikia koduoti odi x = 213552. Konstruojame intervalus:

I(2) = I(21) = I(213) = I(2135) = I(21355) = I(213552) =

[p1 ; p1 + p2 ] = [0, 2; 0, 45) [0, 2; 0, 25) [0, 2225; 0, 23) [0, 222775; 0, 23) [0, 229325; 0, 23) [0, 22946; 0, 22962875)

Taigi kaip odio x = 213552 kod galetume siusti, pavyzdiui, deimtain trupmen = 0, 2295. Taiau nulio prie kableli siusti nera jokios prasmes, taigi galime siusti tiesiog odi c = 2295. Vietoj eiu simboliu tereikia siusti 4, savo duomenis suspaudeme net tredaliu! inoma, daniausiai tenka koduoti dvejetaines abeceles odiais, taiau toki slyg nesunku patenkinti  tiesiog reikia parinkti intervale I(x) skaiiu, kurio dvejetaine iraika butu pati trumpiausia ir tiek. Taiau yra dar dvi aplinkybes, kurios veria susimstyti, ar toks kodavimo budas tinkamas. Viena vertus, kad pasiustume kod, turime palaukti, kol baigsis kodavimo procesas ir rasime skaiiu . Kitas dalykas: kai koduosime ilgus odius  teks skaiiuoti su labai jau maais skaiiais! Atsakymas i pirm pastab paprastas: laukti iki galo nebutina! Paiurekime i pavyzdi. Juk sukonstrav interval I(21) = [0, 2; 0, 25) matome, kad toliau visu intervalu reiai prasides 0, 2, taigi skaitmeni 2 galime pasiusti jau po antrojo ingsnio. Po treiojo ingsnio taip pat galetume nusprsti, kad

52

KODAI IR IFRAI

antrasis simbolis vel bus 2, taigi ir ji jau galima pasiusti. Taiau i intervalo I(2135) = [0, 222775; 0, 23) reiu dar negalime sprsti, koks bus treiasis simbolis, taigi reiktu palaukti. O tai po etojo ingsnio, jeigu jis dar nebutu paskutinis, vis tiek inotume, kad treiasis simbolis tikrai bus 9. Taigi duomenu kodavimas ir kodo siuntimas gali vykti lygiagreiai. Tarkime, sukonstrav interval I(21) = [0, 2; 0, 25), pasiunteme pirmji kodo simboli 2. Taiau is skaitmuo kaskart raomas kitu intervalu iraikose. Galime to ivengti tai taip: padaugin intervalo I(21) reius i 10 (kad isiustas skaitmuo atsidurtu prie kableli), sudarykime nauj interval I (21) = [0; 0, 5 vien tik i trupmeniniu daliu ir naudokime ji sekaniam intervalui konstruoti vietoj I(21). itaip ne tik ivengsime jau isiusto simbolio kartojimo, bet ir skaiiavimu su labai maais skaiiais. Toks kodavimas vadinamas aritmetiniu kodavimu su mastelio keitimu. Panagrinekime pavyzdi, kiek pailgin jau koduot odi. Tegu dabar x = 21355241. Mastelio keitim atliksime tik tada, kai ir apatinis ir virutinis intervalo reiai prasides tuo paiu skaitmeniu (arba keliais vienodais). Simbolis 2 1 3 5 5 2 4

I
[0,2;0,45) [0,2;0,25) [0,425; 0,5) [0,4775; 0,5) [0,49325; 0,5) [0,4946; 0,4962875) [0,56125; 0,578125)

Kodas 2

[0;0,5)

[0,46; 0,62875) [0,6125; 0,78125)

49 5

1 [0,6125; 0,64625] [0,125; 0,4625) 62 Paskutiniame ingsnyje parinkome skaiiu 0, 62 i sukonstruotojo intervalo. Pakeisto mastelio intervalas lieka nepanaudotas. Taigi atuoniu simboliu odiui koduoti pakako eiu. Duomenu apimti sumainome 25%. Dekoduotojas turi inoti, kokio ilgio odis buvo suspaustas ir ar naudotas mastelio keitimo veiksmas. Tokia yra aritmetinio kodavimo esme. inoma, taikydami toki kodavim tikrovikais atvejais, susidurtume su ivairiais realizavimo sunkumais... Tektu pavartyti solidius duomenu spaudim apraanius veikalus.

3.2. Kintamu kodu metodas


Skyrelis apie kodu diaz: kodai tarsi diazo motyvai kuriami ekspromtu, atsivelgiant i koduojamu duomenu sraut.

Tiek Humano, tiek aritmetiniai kodai naudoja altinio simboliu tikimybes.

3. DUOMENU SPUDA

53

Jeigu altinio savybes pasikeistu arba altinis generuotu koki nors netipik sraut, Humano kodas nebesuspaustu musu duomenu tiek, kiek imanoma. Vienas i budu atsivelgti i duomenu, kuriuos reikia suspausti, savybes  prie spaudiant nustatyti kaip danai pasitaiko jame abeceles simboliai. Gav ilg abeceles A = {a1 , a2 , . . . , ar } simboliu sraut x1 x2 . . . xn , galime suskaiiuoti, kiek kartu pasikartoja abeceles simboliai, t. y. suskaiiuoti danius nm = |{xi : i n, xi = am }|, m = 1, 2, . . . , r, ir manyti, kad i sraut generavo Bernulio altinis su simboliu tikimybemis

p1 =

n1 n2 nr , p2 = , . . . , pr = . n n n

Tada, naudodamiesi iomis tikimybemis, galetume koduoti duomenis Humano arba aritmetiniu kodu, tikedamiesi, kad itaip jie bus gerai suspausti. Darbo koduojant iuo budu padaugeja  juk reikia i pradiu sudaryti simboliu daniu lentel! Kita aplinkybe  kartu su suspaustais duomenimis gavejui turime perduoti ir Humano kodo medi arba simboliu daniu lentel. Aptarsime dar vien bud naudotis Humano kodais kartu atsivelgiant ir i koduojamu duomenu savybes. is metodas vadinamas adaptyviu Humano kodu, t. y. prie koduojamu duomenu prisitaikaniu kodu. Jo esme tokia: koduojant tikslinami simboliu pasitaikymo duomenu sraute daniai, kartu keiiant ir kodavimui naudojam Humano kod. Taigi Humano kodas kuriamas kodavimo metu; dekoduojant kartojamas tas pats kodo kurimo procesas. Kodavim Humano kodu, sudarytu pagal altinio tikimybes, galime isivaizduoti kaip leidimsi nuo lapu prie aknies: vienintelis kelias nuo simbolio lapo prie aknies nurodo tam simboliui priskirt odi. Dekodavimas savo ruotu  kopimas nuo aknies link lapu. Susitarsime naudotis Humano kodo mediais, kuriu virunems yra priskirti skaiiai: lapams  atitinkamu simboliu daniai, o vidinems virunems  su jomis sujungtu auktesniojo lygio viruniu skaiiu sumos. Kadangi pagal simboliu tikimybes (danius) galima sukonstruoti ne vien Humano kod, reikia susitarti, koki kod rinksimes. Susitarimas toks:

abeceles simbolius visada idestysime daniu didejimo tvarka i kaires i dein; konstruojant kodo medi, jungiant maiausius danius turiniu viruniu por, visada bus jungiami patys kairiausieji elementai; sujungus viruniu por, gautoji virune bus vaizduojama vienu lygiu emiau u emesniojo lygio virun. i kair vedanioms briaunoms visada priskirsime 0, i dein  1.

54
A 1 B 1 2 C 1 2 3 5 D 1 E 1

KODAI IR IFRAI

A 00

Breinyje parodytas Humano kodo medis tekstui, kuriame raides A,B, C, D ir E pasirode atitinkamai po vien kart.

Tarkime, koduojamo duomenu srauto abecele yra A = {a1 , a2 , . . . , ar }, o kodo abecele dvejetaine. Kadangi altinio tikimybiu neturime, o paties duomenu srauto analizuoti nenorime (arba ketiname pradeti koduoti dar neturedami viso srauto), tai reikia susitarti del pradinio kodo. Viena i tokio pradinio susitarimo galimybiu  naudoti Humano kod, kuris atitinka pagal musu taisykles sukonstruot medi su visu simboliu daniais, lygiais 1. Gav pirmji simboli, ji koduojame, padidiname io simbolio dani 1, perrikiuojame simbolius, perkeldami ukoduotji simboli (jei reikia) i dein per maiausi reikaling poziciju kieki, kad simboliu daniai vel sudarytu nemaejani sek. Tada perbraiome kodo medi (taigi sudarome nauj Humano kod) ir laukiame antrojo simbolio. Ukodav antrji simboli, vel atliekame analogikus medio pertvarkymo veiksmus. Panagrinekime pavyzdi su A = {A, B, C, D, E}, taigi pradinis Humano kodas atitinka breinyje pavaizduot medi. Tegu srautas, kuri reikia koduoti, yra toks: ABACCDE. Breinyje pavaizduota, kaip keitesi Humano kodo medis.

B
1 2

C
1 4

D
1

1 2

A
2

C
1 2

D
1 3

2 4

A
2

C
1 2

D
1 3

A
3

6 B 000

7 A 11

C 0000 E
1 3 5

5 8

D
1 2

E
1 4

C
2

B
2 5

D
2

E
1 4

B
2

C
3 6

D
2

B
2

C
3 6

9 C 01

10 D 000

11 E 000

Breinyje parodyta, kaip keitesi kodo medis, koduojant odi ABACCDE. Pirmajai raidei koduoti buvo panaudotas medis, atitinkantis vienodus abeceles simboliu pasirodymo danius.

A 00

B 000

A 11

C 0000

C 01

D 000

E 000

3. DUOMENU SPUDA
odio ABACCDE kodavimas naudojant kintamu Humano kodu metod

55

Taigi tuo paiu nuliu trejetu kodavome net tris skirtingus abeceles simbolius. Palyginkime gaut kod su tuo, kuri butume sudar pagal simboliu danius visame bloke. Koduojamame odyje simboliai pasitaike atitinkamai po 2,1,2,1,1 kart. Kodo medis pavaizduotas breinyje.
2

A
3

C
4

D
2

Breinyje parodytas Humano kodo medis, sudarytas pasinaudojant simboliu daniais odyje ABACCDE.

A 00

B 01

A 00

C 10

C 10

D 110

E 111

odio ABACCDE kodavimas naudojant simboliu danius

Pagal i medi sudarytas odio ABACCDE kodas turi trimis dvejetainiais simboliais maiau. Taiau juk reiktu siusti ir visu simboliu danius! Taigi iuo paprastu atveju adaptyvus Humano kodas yra gerokai taupesnis (koduotojui ir dekoduotojui ukraunamo darbo sskaita!). Taigi prie duomenu srauto prisitaikanio kodo ideja yra paprasta. J galima taikyti ir aritmetiniam kodavimui. inoma, geros idejos diegimas visada susijs su ivairiais techniniais sunkumais. Pavyzdiui, kad ir simboliu daniu kaupimas: skaiiai greitai gali labai padideti; kita vertus  kaip kuo efektyviau pertvarkyti kodu medius? Pavartykite adaptyviam kodavimui skirtas publikacijas, jeigu idomu inoti.

3.3. Bloku ilgiu kodavimas


Dvejetaines abeceles simboliu sraut galime koduoti naturiniu skaiiu seka. Ar galime k nors laimeti, jeigu tuos skaiius vel koduosime dvejetaines abeceles odiais?

Dvejetaine abecele B = {0, 1} yra pati svarbiausia. Nuliu ir vienetu sraut visada galime interpretuoti kaip vienodu simboliu bloku sraut ir keisti ji naturiniu skaiiu seka, o pastaruosius vel koduoti dvejetaines abeceles odiais. Pavyzdiui,

001110111111000011111 2; 3; 1; 6; 4; 5 10; 11; 1; 110; 100; 101.

56

KODAI IR IFRAI

Dvideimt septyniems pradinio srauto bitams koduoti panaudojome septyniolika bitu. Tai, inoma, laimejimas, taiau toks kodavimo budas netinkamas praktikai. Juk dar reikia nurodyti, kokiu simboliu  nuliu ar vienetu  bloku prasideda srautas ir kaip atskirti dvejetainius naturiniu skaiiu kodus. Srauto pradios klausim galime isprsti labai paprastai. Visada galima manyti, kad srautas prasideda nuliais. Jeigu taip nera, galima tiesiog prideti vien nuli. Skaiiu kodams atskirti galima ivesti specialu atskyrimo simboli arba skaiiams koduoti galime naudoti koki nors p-kod. Jeigu inoma vienodu simboliu bloku ilgiu statistika, galima ja pasinaudoti ir sukonstruoti geresni kod, t. y. leidianti sumainti kodavimo snaudas. Taigi norint pasinaudoti bloku ilgiu kodavimo ideja, reikia nusprsti, kaip koduoti naturiniu skaiiu sekas. Panagrinesime vien i daugelio galimu budu  Golombo kodus. Parink naturaluji skaiiu m 1, sukonstruosime Golombo kod Gm , t. y. injektyvu atvaizdi {1, 2, 3, . . .} {0, 1} . Tegu n yra naturalusis skaiius, kurio kod reikia apibreti. Padalij n i m su liekana, gausime n = q m + r, 0 r < m. Skaiiaus n kod sudarysime sujung dalmens q ir liekanos r kodus. Dalmeni koduosime pagal toki  pai paprasiausi  taisykl:

0 0, 1 10, 2 110, 3 1110, . . .


Tiesiog pirmyktis skaiiu raymo budas  kiek skaiiu, tiek brukneliu! Liekanos r kodavimas priklauso nuo parinktojo m. Tarkime, m = 2s . Liekanai r urayti naudosime jos dvejetain iraik, sudarydami j i s simboliu. Bet kokiai liekanai urayti tokio ilgio dvejetaines abeceles odio uteks ir visu ju prireiks.

n=

...

Kodas 0001 0010 0011 0100 0101 0110 0111 10000 10001 . . .
Golombo kodas G8

Kaip dekoduoti Golombo kod su m = 2s , visikai aiku: suskaiiav, kiek yra vienetu iki pirmojo nulio, rasime dalmeni q, o atmet nuli, i sekaniu s bitu, surasime liekan. O dabar tegu m bet koks. Apibrekime tokius skaiius:

s = [log2 m] + 1,

m = 2s m,

ia [t] ymi skaiiaus t sveikj dali. Visoms liekanoms urayti pakaktu s ilgio dvejetainiu odiu, taiau ne visi jie butu panaudoti. Todel galime kiek

3. DUOMENU SPUDA

57

pagerinti liekanu uraymo bud: maoms liekanoms, t. y. tokioms, kurios tenkina nelygyb r < m , koduoti naudosime s1 ilgio dvejetainius odius, o likusioms  s ilgio odius:

m 1 111 . . . 11, m 2 111 . . . 10, m 3 111 . . . 00, . . .


Kodel maoms liekanoms koduoti utenka s 1 ilgio odiu? Isitikinkime:

s = log2 m + , 0 < 1, m = 2s , m = 2s m = 2s 2s = 2s1 (2 21 < 2s1 .


Taigi visu liekanu r < m dvejetainems iraikoms s 1 simboliu utenka. Irodysime, kad itaip gaunamas p kodas. Bet i pradiu panagrinekime atvejus su m = 5, 6, 7.
0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1

1 2

Liekanu kodavimas Golombo koduose G5 , G6 , G7 . Visais atvejais s = 3, o m reikmes atitinkamai lygios 3, 2, 1. Liekanos kodas yra dvejetainis odis, kuri pradedame skaityti nuo medio aknies.

Taigi liekanos, kurios yra maesnes u 2s m, koduojamos s 1 ilgio odiais, o visos kitos  s ilgio. Golombo kodai turi toki dekodavimui svarbi savyb: jeigu liekanos s bitu ilgio odyje atmesime paskutiniji bit ir likusi s 1 bitu odi interpretuosime kaip skaiiaus dvejetain iraik, tai tas skaiius bus ne maesnis u 2s m. ia savybe dekoduojant galime pasinaudoti tokiu budu: nustat dalmeni, perskaitome s 1 bito odi kaip naturaluji skaiiu. Jeigu is skaiius yra maesnis u 2s m, tai jis ir yra liekana. Jeigu didesnis  liekanos kodui gauti reikia prilieti dar vien bit. Isitikinsime, kad i savyb turi visi Golombo kodai Gm , kai m nera dvejeto laipsnis. Didiausia liekana kode Gm , kuri koduojama s ilgio odiu, yra m 1. Jos kod sudaro odis i s vienetu: 11 . . . 1. Jeigu i odi perskaitysime kaip naturaluji skaiiu, tas skaiius bus lygus 2s 1. I viso s bitu odiais koduojama m1(2s m)+1 = 2m2s liekanu. Idest jas maejimo tvarka ir perskait kodus kaip naturaliuosius skaiius, gautume sek: 2s 1, 2s 2, . . . Pats maiausias ioje sekoje butu 2s (2m 2s ) = 2(2s m). Bet kuri ios sekos skaiiu galime urayti taip: 2x + i, ia i = 0 arba i = 1, o x yra naturinis skaiius, kuri gautume i pirmuju s 1 dvejetaines iraikos bitu. Kadangi 2x + i 2(2s m), tai x 2s m i/2 ir x 2s m, nes x yra naturinis skaiius. Golombo kodu yra be galo daug  yra i ko pasirinkti. Su kokiu m Golombo kodas yra geriausias? Tai, inoma, priklauso nuo srauto savybiu.

58

KODAI IR IFRAI

Jeigu parinksime ma m, bet danai teks koduoti didelius skaiius, tai daug simboliu bus panaudojama dalmeniui koduoti. Jeigu parinksime dideli m, bet danai teks koduoti maus skaiius, liekanu kodavimas bus neefektyvus. Yra nustatyta, koks Golombo kodas yra geriausias vienu specialiu atveju. Tarkime, pradini bitu sraut sukure Bernulio altinis, kuris perduoda nuli su tikimybe p. Tada bloku ilgiams koduoti geriausias tas Golombo kodas Gm , kurio parametras m tenkina slyg

pm + pm+1 1 < pm + pm1 .


I iu nelygybiu gauname, kad su geriausia m reikme teisinga apytiksle lygybe 1 pm . 2

3.4. odyno metodas


Jonas sako: Dvyliktas. Visi ustales draugai nusijuokia, patyli. Petras sako: Dvideimt antras. Vel panai draugu reakcija. K gi veikia ie mones? Jie pasakoja anekdotus, suspaustus naudojant odyno metod!

Koduoti duomenu sraut odyno metodu reikia keisti odius ir net frazes ju eiles numeriais odyne. Taiau tai tik labai alia ideja... Panagrinekime du Lempelio ir Zivo pasiulytus duomenu spaudimo algoritmus, kuriuos jie ideste 1977 ir 1978 metais. Bendras abieju metodu bruoas  prie pradedant koduoti, odyno nera, jis kuriamas palaipsniui, naudojantis koduojamais duomenimis. Pirmasis metodas paprastai vadinamas LZ77 metodu. Jame naudojami slenkantys langai. Lang sudaro dvi ksuoto ilgio dalys: kairioji dalis, kurioje telpa, tarkime, m simboliu, ir deinioji, kurioje telpa n simboliu. Kairij lango pus vadinsime odyno langu, o deinij  teksto langu. is langas slenka iilgai koduojamo simbolio srauto. Tegu, pavyzdiui, m = 8 ir n = 4. Panagrinekime breinyje pavaizduot padeti. VASARIS VASA RA PAVASARIS Teksto lange atsidure odio fragmentas VASA, o odyno lange  VASARIS ir odius skiriantis tarpas. Dabar odyno lange iekome ilgiausio fragmento, kuris butu teksto lango priedelis, randame  VASA. Savo radini nurodome dviem skaiiais: rasto priedelio pradios atstumu nuo teksto lango ir priedelio ilgiu: ie skaiiai yra 8 ir 4. Juos papildome pirmuoju dar nekoduotu simboliu, t. y. raide R. Taigi sudaromas srauto kodas papildomas trejetu 8; 4; R , o langas pastumiamas taip, kad deiniojo lango pradioje atsidurtu pirmas dar nekoduotas simbolis: VASAR IS VASAR A PA VASARIS Visa teksto VASARIS VASARA PAVASARIS eiga parodyta lenteleje

3. DUOMENU SPUDA Kodas VASA RIS VASARA PAVASARIS V ASAR IS VASARA PAVASARIS VA SARI S VASARA PAVASARIS VAS ARIS VASARA PAVASARIS VASAR IS V ASARA PAVASARIS VASARI S VA SARA PAVASARIS VASARIS VASA RA PAVASARIS VASAR IS VASAR A PA VASARIS VASARIS VASARA PAVA SARIS VASARIS VASARA P AVAS ARIS VASARIS VA SARA PAV ASAR IS VASARIS VASA RA PAVAS ARIS VASARIS VASARA PAVASAR IS VASARIS VASARA PAVASARI S 0;0;V; 0;0;A; 0;0;S; 2;1;R; 0;0;I; 4;1; : 8;4;R; 2;1; ; 0;0;P; 3;1;V; 2;1;S; 2;1;R; 0;0;I; 4;1;

59

is pavyzdys parodo, kad spaudiant duomenis, kartais duomenu apimtis netgi padideja. Taiau kartu rodo ir prieasti  musu odyno langas pernelyg maas. Padidin ji, gautume geresni rezultat. Kita prieastis  odynas vis laik kinta. Del ios prieasties negalejome, pavyzdiui, pasinaudoti tuo, kad fragmentas VASAR pasikartoja duomenu sraute net tris kartus. Kitas Lempelio ir Zivo pasiulytas algoritmas LZ78 naudoja odyn, kuris nuolat dideja, nes yra pildomas vis naujais tekste pasitaikiusiais odiais. Panagrinesime kodavimo idej, konstruodami simboliu srauto ABABAABBABABAABAB kod. Koduojant simboliai skaitomi nuosekliai vienas po kito, kartu sudarant odyno medi. I pradiu odynas tuias, ji atitinka aknies virune, kuriai suteiktas numeris lygus nuliui, r. 1 breini. Perskait simboli A, atveriame odyn, tikriname, ar jame yra fraziu, prasidedaniu ia raide. Nera. Tada i sudaromo kodo sek uraome por 0; A , o odyn papildome odiu A, kuriam suteikiame numeri 1, r. 2 breini. Perskait antrji simboli, vel i kodo sek uraome 0; B , o odyn papildome odiu B, jo numeris 2. Treioji koduojamo odio raide yra A, ji jau yra odyne, taigi i kodo sek uraome jos numeri su sekania raide, o odyn papildome odiu AB, kuriam suteikiame numeri 3. Taigi auga kodo simboliu eile, o kartu ir odynas.

60
0 1 A 0 1 A 0 B

KODAI IR IFRAI
A 0 B

2 B A 3

%
A 4

j
A 7

1)

2)

3)
6

B 5

4)

odyno, sudaryto koduojant sek ABABAABBABABAABAB LZ78 kodu, medis

Suraykime kodavimo ingsnius lentele, nurodydami, kaip papildoma kodo seka ir odynas. Kodavimo ingsnis Kodo papildymas odyno papildymas

1 2 3 4 5 6 7 8

0; A 0; B 1; B 1; A 2; B 3; A 2; A 6; B

A B AB AA BB ABA BA ABAB

Kodavimo LZ78 eiga. I odyn naujai itraukiamo odio numeris sutampa su ingsnio numeriu.

Duomenu spaudim nagrinejanioje literaturoje galima surasti ivairiu iu dvieju kodu modikaciju. Pavyzdiui, galima pradeti ne nuo tuio odyno, jame jau gali buti visi i vieno simbolio sudaryti odiai (visos baitu reikmes). Kita vertus, taikant LZ78 kod praktikai, reikia nusprsti, k daryti, kai odyno apimtis labai padideja. Dekoduojant LZ78 kod, atkuriamas tas pats odynas, koks buvo panaudotas koduojant.

3.5. Kelk i prieki ir kitos geros idejos


Du teksto kodavimo metodai: iradingi, paprasti, efektyvus...

Simbolius keisti skaiiais  informatiku ir matematiku iprotis. Tarkime, altinio abecele yra A = {a, b, c, d}. ios abeceles simboliu sraut galime

3. DUOMENU SPUDA

61

pakeisti naturiniu skaiiu seka  tiesiog keisdami raides ju eiles numeriais abeceleje. Pavyzdiui:

bcdddaa . . . 1; 2; 3; 3; 3; 0; 0 . . .
Taiau itaip duomenu nesuspausime, nebent skaiiams koduoti dvejetainiais simboliais turetume geresni bud negu raidems. Bet nei vienos minties neverta atmesti neisitikinus, kad jos negalima patobulinti. Pagerinti raidiu keitimo skaiiais idej galime itaip: ura raides kod (eiles numeri) pakeiskime abecel, perkeldami ukoduot abeceles raid i prieki. i kodavimo bud pavadinkime kelk i prieki metodu.

Abecele Raide Kodas

a, b, c, d b, a, c, d c, b, a, d d, c, b, a d, c, b, a d, c, b, a a, d, c, b

b c d d d a a

1 2 3 0 0 3 0

Kodavimas kelk i prieki metodu. Palygin su anksiau gauta skaiiu seka, matome, kad nedaug telaimejome  trejetu skaiius sumaejo vienetu, o nuliu  vienetu padidejo. Taigi laimejimas vis delto yra!

Kokios naudos galima tiketis koduojant iuo metodu? Daniau pasitaikantys simboliai bus keiiami maesniais skaiiais. Pavyzdiui, jeigu vienoje srauto dalyje danai pasitaiko aibes X raides, tai jos bus keiiamos nedideliais skaiiais; jeigu kitoje vietoje danesnes aibes Y raides, tai butent jos bus keiiamos maesniais skaiiais. Taigi galima tiketis, kad gautoje skaiiu sekoje vyraus maesni skaiiai. Maesniems skaiiams koduoti reikia maiau bitu  prisiminkime, pavyzdiui, Golombo kodus. Panagrinesime dar vien kodavimo bud, kuri galima naudoti kartu su kelk i prieki ideja  Burrowso ir Wheelerio metod. Lengviausia ji suprasti nagrinejant pavyzdi. Tarkime, reikia koduoti odi pasaka. Pirmiausia, atlikime visus ciklinius io odio postumius, o paskui visus eis gautus odius sutvarkykime leksikograne tvarka:

62

KODAI IR IFRAI

odiai po postumiu Sutvarkyti odiai

pasaka asakap sakapa akapas kapasa apasak

a kapa s a pasa k a saka p k apas a p asak a s akap a

odio pasaka kod sudarysime ura paskutini sutvarkytos lenteles stulpeli ir nurod, kurioje jos eiluteje yra pradinis odis, taigi

pasaka skpaaa; 5.
Kyla teiseta abejone: kokia tokio kodavimo nauda? Juk kodas netgi ilgesnis, nes nurodomas papildomas simbolis  skaiius. Kai koduojami ilgesni odiai, to pailgejimo galime ir nelaikyti svarbiu  jeigu nauda atsiranda kitur. Galbut ir nelabai itikinantis argumentas, kad i bei t laimime, toks: palyginkime odiu pasaka ir skpaaa kodus, gautus kelk i prieki metodu, kai abecele yra A = {a, k, p, s}. tai tie kodai:

pasaka 2; 1; 3; 1; 3; 1 skpaaa 3; 1; 2; 3; 0; 0.
Esme tokia: Burrowso-Wheelerio metodu atitinkamai perstatant raides i pradinio odio sudaromas naujas, o iame odyje vienodos raides linkusios grupuotis; is polinkis ir suteikia galimyb koduoti efektyviau. Taiau ar i kodo vienareikmikai galime atkurti koduot sraut? ia ir yra visas ios idejos avesys. Galima. Panagrinekime kaip. Pavelkime i sutvarkytos lenteles pirmji ir paskutiniji (pajuodintus) stulpelius. Jie sudaryti i tu paiu raidiu, tik pirmasis sutvarkytas didejimo tvarka. Todel inodami paskutiniji, galime ji sutvarkyti ir gauti pirmji. Taigi i Burrowso- Wheelerio metodu gauto kodo (paskutiniojo sutvarkytos lenteles stulpelio) galime atkurti pirmji. O k reikia, pavyzdiui, kad antrosios eilutes paskutiniajame stulpelyje yra k, o pirmajame  a? Tai reikia, kad pradiniame odyje po k seka a! Taiau juk inome, nuo kurios eilutes pradeti  nuo penktosios. Taigi paskutine odio raide yra a, o pirmoji  p. Kas seka po p? Iekome paskutiniame stulpelyje p ir randame, kad po jos eina a. Iekome paskutiniajame stulpelyje a ... Bet ju ia kelios! K gi daryti? Sugrikime prie raides a, kuri radome pirmajame stulpelyje  ji yra i triju vienodu raidiu treioji. Todel ir paskutiniajame stulpelyje imkime treij i eiles raid a  ji yra etojoje eiluteje. Nesijaudinkite,

3. DUOMENU SPUDA

63

jei neaiku, kodel taip reikia daryti  netrukus pabandysiu paaikinti. Taigi randame, kad prie a turi buti s ir taip toliau... Viskas turetu buti suprantama, iskyrus atveji, kai paskutiniajame stulpelyje reikia rinktis vien i keliu vienodu raidiu. Panagrinesime, kaip isidesto vienodos raides pirmajame ir paskutiniajame stulpeliuose imdami t pati pavyzdi. Kad butu galima sekti, kur atsiduria vienodos raides a, ymesime jas indeksais. Taigi kiek pakeiskime savo lentel: odiai po postumiu Sutvarkyti odiai

pa1 sa2 ka3 a1 sa2 ka3 p sa2 ka3 pa1 a2 ka3 pa1 s ka3 pa1 sa2 a3 pa1 sa2 k

a2 ka3 pa1 s a3 pa1 sa2 k a1 sa2 ka3 p k a3 pa1 s a2 p a1 sa2 k a3 s a2 ka3 p a1

Dabar jau gerai matyti  pirmajame ir paskutiniajame stulpeliuose vienodos raides isidesto ta paia tvarka. Kodel taip atsitinka? Tai nesunku paiam suvokti, bet sunku kitam paaikinti. Prisipainsiu, nesupratau nei vieno kitose knygose idestyto aikinimo, bet usiraiau i pavyzdi, pagalvojau apie sutvarkym ir i karto visk kuo geriausiai supratau. Siulau ir jums t pati bud!

64

KODAI IR IFRAI

4 Kanalai ir kodai
Ar su netobulais irankiais galima sukurti tobul kurini? Jei aplankysite Rokikyje medio droejo Liongino epkos darbu parod, pamatysite ir nuostabias jo skulpturas, ir varganus peiliukus, kuriais naudojosi meistras. Netobuli irankiai ne kliutis meistrui, bet iukis. io skyriaus paskirtis  itikinti skaitytoj, kad nepatikimais informacijos perdavimo kanalais yra imanomas patikimas ryys!

4.1. Perdavimo kanalai


Jeigu gavejas gauna ne visada tai, k siunte siuntejas, vadinasi, perdavimo kanalas yra nepatikimas. Nepatikimumo, kaip ir melo, ruiu yra daug. Kad galetume matematikai nagrineti informacijos perdavim nepatikimais kanalais, sukurkime matematini tokio kanalo modeli.

Mokslo apie informacijos perdavim srityje vienas i svarbiausiu faktu yra Shannono irodytas teiginys: nors ryio kanalai nera patikimi, jais patikimas ryys yra imanomas. Kaip idestyti i teigini matematikai? Pradekime nuo perdavimo kanalu. Jeigu jau yra perdavimo kanalas, tai turi buti ir siuntejai, ir gavejai. Paprasiausiu atveju ir siuntejas vienas, ir gavejas vienas. Siuntejas perduoda tam tikrus duomenis, gavejas gauna. Jeigu perduodamas tolydiai kintantis signalas, kuri galime isivaizduoti laiko funkcija, sakome, kad kanalas yra analoginis. Gavejas irgi gauna funkcij, galbut jau iek tiek kitoki. Jeigu siuntejas siunia kokios nors abeceles odi, t. y. kelet simboliu, kurie seka vienas po kito, sakome, kad kanalas yra diskretus. Gavejas taip pat gauna simboliu sek, galbut jau nebe tokios pat kaip siuntejo abeceles. Taigi kanal galime suvokti kaip dvieju informacijos altiniu: siuntejo ir gavejo, por. Siuntejo abecel ymesime A, o atsitiktinius dydius, kuriu reikmes - siuntejo perduodami simboliai, U1 , U2 , . . . Atitinkamai gavejo abecel ymesime B, o atsitiktinius dydius, kuriu reikmes  gavejo gauti simboliai, V1 , V2 , . . . Jeigu gavejo altinis yra tiksli siuntejo altinio kopija, vadinasi, turime idealu perdavimo kanal ir jokia teorija mums nereikalinga. Taiau tikroveje idealiu kanalu nera. Taigi gavejo gaunami duomenys gali skirtis nuo siustuju. Tokiu atveju sakome, kad perduota ikraipyta informacija, o visas aplinkybes, del kuriu tai ivyko, vadinsime vienu vieninteliu odiu  triukmas. Taigi informacijos ikraipymu perduodant kanalu prieastis  triukmas. Priemones, kuriu galime griebtis noredami padidinti perdavimo patikimum, priklauso, inoma, nuo triukmo pobudio. Apskritai triukmas tera patogus odis, kuris konkreiais atvejais gali reikti skirtingus dalykus. Pavyzdiui, siuniant odi kanalu, triukmas gali iterpti papildomus simbolius arba juos paalinti... Tada gavejas gaus nebe tokio paties ilgio odi, koki siunte siuntejas.

4. KANALAI IR KODAI

65

Triukmas gali pakeisti vienus siuniamus simbolius kitais, tada sakome, kad kanalas ikreipia informacij. Jeigu kanalo triukmas gali paalinti simbolius, taiau gavejas ino, kurie odio simboliai buvo paalinti, sakome, kad kanalas trina informacij. Sunku aprepti vis ivairov i karto. Todel apsiribosime tik tokiais kanalais, kurie kraipo simbolius arba juos trina. Tokiu kanalu atveju viena aplinkybe yra garantuota: jeigu siuntejas pasiunte n ilgio odi, tai tokio pat ilgio odi gaus ir gavejas (itrintus simbolius jis gali pakeisti, pavyzdiui, klaustukais). Taigi tegu A = {a1 , a2 , . . . , aq } yra siuntejo, o B = {b1 , b2 , . . . , bs }  gavejo abecele. Siuntejo siuniami odiai yra atsitiktinio vektoriaus U (n) reikmes, o gavejo gaunami odiai  atsitiktinio vektoriaus V (n) reikmes. Statistines kanalo triukmo savybes nusako tikimybes

P (V (n) = v|U (n) = u),

u An , v B n .

t. y. tikimybes gauti v, jei buvo pasiusta u. Kaip ir informacijos altiniai, perdavimo kanalai taip pat gali tureti atminti: m-asis gavejo simbolis gali priklausyti ne tik nuo m-ojo siusto simbolio, bet ir nuo to, kas buvo siusta ir gauta anksiau. Paprasiausia kanalu ruis  praeities neatsimenantys kanalai. Galime isivaizduoti, kad, siusdami simboli a tokiu kanalu, atliekame bandym, kurio baigtys  abeceles B simboliai, o ju tikimybes priklauso tik nuo a ir nuo kanalo triukmo savybiu. Tikimyb, kad, siuniant simboli a, bus gautas simbolis b ymesime p(b|a). Tarsime, kad ios tikimybes nepriklauso nuo to, kuris i eiles simbolis yra siuniamas ir gaunamas, t. y. nagrinesime stacionarius kanalus. Stacionariu kanalu triukmo savybes nesikeiia laikui begant. Perdavimo kanal vadinsime kanalu be atminties, jeigu visiems odiams u = u1 u2 . . . un An , v = v1 v2 . . . vn B n teisinga lygybe

18 apibreimas.

P (V (n) = v|U (n) = u) = p(v1 |u1 )p(v2 |u2 ) . . . p(vn |un ).


Kanalo triukmo savybes, t. y. polinki kraipyti siuniamus simbolius, galime nusakyti kanalo tikimybiu p(bj |ai ), ai A, bj B, matrica

p(b1 |a1 ) p(b2 |a1 ) . . . p(bs |a1 ) p(b1 |a2 ) p(b2 |a2 ) . . . p(bs |a2 ) . P= . . ... ... . ... p(b1 |at ) p(b2 |at ) . . . p(bs |aq )
Diskreiuosius perdavimo kanalus patogu vaizduoti diagramomis.

66

KODAI IR IFRAI

B p(bj |ai ) bj X

ai

E z

Perdavimo kanalo diagrama. Streles nukreiptos i tuos simbolius, kurie, siuniant simboli, gali buti gauti i kanalo. Prie streliu nurodytos slygines tokio perdavimo tikimybes.

Kanalo tikimybiu i-ojoje eiluteje suraytos tikimybes, kad, pasiuntus i-ji siuntejo abeceles simboli, bus gautas atitinkamai pirmasis, antrasis, ... gavejo abeceles simbolis. Taigi kanalo tikimybiu matricos kiekvienos eilutes elementu suma lygi vienetui.

4.2. Perdavimo kanalu ivairove


Tarptautinis arba vietinis patas, telefonas, elektroninis patas, kompaktine ploktele, popieriaus lapas, kuri galime prirayti, ... , tuias butelis, i kuri galima ideti laik ir paleisti upe pasroviui... Perdavimo kanalu yra ivairiu, visu ju neaprepsime. Panagrinekime, kelet paprastu kanalu matematiniu modeliu.

Nagrinesime tik neturinius atminties kanalus. Pradekime nuo atvejo, kai siuntejas ir gavejas naudoja dvejetain abecel.

19 apibreimas. Perdavimo kanal su dvejetaine siuntejo ir gavejo abecele A = B = {0, 1} vadinsime dvejetainiu simetriniu kanalu, jeigu perdavimo tikimybiu matrica yra p(0|0) p(1|0) 1p p = , P= p(0|1) p(1|1) p 1p
ia p, 0 p 1, reikia vieno simbolio ikraipymo tikimyb.

1p E 0  p p

0 p p 1

1 pE 0
j? B

1p E 1

1 pE 1

E X z E X z E X z E X z E

Trys perdavimo kanalu modeliai. Dvejetainio simetrinio kanalo poiuris i siuniamus simbolius vienodas: jis visus juos vienodai links ikreipti ir vienodai  perduoti teisingai. Trinantis kanalas su su visais simboliais irgi elgiasi vienodai: trina juos arba perduoda teisingai. Kai

4. KANALAI IR KODAI
renkame tekst klaviatura, danai atsitinka, kad vietoj reikalingo klavio paspaudiame vien i jam gretimu. Klaviaturos kanalas pavaizduotas 3 breinyje.

67

20 apibreimas. Perdavimo kanal su dvejetaine siuntejo abecele A ir gavejo abecele B = A {?} vadinsime trinaniu kanalu, jei simbolio perdavimo tikimybes tokios:
p(?|a) = p, p(a|a) = 1 p, p(b|a) = 0, a, b A, a = b,

ia 0 p 1 yra simbolio trynimo tikimybe. Simetrinio kanalo svok galima suformuluoti ir tam atvejui, kai siuntejo ir gavejo abeceles nera dvejetaines.

21 apibreimas. Perdavimo kanal su siuntejo abecele A = {a1 , a2 , . . . , aq } ir gavejo abecele B = {b1 , b2 , . . . , bs } vadinsime simetriniu, jeigu kanalo tikimybiu matricos
p(b1 |a1 ) p(b2 |a1 ) . . . p(bs |a1 ) p(b1 |a2 ) p(b2 |a2 ) . . . p(bs |a2 ) P= . . ... ... . ... p(b1 |at ) p(b2 |at ) . . . p(bs |aq )
eilutes yra gaunamos i vienos eilutes, perstatant jos elementus, o kiekvieno stulpelio tikimybiu suma yra ta pati. Visos simetrinio kanalo tikimybiu matricos eilutes sudarytos i tu paiu skaiiu. Galima isivaizduoti, kad, sprsdamas, kaip perduoti siuniam simboli, kanalas meta kauliuk, ant kurio sieneliu uraytos gavejo abeceles raides. Kokia raide atvirto, tokia ir perduodama. Kauliuku yra tiek, kiek siuntejo abeceleje raidiu: po vien kiekvienai raidei. Fizines kauliuku savybes vienodos, tik raides ant sieneliu uraytos skirtingai. Sakote, kauliuku su trimis sienomis nera? Tada ridenkite trisien prizm! Kadangi tikimybiu matricos kiekvienos eilutes elementu suma lygi vienetui, visu elementu suma bus lygi q. Tada simetrinio kanalo tikimybiu matricos kiekvieno stulpelio tikimybiu suma lygi q . i slyg galime interpres tuoti, pavyzdiui, taip: jeigu visi siuntejo simboliai butu perduodami su vienodomis tikimybemis, tai ir visi gavejo abeceles simboliai pasirodytu kitame kanalo gale su vienodomis tikimybemis. Taigi simetrinis kanalas garantuoja, kad lygiavos principas, galiojantis siuntejo puseje, iliks galioti ir gavejo puseje. Reikia simetriniu kanalu pavyzdiu? Jeigu kanalas, perduodamas kiekvien simboli mestu t pati simetrik kauliuk, gautume paprasiausi visikai niekam netinkam simetrini kanal.

68

KODAI IR IFRAI

tai kiek idomesnis pavyzdys. Tegu A = {a, b, c}, o perdavimo kanalas su tikimybe p simboli perduoda teisingai, su tikimybe x paveria kitu simboliu, o su tikimybe y = 1 p 2x itrina. Taigi tikimybiu matrica yra tokia:

p x x y p(a|a) p(b|a) p(?|a) P = p(a|b) p(b|b) p(?|b) = x p x y . x x p y p(a|c) p(b|c) p(?|c)


Kada toks kanalas yra simetrinis? Nesunku isitikinti, kad butina ir pakankama slyga, kad kanalas trintu madaug kas ketvirt perduodam simboli, t. y. y = 0, 25.

4.3. Kanalo talpa


Kiek vandens telpa i kibir, tokia jo ir talpa. O jeigu kibiras kiauras? Kokia tada jo talpa? Jeigu informacijos kanalas patikimas, koki informacijos kieki pasiusime, toki gavejas ir gaus. O jeigu nepatikimas? Kiek informacijos galima perduoti tokiu kanalu?

Jeigu kibiras kiauras, tai pripyl ji sklidin, nuneime jau nebe piln. T vandens kieki, kuri pavyko nuneti, galime pavadinti kiauro kibiro talpa. Perdavimo kanalas ikraipo simbolius. Toks kanalas yra tarsi kiauras kibiras  dalis informacijos, siuniant kanalu, prarandama. Kiekgi jos perduodama kanalu? Kaip apibreti ir apskaiiuoti kanalo talp? Prisiminkime abipuses informacijos svok. Jeigu X ir Y yra du diskretieji atsitiktiniai dydiai, tai abipuse informacija pavadinome skaiiu

I(X, Y ) = H(X) H(X|Y ).


Abipuse informacija  puikus irankis kanalo talpai matuoti. Siuntej sutapatinkime su atsitiktiniu dydiu U, o gavej  su V. Dydio U reikmes  siuntejo abeceles simboliai, o V reikmes  gavejo gauti simboliai. Tada gavejo siuniamos informacijos kiekis yra H(U ), H(U |V )  kiekis, pradings kanale, o I(U, V )  perduotas informacijos kiekis. inoma, perduodamos informacijos kiekis priklauso nuo to, kiek jos siuniama. Be to, kanalas  tai ne kiauras kibiras, jeigu siusime daugiau (H(U ) reikme bus didesne), nebutinai daugiau ir perduosime. Perduodamos informacijos kiekis gali priklausyti nuo altinio savybiu (siuntejo abeceles tikimybiu). Taigi noredami nustatyti maksimalu informacijos kieki, kuri galima perduoti kanalu, turetume ibandyti visus altinius su ta paia abecele. ymekime PU = p(a1 ), p(a2 ), . . . , p(aq ) altinio tikimybiu, t. y. tikimybiu p(a) = P (U = a), rinkini. Tada kanalo talp apibreime taip:

4. KANALAI IR KODAI

69

22 apibreimas.

Kanalo talpa vadinsime skaiiu

C = max{I(U, V ) : PU }.
Kanalo talpa  tai maksimali perduodamos informacijos kiekio I(U, V ) reikme; ios funkcijos apibreimo sritis yra skirstiniu aibe

{ p1 , p2 , . . . , pq : pi 0, p1 + p2 + . . . + pq = 1}.
Suskaiiuoti kanalo talp danai nelengva. Taiau kartais  visai nesunku. Pavyzdiui, nesunku apskaiiuoti simetrinio kanalo talp.

20 teorema. Tegu siuntejo abecele yra A = {a1 , a2 , . . . , aq }, gavejo  B = {b1 , b2 , . . . , bs }, kanalas yra simetrinis, o jo tikimybes yra p(bj |ai ). Tada kanalo talpa lygi
s

C = log2 s H,

H=
j=1

p(bj |ai ) log2

1 . p(bj |ai )

Skaiiuodami dydi H, apibret teoremos formuluoteje, naudojame kanalo tikimybiu matricos vienos eilutes elementus. Kadangi kanalas yra simetrinis, tai kiekvienoje eiluteje yra surayti tie patys skaiiai, taigi H reikme nepriklauso nuo to, kuri eilut pasirinksime. Irodymas. Pasinaudokime abipuses informacijos iraika:

I(U, V ) = H(V ) H(V |U ),


s

H(V ) =
j=1 q

p(bj ) log2

1 , p(bj )

H(V |U ) =
i=1 s

p(ai )H(V |U = ai ), p(bj |ai ) log2


j=1

H(V |U = ai ) =

1 , p(bj |ai )

ia ymime

p(bj ) = P (V = bj ),

p(ai ) = P (U = ai ),

p(bj |ai ) = P (V = bj |U = ai ).

Dabar isiiurekime ir pasvarstykime. Kadangi kanalas simetrinis, tai visos slygines entropijos H(V |U = ai ) lygios, t. y. H(V |U = ai ) = H. Taiau tada
q

H(V |U ) = H
i=1

p(ai ) = H

70 nepriklausomai nuo altinio tikimybiu p(ai ). Taigi

KODAI IR IFRAI

I(U, V ) = H(V ) H,
ir didiausi reikm dydis I(U, V ) igis tada, kai H(V ) reikme bus didiausia. Kadangi dydis V gali igyti s skirtingu reikmiu, tai jo entropija negali buti didesne u log2 s. Lygybe H(V ) = log2 s butu teisinga tuomet, jei visos V reikmes butu vienodai galimos. Taiau kanalas yra simetrinis, t. y. ilaiko lygiavos princip: jeigu visi siuntejo simboliai bus siuniami su vienodomis tikimybemis, tai ir visi gavejo simboliai pasirodys su vienodomis tikimybemis. Taigi kanalo talpa

C = max{I(U, V ) : PU } = log2 s H.

(29)

Uraykime kanalo talpos iraik, kai kanalas dvinaris ir simetrinis, t. y. ir siuntejo, ir gavejo abeceles turi po du simbolius, o kanalo tikimybiu matrica yra

1p p . P= p 1p

Ivada. Dvinario simetrinio kanalo talpa yra


C = 1 p log2 p (1 p) log2 (1 p).
Taiau jei dvinaris kanalas nera simetrinis, kanalo talp apskaiiuoti nelengva. Netikite  pabandykite. Utat kanalo su trynimu talp apskaiiuoti visai nesudetinga. Taigi siuntejo abecele yra B = {0, 1}, gavejo  B = {0, 1, ?}, o kanalo tikimybiu matrica

P=

1p 0

p . 1p p

Jeigu p = 1/3, tai kanalas simetrinis, taigi jo talp galime apskaiiuoti pasinaudoj (29): 2 3 2 1 C = log2 3 log2 3 log2 = . 3 3 2 3 1 Jeigu kanalas itrina simboli su tikimybe 3 , t. y. itrina madaug tredali siuniamu bitu, tai galime isivaizduoti, kad siuniant vien bit informacijos, maiausiai tredalis jo nutrinama. Galima speti, kad jeigu kanalas trina simboli su tikimybe p, tai i vieno bito daugiausiai gali likti 1 p bito. Ir tai tiesa. simboli itrina su tikimybe p ir su tikimybe 1 p perduoda teisingai, tai jo talpa C = (1 p) log2 q.

21 teorema. Jeigu kanalas kiekvien siuntejo abeceles A = {a1 , a2 , . . . , aq }

4. KANALAI IR KODAI

71

druoju atveju irodymo idejos yra tos paios, tik enklu ir indeksu daugiau.

Irodymas. Irodysime teorem dvejetainei abecelei, t. y. kai q = 2. BenH(V |U = 0) = H(V |U = 1) = p log2 1 1 + (1 p) log2 . p 1p

Taigi ir

H(V |U ) = p log2

1 1 + (1 p) log2 . p (1 p)

Jeigu P (U = 0) = x, P (U = 1) = 1 x, tai

P (V = 0) = x(1 p),

P (V = 1) = (1 x)(1 p),

P (V =?) = p.

iek tiek paskaiiav, gautume:

I(U, V ) = H(V )H(V |U ) = (1p) x log2

1 1 +(1x) log2 = (1p)H(U ). x 1x

Kadangi didiausia galima H(U ) reikme yra 1, tai didiausia galima I(U, V ) reikme, t. y. kanalo talpa, lygi 1 p.

4.4. Patikimo perdavimo kaina


Tarkime, kiauru kibiru reikia atneti, pavyzdiui, penkis litrus vandens. Kiekvienas inome sprendim: reikia i pradiu ipilti daugiau. Taiau perdavimo kanalo lyginimas su kiauru kibiru  nelabai vyks. I tiesu, noredami, kad gavej musu informacija pasiektu patikimiau, mes turime ne padidinti siuniamos informacijos kieki, bet prie j siusdami atitinkamai ipakuoti, t. y. parengti arba koduoti.

Galvojame: kaip patikimiau perduoti informacij? Pirmoji mintis  kartokime perduodamus simbolius. itaip perduodamos informacijos kiekio nepadidinsime, taiau galbut saugiau ipakuosime. Jeigu siuniam simboli pakartosime, pavyzdiui, tris kartus ir nurodysime, kad tris gautus simbolius reikia pakeisti tuo, kuris toje trijuleje pasitaiko daniausiai, tai simbolio teisingo perdavimo tikimyb nuo Pt = 1p padidinsime iki Pt = (1 p)3 + 3p(1 p)2 , ia p ymi tikimyb, kad siuniamas simbolis kanale bus ikreiptas. Kai p = 0, 1, tai Pt = 0, 9, o Pt = 0, 972. Nekartojant siuniamu simboliu, gavejas i 1000 pasiustu simboliu teisingai atpains madaug 900, o kartojant  madaug 970. Taiau patikimumo padidejimo kaina  tris kartus suletejs ryys! Tikimybe, kad visi 1000 simboliu bus perduoti teisingai, butu vis tiek labai maa.

72

KODAI IR IFRAI

Jeigu noretume, kad ji butu didele, ar perdavimo greiio neturetume sumainti kone iki nulio? Kiek kartu reiktu kartoti simboli, kad klaidingo perdavimo tikimybe butu maesne, pavyzdiui, u 0,001? Taigi tarkime, kad norime patikimai perduoti vien bit dvinariu simetriniu kanalu, kuris ikreipia simboli su tikimybe p < 1/2. Nesugalvodami nieko geriau, nusprendeme pakartoti siuniam bit n kartu, patar gavejui kiekvien n bitu blok keisti tuo simboliu, kuris iame bloke pasitaiko daniausiai. Kiek kartu reikia kartoti siuniam simboli, kad tikimybe, jog gavejas, dekoduodamas ji, suklys, butu maesne u ? Siuniamas simbolis bus dekoduotas neteisingai, jeigu siuniant n vienodu simboliu, ikraipyta bus ne maiau kaip n/2. Tokio ivykio tikimybe lygi

P (bus dekoduota klaidingai|n) =


m>n/2

m Cn pm (1 p)nm .

Noredami suinoti, kiek kartu reiktu kartoti simboli, kad klaidingo dekodavimo tikimybe butu maesne u , turetume sprsti nelygyb

P (bus dekoduota klaidingai|n) .


iek tiek paskaiiuokime. Suraskime vieno bito klaidingo dekodavimo tikimybes, kai perduodant jis kartojamas atitinkamai 3, 5, 7 ir 9 kartus.

n=

5 0, 0856 0, 05792

7 0, 002728 0, 03334

9 0, 0009 0, 01958

p = 0, 1 0, 0028 p = 0, 2 0, 104

Lenteleje pateiktos vieno simbolio klaidingo dekodavimo tikimybes. Kai vieno simbolio ikraipymo tikimybe lygi 0, 1, o perduodant kiekvienas simbolis kartojamas devynis kartus, vis tiek madaug vienas i tukstanio simboliu bus perduotas klaidingai. Jeigu teksto simbolis koduojamas atuoniais bitais, tai klaidingai perskaitytas bus madaug vienas simbolis i 125. Vidutinio dydio puslapyje 125 simboliai upildo madaug dvi eilutes. Taigi klaid rastume beveik kas antroje eiluteje!

Nesugalvojus nieko geriau kaip kartoti perduodam simboli, didinti perdavimo patikimum imanoma tik letinant perdavimo greiti. Sveikas protas tikriausiai su tuo sutiktu. C. Shannonas irode, kad tokia sveiko proto nuomone ia visikai klaidinga. I tikruju imanoma, pavyzdiui, dvinariu simetriniu kanalu su simbolio ikreipimo tikimybe p = 0, 1 koduot informacij perduoti taip, kad klaidingo perdavimo tikimybe butu kiek norime maa, o pats perdavimas nesuletetu net du kartus! Vienintele papildoma slyga  turi buti siuniama daug informacijos i karto. Didmenines siuntos teikia daugiau privalumu!

4. KANALAI IR KODAI

73

4.5. Kodai ir dekodavimo taisykles


Kaip sudaryti kodavimo, kaip dekodavimo taisykles? Pradekime nuo pastaruju...

Tegu altinio abecele yra A = {a1 , a2 , . . . , aq }, o kanalas stacionarus ir neturi atminties. Aptareme pati paprasiausi bud padidinti perdavimo patikimum  siuniamo simbolio kartojim. Tai labai paprastas kodavimas: vienas simbolis keiiamas vienodu simboliu bloku. O jeigu m simboliu ilgio odius keistume n (n m) simboliu odiais? Tarkime, pradinis altinio simboliu srautas bus skaidomas i m ilgio odius, o ie odiai koduojami (keiiami) tos paios abeceles n ilgio odiais, parenkamais pagal tam tikr taisykl i aibes C = {c1 , . . . , cN }. Parinkti i aib taip, kad jos odiu struktura suteiktu galimybiu padidinti perdavimo patikimum, ir yra kodavimo esme. Parinktu odiu aib vadinsime tiesiog kodu. Abeceles A n ilgio skirtingu odiu rinkini, turinti N elementu, vadinsime (n,N) kodu. Parametr n vadinsime kodo ilgiu, N  kodo dydiu. Parink kod, turime apibreti kodavimo taisykl, t. y. injektyvu atvaizdi, kuriuo naudojantis m ilgio odiai keiiami kodo odiais. Injektyvumas reikia, kad skirtingi odiai bus koduojami skirtingai. Kad toki atvaizdi butu galima apibreti, kodo odiu turi buti ne maiau kaip visu galimu m ilgio odiu, t.y. q m N. Jeigu (n, N ) kodo elementais koduojami m ilgio pradinio srauto odiai, tai perdavimo greiio sumaejim galime apibudinti koecientu

23 apibreimas.

R=

m . n

Butu patogu kodavimo itak perdavimo snaudoms (greiiui) nusakyti paties kodo parametrais.

24 apibreimas. Tegu C yra (n, N ) kodas, sudarytas i q elementu turinios abeceles odiu. Dydi
R(C) = logq N n

vadinsime kodo C koecientu. Koks io koeciento ryys su perdavimo greiiu? Tegu altinis mums pateikia abeceles A, |A| = q, simboliu sraut. Ji mes ketiname skaidyti m ilgio odiais, pastaruosius koduoti i anksto parinkto (n, N ) kodo C odiais ir siusti juos kanalu. Koki m pasirinkti, kad perdavimo greitis butu kiek galima didesnis?

74

KODAI IR IFRAI Kad kodo odiu utektu, turi buti patenkinta nelygybe

q m N,

arba m logq N.

Taigi didiausia galima m reikme yra m = [logq N ], ia lautiniai skliaustai ymi skaiiaus sveikj dali. Pasirink j, gautume didiausi perdavimo greiti, jis butu lygus perdavimo be kodavimo greiiui, padaugintam i dydio

R=

[logq N ] m = . n n

Kodo koecientas R(C) yra beveik lygus iam greiio suletejimo koecientui; atsisak tikslios lygybes, gauname dydi, kuri patogiau naudoti ivairiuose analiziniuose reikiniuose. Taigi kanalu perduodami i abeceles A simboliu sudaryti kodo C odiai, o gavejas gauna to paties ilgio abeceles B odius. Pirmuosius ymesime c, ci , antruosius  d, dj . Paymekime odiu, kurie gali buti gauti, aib D. Apskritai galime manyti, kad D = Bn . Dabar altini galime tapatinti su atsitiktiniu vektoriumi, igyjaniu reikmes i C, gavej  su vektoriumi, igyjaniu reikmes i D. Paymesime tikimybes:

p(ci ) = P (bus siustas odis ci ), ci C; p(dj ) = P (bus gautas odis dj ), dj D; p(ci , dj ) = P (bus siustas odis ci , o gautas dj ), ci C, dj D; p(dj |ci ) = P (jei bus siustas odis ci , tai gautas dj ), ci C, dj D; p(ci |dj ) = P (jei gautas odis dj , tai buvo siustas ci ), ci C, dj D.
Primenu, kad slygines tikimybes reikiamos per beslygines taip:

p(dj |ci ) =

p(ci , dj ) , p(ci )

p(ci |dj ) =

p(ci , dj ) . p(dj )

Pastebekime, kad tikimybes p(dj |ci ) galime reikti kanalo tikimybemis: jei ci = a1 a2 . . . an , dj = b1 b2 . . . bn ; ia au A, bv B , tai

p(dj |ci ) = p(b1 |a1 )p(b2 |a2 ) . . . p(bn |an ).


Tikimybes p(ci ) priklauso nuo altinio savybiu, o p(dj ) ir p(ci |dj ) gali buti ireiktos altinio ir kanalo tikimybemis. Dabar panagrinekime, kas gi vyksta aname kanalo gale. Gavejas, priems kuri nors aibes D odi d, turi stengtis atpainti, koks kodo C odis buvo jam siustas. Taigi jis turi vadovautis tam tikra dekodavimo taisykle. Tegu C yra kodas, o D priimamu odiu aibe. Dekodavimo taisykle vadinsime funkcij

25 apibreimas.

f : D C.

4. KANALAI IR KODAI

75

Dekoduojant, suprantama, galimos klaidos. Kaip skaiiuoti ju tikimybes? Jeigu pasiunteme kodo odi c ir dekoduojame naudodami taisykl f , tai klaidos tikimybe P (klaida|c) = p(d|c).
d:df 1 (c)

Taip pat galime urayti klaidos tikimyb, jeigu priimtas odis d:

P (klaida|d) =
c=f (d)

p(c|d) = 1 p(f (d)|d).

(30)

Tada galime apibreti vidutin klaidos tikimyb:

pvid =
c

P (klaida|c)p(c) =
d

P (klaida|d)p(d).

Pasiremdami (30), gausime

pvid = 1
d

p(f (d)|d)p(d).

(31)

i vidutines klaidos iraika rodo, kaip sudaryti dekodavimo taisykl, kuri minimizuotu vidutin klaid. I tikruju tam reikia pasiekti, kad sumos reikme (31) lygybeje butu didiausia. Taip bus, jei odiui d parinksime f (d) taip, kad tikimybe p(f (d)|d) butu maksimali.

26 apibreimas. Tegu C yra kodas, o D  priimamu odiu aibe. Dekodavimo taisykl f : D C vadinsime idealaus stebetojo taisykle, jei kiekvienam d D f tenkina slyg
p(f (d)|d) = max p(c|d).
c

(32)

Pavadinim galima paaikinti itaip. Pasinaudodami slygines tikimybes apibreimu, gausime

p(c|d) =

p(d|c)p(c) p(c, d) = . p(d) p(d)

I ios iraikos matome, kad, noredami odiui d parinkti c, maksimizuojanti tikimyb p(c|d), turime inoti ne tik kanalo, bet ir altinio tikimybes, t. y. turime buti idealus stebetojai. Susumuokime atliktos analizes rezultatus.

22 teorema. Idealaus stebetojo taisykle minimizuoja vidutin klaidos tikimyb pvid . Sukeit (32) lygybeje argumentus vietomis, gausime kitos taisykles apibreim.

76

KODAI IR IFRAI

27 apibreimas. Tegu C yra kodas, o D  priimamu odiu aibe. Dekodavimo taisykl f : D C vadinsime didiausio tiketinumo taisykle, jei kiekvienam d D f tenkina slyg
p(d|f (d)) = max p(d|c).
c

(33)

Nesunku isitikinti, kad didiausio tiketinumo taisyklei sudaryti pakanka inoti tik kanalo tikimybes. Taigi dekoduodami pagal maksimalaus tiketinumo taisykl, atsivelgiame tik i perdavimo kanalo savybes. Apibrekime vidutin klaidos tikimyb kiek kitaip:

p = vid

1 N

P (klaida|c);
c

ia N yra kodo odiu skaiius. i tikimybe sutampa su pvid , kai visi kodo odiai perduodami su vienodomis tikimybemis.

23 teorema. Jei altinis perduoda visus kodo odius su vienodomis tikimybemis, tai idealaus stebetojo ir didiausio tiketinumo taisykliu apibreimai yra ekvivalentus. Irodymas. Tegu d yra informacijos gavejo priimtas odis. Pakaks irodyti, kad tas pats kodo odis c maksimizuoja tiek p(c|d), tiek p(d|c). Pasirem slygines tikimybes apibreimu ir tuo, kad p(c) = 1/N, gausime
p(c|d) = p(d|c) p(d|c)p(c) = . p(d) N p(d)

Irodymo pabaiga akivaizdi. Taigi dekodavimo taisykliu galime iekoti sprsdami tikimybiu pvid , p vid minimizavimo udavinius. Kartais patogu vietoj iu tikimybiu naudoti maksimali klaidos tikimyb

pmax = max P (klaida|c).


c

Kai altinio bei gavejo abeceles sutampa, apibreime dar vien dekodavimo taisykl. Tegu x = x1 . . . xn , y = y1 . . . yn yra du abeceles A odiai. Hammingo atstumu tarp ju vadinsime skaiiu

28 apibreimas.

h(x, y) =
i=1,...,n xi =yi

1.

Hammingo atstumas tarp dvieju to paties ilgio odiu lygus nesutampaniu komponeniu skaiiui.

4. KANALAI IR KODAI

77

29 apibreimas. Dekodavimo taisykl f : D C vadinsime minimalaus atstumo taisykle, jei kiekvienam d


h(f (d), d) = min h(c, d).
c

Taikyti minimalaus atstumo taisykl labai paprasta  tereikia tureti kodo odiu lentel ir moketi suskaiiuoti, keliomis komponentemis skiriasi du nagrinejami odiai. tikimybes yra

24 teorema.

Jeigu siuntejo ir gavejo abeceles sutampa, o kanalo

p(a|a) = 1 p,

p(b|a) = p,

a = b,

p < 0, 5,

tai maksimalaus tiketinumo ir minimalaus atstumo dekodavimo taisykliu apibreimai ekvivalentus. Irodymas. Tegu d yra gautas odis, c  bet koks kodo odis ir h = h(c, d). Tada

p(c|d) = ph (1 p)nh = (1 p)n

p 1p

Kadangi p/(1 p) < 1, tai p(c|d) igyja didiausi reikm, kai h reikme yra maiausia.

4.6. Shannono teorema dvinariam kanalui


Bent jau du io skyrelio puslapius reiktu iveikti. Juose destomas vienas svarbiausiu informacijos ir kodavimo teorijos teiginiu.

Tarkime, nusprendeme sudaryti kod C i abeceles A, |A| = q, odiu. Jei parinksime N odiu i aibes An , t. y. sudarysime (n, N ) kod C, tai informacijos perdavimo suletejim, naudojant i kod, nusakys koecientas

R(C) =

logq N . n

Siekdami spariau perduoti informacij, turetume didinti N q n . Taiau kai odiu daug, sunku sudaryti patikim dekodavimo taisykl. Juk nesunku patikimai skirti kelias pagrindines spalvas, bet lengva suklysti, kai tenka skirti imtus atspalviu! Pusiausvyr, kuri ioje padetyje galima pasiekti, apibudina teorema, kuri 1948 m. irode C. Shannonas. Jo straipsnis3 , kuri minejome jau anksiau, laikomas pirmuoju kodavimo teorijos, kaip atskiros tyrimu srities, darbu.
3

Mathematical theory of communication', 'The Bell System Technical Journal, 1948.

78

KODAI IR IFRAI

Paprastumo delei nagrinesime dvinari simetrini kanal su vieno simbolio ikraipymo tikimybe p = 0, 5. Slyga p = 0, 5 reikia, kad atsisakome nagrineti beverti kanal. I tiesu, jeigu simbolis ikreipiamas su tikimybe p = 0, 5, tada gavejui i kanalo gauta informacija bus tiek pat vertinga kiek simetrikos monetos metimu serijos rezultatu seka. Taigi C. Shannono teorema.

25 teorema. Tegu dvinario simetrinio kanalo talpa lygi C, o vieno simbolio ikraipymo tikimybe p = 0, 5. Tada bet kokiam skaiiui R, 0 < R < C, egzistuoja kodu Cm ir juos atitinkaniu dekodavimo taisykliu seka, kad R(Cm ) R, pmax (Cm ) 0, m .
Priminsime, kad kodui C apibreeme

pmax (C) = max P (klaida|c).


cC

Ivada. Tegu dvinario simetrinio kanalo talpa lygi C, o vieno simbolio ikraipymo tikimybe p = 0, 5. Tada egzistuoja kodu Cm bei juos atitinkaniu dekodavimo taisykliu seka, kad
R(Cm ) C, pmax (Cm ) 0, m .
Jei, pavyzdiui, p = 0, 1, tai kanalo talpa

C = 1 p log2

1 1 (1 p) log2 0.584. p 1p

Taigi galime sumainti odio klaidingo perdavimo tikimyb kiek tik norime, nesuletindami perdavimo netgi du kartus. Tiesiog puiki perspektyva! Taiau graus matematiniai rezultatai nebutinai tobulai isprendia praktines problemas. Viena vertus, i teoremos iplaukia, kad itin patikimas perdavimas galimas tik tuomet, kai koduojami ir siuniami dideli informacijos kiekiai (n turi buti didelis!). Nors odio klaidingo dekodavimo tikimybe ir nedidele, ivykus klaidai, butu prarastas didelis informacijos blokas. Taiau dar svarbiau, kad teoremos irodymas visikai nerodo, kaip tie geri kodai gali buti sukonstruoti. Net jei ir sukonstruotume toki kod, jo naudojimas gali pareikalauti dideliu itekliu  juk reikia atlikti kodavimo ir dekodavimo operacijas! Taigi i nuostabi Shannono teorema yra tarsi koks puikus losojos veikalas  ji nurodo perspektyv, paskatina susimstyti, taiau... Kai ikyla koks nors praktinis gyvenimo klausimas, atsakymo daniausiai iekome ne losofu ratuose, bet kokioje nors Namu ukio enciklopedijoje. Ir vis delto  gaila tu, kuriems losoja visikai neidomi! Taigi sugaikime kiek laiko ir panagrinekime Shannono teorem nuodugniau.

4. KANALAI IR KODAI

79

Pirmiausia parodysime, kad pakanka irodyti Shannono teorem pakeitus joje tikimyb pmax vidutine klaidos tikimybe p . i tikimybe kodui C vid apibreiama taip: 1 p (C) = P (klaida|c). vid |C|
cC

26 teorema. Tegu dvinario diskretaus kanalo be atminties talpa lygi C . Tada ie teiginiai yra ekvivalentus:
1. bet kokiam skaiiui R, 0 < R < C, egzistuoja kodu Cm ir juos atitinkaniu dekodavimo taisykliu seka, kad

R(Cm ) R, pmax (Cm ) 0, m ;

(34)

2. bet kokiam skaiiui R, 0 < R < C, egzistuoja kodu Cm ir juos atitinkaniu dekodavimo taisykliu seka, kad

R(Cm ) R, p (Cm ) 0, m . vid

(35)

Irodymas. Kadangi
p (C) pmax (C), vid
tai kodai, tenkinantys (34), tenkins ir (35). Tad i 1) iplaukia 2). Tegu dabar 2) teiginys teisingas. Imkime skaiius 0 < R < C, > 0, ir parinkime R , kad butu R < R < C. Kadangi 2) teiginys teisingas, tai egzistuoja (nm , Nm ) kodu seka Cm su juos atitinkaniomis dekodavimo taisyklemis, kad R(Cm ) R , p (Cm ) 0, 5 . Imkime kuri nors kod vid Cm , kurio ilgis n = nm yra toks didelis, jog R + 1/n R . Tada i slygos R(Cm ) R R + 1/n gauname

Nm = 2nR(Cm ) 2nR+1 .
Kadangi

(36)

p (Cm ) = vid

1 Nm

P (klaida|c) 0.5 ,
cCm

tai bent pusei kodo odiu turi galioti

P (klaida|c) .
Sudarykime tik i iu odiu nauj (n, Nm ) kod C m ; jo odiu skaiius Nm ne maesnis u Nm /2. I (36) gauname Nm 2nR+1 /2 = 2nR . Tada musu naujajam kodui galioja nelygybe

R(C m ) =

log2 Nm R. n

80

KODAI IR IFRAI

I (4.6.) gauname pmax (C m ) . Skaiiu galime parinkti kiek norima ma. Teorema irodyta. O dabar aptarkime Shannono teoremos irodymo idejas. Priminsime, kad altinio ir gavejo abeceles sutampa: A = B = {0, 1}, o kanalo talpa

C = C(p) = 1 + p log2 p + (1 p) log2 (1 p);


ia p yra simbolio ikraipymo tikimybe. Pakanka nagrineti atveji 0 < p < 1/2. I tikruju, jeigu kanalas yra toks, kad jis labiau links ikreipti simboli nei perduoti ji teisingai, tai gavejas prie dekoduodamas gali kiekviename priimtame odyje nulius keisti vienetais, vienetus  nuliais ir manyti, kad toks srautas gautas i kanalo, kuris ikraipo simboli su tikimybe 1 p < 1/2. Pradekime ne nuo kodu, bet nuo dekodavimo taisykliu, kurias apibreime pasinaudoj Hammingo atstumu tarp odiu x, y An . Priminsime, kad Hammingo atstumu tarp x = x1 x2 . . . xn , y = y1 y2 . . . yn vadiname dydi
n

h(x, y) =
i=1

|xi yi |.

Fiksav d ir r 1, apibrekime r spindulio rutuli B(d, r) :

B(d, r) = {x : x An , h(x, d) r}.


Skaiiui r apibreime dekodavimo taisykl fr = f, f : An C. Tegu kanalu perduodant vien kodo C odi, buvo gautas odis d. Periurekime aib B(d, r). Jeigu joje yra tik vienas kodo C odis c, juo ir dekoduokime: f (d) = c. Jei nera ne vieno ar yra bent du, dekoduokime bet kaip, pavyzdiui, pirmuoju kodo odiu: f (d) = c1 . Vidutin klaidos tikimyb, kuri gaunama naudojant kod C ir k tik apibret dekodavimo taisykl, ymesime p (C|r). vid Dekodavimo taisykles jau sugalvojome, kaipgi sudaryti paius kodus? Uuot varg iekodami gero kodo, nagrinesime visu imanomu (n, N ) kodu aib, kuri galima sutapatinti su

C(n, N ) = An . . . An .
N

ios aibes elementai  n ilgio odiu rinkiniai po N odiu  visi imanomi kodai. Mes kuriam laikui pavadiname kodais net paius netinkamiausius odiu rinkinius, pavyzdiui, sudarytus i vieno N kartu pakartoto elemento. Susitarkime, kad odis, kode pakartotas s kartu ir ieinantis i B(d, r), duoda lygiai s bendru rutulio ir kodo elementu. Tada i kanal siuniamas odis, kuris kode kartojasi bent du kartus, bus visada dekoduojamas klaidingai.

4. KANALAI IR KODAI

81

Aibeje C(n, N ) yra i viso 2nN elementu. Sudarykime aritmetini klaidos tikimybes vidurki: 1 = nN p (C|r). vid 2
CC(n,N )

Fiksuokime skaiius 0 < R < C, > 0. Irodymo esm sudaro samprotavimai, jog galima parinkti n, N ir r, kad butu , N 2nR . Jeigu aritmetinis dydiu vidurkis yra ne didesnis u , tai turi buti bent vienas dydis, ne didesnis u ! Taigi turi buti nors vienas Cn C(n, N ), kad p (C|r) . is kodas ir yra tas gerasis kodas, kurio egzistavim vid siekiama nustatyti. Gali buti, kad skaitytojui kils abejone, ar tas gerasis kodas, kurio egzistavim nustateme, i tikruju yra tikras kodas, t. y. ar visi jo odiai yra skirtingi. I tikruju, taip gali ir nebuti, taiau gautji kod galima pataisyti. Tegu odiu, kurie kartojasi parinktame kode Cn , (kartu su pasikartojimais) yra s. Kadangi siuniant kiekvien i ju su tikimybe 1 dekoduojama klaidingai, tai iu odiu inaas i tikimyb p (Cn |r) yra s/Nn . Imet visus ivid uos odius, gausime tikr kod C n , kuriam klaidos tikimybe yra maesne, o odiu skaiius Nn (1 )Nn . Taigi

R(C n ) R(Cn ) + log2 (1 )/n.


Todel kodu, kuriu egzistavim skelbia Shannono teorema, sek galima sudaryti i tikru kodu.

4.7. Tik matematikams: Shannono teoremos irodymas


Shannono teoremos irodymo logika paprasta  rinkime odius i kod atsitiktinai, skaiiuokime klaidingo dekodavimo tikimybes, ju vidurki... Vidurkis maas, vadinasi, egzistuoja bent vienas geras kodas! Taiau ivilkti iuos samprotavimus i tiksli matematin kalb nera taip paprasta.

Kodams C C(n, N ) dekoduoti taikysime anksiau apibretas dekodavimo taisykles fr : An C. Ju taikym galime nusakyti taip: gavs i kanalo odi d, gavejas turi periureti rutulyje

B(d, r) = {x : x An , h(x, d) r}
esanius odius. Jeigu rutulyje yra tik vienas odis c C, tai juo ir dekoduojama: fr (d) = c. Jeigu tokiu odiu i viso nera arba yra daugiau nei vienas  tenka susitaikyti su dekodavimo klaida; jeigu butinai reikia dekoduoti  galima parinkti bet kuri C odi.

82

KODAI IR IFRAI

Kiekgi i viso yra odiu rutulyje B(d, r)? Nesunku suvokti, kad odiu skaiius nepriklauso nuo rutulio centro d.

27 teorema.

Rutulio B(d, r) odiu skaiius

Vn (r) = |B(d, r)| =


0kr

k Cn .

(37)

Jeigu r n/2, tai ia

Vn (r) 2nH(r/n) ; H() = log2 1 1 + (1 ) log2 . 1

1 kurie skiriasi nuo centro viena komponente suskaiiuoja demuo Cn ir t. t. Taigi (37) lygybe teisinga. Paymekime = r/n; jei r < n/2, tai 1/2, /(1 ) < 1. Tada gausime

0 Irodymas. Rutuliui priklauso jo centras, ji atitinka demuo Cn ; odius,

1 = ( + 1 )n
0kr

k Cn k (1 )nk

(1 )n
0kr

k Cn

= n (1 )n(1) Vn (r).

Taigi

Vn (r) 2n( log2 +(1) log2 1 ) = 2nH() .


Teiginys irodytas. Shannono teoremai irodyti bus reikalingas dar vienas irankis  ebyovo nelygybe. Tegu X yra atsitiktinis dydis, igyjantis reikmes i realiuju skaiiu aibes, turintis vidurki E[X] ir dispersij D[X]. Tada bet kokiam skaiiui > 0 teisinga nelygybe

28 teorema.

P (|X E[X]| > ) <

D[X]
2

(38)

Be to, dar pasinaudosime iomis vidurkio ir dispersijos savybemis: 1. jei X, Y yra nepriklausomi atsitiktiniai dydiai, turintys vidurkius, tai ir ju sandauga turi vidurki: E[X Y ] = E[X] E[Y ]; 2. jei dydis X turi dispersij, o c yra skaiius, tai D[cX] = c2 D[X];

4. KANALAI IR KODAI

83

3. jei X1 , X2 , . . . , Xn yra nepriklausomi atsitiktiniai dydiai, turintys dispersijas, tai ir ju suma turi dispersij:

D[X1 + X2 + . . . + Xn ] = D[X1 ] + D[X2 ] + . . . + D[Xn ].


Dekodavimo taisykl turime, o paiu kodu  ne. Kadangi neinome, kaip sudaryti kod, tenkinanti teoremos slygas, tai kodo odius i An vien po kito rinksime atsitiktinai ir nepriklausomai. Tada i kod C galesime velgti kaip i atsitiktini vektoriu C = 1 , . . . , N , kurio komponentes i yra nepriklausomi atsitiktiniai dydiai, su vienodomis tikimybemis igyjantys reikmes i aibes An . Vidutines klaidos tikimybe p (C|r) irgi virsta atsivid tiktiniu dydiu, o jo vidurkis lygus

1 2nN
CC(n,N )

p (C|r). vid

Taigi musu tikslas  parodyti, kad, ksavus 0 < R < C, > 0, imanoma taip parinkti n, N ir r, kad butu

N 2nR ,
Tirkime dydi

= (n, N, r) = E[p (C|r)] . vid

p (C|r) = vid

1 N

P (klaida|i ).
i C

Kada gi, pasiuntus i ir dekoduojant pagal taisykl fr , ivyksta klaida? Galimi du atvejai: 1. priimtas odis d, bet i B(d, r); 2. priimtas odis d ir egzistuoja j, i = j, j B(d, r). Sakysime, kad pirmuoju atveju ivyko pirmos, antruoju  antros ruies klaida. Taigi

P (klaida|i ) P (I ruies klaida|i ) + P (II ruies klaida|i ).


Kada ivyks pirmos ruies klaida? Kai kanalas ikraipys daugiau negu r siuniamo odio i simboliu. Apibre n nepriklausomu atsitiktiniu dydiu

Xk =
gausime

1, 0,

jei k -asis i simbolis ikraipytas, jei k -asis i simbolis neikraipytas,

P (I ruies klaida|i ) = P (X1 + . . . + Xn > r).

84

KODAI IR IFRAI

Susiesime dekodavimo taisykles parametr r su kodo odiu ilgiu. Imsime r = (p + )n; ia 0 < < 0, 5 p yra skaiius, kurio parinkim patikslinsime veliau. Kadangi P (Xk = 1) = p, P (Xk = 0) = 1 p, tai E[Xk ] = p ir
n

P (I ruies klaida|i ) = P (
k=1 n

Xk > r)
n

P (|
k=1

Xk
k=1

E[Xk ]| > r np).

Pirmos ruies klaidos iveriui gauti pasinaudosime ebyovo nelygybe atsitiktiniam dydiui Y = X1 + . . . + Xn :

P (I ruies klaida|i )

D[X1 + X2 + . . . + Xn ] . (r np)2

Taiau D[Xj ] = p(1 p), o atsitiktiniai dydiai yra nepriklausomi, todel

P (I ruies klaida|i )
Taigi

np(1 p) = (n, r). 2n

(39)

p (C|r) (n, r) + vid

1 N

P (II ruies klaida|i ).


i C

(40)

Antros ruies klaida ivyksta, kai priimamas toks odis d, kad rutuliui B(d, r) priklauso dar bent vienas kodo odis, skirtingas nuo siustojo. Tad tikimyb P (II ruies klaida|i ) gausime sumuodami tikimybes p(d|i ); ia d tenkina k tik aptart slyg. i tikimyb patogu reikti panaudojus indikatorius: 1, jei B(d, r), (d, ) = 0, jei B(d, r). Dabar

P (II ruies klaida|i ) =


i B(d,r) |B(d,r)C|2 dAn

p(d|i )
dAn

p(d|i )
j=i

(d, j ).

Pasinaudoj iuo iveriu nelygybeje (40), gausime

p (C|r) (n, r) + vid

1 N

p(d|i )(d, j ).
dAn i ,j C j=i

Verta pasvarstyti, k gavome. Tikimybe p (C|r) priklauso nuo kodo C, vid kuri parenkame atsitiktinai. Taigi i tikimybe yra atsitiktinis dydis. Ji

4. KANALAI IR KODAI

85

ivertinome tam tikru reikiniu; svarbiausias io reikinio elementas  suma, kurioje yra tiek demenu, kiek yra odiu d An . Kiekvienas sumos demuo p(d|i )(d, j ) yra dvieju nepriklausomu atsitiktiniu dydiu p(d|i ) ir (d, j ) sandauga. Kadangi nepriklausomu atsitiktiniu dydiu sandaugos vidurkis lygus vidurkiu sandaugai, tai

E[p(d|i )(d, j )] = E[p(d|i )] E[(d, j )].


Dabar jau galime vertinti atsitiktinio dydio p (C|r) vidurki: vid

E[p (C|r)] (n, r) + vid

1 N

E[p(d|i )]E[(d, j )].


dAn i ,j C j=i

Prisiminkime, kad, sudarant kod, i galima suvokti kaip atsitiktinius dydius, su vienodomis tikimybemis 2n igyjanius visas reikmes i An . Taigi ksuotam d E[p(d|i )] = 2n p(d|),
An

E[(d, j )] =
B(d,r)

2n = 2n |B(d, r)|.

Elementu skaiius rutulyje B(d, r) nepriklauso nuo odio d, i skaiiu paymejome Vn (r). Taigi

E[p (C|r)] (n, r) + vid

Vn (r) 4n N

p(d|).
1i,jN d,An j=i

Kadangi

p(d|) =
d,An An dAn

p(d|) =
An

1 = 2n

ir yra N (N 1) poru i, j , j = i, tai

E[p (C|r)] (n, r) + vid

Vn (r)(N 1) . 2n

(41)

Kadangi r = (p + )n < n/2, tai, pasirem 27 teoremoje pateiktu Vn (r) iveriu, i (41) gausime

E[p (C|r)] (n, r) + 2n(H(p+)1) (N 1). vid

(42)

Fiksuokime 0 < R < C(p) ir > 0, ia C(p) = 1 H(p) yra kanalo talpa. Jeigu parinksime N = 2nR + 1, tai bet kurio (n, N ) kodo C koecientas

R(C) =

log2 N R. n

86 Kadangi N 1 < 2nR , tai (42) galime perrayti taip:

KODAI IR IFRAI

E[p (C|r)] (n, r) + 2n(1RH(p+)) . vid


Pasinaudoj C(p) ir (n, r) iraika i (39), gausime

E[p (C|r)] vid

p(1 p) + 2n(C(p)R+H(p)H(p+)) . 2n

Kadangi H() yra tolydi funkcija, tai dydi galime parinkti toki ma, kad butu C(p) R + H(p) H(p + ) > 0. Tada imant pakankamai dideli n, galios

E[p (C|r)] . vid


Pagaliau tikslas pasiektas: irodeme, kad klaidos vidurkis nevirija i anksto parinkto skaiiaus . Tai ios nuostabios, bet sudetingos teoremos irodymo pabaiga.

4.8. Kai nepaisoma saugaus greiio


Jeigu vairuotojas virijo leistin greiti, tikimybe, kad jis laimingai pasieks keliones tiksl, nera lygi nuliui. O jeigu virijame t duomenu perdavimo greiio rib, kuri nustato kanalo talpa? Nera jokiu ilygu: tikimybe, kad duomenys bus perduoti klaidingai, bus didele.

Shannono teorema tvirtina: jei nesistengsime informacijos perduoti pernelyg greitai, t. y. jei perdavimo koecientas nevirys kanalo talpos, tai galime perduoti informacij labai patikimai. Taiau ar neimanomas ir greitas, ir patikimas perdavimas? C. Shannonas atsake ir i i klausim: jeigu perdavimas yra patikimas, tai naudojamo kodo koecientas negali buti didesnis u kanalo talp. Pabandykime suvokti, kodel taip yra, nesirupindami, kad samprotavimai butu matematikos poiuriu itin tikslus. Tarkime, naudojant kod C {0, 1}n ir tam tikr dekodavimo taisykl, perdavimas yra patikimas, t. y. klaidingo dekodavimo tikimybe yra maa. Tegu p yra simbolio ikraipymo tikimybe, o N = |C| yra kodo odiu skaiius. Patikimas perdavimas reikia, kad daniausiai pasitaikaniais atvejais ivykusios klaidos yra itaisomos. Kadangi odi sudaro n bitu, tai daniausiai pasitaikantis klaidu skaiius yra k np. Taigi esant patikimam perdavimui, toks klaidu skaiius visada itaisomas. Jeigu siuniamas kodo k odis c ir jame ivyksta k klaidu, tai gavejas gali gauti bet koki odi i Cn odiu turinios aibes. Visi ios aibes odiai dekoduojami tuo paiu kodo odiu c. Taigi 2n N k. Cn

4. KANALAI IR KODAI Tada kodo koecientui teisingas ivertis

87

R=
Dydio

k log2 N log2 Cn =1 . n n

k Cn =

n! k!(n k)!

reikm vertinsime naudodamiesi Stirlingo formule x! xx ex 2x, kuri tuo tikslesne, kuo didesnis x. Kiek paskaiiav, gautume
k ln Cn = ln n! ln k! ln (n k)! (n k) ln

n n + k ln . nk k

Taiau k np, todel


k ln Cn n (1 p) ln

1 1 + p ln , 1p p

k 1 1 log2 Cn (1 p) ln + p ln n 1p p

ir R < C, ia C yra kanalo talpa. O dabar vilgtelkime, kaip atrodo tikslus teiginiai apie informacijos perdavim, kai greitis virija kanalo talp. Priminsime, kad vidutin klaidingo dekodavimo tikimyb, kai naudojamas kodas ir atitinkama dekodavimo taisykle, apibreeme taip: 1 p (C) = P (klaida|c). vid |C|
cC

29 teorema. Tegu diskretaus be atminties su dvinare altinio abecele kanalo talpa yra C , o C  koks nors (n, N ) kodas, kuriam turime sudar dekodavimo taisykl. Kiekvienam R > C egzistuoja (R) > 0, kad i R(C) > R iplaukia
p (C) > (R). vid
Taigi teorema teigia, kad nors kiek virijus saugu perdavimo greiti, atsiranda perdavimo kokybes riba, kurios nepavyks sumainti. Irodinedami Shannono teorem, mateme, kad kodu, kuriu koecientai nevirija kanalo talpos, aibeje patikimesni tie, kuriu ilgiai yra dideli. Kodams, kuriais perduodame greiiau, nei leidia kanalo talpa, yra prieingai  ilgesni kodai yra maiau patikimi. Tokia ios teoremos tvirtinimo esme.

30 teorema. Tegu diskretaus be atminties su dvinare altinio abecele kanalo talpa yra C, o Cn yra (n, N ) kodu, kuriems turime sudar dekodavimo taisykles, seka.

88 Jeigu R > C ir R(Cn ) > R, tai

KODAI IR IFRAI

p (Cn ) 1, n . vid
Pirmoji teorema kartais vadinama silpnuoju atvirktines Shannono teoremos variantu, antroji teorema  stipriuoju. Pastebekime, kad ne viena i ju neiplaukia i kitos.

5 Pastabos ir nuorodos
Studijuokite pirmuosius altinius  is patarimas nepraranda vertes. I tikruju visas svarbiausias ivalgas ir idejas apie informacijos kieki ir entropij rasite klasikiniame C. Shannono darbe [68]. Jame C. Shannonas nagrineja taip pat ir tolydaus informacijos altinio (kai abecele nera diskreti) entropijos svok ir savybes. i klasikini tekst paiekoj tikrai surasite Interneto elektroniniu tekstu saugyklose. Informacijos kiekio svokai skirtus skyrius rasite kone kiekvienoje knygoje, nagrinejanioje informacijos kodavim, pavyzdiui, [4], [34]. R. M. Gray knyga [34] tinkama norintiems isigilinti i sudetingesnius tikimybinius informacijos altiniu modelius, joje daug vietos skirta Markovo, stacionariesiems, ergodiniams altiniams. altinio perduotos informacijos kieki siejome su netiketumu, neapibretumu. Informacijos kiekio mat, nagrinejam pirmajame skyrelyje, pradejo naudoti Hartley [41]. altinio entropija  Shannono apibreta svoka. Tai informacijos teorijos klasika. Tolesnei iu temu raidai skirta G. Kliro knyga Neapibretumas ir informacija [43]. Jeigu susidomejote informacijos teorija  butinai pastudijuokite D. MacKay knyg [51]! Tuo labiau, kad i autoriaus svetaines galite atsisiusti jos skaitmenin kopij. Teorija ioje knygoje destoma tikrai idomiai, pateikiama daug pavyzdiu ir interpretaciju. Rasite ir humoro  jo niekada nebus per daug matematikos ir informatikos knygose. Ir dar vien knyg tikrai butina pamineti [17]. Joje klasikine informacijos teorija ir taikymai destomi isamiai, matematikai grietai, kartu iliustruojant paprastais ir idomiais pavyzdiais. Entropijos svoka svarbi ne vien tik informacijos teorijoje; ivairiems ios svokos taikymams skirtas elektroninis urnalas Entropija [24]. Teorem apie altinio kodavim irode C. Shannonas, ji idestyta jo darbe [68]. D. Humanas savo algoritm ideste vos triju puslapiu straipsnyje [39]. Darbu, kurie veliau parayti ji tyrinejant, gaus sunku ir apvelgti. Viena svarbiausiu io metodo tobulinimo ideju  adaptyvumas, t. y. kodo pritaikymas koduojamo srauto strukturai. Adaptyviu Humano kodu metod ideste N. Falleris, R. Gallagheris ir D. Knuthas ([27], [28], [44]). Aritmetiniu kodu idejos autorius  P. Eliasas, pirm kart iu kodu konstrukcija idestyta N. Abramsono knygoje [1].

5. PASTABOS IR NUORODOS

89

Kodavimo su odynu metod sukure J. Zivas ir A. Lempelis, pirmoji ju publikacija [80] pasirode 1977 m. Burrowso-Wheelerio metodas paskelbtas 1994 [13]. ioje knygoje apvelgtos tik bendros altinio duomenu srautu efektyvaus kodavimo (spaudimo) idejos. Praktikoje visada atsivelgiama i koduojamo srauto savybes. Vieni metodai naudojami spaudiant tekstinius duomenis, kiti  grakos, audio- ir videofailus. Taigi duomenu spaudimo teorija  labai plati sritis. Norint isigilinti i bendru kodavimo ideju praktinio taikymo ypatybes, teks pastudijuoti iai teorijai skirtas knygas. Viena isamiausiu  D. Salomono knyga [67], tai tikras duomenu spaudimo algoritmu svadas. Visi svarbiausi metodai ir praktinio ju taikymo detales destomos ir [37]. Internete galima rasti duomenu spaudimo teorijai skirtu tinklalapiu, pavyzdiui, [23]. Pagrindines io skyriaus teoremos paskelbtos jau minetame Shannono darbe [68]. C. Shannono darbu reikme moderniuju ryiu teorijai tolygi Niutono darbu reikmei mechanikai. Apie Shannono ideju vaidmeni r. R. Gallagherio apvalginiame straipsnyje [29], taip pat  informacijos teorijos ir kodavimo teorijos penkiasdeimtmeiui skirtose apvalgose [78], [14]. Ivairius Shannono teoremu variantus galime rasti kone kiekvienoje isamesniam informacijos teorijos destymui skirtoje knygoje, pavyzdiui, [50], [65], [17].

90

KODAI IR IFRAI

Kodavimo teorija

6 Hammingo geometrija
6.1. Sekme aplanko pasiruousius
i L. Pastero posaki mego Richardas Hammingas (1915  1998), matematikas, kurio idejos padare didel itak moderniuju telekomunikaciju raidai. Jis parae devynias matematikos bei informatikos knygas, padare daug atradimu, taiau tikriausiai labiausiai inomas i ju visu  Hammingo kodas.

Net trisdeimt metu (19461976) R. Hammingas dirbo iymiajame moksliniu tyrimu ir ju rezultatu taikymo ryiu praktikoje centre  Bello laboratorijoje.4 ioje laboratorijoje dirbo ir C. Shannonas. Jau inome, kad jis matematikai irode, kad net ir nepatikimais kanalais imanomas patikimas ryys. Taiau recepto, kaip to pasiekti, nedave. O R. Hammingui pavyko surasti labai praktik sprendim. Jis pasiule kodo, taisanio vien klaid, konstrukcij ir itaip padejo kertini iuolaikines algebrines kodavimo teorijos akmeni. Savo straipsnyje Error Detecting and Error Correcting Codes, ispausdintame The Bell System Technical Journal 1950 metu antrajame numeryje jis rao:
Imtis iame straipsnyje destomu udaviniu autoriu paskatino ilgalaikis skaiiavimo mainu, kurios privalo atlikti daugyb operaciju ir nepadaryti nei vienos klaidos, darbo stebejimas.

O tikrove buvo tokia: skaiiavimo mainos galejo skaityti duomenis tik i perforaciniu juostu, kurias pateikdavo operatorius; del vienintelio neteisingai perskaityto ar perforuoto simbolio skaiiavimo maina tiesiog atmesdavo program... Atejs pirmadieni i darb, Hammingas, matyt, neretai vietoj norimu rezultatu gaudavo tik praneim apie ivedimo klaidas. Kodel maina, sugebanti aptikti klaidas, negaletu ju ir isitaisyti? R. Hammingas danai pabredavo, kad atradimus padaro tik tie, kurie turi tam drsos.
A. G. Bellas (1847-1922)  telefono iradejas. Mr. Watson. Come here! I want you`  ie A. G. Bello odiai asistentui  pirmieji odiai monijos istorijoje, perduoti telefonu. Jo vardu pavadintos laboratorijos isteigtos 1925 metais. Ilg laik ios laboratorijos buvo pirmaujantis ryio technikos moksliniu tyrimu centras. Net ei io centro darbuotojai tapo Nobelio premijos laureatais.
4

6. HAMMINGO GEOMETRIJA

91

Kiekvien ketvert perduodamu bitu jis papilde trimis papildomais. Veliau R. J. McEliece pastebejo, kad Hammingo idej paprasta paaikinti naudojantis Veno diagramomis. Pasinaudokime iomis diagramomis ir mes. Tarkime, kanalu reikia perduoti keturis dvejetainius simbolius (bitus). 7 3 6 4 1 2 5

odis, sudarytas i bitu 1 4, papildomas dar trimis taip, kad bitu, kuriu numeriai urayti tame paiame skritulyje, suma butu lygine.

Srityse 1, 2, 3, 4 uraykime keturis bitus (simbolius 0 arba 1), kuriuos reikia perduoti. Likusiose srityse uraykime simbolius taip, kad, sumuodami bitus, kuriu numeriai urayti tame paiame skritulyje, gautume lygini skaiiu. Dabar pasiuskime i kanal i septyniu bitu rinkini. Kitame kanalo gale gavej pasieks galbut kitas rinkinys, kai kurie simboliai gali buti ikreipti. Gavejas gali patikrinti, ar sumos pagal visus tris skritulius yra lygines. Jeigu nors viena nelygine, tai ivyko ikraipymu. Nesunku isitikinti, kad jeigu ikreiptas tik vienas simbolis, tai gavejas gali atkurti ji nesuklysdamas. Jeigu ikraipymu daugiau, atkurdami simbolius, galime ir suklysti. Tegu perdavimo kanalas yra dvejetainis ir simetrinis, o simbolio ikraipymo tikimybe lygi p. Palyginkime tikimybes, kad keturi simboliai bus perduoti teisingai, kai informacijos nekoduojame ir kai j koduojame Hammingo kodu. Tarkime, kanalas kiekvien simboli ikreipia su tikimybe p (0 < p < 1), be to, visi simboliai ikraipomi nepriklausomai. Tada tikimybes, kad keturi simboliai bus perduoti teisingai, kai informacija nekoduojama ir koduojama Hammingo kodu lygios:

P0 = q 4
Kadangi

ir

P1 = q 7 + 7q 6 p,

q = 1 p.

P1 = q 2 (1 + 6p) = 1 + p(6p2 11p + 4), P0

tai P1 > P0 , kai 6p2 11p+4 > 0. Nesunku isitikinti, kad i nelygybe teisinga, kai 0 < p < 2/3. O jeigu tiems keturiems simboliams perduoti naudotume pakartojimo kod, pavyzdiui, perduodam simboli pakartotume tris kartus? Tada vietoj keturiu simboliu tektu siusti dvylika  Hammingo kodas yra greitesnis. Tikimybe, kad, naudojant kartojimo kod, visi keturi simboliai bus perduoti teisingai, lygi P2 = (q 3 + 3pq 2 )4 .

92

KODAI IR IFRAI

T  .. 1 ................. ... . .. ... ........... ... ......... ... ......... 0.8  .... ........... .... ... ... .... ......... .... .... .... .... .... ....  0.6 .... .... ... ..... ... .... ..... ........ ..... ........ 0.4  ..... .......... ..... .......... ...... ........ . ...... ......... ....... ......... ... . 0.2  ................ . ............ . P0 < P1 < P2 ......................... p | | | | |E 0.1 0.2 0.3 0.4 0.5

Breinyje pavaizduoti tikimybiu P0 , P1 ir P2 grakai. I breinio matyti, P0 < P1 < P2 . Tris kartus kartojant simboli, keturi bitai perduodami teisingai su didesne tikimybe nei koduojant Hammingo kodu. Taiau perdavimo snaudos iauga trigubai!

Koduojant Hammingo kodu, keturi perduodamos informacijos bitai papildomi dar trimis, kuriu paskirtis  suteikti galimyb itaisyti vieno simbolio perdavimo klaid. Jeigu butu neteisingai perduoti, pavyzdiui, du simboliai, gavejas pastebetu, jog ivyko klaida, ir bandytu pagal nurodyt bud itaisyti t klaid. Taiau manydamas, kad j taiso, i tikruju neitaisytu! Hammingas pastebejo, kad i kod galima iek tiek pagerinti. Jeigu prie septyniu kodo odiu bitu pridesime dar vien  atuntji taip, kad visu simboliu suma butu lygine, tai galesime atpainti, kada ivyko viena klaida, o kada  dvi. Pirmuoju atveju klaid galima itaisyti, o antruoju inosime, kad taisyti neverta, t. y. bent jau neapgaudinesime savs. Panagrinekime pavyzdi. Tarkime, reikia pasiusti odi x = 1111; naudodamiesi Hammingo kodu, papildytume ji trimis simboliais ir perduotume c = 1111111. Jeigu butu ikreipti pirmieji du bitai, tai gavejas taisytu odi taip: 0011111 0001111, taigi iveltu dar vien klaid. Jeigu naudotume pailgint Hammingo kod, tai i kanal siustume 11111111. Gavejas gautu 00111111 ir, nustats, kad simboliu suma odyje lygine, padarytu ivad: arba ikraipymu nebuvo, arba ju skaiius buvo lyginis. Taiau, naudodamiesi tais paiais skrituliais, galime isitikinti, kad klaidu buta. Tektu pripainti, kad jos neitaisomos. R. Hammingo kodas  labai paprasta, praktika ir efektyvi konstrukcija. Taiau su ja mes beveik nepriartejame prie tos patikimo ryio galimybes, kurias mums ada Shannono teorema. Kodavimo teorijos tikslas  kurti naujus patogius naudoti kodus, kurie vis geriau realizuotu Shannono paad. Jis atrodo kone kaip nepasiekiamas horizontas. Nors... Visai neseniai sugalvoti nauji kodai, beveik pasiekiantys Shannono rib... Bet kol kas mums dar toli iki ju.

6. HAMMINGO GEOMETRIJA

93

6.2. Hammingo atstumas ir kodai


Jeigu yra budas skaiiuoti atstum, yra ir geometrija. iame skyrelyje geometrijos terminais nusakomos kodu savybes.

Prisiminkime ymejimus: Aq ymi abecel, turini q simboliu, |A| = q. Kol kas mums nesvarbu nei kaip uraomi tie simboliai, nei kokie vidiniai ryiai sieja tuos simbolius. Abecele  aibe ir tiek. Pati svarbiausia  dvinare abecele A2 . Apibretumo delei tarkime, kad ios abeceles simboliai  nulis ir vienas, t. y. A2 = {0, 1}. Nagrinesime Aq abeceles n simboliu ilgio odiu aib

An = Aq Aq . . . Aq . q
Apibre atstum tarp dvieju ios aibes odiu sukursime joje tam tikr geometrij. Tegu x = x1 . . . xn , y = y1 . . . yn yra du aibes An q odiai. Hammingo atstumu tarp x, y vadinsime dydi

30 apibreimas.

h(x, y) =
i=1,...,n xi =yi

1.

Hammingo atstumas turi visas pagrindines atstumo savybes, kitaip tariant  Hammingo atstumas yra metrika.

31 teorema. Hamingo atstumas aibeje An turi ias savybes: q


h(x, x) = 0, x An ; q x, y An ; q x, y, z An . q h(x, y) = h(y, x),

h(x, y) h(x, z) + h(y, z),

Dar kart prisiminkime kodo apibreim.

31 apibreimas. (n, N ) kodu i abeceles Aq odiu vadinamas bet koks poaibis C An , ia |C| = N. q Kodavimo taisykle turi nusakyti, kaip koduojamos informacijos odiui priskirti naudojamo kodo odi. Dekodavim apskritai sudaro du ingsniai: pirmiausia pagal gaut (galbut ikraipyt) odi reikia nustatyti, koks kodo odis buvo siustas, paskui pagal kodo odi atkurti pradini i odi atitinkanti simboliu rinkini. Kol kas mums rupes tik pirmasis ingsnis, t. y. dekodavimo taisykle f : An C. q
Dekodavimo taisykl f : An C vadinsime q minimalaus atstumo taisykle, jei su kiekvienu d An q

32 apibreimas.

h(d, f (d)) = min h(d, c).


cC

(43)

94

KODAI IR IFRAI

Taigi minimalaus atstumo dekodavimo taisykle remiasi labai paprasta ideja  jeigu gautas ne kodo odis, tai manoma, kad buvo siustas ariausiai gautojo esantis kodo odis. Jeigu kuriam nors d minimumas (43) lygybeje pasiekiamas, kai c = c1 ir c = c2 , c1 = c2 , tai minimalaus atstumo taisykle apibreiama nevienareikmikai. Jei minimumas pasiekiamas su dviem ar daugiau skirtingu odiu, toki atveji vadinsime ryiu. Ryio atveju galime tiesiog ksuoti klaid (soft decision) arba dekoduoti vienu i galimu budu (hard decision), pavyzdiui, vien i ariausiu odiu pasirink atsitiktinai. Kuo atokiau vienas nuo kito yra isidest odiu aibeje kodo odiai, tuo patikimesne yra minimalaus atstumo dekodavimo taisykle. Kodo odiu isidestymui nusakyti vartosime minimalaus kodo atstumo svok.

33 apibreimas.

Kodo C minimaliu atstumu vadinsime dydi

d(C) = min h(d, c).


c,dC c=d

Jei (n, N ) kodo C minimalus atstumas yra d, tai kod vadinsime (n, N, d) kodu. is minimalaus kodo atstumo apibreimas netinka tuo atveju, kai kod sudaro vienas odis. Apibretumo delei tarkime, kad tokiu atveju d = n + 1. Kaip gavejas gali nustatyti, kad, perduodant kodo odi, ivyko klaidos? Kadangi jis ino, kokie odiai galejo buti siuniami, bet kuris i kanalo gautas, bet kodui nepriklausantis odis yra kartu signalas apie ivykusius ikraipymus.

34 apibreimas. Kod C vadinsime t klaidu randaniu kodu, jei, bet kuriame kodo odyje ivykus m, m t, ikraipymu, gautas rezultatas d jau nebera kodo odis, t. y. d C. t klaidu randanti kod vadinsime tiksliai t klaidu randaniu kodu, jei jis nera t + 1 klaidu randantis kodas. 32 teorema. (n, N, d) kodas C yra tiksliai t klaidu randantis kodas tada ir tik tada, kai d = t + 1. Isitikinti, kad is teiginys teisingas  paprasta. I tiesu, jeigu bet kokiame kodo odyje x C pakeisime d1 simboli, naujasis odis nepriklausys kodui. Vadinasi, kodas aptinka d 1 klaid. Kita vertus, egzistuoja du odiai x, y C, kad h(x, y) = d. Taigi odyje x galime pakeisti lygiai d simboliu taip, kad gautume odi y. Jeigu tai atliks perdavimo kanalas, klaida liks nepastebeta. Taigi kodas jau nebe visada suranda d ivykusiu klaidu. Analogikai apibreime klaidas taisanius kodus. Patys kodai, aiku, nei randa klaidas, nei jas taiso. Klaidas taisome mes, naudodamiesi minimalaus atstumo dekodavimo taisykle. 35 apibreimas. Kod C vadinsime t klaidu taisaniu kodu, jei, siuniamame odyje ivykus m, m t, ikraipymu ir dekoduojant pagal minimalaus atstumo taisykl, visada bus dekoduojama teisingai. Toki kod

6. HAMMINGO GEOMETRIJA

95

vadinsime tiksliai t klaidu taisaniu kodu, jeigu jis ne visada taiso t + 1 klaidu. Kiek klaidu taiso kodas C, lemia minimalus jo atstumas.

33 teorema. Kodas C yra tiksliai t klaidu taisantis kodas tada ir tik tada, kai d(C) = 2t + 1 arba d(C) = 2t + 2. Irodymas. Tegu d(C) = 2t + 1, c yra siustas odis, d  gautas, be to, h(c, d) t. Jeigu butu kitas kodo odis c , kad h(c , d) t, tuomet, panaudoj trikampio nelygyb, gautume
h(c, c ) h(c, d) + h(c , d) 2t.
Taiau itaip negali buti, nes

h(c, c ) d = 2t + 1.
Taigi kodas, kurio minimalus atstumas d(C) = 2t+1, taiso t klaidu. Nesunku isitikinti, kad t + 1- klaidu jis itaiso ne visuomet. Jei d(C) = 2t + 2, tai toks kodas irgi taiso t klaidu. Yra du kodo odiai, kuriems h(c, c ) = 2(t + 1). Jeigu odyje c pus tu simboliu, kuriais jis skiriasi nuo c , pakeisime prilygindami juos atitinkamiems c simboliams, gausime nauj odi d, kad

h(c, d) = h(d, c ) = t + 1.
Jeigu toki pakeitim atliks kanalas, gavejas tures dvi lygiavertes dekodavimo galimybes, t. y. nebutinai dekoduos teisingai. Taigi kodas su minimaliu atstumu d(C) = 2t + 2 taiso tiksliai t klaidu. Tarkime dabar, kad kodas C taiso tiksliai t klaidu. Jeigu butu d(C) 2t, tai, ivykus t klaidu, jos ne visada butu itaisomos. Taigi d(C) > 2t. Jeigu butu d(C) = 2(t+1)+1 = 2t+3, tai, pasirem pirmos dalies samprotavimais, gautume, kad kodas taiso t + 1 klaidu. Taigi lieka atvejai d(C) = 2t + 1 arba d(C) = 2t + 2. Ivada. Bet koks (n, N, d) kodas taiso tiksliai

d1 2
klaidu.

Pavyzdys. Prisiminkime Hammingo kod i dvinares abeceles odiu, kuri apibreeme pasinaudoj diagramomis. Jo odiu ilgis n = 7, odiu skaiius N = 16. is kodas visada itaiso vien klaid, taigi d 3. Taiau nesunku surasti du kodo odius, pavyzdiui, x = 1000110 ir y = 0100101, kad h(x, y) = 3. Taigi Hammingo kodo parametrai yra (7, 16, 3).

96

KODAI IR IFRAI

6.3. Tobulieji kodai


Tobulumas  nebutinai praktika savybe. Tobulieji kodai taip pat nera patys geriausi klaidu taisymo poiuriu. Tiesiog ju odiai itin taisyklingai isidest odiu aibeje.

Jeigu jau yra atstumas, geometrija, turi buti ir rutuliai... Dvinares abeceles odiu aibes rutuliais jau naudojomes nagrinedami Shannono teorem apie kodus.

36 apibreimas.
An q

vadinsime aib

odiu aibes An spindulio r 1 rutuliu su centru q

Bq (x, r) = {y An : h(x, y) r}. q


ios aibes elementu skaiiu vadinsime rutulio turiu.

34 teorema. Teisinga lygybe


|Bq (x, r)| =
0kr k Cn (q 1)k .

Irodymas. Rutuliui su centru x ir spinduliu r priklauso tie odiai, kurie skiriasi nuo x ne daugiau kaip r komponentemis. Visus odius, kurie skiriasi nuo x lygiai k komponentemis, galime gauti taip: parenkame k indeksu ir pakeiiame odio x komponentes su iais indeksais kitomis. Tai galime k padaryti Cn (q 1)k skirtingais budais. Susumav iuos dydius, gauname rutulio turio formul. Kadangi rutulio turis nepriklauso nuo jo centro, ymesime
Vq (n, r) = |Bq (x, r)|.

sveikji skaiiu t, kuriam

37 apibreimas.

Tegu C yra koks nors (n, N ) kodas. Didiausi

Bq (c1 , t) Bq (c2 , t) = , jei c1 , c2 C, c1 = c2 ,


vadinsime kodo C pakavimo spinduliu. Ji ymesime rp = rp (C). Taigi rutuliai Bq (c, t), c C, t rp (C), sudaro nesikertaniu aibiu eim; jei t rp (C) + 1, bent du rutuliai kertasi.

38 apibreimas.

Maiausi sveikji skaiiu s, tenkinanti slyg

An q
cC

Bq (c, s),

vadinsime kodo dengimo spinduliu ir ymesime rd = rd (C). Akivaizdu, kad teisinga nelygybe rp (C) rd (C). Pakavimo spindulio reikm lemia tie kodo odiai x, y C, kuriems atstumas h(x, y) yra minimalus, t. y. h(x, y) = d(C). Nesunku isitikinti, kad

6. HAMMINGO GEOMETRIJA

97

rp (C) =

d1 ; 2

ia [] ymime sveikj skaiiaus dali. Tad pakavimo spindulys lygus maksimaliam klaidu, kurias gali itaisyti kodas, skaiiui. Skirtumas rd (C) rp (C) gali buti didelis. I tikruju, kodas, turintis nedaug odiu, kurie yra arti vienas kito, tures ma pakavimo ir dideli dengimo spinduli. Tegu, pavyzdiui, C = Bq (c0 , r) An , ia r 1 yra sveikas skaiius. q Tokio kodo odiams ankta: rp (C) = 0; jeigu i kod itrauktume tik dali (du ar daugiau) rutulio odiu, t. y. imtume C Bq (c0 , r), tai butu rp (C) r. Ivertinkime dengimo spinduli. Imkime koki nors odi x An , q kad h(x, c0 ) = n. Jeigu c yra kitas kodo odis, tai, panaudoj trikampio taisykl, gauname h(x, c0 ) h(x, c) + h(c, c0 ), arba

h(x, c) h(x, c0 ) h(c, c0 ) n r,


t. y. rd (C) n r. Paprastas pavyzdys: (n, 2) kodui

C = {000 . . . 00, 000 . . . 11}


gauname: rp = 0, rd = n 1.

39 apibreimas.

Kod C vadinsime tobulu, jei

rp (C) = rd (C).

35 teorema. (n, N, d) kodas C yra tobulas tada ir tik tada, kai d = 2t + 1 ir galioja lygybe
N Vq (n, t) = q n .

Irodymas. Tobulo (n, N, d) kodo C minimalus atstumas negali buti lyginis; taigi turi buti d(C) = 2t + 1, rp (C) = t. Rutuliai B(c, t), c C, nesikerta bet kokio kodo atveju. Kodas yra tobulas tada ir tik tada, kai
B(c, t) = An , q
cC

Taiau is sryis ekvivalentus lygybei

|B(c, t)| = |An | arba N Vq (n, t) = q n . q


cC

98

KODAI IR IFRAI

inome, kad Hammingo kodo parametrai yra tokie: (n, N, d) = (7, 16, 3). Pakavimo spindulys rp = 1, rutulio turis V2 (7, 1) = 8,

N V2 (n, t) = 16 8 = 27 = 2n .
Taigi Hammingo kodas yra tobulas! Kita vertus, jeigu naturaliesiems skaiiams q, n, N, t teisinga lygybe

N Vq (n, t) = q n ,
tai nereikia, kad kodas su parametrais (n, N, 2t + 1) egzistuoja. I tikruju tobuluju kodu yra nedaug. Panagrinekime atveji, kai abeceles simboliu skaiius q yra pirminio skaiiaus laipsnis. iuo atveju inomi visi egzistuojaniu tobulu kodu parametru (n, N, d) rinkiniai. Visu pirma  trivialus tobulieji kodai:

kodas, sudarytas i vieno aibes An odio, yra tobulas (pakavimo ir q dengimo spinduliai yra vienodi); kodas sudarytas i visu aibes An odiu; q dvejetainis pakartojimo kodas su nelyginio ilgio odiais: 00 . . . 0, 11 . . . 1.
Taiau yra ir netrivialiu:

Dvejetainis kodas (q = 2) su parametrais (23, 212 , 7) butu tobulas. Tokie kodai tikrai egzistuoja. Vienas ju  dvejetainis Golay kodas; ji nagrinesime veliau. Trejetainis kodas (q = 3) su parametrais (11, 36 , 5) irgi butu tobulas. iuos parametrus turi, pavyzdiui, trejetainis Golay kodas. Kodas su parametrais qm 1 qm 1 , m, 3 , q1 q1 m 2,

butu tobulas. Tokie kodai tikrai egzistuoja  tai Hammingo kodu eima. Vien ios eimos atstovu jau sutikome  dvejetaini Hammingo kod (q = 2, m = 3).

6.4. Bendrieji kodu konstravimo udaviniai


Buti maksimalistu  teisinga pozicija. Siekdamas daugiau, daugiau ir pasieksi. O ko reiktu siekti konstruojant klaidas taisanti kod? Kad butu paprasta juo naudotis: koduoti ir dekoduoti, kad informacijos perdavimas suletetu kiek galima maiau, kad galetume itaisyti daugiau klaidu. Visu noru nesuderinsi. Todel iame skyrelyje panagrinesime tik toki udavini: kokio dydio galima sudaryti kod, jeigu i anksto nurodyta, kiek klaidu jis turi taisyti?

6. HAMMINGO GEOMETRIJA

99

Tarkime, i abeceles A = Aq n ilgio odiu norime sudaryti kod, kuris taisytu t klaidu. Kadangi kodo taisomu klaidu skaiius yra glaudiai susijs su minimaliu kodo atstumu, tarsime, kad ir is parametras apibretas. Taigi noretume, kad minimalus kodo atstumas butu d. Naturalu iekoti paties geriausio (n, N, d) kodo; ia n ir d reikmes i anksto pasirinktos. Geriausias (n, N, d) kodas bus tas, kuris tures daugiausia odiu, t. y. didiausi parametr N . inoma, epitetas geriausias yra slyginis. is kodas gali buti visai netiks naudojimosi juo paprastumo poiuriu. ymekime:

Aq (n, d) = max{N : egzistuoja (n, N, d) kodas C An }. q


Kodus su parametrais (n, Aq (n, d), d) vadinsime maksimaliais. Jie turi toki savyb: ne vieno n ilgio odio negalima prideti prie tokio kodo, nesumainant minimalaus kodo atstumo. Kiek odiu turi maksimalus kodas? Kitaip tariant, jei dydiu q, n, d reikmes ksuotos, kam lygi dydio Aq (n, d) reikme? Kaip danai buna, udavini lengva isprsti su ribinemis parametru reikmemis. 36 teorema. Bet kokiems q 1, n 1,

Aq (n, 1) = q n ,

Aq (n, n) = q.

Palyginkime n 1 ir n ilgio odiu maksimaliu kodu dydius.

37 teorema. Bet kokiems q 1, n 1, d 1 teisingos nelygybes


Aq (n 1, d) Aq (n, d) qAq (n 1, d).

C i q nesikertaniu klasiu

Irodymas. Nelygybe Aq (n 1, d) Aq (n, d), inoma, akivaizdi. Tegu M = Aq (n, d), o C koks nors (n, M, d) kodas. Suskaidykime kod
Ca = {c : c C, c = aa2 . . . an }, a Aq .

Suprantama, jog egzistuoja nors vienas a, kad |Ca | M/q. I ios klases sutrumpintu odiu sudarykime nauj kod

C = {c : c An1 , ac Ca }. q
Kadangi bet kokiems c , c C Hammingo atstumas

h(c , c ) = h(ac , ac ) d,
tai C yra (n 1, |C |, d ) kodas, d d. Tada

Aq (n 1, d) |C |

M . q

100

KODAI IR IFRAI

Teorema irodyta. Derindami abieju teiginiu nelygybes, galime gauti dydiu Aq (n, d) iverius, kad ir nelabai tikslius. Pavyzdiui:

Aq (d, d) = q,

Aq (d + 1, d) qAq (d, d) = q 2 ,

Aq (d + 2, d) q 3 , . . . , Aq (n, d) q nd+1 (n d).


Taigi irodeme toki teigini:

38 teorema. Bet kokiems n 1, q > 1, n d 1, teisingas ivertis


Aq (n, d) q nd+1 .
is ivertis kodavimo teorijoje vadinamas Singletono iveriu. Ji galime gauti samprotaudami ir kitaip. Tegu C yra (n, N, d) kodas. Nubraukdami io kodo odiu paskutinius d 1 simboliu (n d ), gausime skirtingus n d + 1 ilgio odius; tokiu odiu yra ne daugiau kaip q nd+1 . Taigi N q nd+1 . Imdami N = Aq (n, d), gauname Singletono iverti. Ivertinkime maksimalaus kodo dydi i viraus ir apaios.

39 teorema. Bet kokiems n 1, q > 1, n d 1, teisingas ivertis


t 1 k Cn (q k=0

Aq (n, d) q

1)

t=

d1 . 2

Irodymas. Jei rp yra (n, N, d) kodo C pakavimo spindulys, tai rutuliai Bq (c, rp ), c C, nesikerta. Tada
Bq (c, rp ) An , q
cC cC

Bq (c, rp ) =
cC

|Bq (c, rp )| |An | = q n . q

Kadangi rp = [(d 1)/2], tai, istat rutulio turio iraik i jau irodytos teoremos, gauname
t

N
k=0

k Cn (q 1)k q n .

Teorema irodyta. Irodytus iverius vadinsime Hammingo iveriais.

40 teorema. Bet kokiam n 1, q > 1, d 1,


d1 1 k Cn (q k=0

Aq (n, d) q

1)

(44)

i nelygybe vadinama Gilberto-Varamovo iveriu. Irodymas. Tegu (n, N, d) kodas C yra maksimalus, t. y. N = Aq (n, d). Tada io kodo negalima papildyti nei vienu odiu, nesumainant minimalaus

6. HAMMINGO GEOMETRIJA

101

atstumo d. Todel kiekvienam x An egzistuoja c C, kad h(c, x) d 1. q Taigi rutuliai Bq (c, d 1) padengia vis aib An : q

Bq (c, d 1) An . q
cC

I io sryio gauname

N Vq (n, d 1) = Aq (n, d)Vq (n, d 1) q n .


Pasinaudoj rutulio turio iraika, gauname (44) nelygyb. Irodeme tokius iverius:

qn qn Aq (n, d) . Vq (n, d 1 Vq (n, t


Jie gauti samprotaujant labai paprastai. Neverta tiketis, kad jie bus labai tikslus. Lenteleje pateiktos iveriu reikmes, kai q = 2, d = 3.

n= 2n = 2n /V2 (n, 2) + 1 = 2n /V2 (n, 1) = 2n2 =

3 8 2 2 2

4 16 2 3 4

5 32 3 5 8

6 64 3 9 16

7 128 5 16 32

8 256 7 28 64

9 512 12 51 128

10 1024 19 93 256

11 2048 31 170 512

12 4096 52 315 1024

Lenteleje pateiktos dydio A2 (n, 3) iveriu i apaios ir viraus reikmes. Paskutineje eiluteje irayti Singletono iveriai. Matome, kad jie yra itin netikslus. Taiau Singletono iveriai praveria, kai d reikmes yra dideles.

Panagrinekime kodo sudarymo udavini iek tiek kitaip. Tarkime, abeceles Aq simboliu sraut ketiname skaidyti k ilgio odiais, o pastaruosius keisti (t. y. koduoti) kodo C An , n > k, odiais. Tada galime isivaizduoti, q kad n ilgio kodo odis nea k informacijos simboliu, o r = n k papildomu odio simboliu yra skirti klaidoms taisyti. Kiek tu papildomu simboliu reikia prideti, kad galetume itaisyti t klaidu? Jeigu naudosime kod su parametrais (n, N, d), d = 2t + 1, tai norim klaidu kieki tikrai itaisysime. Tarkime, pasirinkome maksimalu kod, t. y. N = Aq (n, d). Kodo odiu turi utekti visiems k ilgio blokams koduoti, t. y. turi buti q k Aq (n, d); pasinaudoj Singletono iveriu, gautume

q k Aq (n, d) q nd+1 ,

k n d + 1,

r = n k 2t.

102

KODAI IR IFRAI

Taigi Singletono ivertis garantuoja, kad norim kod galime sukonstruoti pridej prie k informaciniu simboliu 2t papildomu simboliu. Tada perdavimo k suletejimo koecientui n galime urayti toki iverti:

k 2t 1 . n n
Tarkime, kanalas ikreipia simboli su tikimybe p, p < 1 . Perduodant n 2 ilgio kodo odi, jame vidutinikai ivyksta np klaidu. Jeigu noretume, kad kodas itaisytu tipini klaidu skaiiu t = [np], turetume prideti madaug 2np papildomu, klaidoms taisyti skirtu simboliu, o perdavimas suletetu ne daugiau kaip dydiu 2 2[np] < 1 2p + . 1 n n

6.5. Ekvivalentus kodai


Perdaytas dviratis rieda taip pat kaip anksiau, perdejus pinigus i kit kien, turtas nepadideja. Kokios operacijos nepakeiia klaidas taisaniu kodu savybiu?

Yra dvi tokiu operaciju ruys. Panagrinekime paprast abeceles A3 = {0, 1, 2} odiu kod C = {0000, 1011, 2220}. Jis taiso vien klaid. Tokie kodai C1 = {0000, 1110, 2022}, C2 = {0000, 0111, 2202} irgi taiso vien klaid. Abu jie gauti i pirmojo, kiekvieno odio simboliams pritaikius t pai perstat. O dabar pakeiskime kodo C odiu pirmuosius simbolius: 0 2, 1 0, 2 1. Gausime kod

C3 = {2000, 0011, 1220}.


Visi keturi kodai skirtingi, bet ju klaidu taisymo savybes tos paios. Klaidu taisymo poiuriu jie yra ekvivalentus. Galime simboliu perstatu ir keitimu veiksmus taikyti ne vien kart. Gausime vis naujus, taiau turinius tas paias klaidu taisymo savybes kodus. ia visa esme. O dabar matematinis, kiek painokas ekvivaleniu kodu apibreimas. Tegu C yra (n, N ) kodas, o  n elementu perstata, t. y. injektyvus atvaizdis : {1, 2, . . . , n} {1, 2, . . . , n}. Juo apibreime injektyvu atvaizdi An An , kuri taip pat ymesime . Jei q q x = x1 . . . xn , tai (x) = x(1) . . . x(n) . I kodo C iuo atvaizdiu gauname nauj kod

(C) = {(c) : c C}.

6. HAMMINGO GEOMETRIJA

103

Naturalu kodus C ir (C) laikyti ekvivaleniais. Atskiru atveju gali buti C = (C). i savyb turintys atvaizdiai ypatingu budu susij su kodo struktura. Tokiu atvaizdiu : An An aib q q

Aut(C) = { : C = (C)}
vadinsime kodo C automorzmu grupe. Ji i tikruju yra grupe algebroje priimta prasme. Be k tik aptarto budo, yra ir kita galimybe gauti formaliai naujus kodus, naudojant perstatas. Tegu : {1, 2, . . . , q} {1, 2, . . . , q} yra kokia nors perstata, o abeceles A simboliai sunumeruoti: A = {a1 , . . . , aq }. Galime nagrineti kaip atvaizdi A A, apibredami (ai ) = a(i) . Pasirinkime i, i n, ir apibrekime injektyvu atvaizdi , i : An An itaip: q q

, i (x1 . . . xi . . . xn ) = x1 . . . (xi ) . . . xn .
Atvaizdis , i keiia tik i-ji odio simboli. Kod, kuri gauname i C, imdami odius , i (c), c C, ymesime , i (C).

40 apibreimas. Du (n, N ) kodus C, C vadinsime ekvivaleniais, jei egzistuoja n elementu perstata ir q elementu perstatos 1 , . . . , n , kad
C = 1 , 1 (. . . ( n , n ((C))) . . .).
Ekvivaleniu kodu savybes, susijusios su klaidu taisymu yra tos paios. Tai iplaukia i tokio teiginio, kurio teisingumu isitikinsite iek tiek pagalvoj: Perstatyti pagal t pai taisykl visu kodo odiu simbolius arba pakeisti visuose odiuose tos paios komponentes simbolius ir itaip gauti naujus, ekvivalenius pradiniam kodui odius nesunku. Taiau isivaizduokime toki udavini: duoti tos paios abeceles odiu kodai, odiu kiekiai vienodi, ar tie kodai ekvivalentus? Kokiu tikrinimu, perranku reiktu imtis? Jeigu nusprsite, kad tai labai sunkus udavinys, nesuklysite.

41 teorema. Jei kodai C, C ekvivalentus, tai d(C) = d(C ).

104

KODAI IR IFRAI

7 Hadamardo kodai
Tiek tyrinejus bendruosius kodu konstravimo klausimus, laikas sukurti k nors praktiko. Taiau sukonstruoti kod su dideliu minimaliu atstumu  anaiptol nelengvas udavinys. Pasvarstykime: pirmji odi galime parinkti bet koki, taiau antrji turime rinkti taip, kad jo Hammingo atstumas iki pirmojo odio butu didelis, rinkdami treiji jau turime stengtis, kad jis butu pakankamai toli nuo pirmuju dvieju ir t. t. Taiau matematikai nera tokie darbtus, kad jiems patiktu perrinkimo proceduros. Geriems kodams sudaryti yra ir kitu budu. iame skyriuje nagrinejame vien kodu eim. Tiems kodams sudaryti reikia visai nedaug papildomu iniu.

7.1. Matricos
Veiksmu su matricomis priminimas, daugiau nieko...

Primename, kad n m matavimu matrica vadiname elementu (daniausiai skaiiu) lentel, turini n eiluiu ir m stulpeliu. Jei n = m, tai matrica vadinama kvadratine. Matricas ymesime didiosiomis raidemis, o jos elementus  maosiomis su indeksais. Pavyzdiui,

A = (aij ), i = 1, . . . n, j = 1, . . . m,
ymi matric, sudaryt i elementu aij . Indeksai ymi elemento viet matricoje, pavyzdiui, a23 reikia element, esanti antrojoje eiluteje ir treiajame stulpelyje. Kad butu ivengta neaikumu, kartais tenka indeksus atskirti kableliu. Tu paiu matavimu matricas galime sudeti; rezultatas  tu paiu matavimu matrica. Matric, kurios matavimai yra n m, galima dauginti i matricos, kurios matavimai yra mk. Daugybos rezultatas  nk matavimu matrica. Bet koki matric taip pat galime dauginti i skaiiaus. iu veiksmu mums prireiks nuolat. Be abejones, inote, kaip ie veiksmai atliekami  tai taip:

(aij ) + (bij ) = (cij ), (aij ) (bjl ) = (dil ), (aij ) =(fij ),

cij = aij + bij ; dil = ai1 b1l + ai2 b2l + . . . + aim bml ; fij = aij ;

iose lygybese indeksai igyja reikmes i = 1, . . . , n; j = 1, . . . , m; l = 1, . . . , k. Tu paiu matavimu matricu sudetis turi savo nuli. Matric, kurios matavimai yra n m, o visi elementai lygus nuliui, ymesime On,m , taigi bet kokiai n m matavimu matricai A teisinga lygybe

A + On,m = On,m + A = A.

7. HADAMARDO KODAI

105

Kvadratines, t. y. n n matavimu matricas galima ir sudeti, ir dauginti. Kaip ir skaiiu aibeje, yra ir nulis ir vienetas, t. y. kvadratines matricos On ir In , su visomis n n matricomis A tenkinanios lygybes

A + On = On + A = A,

A In = In A = A.

ias matricas taip ir vadinsime: nuline ir vienetine:

0 0 ... 0 0 0 . . . 0 , On = . . . . . . . . . . . . 0 0 ... 0

1 0 ... 0 0 1 . . . 0 . In = . . . . . . . . . . . . 0 0 ... 1

Dar viena operacija su matricomis, kuri nuolat naudosime  transponavimas. Tegu A yra n m matrica. Sudarykime nauj matric, pirmojo A stulpelio elementus sura i pirmj eilut, antrojo  i antrj ir t. t. Gautj m n matavimu matric vadinsime transponuota ir ymesime AT . Akivaizdu, pavyzdiui, kad (AT )T = A. Gerai dar butu inoti, kas yra matricos rangas, kvadratines matricos determinantas ir kaip iuos dydius apskaiiuoti...

7.2. Hadamardo matricos


Tai paprastos, i skaiiu 1, +1 sudarytos kvadratines matricos. Taiau isamiu iniu apie jas kol kas niekas pasaulyje neturi.

Matricas, kurias dabar nagrinesime, sugalvojo J. Sylvesteris (1867), taiau isamiau tyrinejo J. Hadamardas (1893). Matricoms prigijo jo vardas.

41 apibreimas. n-osios eiles kvadratine matrica Hn = (hij ) vadinama Hadamardo matrica, jei
hij = 1,
T Hn Hn = nIn .

Apibreimo slyg galime urayti tai taip:

hi1 hj1 + hi2 hj2 + . . . + hin hjn =

n, jei i = j, 0, jei i = j.

Kartais sakysime, kad Hadamardo matricos skirtingos eilutes yra ortogonalios, t. y. ju skaliarine sandauga lygi nuliui.

106 O tai ir Hadamardo matricu pavyzdiai:

KODAI IR IFRAI

1 1 , H2 = 1 1 1 1 1 1

H1 = (1),

1 1 1 1 . H4 = 1 1 1 1 1 1 1 1

Kaip konstruoti didesniu matavimu matricas? I pradiu aptarkime, kokiu Hadamardo matricu apskritai gali buti. Sukeitus Hadamardo matricos dvi eilutes (stulpelius) vietomis, gautoji matrica vel yra Hadamardo matrica. Padauginus Hadamardo matricos eilut (stulpeli) i 1, gaunama Hadamardo matrica. Jeigu gerai supratote Hadamardo matricos apibreim, tai is teiginys turetu buti visikai aikus.

42 teorema.

43 teorema. n-osios eiles Hadamardo matrica Hn = (hij ) vadinama normaline, jei visiems j teisinga lygybe h1j = hj1 = 1. Taigi normalines Hadamardo matricos pirmasis stulpelis ir pirmoji eilute sudaryti vien tik i vienetu. Pasirem ankstesniu teiginiu galime irodyti, kad kiekvien Hadamardo matric galima suvesti i normalini pavidal.
Hadamardo matric galima suvesti i normalin matric. Naudojantis ia teorema, nesunku irodyti, kad treiosios eiles Hadamardo matricos nera. I tiesu, jeigu egzistuotu treiosios eiles Hadamardo matrica, tai suteik jai normalini pavidal, gautume Hadamardo matric 1 1 1 1 a b , 1 c d ia a, b yra arba 1, arba 1. Pirmosios ir antrosios eilutes skaliarine sandauga turi buti lygi nuliui, todel 1 + a + b = 0. Aiku, kad tokia lygybe negali buti patenkinta, todel treios eiles Hadamardo matricu nera. O kokiu gi Hadamardo matricu gali buti? dalijasi i 4.

44 teorema. Atitinkamas eilutes ir stulpelius dauginant i 1, kiekvien

45 teorema.

Jei Hn yra Hadamardo matrica, tai n = 1, 2 arba n

Irodymas. Pakanka nagrineti normalines n-osios eiles Hadamardo matricas. Tada kiekvienoje tokios matricos eiluteje pradedant antrja turi buti po tiek pat skaiiu 1 ir 1. Taigi n turi buti lyginis n = 2m. Sukeisdami matricos stulpelius vietomis, galime j pertvarkyti taip, kad pirmieji m antrosios eilutes elementai butu lygus vienetui. Tegu tarp pirmuju m treiosios eilutes

7. HADAMARDO KODAI

107

elementu yra j vienetu ir m j minus vienetu. Tada tarp paskutiniuju m treiosios eilutes elementu vienetu yra m j, o minus vienetu  j. Antroji ir treioji eilutes yra ortogonalios, t. y. ju skaliarine sandauga lygi 0:

j (m j) (m j) + j = 0.
I ios lygybes gauname, kad m = 2j. Taigi skaiius n = 2m = 4j dalijasi i keturiu. Hadamardo matricos eile butinai yra ketverto kartotinis. Ar kiekvienas toks skaiius gali buti Hadamardo matricos eile? Linkstama manyti, kad taip ir yra, taiau kol kas tai  neirodyta hipoteze. Ji patikrinta visiems 4m 668.

7.3. Dvi konstrukcijos


Galima sukonstruoti be galo daug Hadamardo matricu. Panagrinesime du budus. Abu jie paprasti. Kodel veikia pirmas budas suprasti nesudetinga. Kodel antrasis  sunkiau.

Jau sudareme antrosios ir ketvirtosios eiles Hadamardo matricas H2 , H4 . Naudodamiesi jomis galime sukonstruoti auktesnes eiles Hadamardo matricas, ir dar auktesnes, ir dar... Bet i pradiu  dar vienos operacijos su matricomis apibreimas. Tegu A matricos. Ju Kroneckerio sandauga a B 11 . AB = . . a11 B

42 apibreimas.

= (aij ) yra n n, B = (bij ), m m vadinama nm nm matrica a12 B . . . a1m B . . .. . . . . . . a12 B . . . a1m B

is veiksmas i Hadamardo matricu visada sukuria naujas Hadamardo matricas.

46 teorema. Jei A, B yra Hadamardo matricos, tai A B irgi Hadamardo matrica. ios teoremos irodymo beveik nereikia  kad ji teisinga, bus aiku kiekvienam, kas gerai suvoks Hadamardo matricos ir Kroneckerio sandaugos apibreimus. Taigi naudodamiesi Kroneckerio sandauga, galime konstruoti 2m 2m matavimu Hadamardo matricas:
H4 = H2 H2 , H8 = H4 H2 , H16 = H4 H4 , ...

Ne kain kas! Kadangi nelygybe 2m < 100 turi tik septynis naturaliuosius sprendinius, tai itaip galime sukonstruoti tik septynias maesnes u 100 eiles Hadamardo matricas.

108 Taiau yra ir kitu budu. Vien ju panagrinekime.

KODAI IR IFRAI

47 teorema. Jei p = 4m + 3 yra pirminis skaiius, tai p + 1 eiles Hadamardo matrica egzistuoja. ios teoremos irodymas yra konstruktyvus, t. y. pateikia nurodytos eiles Hadamardo matricu konstravimo bud. i bud sugalvojo anglu matematikas R. Paley. Yra 14 pirminiu skaiiu, maesniu u 100 ir tenkinaniu teoremos slyg. Pasinaudoj jais, galime sukonstruoti Hadamardo matricas
Hn , n = 4, 8, 12, 20, 24, 32, 44, 48, 60, 68, 72, 80, 84.

Tris io rinkinio matricas galime sudaryti naudodamiesi Kroneckerio sandauga. Taigi naudodamiesi iais dviem budais galime sudaryti i viso 17 Hadamardo matricu Hn , 1 n < 100. Panagrinesime Paley konstrukcij, sudarydami Hadamardo matric, atitinkani skaiiu p = 7. Pirmiausia suraykime skaiiu dalybos i 7 liekanu sek:

0, 1, 2, 3, 4, 5, 6.

(45)

Dabar kelkime ios sekos skaiius kvadratu ir suraykime iu kvadratu dalybos i 7 liekanu sek: 0, 1, 4, 2, 2, 4, 1. (46) Dabar sudarykime eilut i 1 ir +1: jeigu (45) sekos skaiius yra iraytas sekoje (46), keiskime ji +1, jei nera 1. Gausime toki eilut:

+1, +1, +1, 1, +1, 1, 1.


Sudarykime p p, t. y. 7 7 matavimu matric, iraydami i pirmj eilut gautj vienetu ir minus vienetu sek, o i kitas eilutes  ciklikai per 1, 2, . . . , 6 pozicijas i dein perstumt pirmj eilut:

+1 1 1 +1 1 +1 +1

+1 +1 +1 1 +1 1 1 +1 +1 +1 1 +1 1 1 +1 +1 +1 1 . +1 1 1 +1 +1 +1 1 +1 1 1 +1 +1 +1 1 +1 1 1 +1

+1 +1 1 +1 1 1

Kad gautume Hadamardo matric H8 , turime atlikti paskutini veiksm  papildyti sudarytj matric iki 8 8 matavimu matricos, pridedami dar

7. HADAMARDO KODAI vien stulpeli  vien i 1, o tada eilut, sudaryt +1 +1 +1 +1 +1 +1 1 +1 +1 +1 1 +1 1 1 +1 +1 +1 1 1 1 1 +1 +1 +1 H8 = 1 +1 1 1 +1 +1 1 1 +1 1 1 +1 1 +1 1 +1 1 1 1 +1 +1 1 +1 1 i +1:

109

+1 +1 1 1 +1 1 1 +1 . +1 1 +1 +1 +1 +1 1 +1

is algoritmas tinka bet kokiam pirminiam p = 4m + 3 skaiiui. Kodel jis veikia? Prieastys gludi tam tikruose skaiiu teorijos sryiuose.

7.4. Hadamardo kodai


Pasinaudoj Hadamardo matricomis, sudarysime kodus. Vienas ju turi vietel kosmonautikos istorijoje...

Tarkime, Hn yra n-osios eiles normaline Hadamardo matrica. Pirmiausia pertvarkykime j taip, kad nebeliktu elementu 1. Jei Hn yra Hadamardo matrica, tai matrica Mn , gauta i Hn , pakeitus 1 i 0, vadinama dvinare Hadamardo matrica. Matricos Mn eilutes galime interpretuoti kaip dvejetaines abeceles A = {0, 1} enklu n ilgio odius. Pastebekime, kad Hammingo atstumas tarp odiu ai , aj , gautu i skirtingu Mn eiluiu, lygus n/2. Dabar sudarysime Hadamardo kodus.

43 apibreimas.

44 apibreimas. Tegu Mn yra n-tosios eiles dvinare Hadamardo matrica, gauta i normalizuotos Hadamardo matricos, Mn  matrica, gauta i Hn , pakeitus 1 i 0 ir 1 i 1. Kodas An sudarytas i Mn eiluiu, sutrumpintu pirmuoju simboliu, Bn  i Mn ir Mn eiluiu, o Cn  i Bn eiluiu, sutrumpintu pirmuoju simboliu. Kodus An , Bn , Cn vadinsime Hadamardo kodais. Irodysime teigini apie Hadamardo kodu parametrus. 48 teorema. Kodu An , Bn , Cn parametrai yra atitinkamai
(n 1, n, n/2), (n, 2n, n/2), (n 1, 2n, d), d n/2 1.

Irodymas. Imkime odius ai , aj , gautus i skirtingu Mn eiluiu; Hammingo atstumas tarp ju: n h(ai , aj ) = . 2

110

KODAI IR IFRAI

Sutrumpin juos pirmuoju simboliu, gauname du kodo An odius. Taiau abu nubrauktieji simboliai buvo lygus vienetui, taigi juos nubrauk, atstumo tarp odiu nesumainome. Isitikinome, kad ir minimalus kodo An atstumas, ir apskritai  atstumas tarp bet kuriu dvieju skirtingu io kodo odiu lygus n/2. Nagrinekime du kodo Bn odius. Jeigu jie abu gauti i matricos Mn (arba matricos Mn ) eiluiu, tai Hammingo atstumas tarp ju taip pat lygus n/2. Lieka inagrineti atveji, kai vienas odis gautas i vienos, kitas i kitos matricos. Tarkime, odis c gautas i i-osios Mn eilutes, o odis d  i j -osios Mn eilutes. Jeigu i = j, tai h(c, d) = n. Jeigu i = j, tai h(c, d) = n/2. Ir iuo atveju nustateme iek tiek daugiau, negu urayta teoremos tvirtinime: yra lygiai n kodo odiu poru su Hammingo atstumu, lygiu n, visos kitos odiu poros duoda perpus maesni atstum. Teiginys apie kodo Cn minimalu atstum beveik akivaizdus  sutrumpin kodo odius vienu simboliu, minimalu atstum galime sumainti daugiausiai vienetu. Hadamardo kodas B32 su parametrais (32, 64, 16) 19691972 metais buvo naudotas siuniant i em Marso nuotraukas i kosminio laivo Mariner. Nuotrauka buvo dalijama takais, takams buvo priskiriamas vienas i 64 skirtingu pilkumo lygiu, kiekvien i iu lygiu atitiko kodo odis. ie odiai ir buvo siuniami i em. Taigi Hadamardo kodas B32  pirmasis kodas, taikytas valgant kosmos. Jis gali itaisyti 7 ivykusias klaidas. Kaip ias klaidas taisyti? Skaiiuoti gautojo odio Hammingo atstum iki visu odiu? Yra kiek geresnis budas. Aptarkime Bn kodo, gauto i matricu Mn ir Mn eiluiu, dekodavim (ios matricos gautos i Hn ). Tarkime, siuniant kodo Bn odi c, i kanalo gautas odis x. Jeigu pradinis odis sudarytas i matricos Mn eilutes, tai egzistuoja matricos Hn eilute h, kad, pakeit joje 1 i 0, ikart gauname c. Sakysime, kad odis c gautas i h pirmuoju budu. Jeigu c sutampa su viena i Mn eiluiu, tai taip pat yra vienintele Hn eilute h, kurioje pakeit 1 1, 1 0, gautume c. Sakysime, kad odis c gautas i h antruoju budu. Taigi dekoduoti gaut odi x reikia surasti Hadamardo matricos eilut h ir nustatyti, kuriuo i dvieju budu j pakeisti, kad gautume kodo odi. Dvieju dvejetaines abeceles odiu (eiluiu) x = x1 x2 . . . xn , y = y1 y2 . . . yn skaliarin sandaug ymesime taip:

x y = x1 y1 + . . . + xn yn .
odi, gaut i dvejetaines abeceles odio x, pakeitus jame 0 1, ymesime x. Tegu c Bn , h  matricos Hn eilute, i kurios is odis gautas, o x  pasiuntus c, i kanalo gautas odis. Jeigu ikraipytu 1 simboliu skaiius t ne didesnis u n 2 ir c gautas i h pirmuoju budu, 4 n n tai x h > 2 ; jei antruoju  x h < 2 . Skaliarines sandaugos su kitomis

49 teorema.

8. BAIGTINIAI KUNAI IR TIESINES ERDVES matricos Hn eilutemis h tenkina nelygyb

111

| h| < x

n . 2

Taigi naudodamiesi iuo teiginiu, galime dekoduoti taip: gav i kanalo odi x, skaiiuojame skaliarines sandaugas x h > n su Hn eilutemis, kol 2 gausime reikm didesn u n arba maesn u n . itaip ivengsime visu 2 2 kodo odiu perrankos. Irodymas. Jeigu, siuniant pirmuoju budu i h gaut odi c, ikraipymu nebuvo, tai gautas odis tenkins lygybes:

x h = n,

x h = 0, jei h = h.

Antruoju budu gautajam odiui turetume atitinkamai x h = n. Tarkime, siuniant c, vienas simbolis buvo ikreiptas. Tada sandaugu x h ir x h iraikose pasikeis vienas demuo: +1 i 1 arba 1 i +1. Taigi sandaugos padides arba sumaes dvejetu. Todel turesime x h n 2,
arba

|x h | 2

x h n + 2,

|x h | 2.

Jeigu ivyks t ikraipymu, pirmuoju atveju bus teisingos nelygybes

x h n 2t >

n , 2

|x h | 2t <

n . 2

Panaios nelygybes bus teisingos antruoju atveju. Teorema irodyta.

8 Baigtiniai kunai ir tiesines erdves


Iki iol i abeceles  tos pradines aliavos kodu odiams sudaryti  nereikalavome jokiu savybiu. Jos elementai buvo enklai ir tiek. Nuo iol abecele bus ne iaip aibe, bet aibe, turinti tam tikr algebrin struktur. is skyrius skirtas algebros inventoriui  baigtiniams kunams, tiesinems erdvems ir daugianariams bei ju savybems aptarti. Jeigu ios svokos yra gerai inomos (taip turetu buti, jeigu sekmingai iveikete pradini universitetuose destom algebros kurs), galite i skyriu tiesiog praleisti. Veiksmu su odiais prisireiks labai greitai, o daugianariais pasinaudosime veliau. Tad galima pervelgus pirmuosius skyrelius pereiti prie kodu, o prie daugianariu sugriti, kai skaitysite kitus skyrius.

112

KODAI IR IFRAI

8.1. Dalybos liekanu kunas


Skaiiavimo dalybos i n liekanu aibeje savybiu apvalga.

Teiginys apie sveikuju skaiiu dalyb su liekana  paprastas, bet labai svarbus.

50 teorema. Bet kokiems sveikiesiems skaiiams m, n (n > 0) yra vienintele sveikuju skaiiu pora q, r, kad
m = qn + r, 0 r < b.

Skaiiu r vadiname m dalybos i n liekana, o q  dalmeniu. Teiginio irodymas irgi paprastas. Nagrinekime skaiiaus n kartotinius, t. y. sveikuju skaiiu sek

. . . , 3 n, 2 n, 1 n, 0 n, 1 n, 2 n, 3 n, . . .
Tik vienas ios sekos narys q n pateks i interval (mn, m], t. y. tenkins nelygyb m n < qn m, arba 0 m qn < n. Taigi

m = qn + r,

r = m qn,

0 r < n.

Padar prielaid, kad egzistuoja ir kita pora, gautume ivad, kad intervale (m n, m] yra bent du skirtingi skaiiaus n kartotiniai. Taigi teiginys irodytas. Jeigu du sveikieji skaiiai a ir b, dalijant juos i n, duoda t pai liekan, ymesime a b (mod n). Taip urayt sryi vadinsime lyginiu. Taigi is ymuo reikia dvieju skaiiu giminyst pagal dalybos i n liekanas. Nesunku irodyti io sryio savybes.

51 teorema. Teisingi tokie teiginiai:


jei a b (mod n) ir c d (mod n), tai a + c b + d (mod n); jei a b (mod n) ir c yra sveikasis skaiius, tai ca cb (mod n); jeigu ca cb (mod n) ir skaiiai c, n neturi bendruju dalikliu, iskyrus vienet, tai a b (mod n).
Paymekime visu galimu dalybos i n liekanu aib

Zn = {0, 1, 2, . . . , n 1}.

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

113

ios aibes skaiiu sumos ar sandaugos rezultatas, inoma, nebutinai priklauso Zn . Apibrekime naujus liekanu sudeties ir sandaugos veiksmus, kuriu rezultatai visada priklauso Zn . Elementu a, b Zn suma moduliu n (n > 1) vadinsime naturinio skaiiaus a + b dalybos i n liekan, o sandauga  skaiiaus a b dalybos i n liekan. Apibretuju veiksmu rezultatus ymesime

45 apibreimas.

a +n b,

a n b.

Svarbu, kad dauguma apibretuju veiksmu savybiu  tos paios kaip ir iprastiniu veiksmu su skaiiais.

52 teorema. Suma ir sandauga moduliu n turi ias savybes


(a +n b) +n c = a +n (b +n c); a +n b = b +n a; a +n 0 = a; bet kokiam a lygtis a +n x = 0 turi vieninteli sprendini; a n b = b n a; 1 n a = a; (a n b) n c = a n (b n c); a n (b +n c) = a n b +n a n c.
Aibe, su kurios elementais apibretos dvi operacijos (paprastai vadinamos sudetimi ir daugyba), tenkinanios teoremoje ivardytas slygas, vadinama iedu. Taigi dalybos liekanu aibe Zn su apibretomis operacijomis yra iedas. iame iede yra nulinis elementas (nulis), vienetinis elementas (vienetas), kiekvienas elementas turi jam prieing, t. y. toki, su kuriuo sudejus gaunamas nulis. Tai iprastos veiksmu su skaiiais savybes. Taiau yra viena ypatybe. Dvieju nelygiu nuliui skaiiu sandauga niekada nera lygi nuliui. Daugybe matematiniu samprotavimu ir irodymu remiasi iuo faktu. Taiau liekanu iede tai nebera visada teisinga. Pavyzdiui,

4 6 3 = 0.
Ir dar vienas skirtumas. Lygtis

a n x = b (a = 0) atskiru atveju

a n x = 1

ne su visais a turi sprendini, t. y. ne kiekvienas nenulinis elementas turi atvirktini.

114

KODAI IR IFRAI

Taiau ir i ger savyb galime igelbeti, jeigu pasirinksime gerus skaiius n. lygtis

53 teorema.

Jeigu n yra pirminis skaiius, tai kiekvienam a, a = 0,

a n x = 1
turi vieninteli sprendini. Taigi kai n yra pirminis, visi nenuliniai Zn elementai turi atvirktinius. Irodyti i teigini nesunku. Tegu a Zn , a = 0. Nagrinekime sek i n 1 aibes Zn elemento:

1 n a, 2 n a, . . . , (n 1) n a.
Visi ie elementai nenuliniai ir skirtingi, todel lygiai vienas lygus 1. Taigi elementas a turi atvirktini. Galbut abejojate, kodel elementai nenuliniai? Jeigu butu b n a = 0, tai naturiniu skaiiu sandauga ba dalytusi i pirminio n. Bet tai neimanoma, nes a ir b yra maesni u n. Kodel elementai skirtingi? Jeigu butu b n a = c n a (0 < b < c < n), tai butu teisingas lyginys

ba ca (mod n).
i lygini galime suprastinti. Padar tai, gautume b c (mod n). Kadangi 0 < b, c < n, tai i to gauname, kad b = c. Taigi, kai n yra pirminis skaiius, tai veiksmu su dalybos liekanomis savybiu sra galime papildyti dar viena savybe. Aibe, kurioje apibreti du veiksmai (sudetis ir daugyba), turintys abiejose teoremose ivardytas savybes, vadinama kunu. Veiksmu su kuno elementais savybes yra visikai tos paios kaip veiksmu, pavyzdiui, su racionaliaisiais skaiiais. O dabar susitarkime del ymejimu. Noredami pabreti, kad nagrinejamas skaiius yra pirminis, ymesime ji p. Kun Zp ymesime, kaip iprasta algebroje, Fp . Vietoj enklu +p , p raysime iprastinius sudeties ir sandaugos enklus, odiu nurodydami, kokiu moduliu turi buti atliekami skaiiavimai. Nenulinio elemento Fp atvirktini ymesime 1 . Taigi turime be galo daug kunu, kuriuos galime naudoti kaip kodu abeceles:

F2 , F3 , F5 , . . .
Kuris i ju yra pats svarbiausias kodavimo teorijoje? Be abejones, pats maiausias kunas F2 = {0, 1} yra ir pats svarbiausias.

8.2. Tiesines odiu erdves ir poerdviai


Nuo simboliu  prie odiu! Maai naudos i turto, jeigu ji tik turi; kitas dalykas, jei gali su juo k nors veikti! Pasinaudodami veiksmais su abeceles simboliais, apibreime veiksmus su i tu simboliu sudarytais odiais ir apvelgsime svarbiausias kodavimo teorijai ju savybes.

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

115

odiams sudaryti naudosime abecel Fp = {0, 1, 2, . . . , p 1}, ia p > 1 yra pirminis skaiius. Naudodamiesi veiksmais su abeceles enklais, apibreime veiksmus su to paties ilgio odiais, t. y. aibes Vn = Fn elementais. Pirmip ausia apibrekime sudeti:

46 apibreimas. odiu x, y Vn , x = x1 x2 . . . xn , y = y1 y2 . . . yn , suma vadinsime odi z = z1 z2 . . . zn , ia


z1 = x1 + y1 , z2 = x2 + y2 , . . . , zn = xn + yn .
odiu sudeties savybes  tokios pat kaip skaiiu. ie teiginiai:

54 teorema.

Tegu x, y, z yra bet kokie aibes Vn elementai. Teisingi

(x + y) + z = x + (y + z); x + y = y + x; egzistuoja 0 Vn , kad x + 0 = x; egzistuoja x, kad x + x = 0.


Aibe su kiekvienai elementu porai apibretu veiksmu (daniausiai vadinamu sudetimi), turiniu teoremoje ivardytas savybes, vadinama Abelio grupe. Taigi pasinaudoj abeceles enklu sudetimi, paverteme odiu aib grupe. Elementas 0 = 00 . . . 0 atlieka nulio vaidmeni; ji taip ir vadinsime  nuliniu odiu arba elementu. odi x vadinsime prieingu odiui x ir ymesime x. Vienas veiksmas su kuno Fp elementais dar nepanaudotas  daugyba. Elemento Fp ir odio x = x1 x2 . . . xn Fn p sandauga vadinsime odi y = y1 y2 . . . yn , kad

47 apibreimas.

y1 = x1 , y2 = x2 , . . . , yn = xn .
Taigi su odiais galime atlikti du veiksmus: odius galime sudeti, odius galime dauginti i kuno elementu. Nesudetinga irodyti pastarojo veiksmo savybes.

55 teorema. Su bet kokiais , Fp ir x, y Fp teisingi teiginiai


(x + y) = x + y; ( + )x = x + x; ()x = (x); 1x = x.

116

KODAI IR IFRAI

Aibe su elementu sudeties ir daugybos i kuno elementu operacijomis, tenkinaniomis abiejose teoremose ivardytas savybes, vadinama tiesine erdve. Taigi odiu aibe Vn yra tiesine erdve. Visos tos savybes panaios i iprastines veiksmu su skaiiais savybes. Taigi beveik nereikia isiminti nieko naujo! Visu veiksmu esme  i to, k turi, sukurti k nors nauja. Tegu x1 , x2 , . . . , xm yra aibes Vn odiai. Tiesine iu odiu kombinacija su koecientais 1 , . . . , m Fp vadinsime odi

y = 1 x1 + 2 x2 + . . . + m xm .
Pasirink kelis aibes Vn odius, galime sudaryti pasirinktuju odiu visu tiesiniu kombinaciju aib. vadinsime aib

48 apibreimas.

Elementu x1 , x2 , . . . , xm Fp tiesiniu apvalku

L(x1 , x2 , . . . , xm ) = {1 x1 + 2 x2 + . . . + m xm : i Fp }.
Kiekvienoje dideleje erdveje galime ivelgti maesnes. poerdviu, jeigu

49 apibreimas.

Tiesines erdves Vn poaibi L vadinsime tiesiniu

bet kokiems x, y L ju suma x + y L; bet kokiems Fp , x L sandauga x L.


Nesunku isitikinti, kad tiesinis odiu apvalkas yra tiesinis poerdvis. Ar kiekvienas tiesinis poerdvis yra kokios nors odiu sistemos tiesinis apvalkas? Tai teisinga, pavyzdiui, visai odiu erdvei. Visa erdve Vn yra odiu

e1 = 100 . . . 00, e2 = 010 . . . 00, . . . , en = 000 . . . 01

(47)

tiesinis apvalkas, t. y. Vn = L(e1 , e2 , . . . , em ). Jeigu sudarydami tiesin odiu kombinacij, visus koecientus imsime lygius nuliui, tai gausime vien i nuliu sudaryt odi. Taiau gali buti, kad nulini odi gausime ir su kitokiu koecientu rinkiniu.

50 apibreimas. Sakysime, kad odiai x1 , x2 , . . . , xm yra tiesikai nepriklausomi, jeigu lygybe


1 x1 + 2 x2 + . . . + m xm = 0, 0 = 00 . . . 0,

teisinga tik tuomet, kai 1 = 2 = . . . = m = 0. Prieingu atveju sakysime, kad odiai yra tiesikai priklausomi. Jeigu odiai x1 , x2 , . . . , xm yra tiesikai priklausomi, tai galime sudaryti nulin ju kombinacij

1 x1 + 2 x2 + . . . + m xm = 0,

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

117

panaudoj ne vien tik nulinius koecientus. Tarkime, m = 0. odi xm galime ireikti per kitus:
1 1 1 xm = m 1 x1 m 2 x2 . . . m m1 xm1 .

Tada

L(x1 , x2 , . . . , xm ) = L(x1 , x2 , . . . , xm1 ).


Taigi sudarant tiesinius apvalkus, galima praretinti turimu odiu sistem, kad likusieji butu tiesikai nepriklausomi. Tegu L Fn yra tiesinis poerdvis. Tiesikai p nepriklausomu odiu sistem x1 , x2 , . . . , xm vadinsime poerdvio baze, jei

51 apibreimas.

L = L(x1 , x2 , . . . , xm ).
Visa odiu erdve turi baz; tai (47) odiu sistema. Ar kiekvienas poerdvis turi baz ir savo ruotu yra tiesinis bazes odiu apvalkas? Ar visos to paties poerdvio bazes turi po t pati odiu skaiiu? I visus iuos klausimus atsako lakonikas, bet labai svarbus teiginys. Bet kuris poerdvis L Fn turi baz. Visos poerdvio p bazes turi t pati odiu skaiiu. is teiginys yra labai svarbus. Jis iaikina tiesiniu poerdviu struktur. Svarbus teiginiai retai irodomi bema be pastangu. Mums pakaks, kad galesime juo naudotis. Kam rupi irodymas  atsiverskite koki nors tiesines algebros knyg.

56 teorema.

57 teorema. Tiesinio poerdvio L bazes odiu skaiiu vadinsime jo dimensija ir ymesime dim(L). Taigi noredami nusakyti tiesini poerdvi, galime tiesiog surayti visus jo bazes odius. Taiau yra ir kitas labai naudingas budas tiesiniams poerdviams apibreti. I pradiu  dar viena operacija su odiais. 52 apibreimas. Tegu x = x1 x2 . . . xn , y = y1 y2 . . . yn yra du erdves Vn odiai. Ju vidine sandauga vadinsime Fp element, apibreiam lygybe
x y = x1 y1 + . . . + xn yn .
Pasinaudosime ia svoka ir kiekvienam tiesiniam poerdviui L parinksime i por kit poerdvi.

58 teorema. Tegu L yra tiesinis poerdvis. odiu aibe


L = {y Vn : x y = 0 su visais x L}
taip pat yra tiesinis poerdvis. Poerdviu dimensijos susijusios lygybe dim (L) + dim L = n.

118

KODAI IR IFRAI Tiesini poerdvi L vadinsime dualiu poerdviui L. Beveik akivaizdu, kad

= L.

Tiesini poerdvi L galime nusakyti naudodami jo baz arba  jam dualaus poerdvio baz. yra dualaus poerdvio L baze. Tada

59 teorema. Tegu L yra tiesinis poerdvis, dim(L) = k, o h1 , . . . , hnk


L = {x Vn : x h1 = x h2 = . . . = x hnk = 0}.
(48)

Slygas (48) galime urayti tiesinemis lygtimis. I tikruju, jeigu dualaus poerdvio bazes odiai yra

h1 = h11 h12 . . . h1n , h2 = h21 h22 . . . h2n , . . . hnk = hnk,1 hnk,2 . . . hnk,n ,
tai (48) slygos reikia, kad poerdvis L yra sudarytas i tu odiu x, kuriu komponentes x1 x2 . . . xn tenkina tokias lygybes:

h11 x1 + h12 x2 + . . . + h1n xn = 0, h21 x1 + h22 x2 + . . . + h2n xn = 0, ............................... hnk,1 x1 + hnk,2 x2 + . . . + hnk,n xn = 0.

8.3. Daugianariai
Nagrinesime daugianarius su koecientais i baigtinio kuno. Kas gi yra tie daugianariai? Kakas panaaus i aitvaru uodegas!

Fiksuokime pirmini skaiiu p ir nagrinekime daugianarius su koecientais i kuno Fp :

f (x) = a0 + a1 x + . . . + an xn ,

ai Fp ,

an = 0.

Daugianaris sudarytas sudejus vienanarius. Didiausio laipsnio vienanari tokioje sumoje (t. y. turinti nenulini koecient), vadinsime vyriausiuoju nariu, jo laipsni  daugianario laipsniu. Daugianario laipsni ymesime

n = deg(f (x)) arba n = deg(f ).


Kartais mones klausia: kas gi yra tas daugianaris, kas gi yra tas x? Suprasti, kas yra daugianaris, jiems trukdo mokykloje idiegta nuomone, kad x yra neinomas skaiius, kuri reikia rasti. Jeigu ir jums sunku isivaizduoti, kas yra tas daugianaris, paklausykite tokio patarimo. Isivaizduokite, kad skaiiai a0 , a1 , . . . , an urayti ant skrituliuku su skylutemis per viduri (kaip danikos monetos!), isivaizduokite, kad x  tai kaspinas su viena ausele, x2

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

119

 kaspinas su dviem auselem, x3  su trimis... Pagaliau isivaizduokite, kad imate virvel, prie kurios galo pririate skrituleli su a0 , kiek toliau  a1 su kaspinu x alia, dar toliau  a2 ir x2 ... Baig darb, turesite daugianari  kak panaaus i aitvaro uodeg. Gal ir nelabai tinka tvirtinti per egzamin, kad daugianaris  tai aitvaro uodega, bet itaip sau isivaizduoti daugianari teisinga visikai! Paymekime visu daugianariu ir ne didesnio kaip n-ojo laipsnio daugianariu aibes:

Fp [x] = {a0 + a1 x + . . . + am xm : ai Fp , am = 0, m 0}, Fp,n [x] = {a0 + a1 x + . . . + am xm : ai Fp , am = 0, m < n}.


Akivaizdu, kad

Fp = Fp,0 [x] Fp,1 [x] . . . Fp,n [x] . . . Fp [x].


Daugianari galime dauginti i kuno elemento Fp , du daugianarius galima sudeti; abieju veiksmu rezultatai  nauji daugianariai:

f (x) = a0 + a1 x + . . . + an xn , g(x) = b0 + b1 x + . . . + bm xm , ( f )(x) = (a0 ) + (a1 )x + . . . + (an )xn , (f + g)(x) = (a0 + b0 ) + (a1 + b1 )x + . . . + (ak + bk )xk , k = max(n, m);
jei n > m, tai paskutineje lygybeje imame bl = 0, kai l > m; jei n < m, tai al = 0, kai l > n. Atliekant veiksmus su daugianariais, laipsniai keiiasi taip:

deg( f ) = deg(f ) ( = 0),

deg(f + g) = max(deg(f ), deg(g)).

ie du veiksmai paveria daugianariu aibes geromis algebrinemis strukturomis.

60 teorema. Daugianariu aibes Fp,n [x], Fp [x] yra tiesines erdves vir kuno Fp . Taiau daugianarius galime ir dauginti: tiesiog naudokimes iprastinemis sudeties, daugybos asociatyvumo, komutatyvumo ir distributyvumo savybemis ir laipsniu daugybos taisyklemis xn xm = xn+m . Nesunku suvokti, kad teisinga tokia laipsniu kitimo taisykle:
deg(f g) = deg(f ) + deg(g), f, g Fp [x].
Jeigu galima dauginti, tai galima bandyti ir dalyti. Ir ia musu laukia maloni staigmena: teisinga dalybos su liekana teorema.

61 teorema. Tegu f, g Fp [x] yra du daugianariai, deg(g) < deg(f ). Tada egzistuoja vienintele daugianariu pora q, r Fp [x], kad
f (x) = q(x)g(x) + r(x), 0 deg(r) < deg(g).
(49)

120

KODAI IR IFRAI

Kaip ir sveikuju skaiiu atveju, daugianari q(x) vadinsime f dalybos i g dalmeniu, o r  liekana. Irodymas. Tegu deg(f ) = n, deg(g) = m (m n) ir

g(x) = b0 + b1 x + . . . + bm xm ,
Nagrinekime baigtin daugianariu aib

bm = 0.

D = {f (x) h(x)g(x) : h(x) Fp [x], deg(h) n m}.


ioje aibeje suraskime maiausiojo laipsnio daugianari r(x) = f (x)q(x)g(x). Isitikinkime, kad deg(r) < m. I tikruju, jeigu butu

r(x) = f (x) q(x)g(x) = c0 + c1 x + . . . + ck xk ,


tai aibei D priklausantis daugianaris

k m, ck = 0,

r1 (x) = f (x) q(x)g(x) (b1 ck )xkm g(x) = f (x) q1 (x)g(x) m


butu maesnio nei r(x) laipsnio. Tai prietarautu r(x) parinkimui. Taigi bent viena pora, tenkinanti (49), egzistuoja. Tarkime, egzistuoja dvi skirtingos tokios poros, t. y.

f (x) = q(x)g(x) + r(x) = q1 (x)g(x) + r1 (x),


Tada gautume

0 deg(r), deg(r1 ) < deg(g).

(q(x) q1 (x))g(x) = r(x) r1 (x), deg((q(x) q1 (x))g(x)) m, deg(r(x) r1 (x)) < m.


O tai jau prietaravimas! Jeigu dalydami daugianari f (x) i g(x), gauname nulin liekan, t. y. r(x) = 0, tai sakome, kad f dalijasi i g, arba  g yra f daliklis. Tada

f (x) = q(x)g(x).
Akivaizdu, kad kiekvienas daugianaris dalijasi i pats savs ir i nenuliniu Fp elementu  nulinio laipsnio daugianariu:

f (x) = q(x),

q(x) = 1 f (x),

= 0.

Tokius f (x) daliklius vadinsime trivialiaisiais. Ar kiekvienas daugianaris turi netrivialiuju dalikliu? Anaiptol. Kiekvienam n 1 yra n-ojo laipsnio daugianariu, neturiniu netrivialiuju dalikliu. Tokie daugianariai daugeliu savybiu (bet ne visomis) panaus i pirminius skaiius.

62 teorema.

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

121

53 apibreimas. Daugianari f Fp [x], neturinti netrivialiuju dalikliu vadinsime neskaidiu. Pavyzdiui, visi pirmojo laipsnio daugianariai yra neskaidus. Bet jie nera patys idomiausi! Yra bet kokio laipsnio neskaidiu daugianariu. Jeigu du daugianariai f1 , f2 dalijasi i to paties daugianario
d(x) = ak xk + . . . + a1 x + a0 , (ak = 0)
t. y. f1 (x) = g1 (x)d(x), f2 (x) = g2 (x)d(x), tai jie dalijasi ir i tam tikro daugianario su vyriausiuoju koecientu, lygiu 1. I tikruju,

f1 (x) = (ak g1 (x))(a1 d(x)), k

f2 (x) = (ak g2 (x))(a1 d(x)) k

ir daugianario a1 d(x) laipsnis lygus k, o vyriausiasis koecientas lygus 1. k

54 apibreimas. Tegu f1 , f2 Fp [x] yra du daugianariai. Ju didiausiuoju bendruoju dalikliu vadiname didiausiojo laipsnio daugianari su vienetiniu vyriausiuoju koecientu, i kurio dalijasi ir f1 , ir f2 . Bendrji didiausiji dalikli ymesime (f1 , f2 ). Jeigu f1 dalijasi i f2 , tai bendrasis didiausiasis ju daliklis yra beveik f2  tereikia padauginti ji i kuno elemento, kad vyriausiasis koecientas taptu lygus 1. Rasti bendrji didiausiji dalikli  svarbus udavinys, kurio sprendimu pasinaudosime ne kart. O sprendimas gaunamas pritaikius Euklido algoritm. Tegu reikia rasti daugianariu f1 , f2 Fp [x], deg(f2 ) deg(f1 ), bendrji didiausiji dalikli. Padalykime f1 i f2 su liekana:
f1 (x) = g1 (x)f2 (x) + r1 (x), 0 deg(r1 ) < deg(f2 ).

Euklido algoritmas remiasi sryiu, kuri nesudetinga irodyti:

(f1 , f2 ) = (f2 , r1 ).
Dalybos su liekana veiksmus galime tsti, taiau ne be galo:

f2 (x) = g2 (x)r1 (x) + r2 (x), r1 (x) = g3 (x)r2 (x) + r3 (x), ... ...

0 < deg(r2 ) < deg(r1 ) 0 < deg(r3 ) < deg(r2 ) 0 < deg(rm ) < deg(rm1 )

rm2 (x) = gm (x)rm1 (x) + rm (x), rm1 = gm+1 (x)rm (x) + 0.


Tada

(f1 , f2 ) = (f2 , r1 ) = (r1 , r2 ) = . . . = (rm1 , rm ) = rm .

122

KODAI IR IFRAI

Taigi daugianariai yra nauji objektai  aitvaru uodegos. Taiau kiekvien daugianari f (x) = a0 + a1 x + . . . + an xn galime interpretuoti kaip funkcij f : Fp Fp , priskiriani argumentams reikmes taip: a0 + a1 + . . . + an n . Argumentui priskiriam reikm ymesime f (). Kartais toks ymejimas gali sukelti dvejoniu: k ymi, pavyzdiui, f (y)  kuno element ar daugianari? Pabandysime ivengti panaiu dviprasmybiu, daugianarius visada ymedami f (x). Jei Fp , f (x) Fp [x] ir f () = 0, tai element vadinsime daugianario f (x) aknimi. Nesudetinga isitikinti, kad tada f (x) dalijasi i x , t. y. f (x) = (x )g(x), g(x) Fp [x]. Jeigu

f (x) = (x )k h(x),

k 1,

h() = 0,

tai sakysime, kad aknies kartotinumas yra lygus k arba kitaip  yra k kartotinumo daugianario f (x) aknis. Dar galima sakyti, kad toks daugianaris turi k vienodu (lygiu ) aknu. Svarbus teiginys apie daugianario aknu skaiiu.

63 teorema. Daugianario f Fp [x] aknu skaiius yra ne didesnis u jo laipsni. Paprastai i teorema irodinejama matematines indukcijos metodu pagal daugianariu laipsnius.

8.4. Kunu pletiniai


Dalybos i pirminio skaiiaus liekanu kunai  ne vieninteliai baigtiniai kunai. O kokiu dar yra? Jei neinote  perskaitykite i skyreli.

Pasirinkime koki nors n-ojo laipsnio daugianari

f (x) = a0 + a1 x + . . . + an xn ,

ai Fp .

Dalydami kitus daugianarius g Fp [x] i f, gausime liekanas. iu liekanu aibe sutampa su ne didesnio kaip n 1-ojo laipsnio daugianariu aibe Fp,n [x]. Jeigu sudesime dvi dalybos i f liekanas  vel gausime liekan, t. y. Fp,n [x] element. Jeigu liekanas dauginsime  sandauga nebutinai bus liekana. Taiau, kaip ir dalybos i skaiiu liekanu atveju, daugianariu daugybos apibreim galime pakeisti: jei g, h Fp,n [x], tai g f h = g h dalybos i f liekana.

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

123

Naujosios liekanu daugybos rezultatas  vel tos paios aibes elementas, t. y. dalybos i f liekana. Tikras malonumas naujoje aplinkoje pastebeti jau inom desni:

64 teorema. Tegu f yra n-ojo laipsnio daugianaris. Daugianariu aibe Fp,n [x] su sudeties ir daugybos veiksmais +, f sudaro ied. Dar maloniau rasti ne tik nauju iedu, bet ir kunu.
tai Fp,n [x] su sudeties ir daugybos veiksmais +, f sudaro kun. Irodymas. Kad daugianariu aibe su apibretomis operacijomis sudaro ied, irodyti nesunku. Pakanka nustatyti, kad sudeties ir daugybos veiksmai tenkina iedo apibreimo savybes. Noredami irodyti, kad neskaidaus daugianario f atveju is iedas yra ir kunas, turime irodyti, kad kiekvienas nenulinis daugianaris g turi atvirktini, t. y. kiekvienam g Fp,n [x], g(x) = 0, egzistuoja h Fp,n [x], kad g(x) f h(x) = 1. Pasirinkime g Fp,n [x] ir nagrinekime daugianariu aib

65 teorema. Jeigu f Fp [x] yra neskaidus n-ojo laipsnio daugianaris,

g = {g(x) f a(x) : a Fp [x]}.


Suraskime joje maiausio laipsnio nenulini daugianari r(x) (tokiu yra ne vienas  galime pasirinkti). Tada galime urayti toki daugianariu lygyb

g(x)a(x) = b(x)f (x) + r(x), a, b Fp,n [x], deg(r) < deg(f ) = n.

(50)

Irodysime, kad r(x) butinai yra nulinio laipsnio daugianaris, t. y. nenulinis kuno Fp elementas. Tarkime prieingai: deg(r) > 0. Tada, padalij f (x) i r(x) su liekana, gautume

f (x) = q(x)r(x) + r1 (x),

0 deg(r1 ) < deg(r).

Kadangi f (x) yra neskaidus daugianaris, tai r1 (x) = 0. Padauginkime (50) i q(x) ir pasinaudokime f dalybos i r iraika:

g(x)a(x)q(x) = b(x)q(x)f (x) + r(x)q(x), g(x)a(x)q(x) = b(x)q(x)f (x) + f (x) r1 (x), g(x)c(x) = d(x)f (x) r1 (x), c(x) = a(x)q(x), d(x) = b(x)q(x) + 1, g(x) f c(x) = r1 (x), deg(r1 ) < deg(r).
I paskutines lygybes iplaukia, kad r1 g , t. y. ioje aibeje yra maesnio laipsnio daugianaris negu r. Tai prietarauja musu pasirinkimui, todel r(x) turi buti tiesiog kuris nors nenulinis kuno Fp elementas . Tada i (50) gauname:

g(x)a(x) = b(x)f (x) + , g(x)a(x)1 = b(x)1 f (x) + 1, g(x) f h(x) = 1, h(x) = a(x)1 .

124

KODAI IR IFRAI

Taigi Fp,n [x] su veiksmais +, f tikrai sudaro kun. Sudarytojo kuno elementus uraome daugianariais. Jeigu jau yra kunas, tai galima nagrineti ir daugianarius su koecientais i to kuno. Kartais tenka svarstyti, kaipgi suvokti tekste nurodyt ymeni f (x): kaip kuno element ar daugianari su koecientais i to kuno? Bandydami ivengti tokiu dviprasmybiu, sukonstruoto kuno elementams ymeti naudosime reikinius, gautus i daugianariu, pakeitus simboli x i , o kartais tiesiog suraydami Fp elementu rinkini: jei g Fp,n , tai

g(x) = a0 + a1 x + . . . + ak xk a0 + a1 + . . . + ak k (a0 , a1 , . . . , an1 );


ia al = 0, kai l > k. Sukonstruotame naudojant neskaidu n-osios eiles daugianari su koecientais i Fp kune yra pn elementu. Pats kunas Fp yra naujojo kuno dalis, taigi teisinga i kun pavadinti kuno Fp pletiniu. Taiau yra ne vienas neskaidus nojo laipsnio daugianaris. Koks ryys tarp kunu, gaunamu naudojant skirtingus to paties laipsnio daugianarius? Ji paaikinti galime pasinaudoj kunu izomorzmo svoka.

55 apibreimas. Tegu K1 ir K2 yra du kunai, kuriu sudeties ir daugybos operacijas ymesime +1 , 1 ir +2 , 2 . Kunus vadinsime izomorkais, jeigu egzistuoja abipus vienareikme atitiktis : K1 K2 , su visais a, b K1 tenkinanti slygas
(a +1 b) = (a) +2 (b); (a 1 b) = (a) 2 (b).

Izomorkus kunus galime isivaizduoti kaip objektus, sukonstruotus pagal t pati projekt, t. y. vieno prototipo kopijas. tai teiginys, nustatantis baigtiniu kunu visumos savybes:

66 teorema. Jeigu F yra baigtinis kunas, tai jo elementu skaiius yra pirminio skaiiaus laipsnis, t. y.
|F | = pn , p yra pirminis skaiius, n 1.

Visi tiek pat elementu turintys kunai yra izomorki. Taigi nesvarbu, koki neskaidu n-ojo laipsnio daugianari pasirinksime, sukonstruotas kunas i esmes bus tas pats. Todel ji ymesime tiesiog Fpn , arba Fq , pabredami, kad q yra pirminio skaiiaus laipsnis. Kartais baigtiniai kunai ymimi ir taip  GF (q), itaip primenant prancuzu matematik E. Galois', kurio darbai padare labai didel itak iuolaikines algebros raidai (GF - Galois elds, angl.). Visi kunai Fpn yra pagrindinio kuno Fp pletiniai, o koks ju tarpusavio ryys?

67 teorema. Jeigu naturinis skaiius d dalija n, tai egzistuoja kuno Fpn pokunis (poaibis, sudarantis kun), izomorkas Fpd .

8. BAIGTINIAI KUNAI IR TIESINES ERDVES Taigi, pavyzdiui, butu teisinga rayti

125

F3 F32 F34 F312 ,


taiau F34 F36  neteisinga. Kune Fp sudej p vienetu, gauname nuli: 1 + 1 + . . . + 1 = 0; kadangi Fp Fpm kiekvienam m, tai i lygybe teisinga visuose Fp pletiniuose. Jeigu sudetume p kitu elementu, taip pat gautume nuli:

a + a + . . . + a = (1 + 1 + . . . + 1) a = 0 a = 0,

a Fpm .

ia savybe kartais pasinaudosime. Pavyzdiui, i jos iplaukia viena lygybe, kuri taikyti realiesiems skaiiams butu tiesiog grubi klaida.

68 teorema. Su bet kokiais elementais , Fpm teisinga lygybe


( + )p = p + p .
I tikruju, i Niutono binomo formules gautume
n1

( + ) = +
i=1

i Cp i p1 + p .

i Taiau visi binominiai koecientai Cp dalijasi i p, todel jie atitinkamus demenis paveria nuliais. Sukonstrav kuno Fp pletini Fq (q = pm ), galime vel nagrineti daugianariu su koecientais i naujojo kuno erdv Fq [x]. Visi veiksmai ir savybes, kurios tinka daugianariams su koecientais i Fp , tinka ir erdves Fq [x] daugianariams.

8.5. Generuojantys elementai


Dar vienas poiuris i baigtini kun: ji sudaro nulis ir vieno nenulinio elemento laipsniu aibe!

Paymekime visu nenuliniu kuno Fq (q = pm ) elementu aib F . ios aibes q elementai daugybos veiksmo atvilgiu sudaro grup, ios grupes eile lygi |F | = q 1 = pm 1. Jeigu pasirinktume element F ir sudarytume q q jo laipsnius , 2 , 3 , . . . (51) gautume periodin elementu sek. ios sekos periodas  maiausias naturalusis skaiius m su kuriu m = 1. Elemento F eile vadinamas maiausias q naturalusis skaiius m, su kuriuo m = 1. Elemento eil ymesime o().

56 apibreimas.

126

KODAI IR IFRAI

Algebroje irodoma, kad bet kokio baigtines grupes elemento eile dalija grupes eil. Taigi bet kokiam nenuliniam elementui skaiius q 1 dalijasi i o(). Ne kiekviena baigtine grupe turi element, kurio eile yra pati didiausia, t. y. lygi grupes eilei. Taiau baigtiniams kunams pasiseke.

69 teorema. Aibeje F yra elementu, kuriu eiles lygios q 1. q


ie maksimali eil turintys elementai labai svarbus baigtiniu kunu tyrimuose ir taikymuose. Aibes F element , kurio eile lygi q 1, vadinsime q generuojaniu (arba primityviuoju) kuno Fq elementu. Generuojaniu elementu reikme yra akivaizdi: jeigu = yra generuojantis elementas, tai (51) seka prasideda visu F elementu eile, kuri toliau q kartojasi. Kitaip sakant, bet kuris nenulinis kuno elementas gali buti uraytas kaip generuojanio elemento laipsnis:

57 apibreimas.

= j ,

0 j < q 1.

Kaip rasti generuojanius elementus? I teiginio apie grupes elementu skaiiaus dalum i elementu eiliu i karto iplaukia toks kriterijus:

F tenkina slyg q

70 teorema. Jeigu kiekvienam q 1 dalikliui d (d < q 1) elementas


d = 1,

tai  primityvusis elementas. Pavyzdiui, patikrinkime, ar = 2 yra primityvusis elementas kune F23 . Kadangi 23 1 = 2 11, tai pakaks apskaiiuoti tik du laipsnius:

22 = 4,

211 = 2(25 )2 = 2 92 = 8,

taigi = 2 yra primityvusis elementas. Panagrinekime sudetingesni pavyzdi. Pasirink neskaidu vir F2 daugianari f (x) = x4 + x + 1, sukonstruokime kuno F24 kopij

0000 0001 0010 0011 0100 0101 0110

0 1 +1 2 2 + 1 2 +

1000 1001 1010 1011 1100 1101 1110

3 3 + 1 3 + 3 + + 1 3 + 2 3 + 2 + 1 3 + 2 +

0111 2 + + 1 1111 3 + 2 + + 1

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

127

Primename, kad kuno elementu sudeti galime atlikti visai paprastai  kaip dvejetainiu odiu sudeti (arba daugianariu sudeti sutvarkant gautji reikini), o daugybos veiksmo rezultat galime gauti sudaugin reikinius iprastu budu ir surad gautos sandaugos dalybos i 4 ++1 liekan. Galima skaiiuojant naudotis lygybe 4 + + 1 = 0, arba jai ekvivalenia lygybe 4 = + 1. Taigi pabandykime surasti primityvuji element. Ibandykime laim su elementu . Kadangi q 1 = 15 = 3 5, tai pakanka isitikinti, kad laipsniai 3 ir 5 nelygus 1. Del pirmojo laipsnio tai akivaizdu, o antrasis lygus

5 = 4 = ( + 1) = 2 + = 1.
Mums pasiseke. Galbut taip yra visada  elementas yra primityvusis elementas? Ne, taip buna ne visada.

58 apibreimas. Jeigu f (x) yra neskaidus vir kuno Fp daugianaris, o naudojantis juo sukonstruotame kune Fpr (r = deg(f ) > 1) elementas yra primityvusis, tai daugianaris f (x) pats vadinamas primityviuoju. Taigi kunuose, sukonstruotuose su primityviaisiais daugianariais, ilgai vargti iekant primityviojo elemento netenka. Taiau tenka pasidarbuoti iekant paties primityviojo daugianario. 71 teorema. Daugianariu erdveje Fp [x] egzistuoja bet kokio laipsnio r > 1 primityvieji daugianariai. r-ojo laipsnio daugianaris f (x) yra primityvus tada ir tik tada, kai jis nera jokio daugianario xm 1 su m < pr 1 daliklis. Todel visada galime sukonstruoti baigtinio kuno Fq kopij, kad jo nenuliniai elementai butu reikiami laipsniais j , j = 0, 1, . . . , q 2.

8.6. Minimalieji daugianariai


Kaip turint akni Fpr , rasti daugianari f (x) Fp [x], kad f () = 0? io udavinio sprendimas pravers konstruojant kodus, bet dar negreitai...

Jeigu sukonstravome kuno Fp pletini Fq (q = pm ), tai galime nagrineti daugianarius su koecientais i io kuno. Paymekime ju aib Fq [x]. Akivaizdu, kad Fp [x] Fq [x]. Kiekvien ios aibes daugianari f = a0 + a1 x + . . . + ar xr galime suvokti kaip funkcij f : Fq Fq :

a0 + a1 + . . . + ar r = f (),

Fq .

Jei f () = 0, element vadiname daugianario aknimi. Tada daugianaris f (x) dalijasi i x. Jeigu jis dalijasi i (x)m , bet nesidalija i (x)m+1 , sakome, kad daugianaris turi m vienodu (lygiu ) aknu, arba  aknies kartotinumas lygus m.

128

KODAI IR IFRAI Visiems baigtiniams kunams teisingas teiginys, kuri suformulavome kunui

Fp .

72 teorema. Daugianario f Fq [x] aknu skaiius ne didesnis u daugianario laipsni. Kadangi bet kurio nenulinio f Fq elemento eile dalija q 1, tai is elementas yra daugianario xq1 1 aknis. O apskritai visi, neiskiriant nei nulio, kuno elementai yra daugianario
g(x) = xq x
aknys. io daugianario koecientai yra 1 ir 1 (arba 1 ir p 1, jei norite), taigi g(x) Fp [x]. Taiau kas tinka visiems, nebutinai geriausiai tinka kiekvienam. Kuno elementai gali buti ir maesnio laipsnio daugianariu i Fp [x] aknys.

59 apibreimas. Minimaliuoju elemento Fq daugianariu vadinsime maiausiojo laipsnio daugianari m (x) i Fp [x] su vienetiniu vyriausiuoju koecientu, kad m () = 0. Kadangi yra daugianario m (x) aknis, tai is daugianaris turi dalytis i x , dalmuo bus daugianaris i Fq [x] :
m (x) = (x )g(x), g(x) Fq [x].

Jeigu Fp , tai m (x) = x ; jeigu yra primityvusis kuno Fq elementas, tai m (x) = xq1 1; o pats idomumas  kitais atvejais. Taigi norime itirti, kaip surasti elemento Fq minimaluji daugianari. Galime galvoti visai paprastai. Jeigu kuriam laikui pamirime elementu sandaug, tai kun Fpr galime sutapatinti su tiesine erdve Fp,r [x] (j sudaro ne didesnio kaip r-ojo laipsnio daugianariai). i aibe yra r-mate tiesine erdve vir Fp , vadinasi, bet kuris r + 1-o elemento rinkinys yra tiesikai priklausomas. Elementus 1, , 2 , . . . , r galime interpretuoti kaip ios erdves elementus. Vadinasi, turetu buti Fp elementai a0 , a1 , . . . , ar , kad

a0 + a1 + a2 2 + . . . + ar r = 0.
Surad tokiu elementu rinkini, kad paskutiniojo nenulinio koeciento aj numeris j butu kuo maiausias, gautume minimaluji daugianari

m (x) = a0 + a1 x + a2 x + . . . + aj xj .
Ibandykime i skaiiavimu bud su kunu F24 ir = 2 + 1; r. kuno elementu lentel ankstesniame skyrelyje. Tarkime, kunas buvo sudarytas su primityviuoju daugianariu f (x) = x4 + x + 1, taigi yra primityvusis elementas, galime naudotis lygybe 4 = + 1.

8. BAIGTINIAI KUNAI IR TIESINES ERDVES

129

1=1 = 2 + 2 = 4 + 2 = 2 + + 1

1 = 0001 = 0110 2 = 0111

3 = (2 + + 1)(2 + ) = 1 3 = 0001 4 = 4 = 0110

Dydiu 3 , 4 , matyt, neprireiks. Iekokime koecientu a0 , a1 , a2 Fp , kad butu a0 0001 + a1 0110 + a2 0111 = 0000. Tikrai netruksime juos surasti: a0 = a1 = a2 = 1. Taigi minimalus daugianaris yra m (x) = 1 + x + x2 . Dabar minimaliuosius daugianarius panagrinekime kitu poiuriu. Tegu elemento minimalus daugianaris yra

m (x) = a0 +a1 x+a2 x2 +. . .+aj xj , t. y. m () = a0 +a1 +a2 2 +. . .+aj j = 0.


Pakel pastarj lygyb laipsniu p ir pasinaudoj tuo, kad (u + v)p = up + v p ir wp = w, kai w Fp , gausime

m ( p ) = a0 + a1 p + a2 ( p )2 + . . . + aj ( p )j = 0.
Taigi elemento minimalaus daugianario m (x) aknis yra ir p , ir visi sekos

, p , ( p )p = p , p , p , . . .

(52)

skaiiai. Taiau ne visi jie skirtingi. Kiekgi ju yra? Paymekime b = o(), taigi m yra maiausias naturinis skaiius, su kuriuo b = 1. Tada (52) bus tiek skirtingu nariu, kiek skirtingu dalybos i b liekanu duoda skaiiai 1, p, p2 , . . . is skirtingu liekanu skaiius savo ruotu lygus maiausiam naturaliajam skaiiui m, su kuriuo

pm 1 (mod b).
Tada visi skaiiai , p , p , . . . , p dalysis i sandaugos
2 m1

bus skirtingi, o daugianaris m (x)


m1

(x )(x p ) (x p

).

Tiesa yra ta, kad minimalus daugianaris tiesiog lygus iai sandaugai.

73 teorema. Tegu Fpr , b yra io elemento eile, o m yra maiausias naturalusis skaiius, su kuriuo pm 1 (mod b). Tada minimalus elemento daugianaris yra
m (x) = (x )(x p ) (x p
m1

).

130

KODAI IR IFRAI

Ibandykime naujji minimalaus elemento skaiiavimo bud, vel imdami kun F24 ir = 2 + 1. Skaiiuodami jau isitikinome, kad b = 3. Dabar i 21 2 (mod 3) ir 22 1 (mod 3) gauname, kad m = 2. Taigi

m (x) = (x )(x 2 ) = (x (2 + ))(x (2 + + 1)) = x2 + x + 1.


Skaiiuoti reikia pasinaudojant lygybe 4 = + 1.

9. TIESINIAI KODAI

131

9 Tiesiniai kodai
Abecele kodu odiams sudaryti pasirinksime baigtini kun Fq , q = pm yra koks nors pirminio skaiiaus laipsnis, daniausiai  tiesiog pirminis skaiius, pavyzdiui, p = 2. Tada odiu aibe Fn yra tiesine erdve, joje galime naq grineti ivairius tiesinius poerdvius. tai pagrindinis io didelio skyriaus apibreimas: Tiesini erdves Fn odiu poerdvi L Fn vadinsime q q tiesiniu kodu. Jeigu io kodo dimensija yra k, o minimalus atstumas  d, sakysime, kad tai [n, k, d] kodas. Taigi bet kokio kodo parametrus ymime (n, N, d), o [n, k] ir [n, k, d]  tik tiesiniu kodu parametrus. Jei L yra abeceles Fq odiu [n, k, d] kodas, tai |L| = q k , o jo koecientas

60 apibreimas.

R(L) =

logq |L| k = . n n

Prisiminkime, kad kiekvienas tiesinis poerdvis turi sau dualu, todel tiesiniai kodai pasirodo poromis. Tiesiniam kodui L Fn dualiuoju kodu vadinsime q tiesini poerdvi L Fn . Jeigu L = L , kod L vadinsime savidualiu. q Tiesinio poerdvio ir jam dualaus poerdvio dimensijos yra susijusios lygybe: dim(L) + dim(L ) = n. Savidualaus kodo atveju 2dim(L) = n, todel savidualiu kodu galime rasti tik lyginio ilgio odiu aibese. Greitai pamatysime, kaip tiesiniu kodu struktura galima pasinaudoti koduojant duomenis ir taisant ivykusias klaidas. Butu gerai, jeigu geruju kodu sekoje, kurios egzistavim garantuoja Shannono teorema, atsirastu ir tiesiniu kodu... Tokie norai yra visikai igyvendinami. Galima irodyti, kad Shannono kodu sek imanoma sudaryti vien tik i tiesiniu kodu!

61 apibreimas.

9.1. Kodavimas tiesiniais kodais


Tiek demesio skyr baigtiniams kunams ir tiesinems erdvems, pradedame naudotis ju teikiamais patogumais. Pirmiausia aptarsime kodavim...

Tegu L yra tiesinis [n, k] kodas. Kad ji apibretume, nebutina surayti visus jo odius, kuriu yra q k . Pakanka nurodyti tuos odius a1 , . . . , ak , kurie sudaro L kaip tiesinio Fn poerdvio baz. q Tegu L Fn yra tiesinis [n, k] kodas. Kuno Fq q elementu k n matric G vadinsime generuojania kodo L matrica, jei n ilgio odiai, gauti suraant matricos G eiluiu elementus, sudaro kodo L baz.

62 apibreimas.

132

KODAI IR IFRAI

Jeigu inome [n, k] kodo L generuojani matric G, tai visus kodo L odius ir tik juos gauname imdami generuojanios matricos eiluiu kombinacijas: L = {xG : x Fk }; (53) q ia xG reikia odio, kaip vektoriaus-eilutes, ir matricos sandaug. Panagrinekime (53) sryi. Atvaizdis

x xG
apibreia abipusikai vienareikm erdves Fk ir kodo L odiu atitikti. Tad q i priskyrim galime interpretuoti kaip altinio informacijos, pateikiamos erdves Fk odiais, kodavim kodo L odiais. q Tik itoki kodavimo bud ir naudosime iame skyriuje. Taiau kodo generuojanti matrica nera vienintele. Skirtingas generuojanias matricas atitinka skirtingi kodavimo budai. Informacijos gavejui turi buti praneta, koki generuojani matric naudoja siuntejas. Tada pagal kodo odi y gavejas, pasinaudojs sryiu y = xG, gales surasti altinio siust odi x. Pavyzdys. Kodavimui naudojamas dvinaris tiesinis [4, 3] kodas su generuojania matrica 1 1 0 0 G = 0 1 1 1 . 1 0 1 0 Tegu altinis perdave toki i nuliu ir vienetu sudaryt informacijos sraut:

110 010 001 111 101 010 . . .


Tada kanalu siusime toki simboliu sek:

1011 0111 1010 0001 0110 0111 . . .


Taigi kodavimas tiesiniais kodais  dalykas nesudetingas. Taiau, atitinkamai parinkus generuojani matric G, ji dar labiau galima suprastinti.

63 apibreimas. Tegu G yra kuno Fq elementu k n matavimu matrica. Elementariaisiais matricos G pertvarkiais vadinsime iuos veiksmus:
dvieju eiluiu (arba stulpeliu) keitim vietomis; eilutes daugyb i f Fq , f = 0; eilutes keitim jos bei kitos eilutes suma; stulpelio daugyb i f Fq , f = 0.

9. TIESINIAI KODAI

133

Jei matrica G yra tiesinio [n, k] kodo L generuojanti matrica, o matrica G gaunama i G, atlikus elementariuju pertvarkiu sek, tai G yra taip pat tam tikro tiesinio [n, k] kodo L generuojanti matrica. Tegu G yra tiesinio kodo L generuojanti matrica, o G yra matrica, gauta i G, atlikus elementariuju jos pertvarkiu sek. Tada G yra kodo, ekvivalentaus L, generuojanti matrica. Isitikinti, kad is teiginys teisingas, galima prisiminus ekvivaleniuju kodu apibreim ir supratus, kaip keiiasi kodas, kai atliekame vien jo generuojanios matricos pertvarki. Dabar prisiminkime tiesines algebros patirti. Jei G yra [n, k] kodo generuojanti matrica, tai atitinkamais elementariaisiais pertvarkiais i jos galima gauti tokio pavidalo matric: 1 0 . . . 0 a1,1 . . . a1,nk 0 1 . . . 0 a2,1 . . . a2,nk G = . . . (54) . . . = (Ik , A); .. . . . . .. . . . . . . . 0 0 . . . 1 ak,1 . . . ak,nk ia: Ik yra vienetine k k matrica, A  kuno Fq elementu k (nk) matrica. Susitarsime sakyti, jog (54) matrica yra standartinio pavidalo. I teoremos apie generuojanios matricos pertvarkius galime daryti toki ivad: Kiekvienas [n, k] kodas yra ekvivalentus [n, k] kodui, turiniam standartinio pavidalo generuojani matric. Bet koki tiesini kod galime pakeisti jam ekvivaleniu kodu, turiniu standartinio pavidalo generuojani matric. Todel pakanka nagrineti tik tokius kodus. Pastebekime, jog kodavimo algoritm, kai naudojama standartinio pavidalo generuojanti matrica G = (Ik , A), galima urayti itaip:

74 teorema.

75 teorema.

x xy, y = xA,
taigi koduojami odiai tiesiog pailginami pridedant nk kontroliniu klaidoms taisyti skirtu simboliu. Toks kodavimas, kai koduojamu simboliu odis tiesiog pailginamas pridedant papildomus klaidoms taisyti reikalingus simbolius, vadinamas sisteminiu. Sisteminio kodavimo atveju, maiau vargo turi ir informacijos gavejas. Kad nustatytu, kokie simboliai reikia tikrj informacij, jam pakanka sutrumpinti kodo odi, nubraukiant pridetus simbolius. Taigi veiksmai su odiais suteikia galimyb naudoti efektyvesnius kodavimo algoritmus. Tai tik vienas i daugelio tiesiniu kodu privalumu. tai dar vienas  efektyviau negu bendruoju atveju galima skaiiuoti tiesinio kodo minimalu atstum.

134

KODAI IR IFRAI

skaiiu

64 apibreimas.

odio x Fn , x = x1 . . . xn , svoriu vadinsime q

w(x) =
xi =0

1.

odio svoris  tiesiog nenuliniu jo komponeniu skaiius. Tik vienas odis nieko nesveria, t. y. jo svoris lygus nuliui: w(00 . . . 0) = 0; kitu odiu svoriai ne maesni u 1.

76 teorema. Tegu d yra tiesinio kodo L minimalus atstumas. Tada


d = min{w(x) : x L, x = 00 . . . 0}.
Hammingo atstum. Tada bet kokiam x L, x = 00 . . . 0,

Irodymas. Tegu 0 = 00 . . . 0  nulinis odis; h kaip ir anksiau ymime


d h(0, x) = w(x),
todel d min{w(x) : x L, x = 00 . . . 0}.

Tegu dabar d = h(x, y), x, y L . Kadangi x y L, tai

d = h(x, y) = h(0, x y) = w(x y), x y = 0, d min{w(z) : z L, z = 00 . . . 0}.

Teorema irodyta. Jei kodas turi N odiu, tai, iekant jo minimalaus atstumo tiesiogines perrankos budu, gali tekti periureti N (N 1)/2 odiu poru. i teorema teigia, kad tiesiniu kodu atveju pakanka pasverti N 1 odiu.

9.2. Kontroline tiesinio kodo matrica


Kartais aib apibreiame ivardydami elementus, kurie jai priklauso, kartais  formuluodami reikalavimus, kuriuos turi tenkinti elementai, kad juos priimtume i aib. Tai tinka ir tiesiniams kodams. Abu budai turi savu privalumu...

Prisiminkime, kad tiesiniai poerdviai  taigi ir kodai  pasirodo poromis. Tegu L Fn yra tiesinis [n, k] kodas; tada jam dualaus kodo L parametrai p yra [n, n k]. Tegu g1 , g2 , . . . , gk yra kodo L baze, o h1 , h2 , . . . , hnk yra kodo L baze. Tada k n matrica G, gauta suraius odiu gi elementus i eilutes, bus generuojanti kodo G matrica, o (nk)n matrica H, gauta i hi eiluiu  generuojanti H matrica. Kod L sudaro jo bazes odiu tiesines kombinacijos:

L = {xG : x Fk }, p

9. TIESINIAI KODAI taiau ji galime apibreti ir naudodami dualaus kodo baz:

135

L = {x : x Fn , x hj = 0, j = 1, 2, . . . , n k}. p

(55)

Pastebekime, kad visas (55) lygybes, kurias turi tenkinti kodo odis x, galime urayti taip: xH T = O1,nk , ia O1,nk yra eilute, sudaryta i n k nuliu; j galime interpretuoti kaip nulini erdves Fnk odi. p

H , kuri tenkina slyg

65 apibreimas.

Tegu L yra tiesinis [n, k] kodas. (n k) n matric

L = {x : xH T = O1,nk },
vadinsime kodo L kontroline matrica. Kontrolines tiesinio kodo L matricos  tai dualaus kodo L generuojanios matricos; generuojanios kodo L matricos yra kontrolines L matricos. Tiesinis kodas yra visikai apibretas, jeigu nurodyta arba jo generuojanti arba kontroline matrica. Pavyzdys. Sudarykime matric i vienos eilutes:

H = (h1 h2 . . . hn ),

hj Fp ,

hj = 0.

i matrica yra kontroline [n, n 1] kodo K matrica. Kodui priklauso tie odiai x = x1 , x2 , . . . , xn , kurie tenkina lygyb

h1 x1 + h2 x2 + . . . + hn xn = 0.

(56)

Kodavimas iuo kodu  tai informaciniu simboliu eilutes papildymas dar vienu simboliu (kontroliniu):

x1 x2 . . . xn1 x1 x2 . . . xn1 xn ,

xn = (h1 h1 x1 + . . . + hn1 h1 xn1 ). n n

Nesunku nustatyti, kad minimalus kodo K atstumas yra d = 2, taigi jis negali itaisyti nei vienos klaidos. Taiau visada gali vien klaid aptikti! Toki kod pavadinkime kodu su kontroliniu simboliu. Pavyzdiai. Brukniniai kodai  tai kodai su kontroliniu simboliu. Juodu ir baltu juostu seka uraomi atitinkamos abeceles simboliai. Pavyzdiui, knygu ymejimo sistema ISBN  tai kodas su abecele

A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, X},
ia X ymi skaiiu 10. Informacija apie knyg uraoma devyniais ios abeceles simboliais, suskirstytais i tris grupes: pirmoji simboliu grupe ymi ali,

136

KODAI IR IFRAI

antroji  leidykl, treioji  knyg. Devyniu simboliu odis papildomas deimtuoju  kontroliniu. Kontroline lygybe tokia:

X x1 + 9 x2 + 8 x3 + 7 x4 + 6 x5 + . . . + 2 x9 + 1 x1 0 (mod 11).
Pavyzdiui, ISBN - 9986-16-180-0 yra knygos, ileistos Lietuvoje (9986  Lietuvos kodas), Tyto alba leidykloje (leidyklos kodas  16). Nuo 2007 metu ileidiamos knygos bus ymimos abeceles

A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
trylikos skaitmenu kodu. Taip sistemoje EAN (European Article Numeration) enklinamos prekes. Kontroline lygybe

1 x1 + 3 x2 + . . . + 3 x12 + 1 x13 0 (mod 10).


Kodo, dualaus kodui su kontroliniu simboliu parametrus taip pat nesunku nustatyti. Jie tokie  [n, 1, n]. Kaip, inant generuojani [n, k] kodo matric G, surasti kontrolin matric H ? Pastebekime, kad i kontrolines matricos apibreimo iplaukia toks generuojanios ir kontrolines matricu ryys:

G H T = Ok,nk .

(57)

Taigi jei k n matrica G yra kodo generuojanti matrica, tai bet kuri (n k) n matrica, sudaryta i tiesikai nepriklausomu eiluiu ir tenkinanti (57), bus io kodo kontroline matrica. Kontrolin matric paprasta surasti, jeigu kodas turi standartinio pavidalo generuojani matric. janti matrica. Tada matrica

77 teorema. Tegu G = (Ik , A) yra tiesinio [n, k] kodo L Fn generuop


H = (AT , Ink )

yra kontroline io kodo matrica. Norint irodyti i teigini, reikia isitikinti, kad teisinga lygybe

G H T = (Ik , A)

A Ink

= Ok,nk .

Patarimas toks: usiraykite matricas, pavyzdiui, kai k = 3, n = 5 ir patikrinkite lygyb. Kaipmat suprasite, kur uo pakastas! Minimalu tiesinio kodo atstum galima surasti periurejus kodo odiu svorius. Taiau yra dar paprastesnis budas!

78 teorema. Tegu H yra tiesinio kodo L kontroline matrica. Jeigu egzistuoja d tiesikai priklausomu H stulpeliu, o bet kuri d 1 ios matricos

9. TIESINIAI KODAI

137

stulpeliu sistema yra tiesikai nepriklausoma, tai minimalus kodo atstumas lygus d. Irodymas. Tegu x yra kodo L odis, w(x) = d, ia d yra minimalus kodo atstumas. Toks odis tikrai egzistuoja. Kadangi H yra kontroline kodo matrica, tai xH T = 0. I ios lygybes iplaukia, jog matrica H T turi d tiesikai priklausomu eiluiu, o H  d tiesikai priklausomu stulpeliu. Ir atvirkiai: jei H turi w tiesikai priklausomu stulpeliu, tada egzistuoja odis x Fn , jog w(x) = w ir xH T = 0. Taigi x L. Vadinasi, minimalus q teigiamas kodo odiu svoris (kartu ir minimalus kodo atstumas) sutampa su maiausiu tiesikai priklausomu kontrolines matricos stulpeliu skaiiumi.

9.3. Sindromai, lyderiai ir dekodavimas


Gautu i kanalo odiu dekodavimas  tarsi ligonio gydymas. Pirmiausia nustatomi ligos poymiai (sindromai), tada paskiriamas vaistas. Panagrinekime, kaip tai daroma.

Geriau neinoti, nei suinoti neties. Trynimo klaidas lengviau taisyti nei ikraipymus. Tarkime, kodavimui naudojamas [n, k] tiesinis kodas C Fn q su kontroline (n k) n matavimu matrica H, kurios elementus ymesime hij . Jeigu c = c1 c2 . . . cn yra kodo odis, tai cH T = 0. i matricin lygyb galime urayti kaip lygybiu sistem

h11 c1 + h12 c2 + . . . + h1n cn = 0, h21 c1 + h22 c2 + . . . + h2n cn = 0, ......... hnk,1 c1 + hnk,2 c2 + . . . + hnk,n cn = 0.
Tarkime, kad perdavimo kanalas simboliu neikraipo, taiau gali itrinti. Tada vietoj odio c = c1 c2 c3 . . . cn gausime, pavyzdiui, d =?c2 ? . . . cn . Dekodavimo, t. y. itrintu simboliu iekojimo, metodas kone akivaizdus  perduotas simboliu reikmes reikia istatyti i sistemos lygybes, o itrintu simboliu vietoje  neinomuosius; pavyzdyje  x1 , x3 , . . . itaip gausime tiesiniu lygiu sistem. Jeigu ji turi vieninteli sprendini, trynimo klaidas itaisysime. Ikraipymo klaidas taisyti sunkiau. Aptarkime tiesiniu kodu dekodavim, kai kanalas ikraipo simbolius. Dekoduodami taikysime minimalaus atstumo taisykl. Tegu L Fn yra tiesinis [n, k] kodas. Suskaidysime odiu erdv Fn q q sluoksniais

Lx = x + L = {x + c : c L},

x Fn . q

138

KODAI IR IFRAI

Aibes Lx , Ly i tikruju yra sluoksniai, t. y. skirtingiems x, y Fn jos arba q nesikerta, arba sutampa. Paymekime sluoksniu aib

Fn /L = {Lx : x Fn }. q q
Pastebekime, kad tu sluoksniu yra lygiai tiek: |Fn /L| = q nk . q Tarkime, informacija koduojama kodu L. Tegu siuniant odi c, kitame kanalo gale buvo gautas odis x, kuris galbut skiriasi nuo siustojo. Taikydami minimalaus atstumo taisykl, i odi dekoduosime kodo odiu c, kuris tenkina slyg h(c, x) = w(x c) = min w(x c ).
c L

Taiau odis a = x c yra kuriame nors sluoksnyje Lb  tame paiame kaip x. Vadinasi, dekoduojant reikia periureti sluoksni Lb , kuriame atsidure gautas odis x, rasti jame maiausi svori turinti element a ir dekoduoti taip: x f (x) = x a. Dekodavimui reikia pasirengti. Sunumeruokime kodo L odius taip, kad odis 0 = 00 . . . 0 butu pirmas: L = {c0 , c1 , . . . , cN }, c0 = 0, N = q k 1. Visus Fn elementus suraysime tokioje matricoje-lenteleje: q

a1 a1 + c1 a1 + c2 . . . a1 + cN . . . . .. . . . . . . . . . as as + c1 as + c2 . . . as + cN a0 c1 c2 ... cN

(58)

Pirmojo stulpelio odius ai parenkame taip, kad butu patenkintos slygos: a0 = 0, w(ai ) = min w(a) : a Fn , a Laj , j 1. q
j<i

is (58) matricos sudarymo budas garantuoja, jog kiekvienoje eiluteje bus surayti atitinkamos klases La elementai, o pirmasis i ju tures maiausi svori. Matric (58) vadinsime standartine kodo L lentele, o odius ai  atitinkamu klasiu lyderiais. Turint standartin kodo lentel, dekodavimo algoritm galima aprayti taip:

randame, kurioje standartines lenteles eiluteje yra gautasis odis x; randame ios eilutes lyderi a ir dekoduojame x odiu f (x) = x a .

9. TIESINIAI KODAI

139

Ar, naudojantis tokiu algoritmu, bus visada dekoduojama teisingai? Ar visi sluoksniai turi tik po vien lyderi? Nebutinai. Taiau jeigu kodo minimalus atstumas yra d ir perduodant ivykusiu klaidu skaiius ne didesnis u t = d1 , tai i kanalo gautas odis butinai pateks i toki sluoksni, kuriame 2 lyderis tik vienas ir dekoduojama bus teisingai. Galime sumainti standartin kodo lentel, ibraukydami tuos sluoksnius, kurie turi ne po vien lyderi. Tada kiekvienam gautam i kanalo odiui turetume dvi galimybes: arba jis priklausytu vienam i sluoksniu, arba nepriklausytu nei vienam. Antruoju atveju inotume, kad minimalaus atstumo taisykle neduoda vienareikmio atsakymo. Galime isivaizduoti, kad ikraipymai kanale ivyksta taip:

c c + e,

c L,

e Fn , q

ia e yra klaidu odis. Jeigu standartineje kodo lenteleje palikome tik tuos sluoksnius, kurie turi po vien lyderi, tai pirmajame jos stulpelyje bus surayti visi klaidu odiai e, kuriems ivykus dekoduojama teisingai. Taigi lyderiai yra tas pats kaip itaisomu klaidu odiai. Visi kiti lenteles stulpeliai sudaryti i odiu, kurie dekoduojant keiiami kodo odiu, uraytu stulpelio viruje. Aibes, sudarytos i vieno stulpelio odiu, vadinamos dekodavimo sritimis. Galima isivaizduoti, kad dekodavimo sritis yra tarsi atitinkamo kodo odio aplinka ar traukos sritis... Dekodavim, naudojantis standartine lentele, galima dar labiau suprastinti. Ities, jeigu rastume bud nustatyti, kurioje lenteles eiluteje yra gautas odis, pakaktu pasinaudoti tik pirmuoju standartines lenteles stulpeliu. Tegu H yra kontroline kodo L matrica. Jei c yra kodo L odis, tai cH T = 0. Jei x = aj + c, tai xH T = aj H T . Taigi sandaugos xH T , x Fn , q reikme priklauso tik nuo to, kuriai aibes Fn /L klasei priklauso x. q

66 apibreimas. Tegu H yra [n, k] kodo L kontroline matrica, n . odio x sindromu vadinsime Fnk element s(x) = xH T . x Fq q

Skirtingiems aibes Fn /L sluoksniams priklausaniu odiu sindromai yra q skirtingi. Taigi graikikos kilmes odis sindromas, kuris gydytojams reikia ligos poymius, kodavimo teorijoje turi panai prasm  jis nusako ikraipymu pobudi. Kadangi skirtingiems sluoksniams priklausanius odius atitinka skirtingi sindromai, tad dekoduojant pagal minimalaus atstumo taisykl, pakanka tureti prie akis toki lentel: Sindromai Lyderiai

s1 a1

s2 a2

... ...

sm am .

Dabar pirmj urayto dekodavimo algoritmo dali galime formuluoti taip:

140

KODAI IR IFRAI

randame gautojo odio sindrom. Sindromui rasti pakanka moketi


padauginti vektoriu i kontrolines matricos. Jeigu minimalus kodo atstumas yra d, tai visi klaidu odiai, priklausantys rutuliui B(0, t), ia 0 = 00 . . . 0, t = [(d 1)/2], yra itaisomi. Taiau gali buti itaisomi ir kai kurie kiti klaidu odiai, t. y. dekodavimo srityse gali buti daugiau odiu negu rutulyje B(0, t). Pavyzdys. Nagrinekime tiesini kod i dvejetaines abeceles odiu, kurio generuojanti matrica yra 1 0 0 1 1 1 G = 0 1 0 0 1 0 . 0 0 1 1 1 0 Kodo kontroline matrica yra

1 0 1 1 0 0 H = 1 1 1 0 1 0 . 1 0 0 0 0 1
I kontrolines matricos matyti, kad minimalus kodo atstumas yra d = 2 ir kodas negarantuoja, kad bus itaisyta ir viena klaida. Taiau klaidu odiu, kurie teisingai itaisomi, yra. tai jie:

100000, 001000, 000100, 000001.


Taigi io kodo dekodavimo sritis sudaro odiu penketai. Jeigu, siuniant odi kanalu, jame ivykusiu klaidu skaiius yra didesnis negu garantuotai taisomu klaidu kiekis, tai galimi trys atvejai:

klaidos liks nepastebetos; klaidos bus pastebetos ir itaisytos; klaidos bus pastebetos, bet neitaisytos.
Tegu odiai siuniami kanalu, neturiniu atminties, kuris kiekvien simboli ikreipia su tikimybe p. Kokia tikimybe, kad, siuniant tiesinio kodo L Fn q odi (pavyzdiui, nulini odi 0), ivykusios klaidos bus nepastebetos? Gav odi, klaidos nepastebesime, jeigu jis bus kodo odis:

0 0 + e = e,

e L.

Todel kanalas turi tiek galimybiu nepastebimai ikreipti siuniam odi, kiek yra nenuliniu kodo odiu. Tarkime, perdavimo kanalas siuniam simboli

9. TIESINIAI KODAI

141

ikreipia i kit su ta paia tikimybe, t. y. kanalo tikimybes p(b|a) = p, a = b. Tada tikimybe, kad siuniamas simbolis bus perduotas teisingai, lygi 1(q 1)p. Paymekime:

Ai = |{c L : w(c) = i}| ,

i = 0, 1, . . . , n.

Taigi Ai yra kodo odiu, kuriu svoris lygus i, skaiius. Tikimybe, kad ivykusios klaidos bus nepastebetos, lygi:
n

P (L odio ikraipymai bus nepastebeti) =


i=1

Ai pi (1 (q 1)p)ni .

Paymekime standartines kodo lenteles, i kurios ibraukti sluoksniai su ne vieninteliais lyderiais, lyderius: a0 , a2 , . . . , am , ia a0 = 00 . . . 0. Tegu

i = |{aj : w(aj ) = i}| ,

i = 0, . . . , n.

Tada tikimybe, kad dekodavimo algoritmas duos teising atsakym, lygi:


n

P (L odis bus dekoduotas teisingai) =


i=0

i pi (1 (q 1)p)ni .

9.4. Hammingo kodu eima


Gritame prie to, nuo ko pradejome  prie Hammingo kodo. Ten, kur anksiau mateme tik vien ger kod, dabar rasime vis begalin kodu eim!

Dvejetaines abeceles kodas, kuri nagrinejome paioje pradioje, taiso lygiai vien klaid. Jo minimalus atstumas d = 3. Iekosime daugiau tokiu kodu. Fiksuosime dar vien iekomu kodu parametr  dualaus kodo dimensij. Taigi iekosime daugiausiai abeceles Fq odiu turinio tiesinio kodo, jeigu i anksto duota jo dualaus kodo dimensija r ir minimalus atstumas d = 3. Tokio kodo kontroline matrica H turi tureti r eiluiu, o bet kurie du jos stulpeliai turi buti tiesikai nepriklausomi. Tai reikia, kad nei vienas stulpelis negali buti gaunamas i kito, padauginus pastarji i Fq . Sudarysime H , imdami tiek stulpeliu, kiek tik yra imanoma. Pasirinkime i aibes V1 = Fr nenulini odi s1 ir sudarykime i jo elementu q pirmji H stulpeli. Apibrekime aib

V2 = V1 \{s1 : Fq }.
Antrji H stulpeli sudarykime i pasirinkto aibes V2 odio elementu. Bendra stulpeliu pasirinkimo taisykle tokia:

142

KODAI IR IFRAI

jeigu m-asis matricos H stulpelis sudarytas i odio sm Vm komponeniu, sudarykime aib Vm+1 = Vm \{sm : Fq }
ir, jeigu i aibe nera tuia, pasirinkime i jos odi sm+1 . Jeigu Vm+1 = , matricos H sudarym ubaikime. Visu pirma pastebekime, jog gautos matricos H eilutes yra tiesikai nepriklausomos, t. y. matricos rangas lygus r. Ities tegu f1 , . . . , fr yra tiesikai nepriklausomi aibes Fr odiai. Tada egzistuoja i Fq , i = 0, kad q odiai 1 f1 , . . . , r fr buvo atitinkamuose ingsniuose pasirinkti. Taigi matrica H turi r tiesikai nepriklausomu stulpeliu, todel ir eilutes yra tiesikai nepriklausomos. Kiek stulpeliu parenkama tokiu budu? Kadangi

|V1 | = q r , |Vm | = q r 1 (m 1)(q 1), m 2,


tai i viso galima parinkti n = (q r 1)/(q 1) stulpeliu. Taigi matrica H yra kontroline tiesinio [n, n r, 3] kodo matrica. Tegu r 1, n = (q r 1)/(q1). Tiesinius [n, nr, 3] kodus i Fq abeceles odiu vadinsime Hammingo kodais ir ymesime Hq (r). Jau minejome, kad kodai su tokiais parametrais yra tobuli.

67 apibreimas.

slyg:

79 teorema. Hammingo kodai yra tobuli. Irodymas. Prisiminkime butin ir pakankam (n, N, d) kodo tobulumo
n

N Vq (n, t) = q ,

d1 , t= 2

Vq (n, t) =
i=0

t Cn (q 1)t .

Hammingo kodui su parametrais [n, n r, 3] i slyga uraoma taip:

q nr (1 + n(q 1)) = q n ,

q nr 1 +

qr 1 (q 1) q1

= qn.

Taigi Hammingo kodai yra tobuli. Kodai H2 (r) yra geriausiai inomi Hammingo kodai, H2 (3)  tai klasikinis musu nagrinetas Hammingo kodas. Kodu H2 (r) kontrolines matricas labai paprasta sudaryti. Suraykime pirmuju 2r 1 naturaliuju skaiiu skleidiniu dvejetaineje sistemoje elementus i matricos stulpelius. Gautoji r (2r 1) matrica yra kontroline kodo H2 (r) matrica. Pavyzdiui, kontroline kodo H2 (3) matrica yra 0 0 0 1 1 1 1 H = 0 1 1 0 0 1 1 . 1 0 1 0 1 0 1

9. TIESINIAI KODAI

143

Dvinariu Hammingo kodu dekodavimas taip pat labai paprastas. Imkime jau minetu budu sudaryt H2 (r) kodo kontrolin matric H . Jeigu siustas kodo odis c siuntimo metu buvo i-oje pozicijoje ikraipytas, tai gautasis odis yra x = c + ei ; ia ei yra odis, kurio visos komponentes, iskyrus i-j, lygios nuliui. Raskime x sindrom:

xH T = ei H .
Sindromas ei H T sudarytas i tu paiu simboliu kaip ir matricos H i-asis stulpelis. Perskait ei H T kaip naturaluji skaiiu, urayt dvejetaineje sistemoje, gauname reikm i, t. y. neteisingai perduotos odio komponentes numeri. Tokiu budu gavejas gali nustatyti t kodo odi, kuris buvo siustas. Kodai, dualus Hammingo kodams vadinami, simplekso kodais. Paymekime Sq (r) = H2 (r) .

80 teorema. Simplekso kodu Sq (r) parametrai yra


qr 1 , r, q r1 . q1
Atstumas tarp bet kuriu kodo Sq (r) odiu lygus q r1 . Jeigu atstumas tarp bet kuriu dvieju tam tikros aibes taku yra pastovus, tai tokia aibe geometrijoje vadinama simpleksu. Suformuluotoji teorema paaikina, kodel kodai, dualus Hammingo kodams, vadinami simplekso kodais. Irodymas. Kodo Sq (r) odiai  tai matricos H eiluiu tiesines kombinacijos. Pakanka irodyti, kad visu kodo Sq (r) odiu (iskyrus nulini) svoriai lygus q r1 . Kitaip tariant  kiekviena Hammingo kodo kontrolines matricos H eiluiu tiesine kombinacija turi lygiai q r1 nenuliniu elementu. Paprasiausia tuo isitikinti, kai q = 2. Tada i H stulpelius yra surayti visi nenuliniai r ilgio dvejetainiai odiai. Jeigu pridetume dar ir nulini stulpeli, tai gautume visus aibes Fr odius. Jeigu pasirinktume i-j H 2 eilut, tai butu tas pats, kas periureti visus Fr odius ir usirayti i-sias 2 komponentes. Gautume 2r1 vienetu ir tiek pat nuliu. Taigi matricos H kiekvienos eilutes svoris lygus 2r1 . Lieka isitikinti, kad bet kokios iu eiluiu tiesines kombinacijos svoris irgi toks pat. Jeigu, pavyzdiui, prie pirmosios H eilutes pridesime kelias kitas matricos eilutes, gausime nauj matric, kuri irgi bus generuojanti kodo Sq (r) (ir kontroline H2 (r)) matrica. Tarkime, pirmojoje ios matricos eiluteje yra daugiau kaip 2r1 1 nuliu (tada i ios eilutes elementu sudarytas kodo odis sveria maiau kaip 2r1 . Nagrinekime tuos H stulpelius, kuriu elementai pirmojoje eiluteje lygus 0. Kadangi tokiu stulpeliu yra bent 2r1 ir visi jie nenuliniai, tai atsiras du vienodi stulpeliai. Taiau tada matrica negali buti kontroline kodo H2 (r) matrica, nes io kodo minimalus atstumas lygus 3. Taigi kodo odis negali sverti maiau kaip 2r1 . Panaiai galime isitikinti, kad daugiau sverti kodo odiai irgi negali.

144

KODAI IR IFRAI

Kiek pakeitus iuos samprotavimus, galima irodyti teigini ir atveju q > 2. Kadangi simplekso kodo nenuliniu odiu svoriai vienodi, tikimybes, kad siusto odio ikraipymai bus nepastebeti, iraika labai paprasta. Pavyzdiui, pasinaudoj (9.3.)

P (S2 (r) odio ikraipymai bus nepastebeti) = (2r 1)p2

r1

(1 p)2

r1 1

ia p  vieno simbolio ikraipymo tikimybe simetriniame be atminties kanale. Savo ruotu paprasta urayti kodo H2 (r) odio teisingo dekodavimo tikimyb:

P (H2 (r) odis bus dekoduotas teisingai) = (1p)2

r 1

+(2r 1)p(1p)2

r 2

Noredami urayti klaidos nepastebejimo tikimyb kodui H2 (r), turetume nustatyti, kokio svorio odiu jis turi, t. y. rasti dydius

Ai = |{c H2 (r) : w(c) = i}| ,

i = 0, 1, . . . , n.

inome, kad A0 = 1, A1 = A2 = 0. Kitus dydius galima skaiiuoti pasinaudojant rekurentiniu sryiu. lygyb

81 teorema. Hammingo kodo H = H2 (r) dydiai Ai tenkina rekurenij


i1 iAi = Cn Ai1 (n i + 2)Ai2

(i 2, n = 2r 1).

matricos H m stulpeliu tiesine kombinacija, kuri lygi nuliniam stulpeliui. Ir atvirkiai: jei, sudej m kontrolines matricos stulpeliu, gauname nulini stulpeli, tai i sum atitinka vienintelis kodo odis su svoriu m. Parinkime i1 i 1 matricos H stulpeliu, tai galima padaryti Cn budais. Galimi trys atvejai: 1. stulpeliu suma yra nulinis stulpelis; 2. stulpeliu suma lygi vienam i pasirinktu stulpeliu; 3. stulpeliu suma lygi vienam i nepasirinktu stulpeliu. Skirtingu pasirinkimu, atitinkaniu 1) atveji, yra Ai1 , atitinkaniu 2)  (n i + 2)Ai2 ir atitinkaniu 3) atveji  iAi . Taigi
i1 Cn = Ai1 + (n i + 2)Ai2 + iAi .

Irodymas. Kiekvien H odi x su svoriu w(x) = m atitinka kontrolines

Pavyzdiui, kodui H2 (3) turime

(A0 , A1 , A2 , A3 , A4 , A4 , A6 , A7 ) = (1, 0, 0, 7, 7, 0, 0, 1).

9. TIESINIAI KODAI

145

9.5. Maksimalaus atstumo kodai


Kaip sukonstruoti maksimalu kod  sudetingas klausimas. Vis delto tai kartais pavyksta. Ir gana lengvai! Suinosite, kaip t padaryti, jeigu perskaitysite skyreli iki galo.

Prisiminkime Singletono iverti: jeigu C An yra (n, N, d) kodas, tai q

N q nd+1 .
Tegu Aq = Fq , o L yra tiesinis [n, k, d] kodas. Tada jis turi q k odiu ir i Singletono iverio gauname

q k q nd+1 ,

d n k + 1.

Jeigu tiesiniam kodui teisinga lygybe d = nk+1, tai kodas yra maksimalus; t. y. daugiau odiu neturi joks kitas kodas, turintis t pati minimalu atstum.

68 apibreimas. Tiesini [n, k, d] kod vadinsime maksimalaus atstumo kodu, jeigu teisinga lygybe
d = n k + 1.
Ar maksimalaus atstumo kodai egzistuoja? tai paprastas teikiantis viliu atsakymas: bet kokio kuno Fq atveju egzistuoja tiesiniai [n, n, 1], [n, 1, n] ir [n, n 1, 2] kodai. Akivaizdu, kad kodai su tokiais parametrais yra maksimalaus atstumo kodai. Galbut nera visai aiku, kaip sudaryti kod su parametrais [n, n 1, 2]. tai uuomina. Imkime visus erdves Fn1 odius q ir pailginkime juos vienu simboliu:

x1 x2 . . . xn1 x1 x2 . . . xn1 xn ,

x1 + x2 + . . . + xn1 + xn = 0.

Gautoji odiu aibe yra [n, n 1, 2] kodas! Taiau i tokiu kodu maai naudos. Vadinsime juos trivialiais maksimalaus atstumo kodais. Paiekokime kitokiu.

82 teorema. Tegu L yra tiesinis [n, k] kodas, o H  jo kontroline matrica. Tada L yra maksimalaus atstumo kodas tuo ir tik tuo atveju, kai bet kurie n k matricos H stulpeliai yra tiesikai nepriklausomi. Irodymas. Minimalus kodo L atstumas lygus d tada ir tik tada, kai egzistuoja d tiesikai priklausomu kontrolines matricos stulpeliu, taiau bet kurie d1 jos stulpeliu yra tiesikai nepriklausomi. Todel slyga d = nk+1 yra ekvivalenti reikalavimui, kad bet kurie d 1 = n k stulpeliu sudarytu tiesikai nepriklausom sistem ir egzistuotu n k + 1 tiesikai priklausomu stulpeliu. Kontrolines matricos H matavimai yra (n k) n, o jos rangas lygus n k. Bet kurie n k + 1 matricos stulpeliai sudaro tiesikai priklausom sistem. Teorema irodyta.

146

KODAI IR IFRAI Kaip netrukus isitikinsime, maksimalaus atstumo kodai egzistuoja poromis.

Tegu L yra maksimalaus atstumo kodas. Tada L yra taip pat maksimalaus atstumo kodas. Irodymas. Tegu G, H yra atitinkamai [n, k] kodo L generuojanti bei kontroline matricos. Bet kurie skirtingi n k matricos H stulpeliai sudaro tiesikai nepriklausom sistem. Tada bet kuris ios matricos n k eiles minoras nelygus nuliui. I matricos H eiluiu elementu sudarykime odius a1 , . . . , am , m = n k . Bet kuris kitas kodo L odis x yra iu odiu tiesine kombinacija: x = 1 a1 + . . . + m am , i Fq . Pagal i lygyb atlikime matricos H pertvarkius; del apibretumo tarkime, 1 = 0. Padauginkime pirmj eilut i 1 , tada dauginkime i-j eilut i i (i 2) ir pridekime prie pirmosios. Atlik iuos veiksmus, pirmojoje eiluteje gausime odio x simbolius. Jokio H matricos n k minoro reikme netapo lygi nuliui, nes pakito tik daugikliu 1 = 0. Taigi odyje x negali buti n k komponeniu, lygiu nuliui. Tai reikia, jog kiekvieno odio x L svoris w(x) n (n k 1) = k + 1. Todel d k + 1, taiau Singletono ivertis kodui L tvirtina, kad d n (n k) + 1 = k + 1. Taigi d = k + 1 = n (n k) + 1, o tai reikia, jog kodas L yra maksimalaus atstumo kodas. Derindami abieju teoremu tvirtinimus, nesunkiai gausime toki ivad:

83 teorema.

84 teorema. Jei [n, k] kodo L generuojanti matrica yra G, tai L yra maksimalaus atstumo kodas tada ir tik tada, kai bet kurie k matricos G stulpeliai yra tiesikai nepriklausomi. Apsiginklav iais teiginiais bandykime konstruoti netrivialius maksimalaus atstumo kodus.
Tegu Fq = {1 , 2 , . . . , q } (apibretumo delei tarkime, q = 0), o 1 k q yra naturalusis skaiius. Tiesini kod, kurio generuojanti matrica yra 1 1 ... 1 2 . . . q 1 2 2 2 G k = 1 2 . . . q , . . . .. . . . . . . . k1 k1 k1 1 2 . . . q vadinsime Reedo-Solomono kodu ir ymesime RSq,k . Kodo RSq,k dimensija lygi k. Kad tuo isitikintume, pakanka irodyti, kad bet kurie k matricos Gk stulpeliai sudaro tiesikai nepriklausomu stulpeliu sistem (paskutinio stulpelio pirmasis elementas lygus vienetui, o kiti  nuliui). Tam pakanka parodyti, kad i bet kuriu k stulpeliu sudarytas determinantas nelygus nuliui. Tai galima padaryti pasinaudojus algebroje gerai

69 apibreimas.

9. TIESINIAI KODAI

147

inomu Vandermondo determinantu. Tegu 1 , . . . , s yra skirtingi ir nelygus nuliui kuno Fq elementai,

1 1 ... 1

2 . . . s 1 2 2 2 V (1 , 2 , . . . , s ) = det 1 2 . . . s . . . . .. . . . . . . . s1 s1 s1 1 2 . . . s
Tada

V (1 , 2 , . . . , s ) =

(j i ).
1i<js

O dabar keletas geru naujienu apie Reedo-Solomono kodus. Jei 1 k1 < k2 q, tai RSq,k1 RSq,k2 . Su visomis k reikmemis teisinga lygybe RS = RSq,qk . q,k Irodymas. Pasinaudoj Vandermondo determinantu, galime irodyti, kad bet kokie k matricos Gk stulpeliai sudaro tiesikai nepriklausomu stulpeliu sistem. I anksiau irodytos teoremos iplaukia, kad RSq,k yra maksimalaus atstumo kodas. Sryis RSq,k1 RSq,k2 yra akivaizdus. Kadangi dim(RSq,k ) + dim(RSq,qk ) = q, tai treiajam teiginiui irodyti pakanka isitikinti, kad matricu Gk ir Gnk eilutes yra poromis ortogonalios. Parinkime i pirmosios matricos eilut u i antrosios  v:
i i i u = 1 2 . . . q , j j j v = 1 2 . . . q .

85 teorema. Visi RSq,k kodai yra maksimalaus atstumo kodai.

Jeigu i = j = 0, tai

u v = 1 + 1 . . . + 1 = q 1 = 0.
Kitais atvejais
l l l S = uv = 1 +2 +. . .+q1 ,

l i+j (mod q 1),

1 l q 2. (59)

Egzistuoja bent vienas nenulinis elementas Fq , kad l = 1. I tiesu, jeigu tokio elemento nebutu, tai visi q 1 elementai butu daugianario xl 1 l < q 1, aknys. Padaugin (59) i l , gausime

l S = (1 )l + (2 )l + . . . + (q1 )l = S,

(l 1)S = 0.

Taigi gauname, kad S = 0 ir eilutes u, v yra ortogonalios. Teorema irodyta.

148

KODAI IR IFRAI

Isiiurekime i sryi RS = RSq,qk . Jeigu q = 2m , k = q m1 , tai is q,k sryis pavirsta lygybe

RS ,2m1 = RS2m ,2m1 . 2m


Taigi suradome be galo daug savidualiu kodu! Patyrinekime dar. Generuojani kodo RSq,k matric Gk (paskutini jos stulpeli sudaro elementai 1, 0, 0, . . . , 0) papildykime dar vienu stulpeliu:

2 1 2 2 G = 1 2 k . . . . . . k1 k1 1 2 1 1

... 1 0 . . . 0 0 . . . 0 0 . .. . . . . . . . ... 0 1

Vel pasinaudoj Vandermondo determinantu, galime isitikinti, kad bet kurie k stulpeliai yra tiesikai nepriklausomi. Taigi G taip pat yra maksimalaus k atstumo kodo generuojanti matrica. io kodo parametrai yra [q + 1, k, q k + 2]. Paymekime i kod RS q+1,k . Jeigu q yra nelyginis pirminis arba jo laipsnis, o k = q+1 , tai, samprotaujant panaiai kaip Reedo-Solomono kodu 2 atveju, galima irodyti, kad
RS q+1,k = RSq+1,k .

Taigi radome dar vien savidualiu kodu eim. Reedo-Solomono kodai yra netrivialus, kai q > 2. Ar yra netrivialiu maksimalaus atstumo kodu, sudarytu i dvejetaines abeceles odiu? Atsakymas toks: i dvejetaines abeceles odiu galime sudaryti tik trivialiuosius maksimalaus atstumo kodus.

9.6. Marcelio Golay kodai


1948 metais Richardas Hammingas paskelbe kod, kuris visada itaiso vien klaid. veicaru matematikas Marcelis Golay 1949 metais sugalvojo net tris klaidas taisanti kod. is kodas yra didelis ir geras  tiesiog tobulas.

Parinkime toki dvejetaines abeceles 23 bitu ilgio odi

c1 = 11000111010100000000000.
Ciklikai perstum odio simbolius, sudarykime dar vienuolika odiu:

9. TIESINIAI KODAI

149

c2 = 01100011101010000000000, c3 = 00110001110101000000000, ....................., c12 = 00000000000110001110101.

Visi ie odiai yra tiesikai nepriklausomi. Taigi galime i odiu sistem panaudoti kaip tiesinio kodo baz.

Kod, kuri generuoja odiai c1 , c2 , . . . , c12 , vadinsime dvejetainiu Golay kodu G23 . O dabar pailginkime visus odius c1 , c2 , . . . , c12 , priraydami kiekvieno odio gale simboli 1. Gausime erdves F24 odius; juos ymekime c , c , . . . , c . 2 1 2 12

70 apibreimas.

Kod, kuri generuoja odiai c , c , . . . , c , vadin1 2 12 sime dvejetainiu Golay kodu G24 . Pastebekime, kad kiekvieno odio c visu simboliu suma moduliu 2 lygi i 0. i savyb tures ir visi kiti kodo G24 odiai. Vadinasi, galime isivaizduoti, kad kodas G24 gaunamas i kodo G23 , pailginus io kodo odius kontroliniu simboliu, o G23  i G24 , nubraukiant paskutini io kodo odiu simboli. Abieju kodu dimensijos lygios 12. Sura odiu c simbolius i eilutes, gautume kodo G24 generuojani i matric. Patikrin isitikintume, kad visos ios matricos eilutes poromis yra ortogonalios (galima pasinaudoti odiu ci ciklikumu ir ivengti tikrinimo visoms poroms!). itaip nustatytume svarbi Golay kodo savyb.

71 apibreimas.

86 teorema. Kodas G24 yra savidualus.


inome, kad kodo standartinio pavidalo generuojanti matrica kodavimui yra pati geriausia. Ne visi kodai j turi (bet visada galima nurodyti ekvivalentu kod su standartinio pavidalo generuojania matrica). Taiau kodas G24 toki matric turi.

150

KODAI IR IFRAI

87 teorema. Matrica G = (I12 , A),


0 1 1 1 1 1 A= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1

yra kodo G24 generuojanti matrica. Turedami standartinio pavidalo generuojani matric, galime sudaryti kontrolin matric:

H = (AT , I12 ) = (A, I12 ),

nes AT = AT = A.

Taiau kodas G24 yra savidualus, todel abi matricos

G = (I12 , A), H = (A, I12 )


yra ir generuojanios, ir kontrolines. Laikas urayti abieju kodu parametrus.

[23, 12, 7].

88 teorema.

Kodo G24 parametrai yra [24, 12, 8] o kodo G23 

Kodo G23 minimalus atstumas gali buti maesnis ne daugiau kaip vienetu. Taiau is kodas turi daug odiu, kuriu svoriai lygus 7, pavyzdiui, odiai ci . Taigi jei kodo G24 minimalus atstumas yra 8, tai kodo G23  7. Pirmiausia isitikinsime, kad visu kodo G24 odiu svoriai dalijasi i 4. Tegu x = x1 x2 . . . x24 , y = y1 y2 . . . y24 yra du kodo odiai. Nesunku isitikinti, jog svoriams galioja tokia lygybe:

Irodymas. Pakanka nustatyti, kad kodo G24 minimalus atstumas yra 8.

w(x + y) = w(x) + w(y) 2S,

S = x1 y1 + x2 y2 + . . . + x24 y24 .

9. TIESINIAI KODAI Taiau kodas G24 yra savidualus, todel skaiius S yra lyginis, taigi

151

w(x + y) w(x) + w(y) (mod 4).

(60)

Jeigu x ir y yra odiai, sudaryti i dvieju matricos G eiluiu elementu (du kodo bazes odiai), tai w(x) ir w(y) dalijasi i 4. I (60) gauname, kad odio x + y svoris dalijasi i 4. Taigi bet kurio odio, sudaryto i dvieju bazes odiu, svoris dalijasi i 4. Tegu x yra toks odis, o y  bazes odis (matricos G eilute). Pasinaudoj (60), gauname, kad kodo odiu, kurie yra triju bazes odiu tiesines kombinacijos, svoriai taip pat dalijasi i 4. Kaip samprotauti toliau, tikriausiai aiku. Galime manyti, kad teiginys irodytas. Dabar liko irodyti, kad nera nei vieno kodo G24 odio, kurio svoris butu lygus 4. Samprotaudami naudosimes tuo, kad matricos G ir H yra generuojanios kodo G24 matricos. Tarkime, egzistuoja kodo G24 odis x, kad w(x) = 4. Kadangi abi matricos G, H generuoja t pati kod G24 , tai x galime nagrineti kaip matricos G arba H eiluiu tiesin kombinacij. Paymej l ir r atitinkamai kairij ir deinij odio x puses (sudarytas i 12 simboliu), gausime

w(x) = w(l) + w(r).


Pastebesime, jog atvejis w(l) = 0 arba w(r) = 0 yra negalimas. Jei w(l) = 1, tai w(r) = 3; x turi buti viena i matricos G eiluiu, bet eilutes su deines puses svoriu, lygiu 3, nera. Analogikai gauname, jog atvejis w(l) = 3, w(r) = 1 taip pat neimanomas. Lieka atvejis w(l) = w(r) = 2. Bet tokiu atveju x yra dvieju skirtingu matricos G eiluiu suma. Tiesiogiai tikrindami galime nustatyti, jog w(u + v) = 4 jokioms dviem skirtingoms G eilutems u,v. Teiginys irodytas. Irodyta ir teorema. Patikrin isitikintume, kad kodo G23 parametrai tenkina tobulumo slygas. Ivada. Kodas G23 yra tobulas. Aptarsime kodo G24 dekodavim. inoma, galima taikyti bendr lyderiusindromu metod, tinkanti visiems tiesiniams kodams. Taiau Golay kodas turi tiek geru savybiu! Kodel gi jomis nepasinaudojus? Naudodamiesi iuo kodu, galime itaisyti ne daugiau kaip 3 klaidas. Jeigu, siuniant kodo odi c, ivyko ikraipymas e (i odi sudaro nuliai tose pozicijose, kurios perduotos teisingai, ir vienetai ten, kur ivyko perdavimo klaidos), tai gautasis odis yra x = c + e. Nurodysime metod, kuris leidia teisingai nustatyti neinom e, kai w(e) 3. Rad e, gaut odi x dekoduosime kodo odiu c = x e. inoma, dekoduodami i anksto neinome, ar w(e) 3. Jeigu metodas neveikia, tai i slyga nera patenkinta ir ivykusiu klaidu skaiius yra didesnis, nei kodas gali itaisyti! Kairij ikraipymo e dali, sudaryt i 12 pirmuju simboliu, paymej e1 , o deinij  e2 , gauname

e = e1 e2 ,

w(e) = w(e1 ) + w(e2 ) 3.

152 Galimi atvejai:

KODAI IR IFRAI

1) w(e1 ) = 0;

2) w(e2 ) = 0;

3) w(e1 ) > 0, w(e2 ) > 0.

I pradiu itirsime, kaip pagal gaut odi nustatyti, kuris i 1), 2), 3) atveju ivyko. Kadangi abi generuojanios matricos G = (I12 , A), H = (A, I12 ) yra kartu ir kontrolines, tai galime nagrineti du gauto odio x sindromus:

s1 = (c + e)GT = eGT = e1 e2 s2

I12 = e1 + e2 A, A A = (c + e)H T = eH T = e1 e2 = e1 A + e2 . I12

Jeigu w(e1 ) = 0, tai i sindromu iraiku gauname s1 = e2 A, s2 = e2 . Taigi w(e) = w(e2 ) = w(s2 ) 3. Kita vertus, s1 yra deinioji kodo odio c = e2 (I12 , A) puse. Kadangi w(c) 8, o kairioji puse sveria ne daugiau kaip 3, tai w(s1 ) = w(c) w(e2 ) 8 3 = 5. Jeigu w(e2 ) = 0, tai analogikai gauname

w(e) = w(e1 ) = w(s1 ) 3,

w(s2 ) 5.

Jei w(e1 ) > 0, w(e2 ) > 0, tai w(s1 ) 5, w(s2 ) 5. Pavyzdiui, jei w(e1 ) = 1, w(e1 ) = 2, tai

w(s1 ) = w(e1 + e2 A) w(e2 A) w(e1 ) (8 2) 1 = 5.


Taigi pagal sindromu svorius w(s1 ), w(s2 ) galima nustatyti, kuris i 1), 2), 3) atveju ivyko. Jei w(s1 ) 3, tai w(e2 ) = 0 ir e = e1 0 = s1 0; ia 0 yra odis, sudarytas i 12 nuliu. Analogikai jei w(s2 ) 3, tai e = 0s2 . Tad 1), 2) atvejais dekodavimas nesukelia dideliu sunkumu. Lieka itirti dekodavim tuo atveju, kai w(s1 ) 5, w(s2 ) 5, t. y. 3) atveju. Ji suskaidysime i dvi galimybes:

1) w(e1 ) = 1, w(e2 ) = 1 arba 2;

2) w(e1 ) = 2, w(e2 ) = 1.

Pastebesime, jog 1) atveju pakanka rasti e1 . Ities, surad i dali, galime manyti, jog gautasis odis yra x = x e1 0, ir dekoduoti jau aptartu budu. Analogika pastaba teisinga ir 2) atvejui. Pakaks inagrineti 1) atveji. Tegu ikraipymas ivyko j -ojoje pozicijoje, 1 j 12. Tada e1 = j ; ia j ymime odi i 12 simboliu, kuriu tik j -asis yra vienetas, kiti  nuliai. Sudarykime 12 nauju odiu x + 1 0, . . . , x + 12 0 ir 12 juos atitinkaniu sindromu

si = (x + i 0)

A I12

= (e + i 0) A I12

A I12

= (j e2 + i 0)

= j A + e2 + i A.

9. TIESINIAI KODAI Jeigu i = j, tai si = e2 , taigi w(si ) 2. Jeigu i = j, tai

153

w(si ) w(j A + i A) w(e2 ).


odis j A + i A = (j + i )A yra kodo odio (j + i )(I12 , A) deinioji puse; kadangi visas odis sveria ne maiau kaip 8, kairioji  lygiai 2, tai

w((j + i )A) 8 2 = 6,

w(si ) 6 2 = 4.

Taigi periurej sindromu svorius, pamatysime, kad visi jie, iskyrus vien, yra ne maesni u 4. Imdami t j , kuriam w(sj ) 2, rasime e1 = j . Jeigu svoriu seka kitokia, tai susidureme su 2) atveju. Reikes iekoti e2 = j . Dabar teks periureti sindromus

si = (x + 0i )

I12 A

= e1 + j A + i A.

Rad j , kuriam w(sj ) 2, gausime e2 = j . Jeigu vel nepavyks  odis yra pernelyg ikraipytas, kad galetume ji atkurti.

9.7. Reedo-Mullerio kodai


i kodu eima taip pat kaip ir Hadamardo kodu iejo i kosmonautikos istorij. Jais buvo naudojamasi 19691977 metais palaikant ryi su kosminemis stotimis. Ir iaip tai labai idomus kuriniai.

Galima sukonstruoti Reedo-Mullerio kodus i bet kokios abeceles Fp odiu. Taiau panagrinekime paprasiausi ir svarbiausi dvejetaines abeceles atveji. Tarkime, tiesines erdves Fm odiai kokiu nors budu sunumeruoti: 2

Fm = {a1 , . . . , an }, n = 2m . 2
Galime, pavyzdiui, velgti i odi a Fm kaip i sveikojo skaiiaus 0 2 l < 2m iraik dvejetaineje skaiiavimo sistemoje ir sutvarkyti odius atitinkamu skaiiu didejimo tvarka. ymekime xi (a) i-j odio a komponent. Tada aibes

Hi = {a : a Fm , xi (a) = 0}, 2

i = 1, . . . , m,

yra tiesines erdves Fm poerdviai. 2 Apibreime abipusikai vienareikm Fm poaibiu ir erdves Fn , n = 2m , 2 2 odiu atitikti. Jei D Fm , tai priskirsime: D v(D); ia v(D) Fn 2 2 komponentes apibreiamos taip:

xi (v(D)) =

0, 1,

jei ai D, jei ai D.

154

KODAI IR IFRAI

Pavyzdiui, jei m = 3, D = {a1 , a3 , a5 }, tai v(D) = 10101000. Taigi odyje v(D) vienetukai ymi, kurie odiai ieina i D; v(D) yra tarsi poaibio D inventorizacijos dokumentas. Vis erdv Fm atitinka odis v0 = 11 . . . 1. 2 Toliau iame skyrelyje naudosime dvi operacijas su odiais a, b Fn : 2 odiu daugyb ir skaliarin sandaug. Jei x = x1 x2 . . . xn ir y = y1 y2 . . . yn , ymesime

a b = z1 z2 . . . zn ,

zj = xi yi ,

i = 1, 2, . . . , n;

(a, b) = x1 y1 + x2 y2 + . . . + xn yn .
Skaiiuojant skaliarin sandaug, demenys sumuojami moduliu 2, taigi (a, b) reikme yra 0 arba 1. Akivaizdu, kad odiu daugybai teisingas distributyvumo sudeties atvilgiu desnis:

(a + b) c = a c + b c.
odiu daugyb naudosime ne tik odiu poroms, bet ir didesniems rinkiniams, pavyzdiui, a b c = (a b) c. Pastebesime, jog su visais poaibiais E1 , E2 , . . . , Es Fn teisinga lygybe: 2

v(E1 ) v(E2 ) . . . v(Es ) = v(E1 E2 . . . Es ).

(61)

Tegu 1 m, r m, n = 2m . ReedoMullerio RM(m, r) kodu vadinsime tiesini Fn poerdvi, kuri generuoja odiai 2

72 apibreimas.

v0 , vi1 vis ;

(62)

ia v0 = 11 . . . 1, vi = v(Hi ), 1 i1 < . . . < is m, s r, i = 1, . . . , m. Vektoriu, kurie urayti (62), skaiius lygus


1 2 r k(m, r) = 1 + Cm + Cm + . . . + Cm .

Kaip netrukus pamatysime, visi ie vektoriai yra tiesikai nepriklausomi. Taigi RM(m, r) kodo generuojani matric gausime sura iu vektoriu elementus i matricos eilutes. I pradiu pastebekime toki odiu vi savyb. Imkime poerdviu Hi pildinius Hic = {a : a Fm , xi (a) = 1}, i = 1, . . . , m. 2 Nesunku pastebeti, jog

v(Hic ) = v0 + vi .

(63)

sudaro jo baz.

89 teorema. RM(m, r) kodo dimensija lygi k(m, r), o (62) vektoriai

9. TIESINIAI KODAI

155

Irodymas. Imkime (62) vektoriu sistemoje r = m. Tada gausime lygiai n = 2m vektoriu; tokia yra ir visos erdves Fn dimensija. Jeigu parodysime, 2 jog kiekvien Fn vektoriu galima ireikti iais n vektoriais, tai galesime 2 teigti, kad jie sudaro tiesikai nepriklausom sistem. Tada bet kokiam r (62) vektoriai irgi bus tiesikai nepriklausomi, nes sudarys tiesikai nepriklausomos sistemos posistem. Pakanka parodyti, kad kiekvien Fn standartines bazes vektoriu galima 2 ireikti (62) vektoriu tiesine kombinacija. Pavyzdiui, imkime standartines bazes vektoriu ei , jo i-oji komponente lygi vienetui, o visos kitos lygios nuliui. Prisimin erdves Fm poaibiu ir Fn odiu atitikti, galime rayti: ei = v(D); 2 2 ia D = {ai }. Tegu ai = a1 . . . am . ymedami Hi (0) = Hi ir Hi (1) = Hic , gausime D = {ai } = H1 (a1 ) . . . Hm (am ).
Pasirem (63), gausime

ei = v(D) = v(H1 (a1 )) v(Hm (am )).


Taiau v(Hi (ai )) lygus arba vi , arba v0 + vi . Pasinaudoj odiu daugybos distributyvumo savybe, isitikinsime, kad ei yra (62) sistemos vektoriu tiesine kombinacija. Pavyzdys. Uraysime RM(3, 2) kodo baz, o kartu ir kodo generuojani matric. I pradiu suraykime erdves F3 odius, o pagal juos kon2 struokime ir bazes vektorius.

v0 v1 v2 v3 v1 v2 v1 v3 v2 v3

a1 a2 000 001 1 1 1 1 1 1 1 0 1 1 1 0 1 0

a3 a4 a5 010 011 100 1 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1

a6 a7 a8 101 110 111 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0

Fiksuotam m gavome itis Reedo-Mullerio kodu kolonij, kurios nariai yra RM(m, r), r = 0, . . . , m. Akivaizdu, kad RM(m, 0) = {00 . . . 0, 11 . . . 1}, RM(m, m) = Fn . 2 Pastebekime, kad visu Reedo-Mullerio kodo RM(m, r), kai r < m, odiu svoriai yra lyginiai. I tikruju:

w(v0 ) = n = 2m ,
I lygybes

w(vi1 vis ) = 2ms .

w(x + y) = w(x) + w(y) 2w(x y),

x, y Fn , 2

156

KODAI IR IFRAI

gauname, kad dvieju lyginio svorio odiu sumos svoris irgi lyginis. Nebesunku isitikinti, kad bet kokios (62) sistemos odiu tiesines kombinacijos svoris irgi lyginis. Uraykime toki akivaizdi lygyb:
1 2 r r+1 m1 1 + Cm + Cm + . . . + Cm + Cm + . . . + Cm + 1 = 2m = n. k mk ir Reedo-Mullerio Pasinaudoj binominiu koecientu sryiu Cm = Cm kodu dimensiju iraikomis, galime i lygyb urayti taip:

k(m, r) + k(m, m r 1) = dim(RM(m, r)) + dim(RM(m, m r 1)) = n.


Ar tik nebus Reedo-Mullerio kodu eima (taip pat kaip ir Reedo-Solomono) udara, t. y. ios eimos nario dualus irgi priklauso tai paiai eimai? Tikra tiesa! Su visomis m, r (m < r) reikmemis teisingas sryis = RM(m, m r 1). Irodymas. Kad teiginys butu teisingas, reikia, kad butu patenkintos dvi slygos: kodu RM(m, r), RM(m, m r 1) baziu odiu skaliarines sandaugos turi buti lygios nuliui moduliu 2, o dimensiju suma lygi n. Taiau pastarj lygyb jau nustateme! Tegu a = vi1 vis ir b = vj1 vjt yra iu kodu baziu odiai, s + t r + m r 1 < m. Sudaugin juos, gausime odi

RM(m, r)

90 teorema.

c = vl1 vlz ,
Taiau

z < m. w(c) 0 (mod 2).

w(c) (a, b) (mod 2),

Taigi ir pirmoji dualumo slyga yra teisinga. Galima i Reedo-Mullerio kodus pavelgti visai kitaip. Pirmiausia kitaip pavelkime i odiu erdves

Fm = {a1 , . . . , an }, n = 2m , 2
ir Fn sryi. I kiekvien odi f Fn galime velgti kaip i tam tikros funkcijos 2 2 f : Fm F2 reikmiu lentel: 2 jei f = y1 y2 . . . yn , tai f (a1 ) = y1 , . . . , f (an ) = yn . Kadangi ios funkcijos igyja tik dvi reikmes, galime jas interpretuoti kaip logines funkcijas. Paymej a = x1 x2 . . . xm , a Fm , galime suvokti Fn 2 2 odius kaip logines funkcijas f (x1 , x2 , . . . , xm ). ios funkcijos sudaro tiesin erdv. Kokios funkcijos atitinka Reedo-Mullerio kodo bazes odius? Nesunku suprasti, kad

v0 1, vi 1 + xi , i = 1, 2, . . . , m, vi1 vi2 . . . vis (1 + xi1 )(1 + xi2 ) (1 + xis ) = 1 + xi1 + . . . + xi1 xi2 xis .

9. TIESINIAI KODAI

157

Taigi kod RM(m, r) galime suvokti kaip ne didesnio nei r laipsnio loginiu daugianariu erdv! Naudojantis iuo poiuriu, galima toliau tirti Reedo-Mullerio kodu eimos savybes. Pavyzdiui, nustatyti minimalu kodu atstum. Kad minimalus kodo atstumas negali buti didesnis u 2mr , rodo kodo bazes odio svoris: w(v1 v2 vr ) = 2mr . Noredami irodyti, kad ne maesnis, turetume kiek pasidarbuoti... i darb atidekime kitam skyreliui. Dabar aptarkime Reedo-Mullerio kodu dekodavim. Naudosime logines daugumos (majority logic decoding, angl.) metod  savotik sprendimu priemim balsavimo budu. Tarkime, informacija koduojama Reedo-Mullerio RM(m, r) kodu: kanalu siuniami odiai c = c1 . . . cn , n = 2m ,

91 teorema. Minimalus kodo RM(m, r) atstumas lygus 2mr .

c = a(0)v0 +
1i1 <...<is m sr

a(i1 , . . . , is )vi1 vis ;

(64)

ia a(0), a(i1 , . . . , is ) = 0 arba 1. Kanalas galbut ikraipe siuniamus simbolius; paymekime gautji odi d = d1 . . . dn , n = 2m . Naudodamiesi iuo odiu, rasime teisingas koecientu a(0), a(i1 , . . . , is ) reikmes, taigi atstatysime siustji odi c, jeigu ivykusiu ikraipymu nera daugiau kaip (2mr 1)/2. Dekoduoti pasirengsime taip: kiekvienam koecientui a(i1 , . . . , ir ) sudarysime lygiai 2mr iraiku

a(i1 , . . . , ir ) =
iIj

ci ,

j = 1, . . . , 2mr ,

(65)

tokiu, kad |Ij | = 2r , Ii Ij = , jei i = j. ios slygos reikia, kad kievienoje i (65) lygybiu yra lygiai po 2r demenu ir kiekvienas siuniamo odio simbolis ci pasirodo tik vienoje lygybeje. Jeigu ikraipyta ne daugiau kaip (2mr 1)/2 odio c simboliu, tai ne daugiau kaip (2mr 1)/2 (65) lygybiu nebebus teisingos. Taiau ne maiau kaip (2mr + 1)/2, t. y. daugiau kaip puse, liks galioti. Tikrj koeciento reikm rasime suskaiiav, kokiu simboliu  vienetu ar nuliu  yra daugiau sekoje

di ,
iIj

j = 1, . . . , 2mr .

Daugiau kartu pasikartojs simbolis ir bus koeciento a(i1 , . . . , ir ) reikme. itokiu budu surad visus koecientus a(i1 , . . . , ir ), galime i gautojo odio d atimti atitinkamus r-osios eiles narius ir manyti, kad gautasis skirtumas

158

KODAI IR IFRAI

yra odis, gautas siuniant kodo RM(m, r 1) odi. Tada analogikai galime iekoti koecientu a(i1 , . . . , ir1 ). Pagaliau surad visus koecientus a(i1 , . . . , is ) ir i gautojo odio atem atitinkamus demenis, gausime odi d0 , kuri galesime interpretuoti kaip gaut siuniant kanalu a(0)v0 . Ar a(0) = 0, ar a(0) = 1, galesime nusprsti, suskaiiav, ko daugiau  vienetu ar nuliu yra odyje d0 . Pastebekime, kad koecientai a(i1 , . . . , is ) yra tie informaciniai bitai, kuriuos nea kodo odis. Taigi iuo dekodavimo algoritmu ikart nustatome koduotos informacijos srauto dali. Taiau kaip sudaryti (65) lygybes? Imkimes io darbo. Dekodavimui reikalingoms lygybems sudaryti pasinaudosime skaliarine odiu a = a1 . . . an , b = b1 . . . bn daugyba:

(a, b) = a1 b1 + . . . + an bn ,
ia sudetis imama kune F2 . Pastebesime, jog

(v(D), v(E)) |D E| (mod 2).


Kaip ir anksiau, vartosime ymenis

(66)

Hi (0) = Hi = {a : a Fm , xi (a) = 0}, Hi (1) = Hic , i = 1, . . . , m. 2


Fiksuokime rinkini 1 i1 < . . . < ir m. Tegu

{l1 , . . . , lmr } = {1, . . . , m}\{i1 , . . . , ir }; ia l1 < . . . < lmr .


Kiekvienam nuliu ir vienetu rinkiniui t = t1 . . . tmr apibrekime

wt = v(Hl1 (t1 ) . . . Hlmr (tmr )).


I viso turime 2mr odiu wt . Svarbi ivalga: kiekviename odyje wt yra lygiai 2r vienetu ir nera vieneto, kuris butu toje pat pozicijoje skirtingiems wt , wt . Tegu u = vj1 vjs = v(Hj1 (0) . . . Hjs (0)). Tada bet kokiam t

(v, wt ) |Hj1 (0) . . . Hjs (0) Hl1 (t1 ) . . . Hlmr (tmr )|(mod 2).
Jei {j1 , . . . , js } = {i1 , . . . , ir }, tai {j1 , . . . , js }{l1 , . . . , lmr } = {1, 2, . . . , n}. Tada (v, wt ) iraikos aibiu sankirtai priklauso tik vienas odis a, kuri nusako lygybes xi (a) = 0, jei i {i1 , . . . , ir }; xi (a) = tj , jei i = lj . Jeigu {j1 , . . . , js } = {i1 , . . . , ir }, tai aibiu sankirtai priklausaniu odiu skaiius yra lyginis. Taigi

(v, wt ) =

0, jei {j1 , . . . , js } = {i1 , . . . , ir }, 1, jei {j1 , . . . , js } = {i1 , . . . , ir }.

9. TIESINIAI KODAI

159

Padaugin (64) skaliarikai i wt ir atsivelgdami i nustatytas lygybes, gausime (c, wt ) = a(i1 , . . . , ir ). Taiau tai ir yra logines daugumos metodui reikalingos lygybes! Pavyzdys. Panagrinesime RM(3, 1) dekodavim. Prisiminkime kodo sudarymo lentel:

v0 v1 v2 v3

a1 a2 a3 000 001 010 1 1 1 1 1 1 1 1 0 1 0 1

a4 a5 a6 011 100 101 1 1 1 1 0 0 0 1 1 0 1 0

a7 a8 110 111 1 1 0 0 0 0 1 0

io kodo odiai uraomi taip:

c = a(0)v0 + a(1)v1 + a(2)v2 + a(3)v3 .


Lygybiu sistem sudarysime a(3) koecientui. Rinkinius t = 00, 01, 10, 11 atitinka odiai

wt = 11000000, 00110000, 00001100, 00000011.


Todel dekodavimo lygybes atrodys taip:

a(3) = c1 + c2 , a(3) = c3 + c4 , a(3) = c5 + c6 , a(3) = c7 + c8 .


Tarkime, buvo siustas odis c = v1 + v2 + v3 = 10010110, taiau vienas simbolis buvo ikraipytas ir gautasis odis yra d = 11010110. Pagal gautji odi naudodamiesi dekodavimo lygybemis, gauname reikmes 0, 1, 1, 1. Taigi a(3) = 1.

160

KODAI IR IFRAI

9.8. Veiksmai su kodais


Keletas visai paprastu ir kiek sudetingesniu budu konstruoti naujus kodus i jau sudarytu.

I jau sudarytu kodu galima konstruoti naujus. Jeigu kodas tiesinis, tai galime sudaryti jam dualu. Tiesa, kartais buna, kad kodas yra dualus pats sau. Taigi tiesiniai kodai egzistuoja poromis, taiau pasitaiko ir vieniiu. tai dar vienas budas sukurti nauj kod. Tegu L Fn yra tiesinis kodas. Jo pletiniu q (extended code) vadinsime kod L Fn+1 , q

73 apibreimas.

L = {c1 c2 . . . cn cn+1 : c1 c2 . . . cn L, c1 + c2 + . . . + cn + cn+1 = 0}.


Jeigu tiesinio kodo L kontroline matrica yra

h11 h12 h13 . . . h1n h21 h22 h23 . . . h2n H= . . . . . , .. . . . . . . . . hr1 hr2 hr3 . . . hrn
tai jo pletinio L kontroline matrica yra

h11 h12 h13 . . . h1n h21 h22 h23 . . . h2n . . . .. . . H = . . . . . hr1 hr2 hr3 . . . hrn 1 1 1 ...1

0 0 . . . . 0 1

Pletinys yra taip pat tiesinis kodas, jo dimensija yra ta pati kaip ir pradinio kodo. Jei L yra i abeceles F2 odiu sudarytas kodas, o jo minimalus atstumas d yra nelyginis, tai pletinio minimalus atstumas yra d + 1. Prisiminkime klasikini Hammingo kod H2 (3). Jo pletinys suteikia galimyb atskirti, kada ivyko viena, o kada dvi klaidos, ir ivengti saviapgaules taisant dvi klaidas kaip vien. Tai teisinga ir bet kokiam Hammingo kodui H2 (r). Dar dvi operacijos: kodo sutrumpinimas (puncturing) ir sumainimas (shortening).

74 apibreimas. Kod, kuris gaunamas i kodo C, ibraukiant visu jo odiu i-ji simboli, vadinsime sutrumpintu C kodu.

9. TIESINIAI KODAI

161

Fn1 yra tiesinis. q Akivaizdu, kad tuo atveju, kai nubraukiamas simbolis visuose kodo odiuose lygus nuliui, sutrumpinto kodo dimensija ir minimalus atstumas yra tokie patys kaip ir pradinio kodo. Jei pradinis kodas sutampa su visa odiu erdve Fn , tai sutrumpintas q kodas  odiu erdve Fn1 . Taigi abieju kodu minimalus atstumas  tas pats q vienetas, o sutrumpinto kodo dimensija vienetu maesne. Panagrinekime dar vien atveji.
Tegu C yra tiesinis kodas, C  sutrumpintas kodas. Jeigu d(C) > 1, tai dim(C) = dim(C ). Irodymas. Tegu k = dim(C) ir f1 , f2 , . . . , fk yra io kodo bazes odiai. Paymekime f1 , f2 , . . . , fk odius, gautus i bazes odiu juos sutrumpinus. Tegu komponentes, kurios buvo nubrauktos, yra u1 , . . . , uk . Jeigu visos jos lygios nuliui, tai sutrumpinto kodo dimensija ta pati kaip pradinio kodo. Taigi tarsime, kad ne visos nubrauktosios komponentes lygios nuliui. Visi sutrumpinto kodo odiai yra tiesines odiu f1 , f2 , . . . , fk kombi nacijos. Irodysime, kad odiai fj yra tiesikai nepriklausomi. Tarkime prieingai  su tam tikrais elementais i Fq , kurie ne visi lygus nuliui, teisinga lygybe 1 f1 + 2 f2 + . . . + k fk = 0. Nagrinekime reikini, sudaryt panaudojant i Fq ir ibrauktsias komponentes: = 1 u1 + 2 u2 + . . . + k uk . Jeigu butu = 0, gautume, kad f1 , f2 , . . . , fk yra tiesikai priklausomi. Jeigu butu = 0, gautume, kad d(C) = 1. Abi ivados prietarauja teoremos prielaidoms, taigi sutrumpinto kodo dimensija ta pati kaip ir pradinio kodo.

92 teorema. Jei kodas C Fn yra tiesinis, tai ir sutrumpintas kodas q

93 teorema.

75 apibreimas. Kod, kuris gaunamas i C, surinkus jo odius, turinius t pati i-ji simboli, ir ji ibraukus, vadinsime sumaintu C kodu.
i-oji komponente yra nuline. Jei C yra sumaintas kodas, gautas surinkus visus kodo odius, turinius nulin i-j komponent, ir j ibraukus, tai C yra tiesinis kodas su parametrais [n 1, k 1, d ], ia d d. Irodymas. Kad sumaintas kodas yra tiesinis, akivaizdu. Taip pat akivaizdu, kad d d. Apibretumo delei tarkime, i = n. Tegu G yra kodo C generuojanti, H  kontroline matrica, o H  matrica H be paskutinio stulpelio. Tada C = {x Fn : xH T = 0}, q
n1 C = {x Fq : xH T = 0}.

94 teorema. Tegu C Fn yra tiesinis [n, k, d] kodas ir ne visu jo odiu q

Taigi H yra kontroline kodo C matrica. Jeigu irodytume, kad matricos H rangas toks pat kaip H, tai gautume, kad dim(C ) = n1dim(C ) = k1.

162

KODAI IR IFRAI

Taigi reikia irodyti, kad, nubraukus n-ji matricos H stulpeli, sutrumpejusios matricos eilutes netampa tiesikai priklausomos. Jeigu taip butu, tai i H eiluiu galetume sudaryti nulin eilut; tada matricos H eiluiu su tais paiais koecientais tiesine kombinacija butu eilute, turinti tik n-ji nenulini element, t. y. egzistuotu kodo C odis a = 00 . . . 0u, u = 0. Tada turetu buti aGT = 0. Taip gali buti tik tada, kai n-asis matricos G stulpelis sudarytas vien i nuliu. Taiau taip nera, nes ne visu kodo C odiu n-oji komponente yra nuline. Teorema irodyta. Turedami du tiesinius kodus, kuriu ilgiai nebutinai vienodi, galime sudaryti nauj tiesini kod, tiesiog prijungdami prie pirmojo kodo odiu antrojo kodo odius. Nesunku isitikinti, kad tokio kodo minimalus atstumas butu lygus kodu, i kuriu jis sudarytas, minimaliu atstumu minimumui, o dimensija  kodu dimensiju sumai. Taigi kodas garantuotai taisytu tiek pat klaidu kiek blogesnysis i abieju kodu, taiau  ilgesniame odyje. Yra ir geresniu budu naujam kodui gauti sujungiant dvieju turimu kodu odius. Tegu L1 , L2 Fn yra du tiesiniai kodai. Kodu q L1 |L2 vadinsime tiesini kod

76 apibreimas.

L1 |L2 = {x|x + y : x L1 , y L2 }.
is nauju kodu sudarymo budas kodavimo teorijoje vadinamas u|u + v konstrukcija. Jei L1 , L2 yra du tiesiniai kodai i aibes Fn odiu, q d1 , d2  ju minimalus atstumai, tai kodo L1 |L2 dimensija lygi kodu L1 , L2 dimensiju sumai, o minimalus atstumas yra d = min(2d1 , d2 ). Irodymas. Jeigu e1 , e2 , . . . , ek yra pirmojo, o f1 , f2 , . . . , fl  antrojo kodo baze, tai nesunku isitikinti, kad e1 |e1 , e2 |e2 , . . . , ek |ek , 0|f1 , 0|f2 , . . . , 0|fl  kodo L1 |L2 baze, ia 0 = 00 . . . 0. Taip pat beveik akivaizdu, kad yra kodo L1 |L2 odiu, kuriu svoriai lygus 2d1 ir d2 . Pakanka isitikinti, kad bet kuriam kitam io kodo odiui x teisinga arba nelygybe w(x) 2d1 , arba w(x) d2 , ia w(x) kaip visada ymime odio x svori. Jei u L1 , v L2 , tai u|u + v L1 |L2 ir w(u|u + v) = w(u) + w(u + v). Jei odis v sudarytas vien tik i nuliniu elementu, tai

95 teorema.

w(u|u + v) = w(u) + w(u) 2d1 .


Jei v ne vien tik i nuliu sudarytas odis, tai pasinaudokime nelygybe

w(u) + w(u + v) w(v) d2 .

9. TIESINIAI KODAI

163

Kodel nelygybe w(u) + w(u + v) w(v) teisinga? Svarstykime taip: jeigu, pridejus prie v odi u, kurios nors v komponentes pavirto nuliais, tai odio u komponentes su tais paiais numeriais nelygios nuliui. Taigi svoriu suma w(u) + w(u + v) ne maesne u svori w(v). Panagrinekime vien idomu ios konstrukcijos taikymo pavyzdi. Jeigu isigilinote i ankstesniame skyrelyje idestyt Reedo-Mullerio kodu RM(m, r) konstrukcij, tai inote, kad io kodo odius galima gauti i ne didesnio kaip r-ojo laipsnio loginiu daugianariu

f (x1 , x2 , . . . , xm ) = a(0) +
1i1 <i2 <...<is m

a(i1 , i2 , . . . , is )xi1 xi2 xis ,

ia a(0), a(i1 , i2 , . . . , is ) F2 , s r. odiai gaunami suraant funkcijos reikmes, kai x1 x2 . . . xm perbega atitinkama tvarka visus Fm odius. Pavyzdiui, 2 funkcija f (x1 , x2 ) = 1 + x1 + x2 apibreia toki erdves F2 odi: 2

v = f (0, 0)f (0, 1)f (1, 0)f (1, 1) = 1001.


Taiau i funkcij galime panaudoti ir erdves F3 odiui gauti. Jis bus toks: 2

10011001 = v|v.
Nagrinekime kod RM(m + 1, r). Visus jo odius galime gauti i ne didesnio kaip r-ojo laipsnio loginiu daugianariu f (x1 , x2 , . . . , xm , xm+1 ). Kiekvien i iu daugianariu galime urayti taip:

f (x1 , x2 , . . . , xm , xm+1 ) = f1 (x1 , x2 , . . . , xm ) + xm+1 f2 (x1 , x2 , . . . , xm ),


ia f1 yra ne didesnio kaip r-ojo laipsnio, o f2  ne didesnio kaip r 1-ojo laipsnio loginiai daugianariai. Daugianaris f1 apibreia erdves Fm odi u, kuris priklauso kodui RM(m, r). 2 Savo ruotu is daugianaris apibreia erdves Fm+1 odi u|u. Daugianaris f2 2 apibreia erdves Fm odi v, kuris priklauso kodui RM(m, r 1), o daugia2 naris xm+1 f2 (x1 , x2 , . . . , xm )  erdves Fm+1 odi 00 . . . 0|v. Taigi daugianaris 2 f apibreia kodo RM(m + 1, r) odi

u|u + v,

u RM(m, r), v RM(m, r 1).

Suformuluokime k tik irodyt teigini.

96 teorema. Reedo-Mullerio kodams teisingi sryiai


RM(m + 1, r) = RM(m, r)|RM(m, r 1).
Pasinaudoj iuo sryiu, galime irodyti ankstesniame skyrelyje minet teigini apie minimalu Reedo-Mullerio kodo atstum.

164

KODAI IR IFRAI

2mr .

97 teorema.

Minimalus kodo RM(m, r), 0 r m, atstumas lygus

audoj matematine indukcija. I konstrukcijos aiku, kad

Irodymas. Lygybes d(RM(m, r)) = 2mr , 0 r m irodysime pasinRM(m, 0) = {00 . . . 00, 11 . . . 11}, RM(m, m) = Fn 2

ir minimalaus atstumo iraikos, kai r = 0 ir r = m, teisingos. Atskiru atveju, kai m = 1, lygybes teisingos su visomis (abiem) r reikmemis. Tarkime, teisingos lygybes d(RM(k, r)) = 2kr , 0 r k. Kadangi RM(k + 1, r) = RM(k, r)|RM(k, r 1), tai

d(RM(k + 1, r)) = min(2d(RM(k, r)), d(RM(k, r 1)) = 2k+1r .


I lygybiu su m = k gavome lygybes su m = k + 1. Teorema irodyta. Inagrinejome savotik kodu sudeties veiksm. Yra ir kodu daugyba. Tegu C1 Fn1 , C2 Fn2 yra du tiesiniai kodai, kuriu parametrai yra q q [n1 , k1 , d1 ] ir [n2 , k2 , d2 ]. Naudodamiesi iais kodais, sudarysime kod C Fn , kurio parametrai bus [n, k, d], n = n1 n2 , k = k1 k2 , d = d1 d2 . i kod q vadinsime kodu C1 ir C2 sandauga ir ymesime C = C1 C2 . I pradiu panagrinekime, kaip iuo kodu gali buti koduojama. Taigi reikia apibreti kodavimo taisykl

x Fk , x c, c Fn , k = k1 k2 , n = n1 n2 . q q
Pirmiausia odi x Fk padalykime i k2 odiu i Fk1 : q q

x = x1 x2 . . . xk2 .
Dabar odius xi koduokime atitinkamais kodo C1 odiais yi ir suraykime iuos odius i matricos Y eilutes. Matricos Y matavimai  k2 n1 . I ios matricos stulpeliu sudarykime odius z1 , z2 , . . . , zn1 . iuos odius koduokime atitinkamais kodo C2 odiais vi . iuos odius sura stulpeliais gausime n2 n1 eiles matric; sura jos elementus eilute po eilutes (arba stulpelis po stulpelio), gausime kodo odi c Fn . q Panagrinekime pavyzdi. Tegu abu kodai yra dvejetainiai, o generuojanios matricos lygios 1 0 0 1 1 1 0 0 1 , G2 = 0 1 0 0 1 . G1 = 0 1 1 1 0 0 1 1 0 Tegu reikia koduoti eiu bitu odi

x = 110110 = 11|01|10.

9. TIESINIAI KODAI

165

Po pirmojo ingsnio  kodavimo kodu C1  gausime toki matric, sudaryt i kodo C1 odiu:

1 1 1 1 1 0 Y = 0 1 G1 = 0 1 1 1 . 1 0 1 0 0 1
Dabar matricos Y stulpelius reikia koduoti C2 kodu ir gautus odius surayti i naujos matricos stulpelius. Tai galime padaryti taip: transponuoti Y, padauginti i G2 ir sandaug vel transponuoti:

1 0 V = (YT G2 )T = GT Y = 0 2 1 1

0 1 0 0 1

1 0 0 0 1 1 1 0 1 1 0 1 1 1 = 1 1 1 0 0 1 0 0 1

1 1 0 1 1 0 0 0 1 . 0 0 1 1 1 1 0 0 1

Dabar panagrinekime abstrakiau. Tegu abieju kodu generuojanios matricos yra standartinio pavidalo: G1 = (Ik1 , A1 ), G2 = (Ik2 , A2 ). Paymekime X  matric, sudaryt koduojam k1 k2 ilgio informaciniu bloku odi suraius i k2 k1 matavimu matric. Tada po pirmojo kodavimo ingsnio gausime matric Y = XG1 = (X, XA1 ). Po antrojo kodavimo ingsnio gaut matric galime urayti taip:

X XA1

. V = (YT G2 )T = GT Y = 2 AT X AT XA1 2 2
Galima kodu sandaug apibreti ir visikai abstrakiai. Tegu C1 Fn1 , C2 Fn2 yra du tiesiniai koq q dai, kuriu parametrai yra [n1 , k1 , d1 ] ir [n2 , k2 , d2 ], o generuojanios matricos G1 , G2 . Ju sandauga vadinsime kod i Fn1 n2 odiu, kurie gaunami i q matricu GT XG1 , suraius ju elementus i odius. 2 Jei C1 Fn1 , C2 Fn2 yra tiesiniai kodai, kuriu q q parametrai yra [n1 , k1 , d1 ] ir [n2 , k2 , d2 ], tai ju sandaugos parametrai yra [n1 n2 , k1 k2 , d1 d2 ].

77 apibreimas.

98 teorema.

166

KODAI IR IFRAI

Irodymas. Dvieju kodu sandaug apibreeme naudodami generuojanias matricas. Pagalvojus reiktu isitikinti, kad, daugindami pirmiesiems ekvivalenius kodus, gautume kod, kuris yra ekvivalentus pirmuju sandaugai. Todel pakanka nagrineti atveji, kai generuojanios matricos yra standartinio pavidalo. Tada kodu sandaugos odiai gaunami i matricu X XA1 , V= (67) T X AT XA A2 1 2
ia X yra k2 k1 matavimu matrica, sudaryta i koduojamu simboliu. Isitikinti, kad sandaugos dimensija yra lygi k1 k2 , galime nustat, kad visi kodu sandaugos odiai yra tiesikai nepriklausomu odiu, gaunamu i matricu X, kuriose vienas elementas lygus 1, o kiti nuliai, tiesines kombinacijos. Gerai isiiurekite i (67), turetu paaiketi. Dabar irodykime teigini apie minimalu atstum. Pastebekime, kad matricos (67) eilutese surayti kodo C1 , o stulpeliuose  kodo C2 odiai. Keletas eiluiu ir stulpeliu gali buti vien tik i nuliu. Taiau jeigu eilute nenuline, tai joje yra ne maiau kaip d1 nenuliniu elementu, jeigu stulpelis nenulinis  jame ne maiau kaip d2 nenuliniu elementu. Nagrinekime nenulini kodu sandaugos odi atitinkani matric V. Kadangi ji turi stulpeli, kuriame yra ne maiau kaip d2 nenuliniu elementu, tai ji turi ne maiau kaip d2 nenuliniu eiluiu. Taigi odio svoris ne maesnis u d1 d2 . Beliko isitikinti, kad yra lygiai d1 d2 nenuliniu elementu turiniu matricu V. Toki odi galime sudaryti taip. Tegu x Fk1 yra toks odis, kad q w(xG1 ) = d1 ir y = y1 y2 . . . yk2 Fk2 , kad w(yG2 ) = d2 . Dabar sudarykime q matric X, suraydami i jos eilutes odius yj x: y1 x y2 x . X= ... yk2 x Jeigu su ia matrica X sudarysime V, joje bus lygiai d1 nenuliniu stulpeliu, visi kiti  nuliniai. Be to, nenuliniai stulpeliai bus kodo C2 odiai, kuriu svoris d2 . Taigi matricos V (kodu sandaugos odio) svoris bus tiksliai lygus d1 d2 . Panagrinesime dar vien kodu konstrukcij. janti matrica yra

78 apibreimas.

Tegu L yra dvinaris [n, k, d] kodas, kurio generuo-

G= 1 1 ... 1 G1 0 ... 0 G2

9. TIESINIAI KODAI

167

ia pirmieji d pirmosios eilutes elementai lygus vienetui. Tiesinis kodas, kurio generuojanti matrica yra G2 , vadinamas liekanu kodu (residual code). Pastebekime, kad kiekvieno kodo generuojaniai matricai galima elementariais pertvarkiais suteikti i apibreime naudojam. Tegu L yra dvinaris [n, k, d] tiesinis kodas. Tada jo liekanu kodo parametrai yra [nd, k1, d ], o minimalus atstumas d tenkina nelygyb d d/2. Tegu x yra liekanu kodo odis, tada x yra tam tikra matricos G2 eiluiu tiesine kombinacija, sudaryta su ne visais nuliniais koecientais. Jei y yra analogika matricos G1 eiluiu kombinacija, tai y|x L. Jeigu butu x = 00 . . . 0, tai gautume, kad w(y|x) = w(y) < d (reikia kiek pagalvoti, kodel). Tai prietaravimas. Taigi G2 eilutes yra tiesikai nepriklausomos, o liekanu kodo dimensija lygi k 1. Pridekime prie odio y|x pirmj matricos G eilut:

99 teorema. Irodymas.

y |x = y|x + 11 . . . 1|00...0 L.
Taigi y|x, y |x L ir

w(y|x) = w(y) + w(x) d, w(y |x) = w(y ) + w(x) d.


Taiau arba w(y) d/2, arba w(y ) d/2. I bet kurios iu nelygybiu iplaukia, kad kodo L odiui x teisinga nelygybe w(x) d/2. Kadangi i nelygybe teisinga bet kokiam kodo odiui, tai turi buti teisinga ir minimaliam atstumui d d/2. Liekanu kodo dimensija vienetu maesne u pradinio kodo dimensij. Tarkime, L0 yra dvejetaines abeceles odiu [n, k, d0 ] kodas. Jo liekanu kodo L1 parametrai bus [n d0 , k 1, d1 ]; pastarojo kodo liekanu kodo  [n d0 d1 , k 2, d2 ]. Toliau konstruodami liekanu kodus, turesime sustoti gav kod su parametrais [n d0 . . . dk2 , 1, dk1 ]. io kodo odiu ilgis, inoma, ne maesnis u minimalu atstum dk1 , taigi

n d0 + d1 + . . . + dk2 + dk1 .
Taiau dj dj1 /2, todel dj d0 /2j . Taigi

1 2k1 1 + . . . + k1 n, d0 n k . 2 2 2 1 Irodeme dar vien iverti tiesinio kodo parametrams. Analogikas ivertis teisingas ir bendruoju atveju. d0 1 +
teisinga nelygybe

100 teorema.

Tiesiniam Fq abeceles kodui su parametrais [n, k, d]


k1 i=0

d n, qi

dn

(q 1)q k1 . qk 1

168 is nelygybe vadinama Griesmerio iveriu.

KODAI IR IFRAI

9.9. is tas apie odiu svorius


Norint suinoti svori, reikia sverti. iame skyrelyje sukursime bud kodo odiu svoriams surasti, ju visai nesveriant, netgi visai neinant, kaip jie atrodo.

Kodo odio x svoriu vadiname nenuliniu jo komponeniu skaiiu. Svori ymime w(x). Kartais, nagrinejant kodo savybes, svarbu inoti, kiek ir kokio svorio odiu jis turi. Jau tyrinejome Hammingo kodu svorius, nustateme rekurentinius sryius, kuriais naudojantis galima nustatyti, kiek ir kokio svorio odiu yra. iame skyrelyje sukursime iranki, tinkanti bet kokiu tiesiniu kodu svoriams tyrineti. Apibreime funkcij, kuri saugo informacij apie kodo odiu svorius.

79 apibreimas. Tegu C yra n ilgio abeceles Fq odiu kodas, Ai = |{c C : w(c) = i}|. Funkcij
n

wC (x, y) =
i=0

Ai xni y i

vadinsime kodo C svoriu funkcija, o skaiiu Ai sek  kodo svoriu skirstiniu. Pastebesime, kad svoriu pasiskirstymo funkcij galima ir taip urayti:

wC (x, y) =
cC

xnw(c) y w(c) .

Danai naudojamas kitas svoriu pasiskirstymo funkcijos variantas


n

wC (z) = wC (1, z) =
i=0

Ai z i =
cC

z w(c) .

Vienas pagrindiniu rezultatu, gautu nagrinejant kodo svoriu funkcij, yra matematikes F. J. McWilliams irodyta tapatybe, kuri tuoj suformuluosime. Tegu L yra tiesinis abeceles Fq odiu kodas, L jo dualus kodas. Tada abieju kodu svoriu pasiskirstymo funkcijas sieja tapatybe

101 teorema.

wL (x, y) =

1 wL (x + (q 1)y, x y). |L|

(68)

Tai giluminius kodu sryius atskleidianti teorema. Nera ko tiketis, kad jos irodymas bus visai paprastas. Pirmiausia patyrinekime, kaip j galima taikyti. Pavyzdys. Tegu L F5 yra tiesinis kodas, kuri generuoja du odiai: 2 v1 = 10101 ir v2 = 01010. Kodas turi tik keturis odius, visi jie skirtingo svorio. Svoriu skirstinys toks: A0 = A2 = A3 = A5 = 1. Dualus kodas irgi

9. TIESINIAI KODAI

169

nedidelis, jis turi atuonis odius. Kokie ju svoriai? Galime nustatyti nesukonstrav paties kodo. Paymekime dualaus kodo svoriu skirstinio elementus B0 , B1 , . . . , B5 . inome tik B0 = 1. Uraykime McWilliams tapatyb, istatydami i (68) reikmes q = 2, x = 1:

B0 + B1 y + . . . + B5 y 5 =

1 (1 + y)5 + (1 + y)4 (1 y) + . . . + (1 y)5 . 4

Deines puses daugianari galime sutvarkyti laipsniu didejimo tvarka:

1 + 4y 2 + 3y 4 .
tai koki dualaus kodo svoriu skirstini gavome: B0 = 1, B2 = 4, B4 = 3. Matome, kad dualaus kodo minimalus atstumas lygus 4, taigi kodas taiso vien klaid. Dar vienas pavyzdys. Nagrinedami maksimalaus atstumo kodus, suradome daug savidualiu kodu poru. Pavyzdiui, nustateme, kad savidualu kod galima sudaryti renkant odius i Fq+1 , ia q yra nelyginis pirminis arba q pirminio laipsnis. Netgi sukonstravome ji  tai kiek modikuotas Reedoq+1 Solomono kodas RS q+1,k , k = 2 . Kiek ir kokio svorio odiu jis turi? Panagrinekime atveji L = RS , taigi q = 3. Kadangi L = L , o kodo 4,2 dimensija yra lygi 2, tai, paymej kodo skirstini A0 , A1 , A2 , A3 , A4 (A0 = 1) ir istat x = 1, q = 3, galesime (68) urayti taip:

A0 + A1 y + A2 y 2 + A3 y 3 + A4 y 4 =

1 (1 + 2y)4 + A1 (1 + 2y)3 (1 y) 9 +A2 (1 + 2y)2 (1 y)2 + A3 (1 + 2y)(1 y)3 + A4 (1 y)4 .

Ura deinij pus kaip daugianari pagal y laipsnius ir sulygin atitinkamus kaires ir deines pusiu daugianariu koecientus, gauname penkiu lygiu sistem. J isprend gauname, kad A3 = 8, o kiti svoriu skirstinio elementai lygus nuliui. Taigi savidualaus kodo L visi nenuliniai odiai turi po tris nenulines komponentes. iuo atveju MacWilliams tapatybe atrodo taip:

8 1 1 + 8y 3 = (1 + 2y)4 + (1 + 2y)(1 y)3 . 9 9


Dabar pabandykime irodyti McWilliams tapatyb. Irodinesime j tik dvejetaines abeceles atveju, taigi q = 2. Tada tapatybe virsta tokia:

wL (x, y) =

1 wL (x + y, x y). |L|

(69)

Irodymui prireiks keliu pagalbiniu teiginiu. Dvejetaines abeceles odiu x = x1 . . . xn , y = y1 . . . yn skaliarin sandaug ymesime kaip anksiau

(x, y) = x1 y1 + x2 y2 + . . . + xn yn .

170 ia sudetis atliekama moduliu 2. Toliau L ymi tiesini abeceles F2 odiu kod.

KODAI IR IFRAI

102 teorema. Teisinga lygybe


(1)(u,v) =
uL

|L|, 0,

jei v L , jei v L .

lygybe akivaizdi. Tegu v L , tada visus L odius galime padalyti i dvi grupes: U = {u1 , u2 , . . . , ur } ir W = {w1 , w2 , . . . , ws }, kad

Irodymas. Jeigu v L , tai (u, u) = 0 su visais u L ir pirmoji

(ui , v) = 0,

(wj , v) = 1.

Reikia irodyti, kad r = s. Pastebekime, kad

{w1 +w1 , w1 +w2 , . . . , w1 +ws } U,

{w1 +u1 , w1 +u2 , . . . , w1 +ur } W.

Tada s r ir r s, taigi r = s. Prisiminkime, kas yra Abelio grupes: tai algebrines grupes su sudeties operacija, turinia savyb a + b = b + a.

103 teorema. Tegu G yra bet kokia Abelio grupe, f : Fn G, 2


f (u) =
vFn 2

(1)(u,v) f (v).

Tada bet kokiam tiesiniam kodui L Fn teisinga lygybe 2

f (u) =
uL

1 |L|

f (u).
uL

Irodymas. Pakeisdami sumavimo tvark ir pasiremdami anksiau irodytu teiginiu, gausime


f (u) =
uL vFn 2

f (v)
uL

(1)(u,v) = f (v)
vL uL

f (v)
vL

(1)(u,v) +
uL

(1)(u,v) = |L|
vL

f (v).

O dabar jau pasirengta irodyti (69) lygyb. Irodymas. Kiekvienam odiui u Fn apibrekime 2

f (u) = xnw(u) y w(u)

10. CIKLINIAI KODAI ir pastebekime, kad bet kokiam kodui L

171

f (u) = wL (x, y).


uL

Funkcija f igyja reikmes daugianariu su dviem simboliais x, y aibeje. Svarbu, kad tokie daugianariai sudaro Abelio grup, todel funkcijai galesime taikyti k tik irodyt teigini. Pasinaudoj juo, gausime

wL (x, y) =
uL

f (u) =

1 |L|

f (u).
uL

(70)

Surasime reikmes f (u). Tegu u = u1 u2 . . . un , v = v1 v2 . . . vn . Tada


n

f (u) =
vFn 2 n

(1)(u,v) xnw(u) y w(u) =


vFn i=1 2 1

(1)ui vi x1vi y vi

=
i=1

(1)ui w x1w y w .
w=0

Dabar pastebekime, kad vidine suma lygi:


1

(1)ui w x1w y w =
w=0

x + y, x y,

jei ui = 0, jei ui = 1.

Taigi

f (u) = (x + y)nw(u) (x y)w(u) .

Istat i reikm i (70), gausime McWilliams tapatyb (69).

10 Cikliniai kodai
Matricos, daugianariai  tai svarbiausi tiesines algebros veikejai. Taiau, nagrinedami tiesinius kodus, naudojomes beveik tik vien matricomis. Dabar pasitelkime daugianariu technik...

10.1. Daugianariu kodai


Kodavimas  tai daugianariu daugyba, dekodavimas  dalyba. Taip trumpai galima apibudinti daugianariu kodu naudojimo ypatybes.

Kaip ir anksiau, Fq ymesime kun i q = pm elementu, ia p  pirminis skaiius (danai imsime tiesiog q = p). Jau nagrinejome daugianariu tiesines erdves

Fq [x] = {a0 + a1 x + . . . + am xm : ai Fq , am = 0}, Fq,n [x] = {f Fq [x] : deg(f ) < n}.

172

KODAI IR IFRAI

inome, kad tiesines erdves Fn ir Fq,n [x] yra izomorkos. Elementu q atitikti nustato labai paprasta taisykle

a Fn , a = a0 a1 . . . an1 a0 + a1 x + . . . + an1 xn1 Fq,n [x]. q


Daugianario g(x) Fq [x] svoriu vadinsime jo nenuliniu koecientu skaiiu. Svori ymesime w(g). Jeigu apsiribojame tik sudeties bei daugybos i kuno elementu veiksmais, tai visai tas pats, ar juos taikome odiams, ar daugianariams. Taiau daugianarius dar galime ir dauginti! Tegu g(x) = g0 + g1 x + . . . + gk xk yra daugianaris i Fq [x], 0 k n, gk = 0. Aib

80 apibreimas.

81 apibreimas.

Cg,n = {a(x)g(x) : a(x) Fq,nk [x]} Fq,n [x]


vadinsime daugianariu kodu, generuotu g(x). Trumpai tariant, daugianario g(x) generuotas kodas  io daugianario kartotiniu, kuriu laipsnis ne didesnis kaip n, aibe. inoma, dydi n galime pasirinkti, taigi su tuo paiu daugianariu galime generuoti ivairius kodus. daugianaris g, yra tiesinis kodas. Daugianariai

104 teorema. Daugianariu kodas Cg,n , kuri generuoja k-ojo laipsnio


g(x), xg(x), . . . , xnk1 g(x)
(71)

sudaro io kodo baz. Irodymas. I tiesu, kad kodas yra tiesinis, beveik akivaizdu. Akivaizdu ir tai, kad bet kuris kodo odis yra (71) odiu tiesine kombinacija. Jeigu io rinkinio daugianariai butu tiesikai priklausomi, tai egzistuotu nenulinis daugianaris c Fq [x], kad c(x)g(x) = 0. Taiau tokia lygybe su daugianariu iedo Fq [x] elementais negalima (matematikai sako  iede nera nulio dalikliu). Taigi daugianariai (71) tikrai sudaro kodo baz. Ivada. Daugianario g, deg(g) = k, generuoto kodo Cg,n parametrai yra [n, n k]. Interpretuodami kodo Cg,n elementus kaip odius, sudarytus i daugianariu koecientu, galime pagal (71) baz sudaryti generuojani kodo matric: g0 g1 . . . gk 0 0 . . . 0 0 g0 g1 . . . gk 0 . . . 0 G=. . .. . . . .. . . . . . . . . . . . . . . . . 0 0 . . . 0 0 g0 . . . gk

10. CIKLINIAI KODAI

173

Prisiminkime, kokios patogios koduoti yra standartinio pavidalo generuojanios matricos: kodavimas yra sisteminis, t. y. prie koduojamo informacijos bloko tiesiog priliejami papildomi klaidoms taisyti reikalingi kontroliniai simboliai. Jeigu kodavimui daugianariu kodu naudosime k tik urayt generuojani matric, tai kodavimas nebus sisteminis. Taiau galima sudaryti kit generuojani matric ir naudotis sisteminio kodavimo privalumais.

105 teorema. Tegu g yra k -ojo laipsnio daugianaris, o rj (x) yra daugianario xj dalybos i g(x) liekana. Tada daugianariai
xk+1 rk+1 (x), xk+2 rk+2 (x), . . . , xn rn (x)
sudaro g(x) generuoto kodo Cg,n baz. Irodymas. I tikruju, bet kuris daugianaris dalijasi i g(x), todel priklauso kodui. Ju yra tiek, kokia kodo dimensija. Jeigu ju koecientus suraytume i (n k) n matric G , pamatytume, kad paskutinieji n k stulpeliai sudaro vienetin matric: G = (A, Ink ). Taigi matricos eilutes yra tiesikai nepriklausomos, jos sudaro kodo baz. Taiau koduojant n k ilgio simboliu blok su ia matrica, jis tiesiog papildomas i priekio k simboliais. Kodavimas su ia matrica yra sisteminis, tik kontroliniai simboliai pridedami ne koduojamo kodo pabaigoje, bet priekyje. O dabar prisiminkime, kaip sudareme generuojani Golay kodo G23 matric: i pirmj eilut suraeme odio

c1 = 11000111010100000000000
simbolius, o i kitas  odius, gautus i c0 ciklikais postumiais. Toki pai generuojani matric turi daugianario

g(x) = 1 + x + x5 + x6 + x7 + x9 + x11
generuotas 23 bitu ilgio odiu kodas. Taigi Golay kodas G23 yra daugianariu kodas. Daugianariu kodai yra tiesiniai kodai, turintys savu ypatybiu. O gal bet kuris tiesinis kodas yra kokio nors daugianario generuotas daugianariu kodas? Atsakymas  ne. tai paprastas pavyzdys. Nagrinekime tiesini kod L = {000, 010, 101, 111}. Pakeit odius daugianariais, gautume L = {0, x, 1 + x2 , 1 + x + x2 } F2,3 [x]. Yra tik vienas daugianaris, kuris dalija visus L daugianarius: g(x) = 1. Taiau Cg,3 = L. Kodavimas daugianario kodo odiais yra daugianariu daugyba. I tiesu:

a0 a1 . . . ank1 a0 + a1 x + . . . + ank1 xnk1 = a(x) a(x)g(x) Cg,n .


O dekodavimas  galbut daugianariu dalyba? Beveik.

174

KODAI IR IFRAI

Kaip ir nagrinetu tiesiniu kodu atveju, kiekvienam daugianariui a(x) Fq,n [x] galime sudaryti jo sluoksni:

La = {a(x) + c(x) : c(x) Cg,n } .


Kiekvienas sluoksnis turi po q nk elementu. Skirtingus daugianarius a(x), b(x) atitinkantys sluoksniai arba sutampa, arba nesikerta. Taigi vis daugianariu erdv Fq,n [x] galima iskaidyti i nesikertaniu sluoksniu

L1 , L2 , . . . , Lqk , L1 = Cg,n ,
sjung. Vieno sluoksnio atstovu dalybos i g(x) liekanos sutampa. Vadinasi, pagal gautojo i kanalo ikraipyto odio

d(x) = c(x) + e(x), c(x) Cg,n ,


dalybos i g(x) liekan galime nustatyti, i kuri klas odis pateko. i dalybos liekana daugianario kodo atveju atlieka sindromo vaidmeni. Surad ios klases lyderi e(x)  maiausi svori turinti jos element  gautji odi dekoduojame taip: d(x) d(x) e(x). Itaisomu klaidu skaiius priklauso nuo minimalaus kodo atstumo. Gerai inome, kad konstruoti daug klaidu taisanius kodus yra nelengva. Ir daugianariu technika ia ne kiek tepadeda. Panagrinekime tik pavyzdi su dvejetaines abeceles kodais.

106 teorema. Jei daugianaris g(x) F2 [x] su nenuliniu laisvuoju nariu nedalija jokio daugianario xk + 1, kur k < n, tai g(x) generuoto kodo i n ilgio odiu minimalus atstumas ne maesnis u 3. Irodymas. Visi g(x) generuoto kodo daugianariai dalijasi i g(x). Reikia irodyti, kad visu tokiu daugianariu svoriai yra ne maesni u 3. Kadangi g(x) nera konstanta (kitaip g(x) dalytu daugianarius xk + 1), tai reikia irodyti, kad jokie daugianariai
xi , xi + xi+j , i + j < n,

nesidalija i g(x). Kadangi g(x) laisvasis narys nelygus nuliui, tai g(x) |xi . Jeigu g(x) dalytu xi + xi+j = xi (1 + xj ), tai turetu dalyti ir 1 + xj , j < n. Taiau tai prietarauja teoremos slygai. Pavyzdys. Pasirem akivaizdiomis lygybemis (jos teisingos tik kune F2 !):

x4 + 1 = (x + 1)4 ,

x5 + 1 = (x + 1)(x4 + x3 + x2 + x + 1),

matome, kad g(x) = 1 + x + x3 nedalija nei x4 + 1, nei x5 + 1. Taigi g(x) generuoja [6, 3] kod, visada itaisanti vien klaid.

10. CIKLINIAI KODAI

175

10.2. Daugianariu iedai ir idealai


Visu odiu kilmes istorija  moniu siekiu, vargu ir diaugsmu istorija. Jeigu nusprstumete suinoti, kaip algebroje atsirado svoka idealas, tektu patyrineti, kaip matematikai galynejosi su Paskutinija Fermat teorema.

Jeigu f Fq [x] yra n-ojo laipsnio daugianaris, tai daugianariu erdve Fq,n [x] su sudeties ir daugybos operacijomis +, f sudaro ied. i ied ymesime Fq [x]/f. Jame galime iekoti maesniu iedu, kitaip sakant, poiediu. iedo R su sudeties ir daugybos operacijomis +, netui poaibi R R vadiname poiediu, jeigu su visais x, y R teisingi sryiai x + y, x y R . Iekosime ne bet kokiu, bet geru iedo Fq [x]/f poiediu. iedo Fq [x]/f poiedi I vadinsime idealu, jeigu kiekvienam b(x) I teisingas sryis x f b(x) I. I apibreimo beveik i karto gauname toki ivad: Ivada. Jeigu I yra iedo Fq [x]/f idealas, tai su visais a(x) Fq [x]/f, b(x) I, teisingas sryis a(x) f b(x) I. Kitaip sakant  jeigu daugianaris priklauso idealui, tai ir visi jo kartotiniai sandaugos f prasme yra io idealo elementai. i ivada parodo, kaip idealai gali buti sudaryti.

82 apibreimas.

83 apibreimas.

84 apibreimas.

Tegu g(x) Fq [x]/f, deg(g) < n. Ideal

g = {a(x) f g(x) : a(x) Fq [x]/f }


vadinsime pagrindiniu idealu. Daugianari g(x) vadinsime io idealo generatoriumi. O dabar naujiena apie lygiav daugianariu ieduose: visi idealai pagrindiniai! maiausio laipsnio nenulinis daugianaris, priklausantis I. Irodymas. Tarkime, g(x) I yra nenulinis maiausio laipsnio daugianaris i idealo I . Tada su visais a(x) Fq [x]/f teisingas sryis a(x) f g(x) I. Reikia irodyti, kad kitokiu daugianariu ideale I nera. Tegu b(x) I yra bet koks idealo daugianaris. Padalykime ji i g(x) su liekana b(x) = q(x)g(x) + r(x), 0 deg(r) < deg(g). Kadangi visu triju ios lygybes daugianariu laipsniai yra maesni u n, tai niekas nepasikeis, jeigu daugybos veiksm pakeisime iedo daugybos veiksmu:

107 teorema. Jeigu I yra iedo Fq [x]/f idealas, tai I = g , ia g yra

b(x) = q(x) f g(x) + r(x),

0 deg(r) < deg(g).

176

KODAI IR IFRAI

Kadangi I yra poiedis, tai r(x) = b(x) q(x) f g(x) I. Taiau tada r(x) = 0, nes kitaip g(x) nebutu maiausio laipsnio idealo daugianaris. Todel b(x) = q(x) f g(x). Taigi bet kuriam iedo Fq [x]/f idealui galime surasti ji generuojanti daugianari. Apskritai tokiu daugianariu yra ne vienas. Pavyzdiui, galima irodyti, kad jei daugianaris h(x) neturi su f (x) netrivialiu bendruju dalikliu (t. y. jie kartu dalijasi tik i nulinio laipsnio daugianariu  konstantu), tai g = g f h . Taiau mums svarbiausi  maiausio laipsnio daugianariai generuojantys ideal. Kiek ju yra? Jeigu

g(x) = g0 + g1 x + . . . + gk xk
yra vienas i ju, tai daugianariai g(x), Fq , = 0, irgi yra to paties laipsnio ir generuoja t pati ideal. Daniausiai patogu pasirinkti t daugianari i io burio, kurio vyriausiasis koecientas lygus 1.

10.3. Daugiau nei paprasti daugianariu kodai


Cikliniai kodai  tai tikras tiesiniu kodu elitas. Apibreti juos galime labai paprastai, taiau ryiu jie turi su auktais matematikos sluoksniais.

I pirmo vilgsnio atlikti veiksm a(x) f b(x)  nemaas vargas: reikia pirmiausia daugianarius sudauginti iprastu budu, tada  rasti sandaugos dalybos i f (x) liekan. Taiau kartais t darb galima atlikti paprastai ir greitai. iame skyrelyje nagrinesime tik daugianariu ied Fq [x]/f su

f (x) = xn 1.
Jeigu tai

a(x) = a0 + a1 x + . . . + an1 xn1 Fq [x]/f, x f a(x) = an1 + a0 x + . . . + an2 xn1 , x2 f a(x) = an2 + an1 x + . . . + an3 xn1 , ........................ xm f a(x) = anm + an1 x + . . . + anm1 xn1 ,

taigi dauginant i vienanariu, pakanka pastumti daugianario koecientus. Savo ruotu, kai daugikliai yra bet kokie daugianariai, pakanka atlikti sek postumio, daugybos i kuno elementu ir sudeties veiksmu.

85 apibreimas.

Tiesini kod C Fn vadinsime cikliniu, jeigu q

kiekvienam c = c0 c1 . . . cn1 C cn1 c0 . . . cn2 C.

10. CIKLINIAI KODAI

177

Atlik ciklinio kodo odiu simboliu postumi, vel gauname to paties kodo odi. Akivaizdu, kad, ciklikai pastum simbolius per bet kiek poziciju, vel gausime kodo odius. O dabar interpretuokime kiekvien ciklinio kodo odi c = c0 c1 . . . cn1 kaip iedo element

c(x) = c0 + c1 x + . . . + cn1 xn1 .


Kodas C yra Fq [x]/f poaibis. Kadangi C yra ciklinis kodas, tai

x f c(x) = cn1 + c0 x + c1 x2 + . . . + cn2 xn1 C.


Nebesudetinga padaryti ivad, kad C yra iedo Fq [x]/f idealas! Teisingas ir atvirktinis teiginys: kiekvienas iedo Fq [x]/f idealas yra ciklinis kodas.

108 teorema. iedo Fq [x]/f idealu ir erdves Fq,n [x] cikliniu kodu aibes sutampa. Dabar galime cikliniams kodams tirti panaudoti visa, k inome apie idealus. 109 teorema. Ciklinis kodas C Fq [x]/f yra daugianariu kodas, kuri generuoja maiausio laipsnio nenulinis C daugianaris g(x), t. y. C = Cg,n . is daugianaris yra f (x) = xn 1 daliklis. Jei daugianaris h(x) dalija f (x), tai jo generuotas daugianariu kodas Ch,n Fq [x]/f yra ciklinis. Primename, kad daugianariu kodo generatorius  tai daugianaris g(x), su kuriuo sudaroma kodo baze
g(x), xg(x), . . . , xnk1 g(x).
Taigi visi daugianariu kodo odiai dalijasi i g(x). Ciklinis kodas yra idealas; idealas turi ne vien generatoriu; ne visus juos, bet tik maiausio laipsnio daugianarius vadiname kodo generatoriais! Irodymas. Tegu daugianario g(x) laipsnis lygus k. Tada

Cg,n = {a(x)g(x) : deg(a) < n k} , C = g = {a(x) f g(x) : a(x) Fq,n [x]} .

Akivaizdu, kad Cg,n C. Taiau, irodinedami 108 teorem, nustateme, kad kiekvienas idealo g odis b(x) dalijasi i g(x). Taigi C Cg,n ir pirmasis teoremos teiginys irodytas. Irodysime, kad f (x) = xn 1 dalijasi i g(x). Padalykime f (x) i g(x) su liekana:

f (x) = h(x)g(x) + r(x),

(h(x))g(x) = r(x) f (x), 0 deg(r) < deg(g).

178

KODAI IR IFRAI

I paskutines lygybes gauname, kad (h(x)) f g(x) = r(x), taigi r(x) g . Taiau tada turi buti r(x) = 0, nes g yra maiausio laipsnio nenulinis daugianaris, priklausantis C. Taigi

xn 1 = h(x)g(x)
ir antrasis teiginys yra irodytas. Tegu dabar h(x) dalija xn 1. Kodas h yra ciklinis; kad irodytume, jog h(x) yra jo generatorius, pakanka isitikinti, kad joks maesnio u h laipsni nenulinis daugianaris nepriklauso h . Tarkime prieingai: ciklinio kodo h generatorius yra daugianaris h1 (x) ir deg(h1 ) < deg(h). Taiau tada h(x) turi dalytis i h1 (x). Kita vertus, turi atsirasti daugianaris d(x), kad butu h1 (x) = d(x) f h(x), t. y.

d(x)h(x) = k(x)f (x) + h1 (x).


Taiau f (x) dalijasi i h(x), todel i ios lygybes gautume, kad h1 (x) turi dalytis i h(x). O tai jau prietaravimas! Tegu g(x) yra ciklinio kodo generatorius, t. y. daugianaris, dalijantis f (x) = xn 1. Kadangi ciklinis kodas yra daugianariu kodas, tai gautojo i kanalo (tikriausiai ikraipyto) odio d(x) sindromu galime laikyti dalybos i g(x) liekan:

d(x) = k(x)g(x) + r(x),

deg(r) < deg(g).

(72)

Tegu xn 1 = g(x)h(x). Padaugin (72) lygybes puses i h(x), gausime:

d(x)h(x) = k(x)g(x)h(x) + r(x)h(x) = k(x)f (x) + r(x)h(x), d(x) f h(x) = r(x)h(x).


Jei dvieju odiu d1 (x), d2 (x), gautu i kanalo, dalybos i g(x) liekanos r1 (x), r2 (x) yra skirtingos, tai ir sandaugos d1 (x) f h(x), d2 (x) f h(x) bus skirtingos. Taigi kai kodas ciklinis, tai odio d(x) sindromo vaidmeni puikiai atlieka sandauga d(x) f h(x), o daugianariui h(x) tinka kontrolinio daugianario vardas. Pavyzdiai. Daugianaris x9 1 vir kuno F2 skaidomas neskaidiais daugikliais tokiu budu:

x9 1 = (x 1)(x2 + x + 1)(x6 + x3 + 1).


Taigi i F9 elementu galima sudaryti 8 ciklinius kodus. Pavyzdiui, generuojanti 2 daugianari g(x) = (x 1)(x6 + x3 + 1) atitinka ciklinis kodas, kurio generuojanti matrica

1 1 0 1 1 0 1 1 0 . G= 0 1 1 0 1 1 0 1 1

10. CIKLINIAI KODAI

179

Daugianaris x23 1 vir kuno F2 iskaidomas neskaidiais daugikliais taip:

x23 1 = (x + 1)(x11 + x9 + x7 + x6 + x5 + x + 1) (x11 + x10 + x6 + x5 + x4 + x2 + 1).


Jau isitikinome, kad daugianaris

g(x) = x11 + x9 + x7 + x6 + x5 + x + 1
generuoja Golay kod G23 . Galima butu irodyti, kad ciklinis kodas, kurio generuojantis daugianaris yra

g(x) = x11 + x10 + x6 + x5 + x4 + x2 + 1,


ekvivalentus G23 . Pakaktu atitinkamai pertvarkyti io ciklinio kodo generuojani matric. Daugianario x11 1 skaidinys vir kuno F3 yra toks:

x11 1 = (x 1)(x5 + x4 x3 + x2 1)(x5 x3 + x2 x 1).


Ciklinis kodas, kuri generuoja daugianaris

g(x) = x5 + x4 x3 + x2 1,
vadinamas trinares abeceles Golay kodu G11 . io kodo i abeceles F3 odiu parametrai tokie: [11, 6, 5]. Nesudetinga isitikinti, kad tai tobulas kodas.

10.4. Reedo-Solomono kodu periura


Reedo-Solomono kodai yra maksimalaus atstumo kodai. Gerokai pagausin i eim, nustatysime, kad joje yra ir cikliniu kodu.

Prisiminkime, kaip apibreeme Reedo-Solomono kodus, naudodami kun

Fq .

86 apibreimas. Tegu Fq = {1 , 2 , . . . , q } (apibretumo delei tarkime, q = 0), o 1 k q yra naturalusis skaiius. Tiesini kod, kurio generuojanti matrica yra
1 1 ... 1 2 . . . q 1 2 2 2 , G k = 1 2 . . . q . . . .. . . . . . . . k1 k1 k1 1 2 . . . q

180

KODAI IR IFRAI

vadiname Reedo-Solomono kodu ir ymime RSq,k . Pabandykime pakeisti dvi ios konstrukcijos detales: matricai sudaryti panaudokime nebutinai visus kuno elementus; matricos stulpelius padauginkime i nenuliniu elementu.

87 apibreimas. Tegu v = (v1 , v2 , . . . , vn ) yra odis, sudarytas tik i nenuliniu Fq elementu, o a = (1 , 2 , . . . , n )  butinai i skirtingu io kuno elementu, k n. Kod, kurio generuojanti matrica yra v1 v2 ... vn v2 2 . . . vn n v1 1 2 2 2 v1 1 v2 2 . . . vn n , . .. . ... . ... . k1 k1 k1 v1 1 v2 2 . . . vn n
vadinsime apibendrintuoju Reedo-Solomono kodu ir ymesime RSn,k (v, a). Akivaizdu, kad RSq,k = RSn,k (v, a) su v = (1, 1, . . . , 1) ir a = (1 , 2 , . . . , q ). Malonu, kad apibendrintieji kodai ilaiko daugeli geru Reedo-Solomono kodu savybiu. Pavyzdiui, jeigu k1 k2 , tai RSn,k1 (v, a) RSn,k2 (v, a).

110 teorema. Kodo RSn,k (v, a) (1 k n) parametrai yra


[n, k, n k + 1],
t. y. is kodas yra maksimalaus atstumo kodas. Taigi apibendrintieji kodai irgi yra maksimalaus atstumo kodai. Irodyti i teigini galima nustaius, kad bet kuris generuojanios matricos k stulpeliu rinkinys sudaro tiesikai nepriklausom sistem. Tam vel kaip ir paprastu Reedo-Solomono kodu atveju reikia panaudoti Vandermondo determinant. Jeigu bet kuri k stulpeliu sistema yra tiesikai nepriklausoma, tai kodas yra maksimalaus atstumo kodas. Taigi teorema tikrai teisinga. O dabar apibendrintu Reedo-Solomono kodu eimoje paiekokime ypatingu kodu. Pasirinkime skaiiu n, kuris dalija q 1, ir kune Fq pasirinkime element , kurio eile yra n. Toki element visada galime rasti. I tiesu, jeigu yra q1 primityvusis kuno elementas, tai galime imti = n . Sudarykime rinkini a taip: a = (1, , 2 , . . . , n1 ), ir imkime

v = a0 = (10 , 0 , (2 )0 , . . . , (n1 )0 ) = (1, 1, . . . , 1).


Dabar galime sudaryti Reedo-Solomono kod RSn,k (a0 , a). Ar jis kuo nors ypatingas?

10. CIKLINIAI KODAI

181

111 teorema. Jeigu Fq yra n-osios eiles kuno elementas,


a = (1, , 2 , . . . , n1 ), a0 = (1, 1, . . . , 1),

tai kodas RSn,k (a0 , a) yra ciklinis, o vienas i jo generuojaniu daugianariu yra g(x) = (x )(x 2 ) (x nk ). (73)

Irodymas. Sudarykime kodo RSn,k (a0 , a) generuojani matric:


2 1 1 2 (2 )2 1 3 (2 )3 . . . . . . ... 1 k1 (2 )k1 1 1 1 ... ... ... ... .. . ... (n1 )2 . (n1 )3 ... n1 )k1 ( n1 1

Kad irodytume, jog kodas ciklinis, pakanka isitikinti, kad bet kurio bazes odio ciklinis postumis taip pat yra kodo odis. Imkime, pavyzdiui, odi, sudaryt i m + 1-osios eilutes elementu:

am = (1, m , (2 )m , . . . , (n1 )m ).
odis m am priklauso kodui RSn,k (a0 , a), taiau

m am = (m , (2 )m , . . . , (n )m ) = (m , (2 )m , . . . , 1).
Taigi m am yra per vien pozicij ciklikai pastumtas bazes odis am . Tada 2m am bus irgi kodo odis, savo ruotu ji galime gauti, ciklikai pastum am elementus per dvi pozicijas ir t. t. Taigi musu sukonstruotas kodas yra ciklinis. Kadangi kodo dimensija yra k, tai generuojanio kod daugianario laipsnis yra n k. Daugianario (73) laipsnis irgi yra n k. Pakanka parodyti, kad daugianaris, sudarytas imant koecientus i generuojanios matricos bet kurios eilutes, dalijasi i g(x). Imkime daugianari, atitinkanti pirmj eilut:

f1 (x) = 1 + x + x2 + . . . + xn1 .
Daugianaris f1 (x) dalysis i g(x), jeigu visos io daugianario aknys bus ir f1 (x) aknys. Taigi reikia isitikinti, kad f1 (j ) = 0, j = 1, 2, . . . , n k. Pavyzdiui,

f1 (j ) = 1 + j + (j )2 + . . . + (j )n1 = 1 + + 2 + . . . + n1 ,

= j .

182 Elementui irgi teisinga lygybe n = 1, todel

KODAI IR IFRAI

1+ + 2 +. . .+ n1 = n + + 2 +. . .+ n1 = (1+ + 2 +. . .+ n1 ).
Kadangi = 0 ir = 1, tai tokia lygybe teisinga tik tada, kai

1 + + 2 + . . . + n1 = 0, t. y. f1 (j ) = 0.
Atvejai su kitomis g(x) aknimis ir su kitomis generuojanios matricos eilutemis nagrinejami analogikai. Pavyzdiui, m + 1-j eilut atitinka daugianaris

fm+1 (x) = 1 + (1 )m x + (2 )m x2 + . . . + (n1 )m xn1 ,


todel

fm+1 (j ) = 1 + + 2 + . . . + n1 ,

= m+j .

Teorema irodyta. Galima suformuluoti ir kiek bendresn teorem. Pavyzdiui, jei paymesime

am = (1m , m , (2 )m , . . . , (n1 )m ),

a = (1, , 2 , . . . , n1 ),

tai RSn,k (am , a) kodas irgi bus ciklinis, jo generuojanti matrica bus

m+1 (m+1 )2 . . . (m+1 )n1 1 1 m+2 (m+2 )2 . . . (m+2 )n1 , .. . . . . ... ... ... m+k1 (m+k1 )2 . . . (m+k1 )n1 1
o jo generatorius  daugianaris

(m )2

...

(m )n1

g(x) = (x 1m )(x 2m ) (x nkm ).

10.5. BCH kodai


Santrumpa BCH i tikruju ymi ilg pavadinim: Bose, Ray-Chaudhuri ir Hocquenghemo kodas. i kod pirmieji du autoriai sukonstravo 1960 metais, o treiasis  1959.

Tarkime, sukonstravome koki nors tiesini [n, k, d] kod L Fn (q = pm ). q Kadangi Fn Fn , tai galime sudaryti sankirt L = L Fn . K galima p q p pasakyti apie aib L ? Visu pirma, ji netuia (nulinis odis jai tikrai priklauso). Antra  L yra tiesinis poerdvis. Taigi L yra tiesinis kodas i abeceles Fp odiu. Kokie jo parametrai? Pasakyti galime ne kain kiek: tai [n, k , d ] kodas, ia k k, d d.

10. CIKLINIAI KODAI

183

Taigi sukureme dar vien bud naujiems kodams i turimu konstruoti. I karto ji ir ibandykime. Tegu n yra skaiiaus q 1 (q = pm ) daliklis, Fq yra n-osios eiles elementas, 1 k n, r = n k + 1,

88 apibreimas.

a0 = (1, 1, . . . , 1),

a1 = (1, , 2 , . . . , n1 ).

Kod L = Fn RSn,k (a0 , a1 ) vadinsime BCH kodu su numatytuoju minip maliuoju atstumu r. Taigi BCH kodas  tai tarsi Reedo-Solomono kodo atstovybe odiu aibeje Fn . Jo parametrai yra [n, k , d ], ia k k, o d r. Paskutine p nelygybe teisinga todel, kad paties Reedo-Solomono kodo minimalus atstumas tiksliai lygus r (kodas priklauso maksimalaus atstumo kodu eimai). Paiekokime budo, kaip apibudinti BCH kod, nesinaudojant ReedoSolomono kodu. Juk, konstruodami i kod praktikai, vargu ar noresime surayti visus Reedo-Solomono kodo odius ir juos lyg bulves pavasari, perrinkineti. Tarkime, L Fn yra BCH kodas, gautas i kodo RSn,k (a0 , a1 ) Fn . p q Tegu yra Reedo-Solomono kodui konstruoti panaudotas n-osios eiles elementas. Tada Reedo-Solomono kodo generatorius yra

g(x) = (x )(x 2 ) . . . (x r1 ),

r = n k + 1.

Visi Reedo-Solomono kodo odiai, interpretuojami kaip daugianariai, dalijasi i g(x), kitaip tariant  elementai , 2 , . . . , r1 yra ju aknys. Kodo L odius irgi galime interpretuoti kaip daugianarius, taiau su koecientais i Fp . Taigi tie patys elementai yra ir ju aknys. Taiau jeigu elementas Fq yra daugianario f (x) Fp [x] aknis, tai f (x) turi dalytis i elemento minimalaus daugianario. Todel bet kuris BCH kodo odis, suvokiamas kaip daugianaris su koecientais i Fp , dalijasi i minimaliuju daugianariu

m (x), m2 (x), . . . , mr1 (x).

(74)

I ju galime sudaryti vien daugianari  maiausi bendr kartotini, t. y. maiausio laipsnio daugianari g(x), kuris dalijasi i visu (74) daugianariu. I g(x) dalijasi ir visi BCH kodo odiai, ir tik jie. Be to, daugianaris xn 1 dalijasi i visu (74) daugianariu, todel ir i g(x). Gavome nauj BCH kodo charakteristik. BCH kodas L Fn su numatytuoju atstumu r p yra ciklinis kodas, kurio generatorius yra maiausias bendras minimaliuju daugianariu m (x), m 2 (x), . . . , m r1 (x) kartotinis; ia yra n-osios eiles elementas, kuri galime rasti pletinyje Fpk , tokiame, kad pk 1 dalijasi i n.

112 teorema.

184

KODAI IR IFRAI

i teorem galime naudoti konstruodami BCH kodus: juk tereikia surasti n-osios eiles element ir kelis minimaliuosius daugianarius. Pabandykime. Sukonstruokime, pavyzdiui, BCH kod L F13 su numatytuoju ats3 tumu r = 3. Taigi n = 13; kokiame kune rasime n-osios eiles element? Kadangi i 13 dalijasi q 1 = 33 1, tai reikes pletinio F33 . Geriausia jo konstrukcijai panaudoti primityvuji treiosios eiles daugianari. Surasti ji nebutu labai paprasta, taiau iuolaikinems kompiuterines algebros sistemoms toks udavinys  vienas juokas. tai jis:

f (x) = x3 x + 1.
Dabar galime laikyti yra primityviuoju elementu ir skaiiuoti naudodamiesi sryiu 3 = 1. Mums reikalingas n-osios eiles elementas bus tiesiog = 2 , o elementai, kuriu minimaliuosius daugianarius teks skaiiuoti, bus ie: 1 = = 2 , 2 = 2 = 4 = 2 . Prisiminti, kaip skaiiuojami minimalieji daugianariai. Pradekime nuo m1 (x). io elemento eile yra 13, todel reikia surasti maiausiji m, kad 3m 1 (mod 13). Aiku, m = 3. Jau galime urayti pirmojo elemento minimaluji daugianari:
3 3 m1 (x) = (x 1 )(x 1 )(x 1 ) = (x 2 )(x 6 )(x 18 ).
1 2

Elemento 2 eile irgi tokia pati, todel


3 3 m2 (x) = (x 2 )(x 2 )(x 2 ) = (x 4 )(x 12 )(x 36 ), 36 = 10 .
1 2

Matome, kad bendru daugikliu daugianariai neturi, taigi BCH kodo generuojantis daugianaris bus g(x) = m1 (x)m2 (x). Belieka iskleisti minimaliuosius daugianarius ir juos sudauginti. Kiek pasidarbav (arba pasikviet i pagalb kompiuterines algebros sistem) gautume:

m1 (x) = x3 + x2 + x + 2,

m2 (x) = x3 + x2 + 2.

Musu sukonstruoto kodo dimensija k = n deg(g) = 7.

10.6. BCH kodu dekodavimas


BCH kodai yra geri tuo, kad jiems sukurta geru klaidu taisymo algoritmu. Ju yra ne vienas. Aptarsime, ko gero, vien paiu elegantikiausiu. Jame pasirodo Euklido algoritmas ir todel padvelkia tikra klasika.

Tarkime, L Fn yra BCH kodas su numatytuoju atstumu r = 2t + 1. Taigi p naudodamiesi iuo kodu, garantuotai galime itaisyti t klaidu. is kodas

10. CIKLINIAI KODAI

185

yra Reedo-Solomono kodo i abeceles Fq (q = pm , q 1 dalijasi i n) odiu poaibis. Kodo generatorius yra daugianaris

g(x) = (x )(x 2 ) (x 2t ),
ia Fq yra n-osios eiles elementas. Kiekvienam kodo L odiui, interpretuojant ji kaip daugianari

c(x) = c0 + c1 x + . . . + cn1 xn1 ,


teisingos lygybes

c() = c(2 ) = . . . = c(2t ) = 0.

yra

Tarkime, siuniant kodo odi c(x) kanalu, ivyko klaidos ir gautasis odis

d(x) = c(x) + e(x),

e(x) = e0 + e1 x + . . . + en1 xn1 .

Jeigu surastume klaidu daugianari e(x), galetume itaisyti ivykusias klaidas. Tai imanoma, jeigu klaidu skaiius ne didesnis u t, taigi  daugianario e(x) svoris turi buti ne didesnis u t. Kadangi daugianari d(x) inome, tai galime suskaiiuoti dydius

sj = d(j ) = c(j ) + e(j ) = e(j ),

j = 1, 2, . . . , 2t.

Dydiai sj  tai visa, k inome apie klaidu daugianari. Taiau to pakanka, kad ji surastume!

89 apibreimas.

Tegu

s(x) = s1 + s2 x + . . . + s2t x2t1 , (x) =


j=0,...,n1 ej =0

1 j x ,

(x) = s(x) f (x) (f (x) = x2t ).


Daugianari s(x) vadinsime gautojo odio sindromu, (x)  klaidu lokatoriumi, (x)  klaidu identikatoriumi. Visi trys daugianariai yra Fq [x] elementai; inome tik sindrom. Dar inome, kad lokatoriaus laipsnis ne didesnis u t (nes darome prielaid, kad ivyko ne daugiau kaip t ikraipymu, taigi ne daugiau kaip t koecientu ej nelygus nuliui). Be to, jo laisvasis narys yra lygus vienetui. Jeigu lokatoriu suinotume, galetume suskaiiuoti elementus

(0 ),

(1 ), . . . , (m ), . . . , (n+1 );

nuliai ioje elementu eileje parodytu klaidu viet, taigi lokalizuotu klaidas. Taiau io daugianario neinome, taigi neinome ir (x)  dvieju daugianariu sandaugos dalybos i x2t liekanos. Labai svarbu, kad i daugianari galime ireikti naudojant (x) kitu budu.

186

KODAI IR IFRAI

113 teorema. Teisinga lygybe


n1 n1

(x) =
i=0

ei i
j=i ej =0

1 j x =
i=0

ei i

(x) . 1 i x

ios teoremos ivadomis pasinaudosime konstruodami dekodavimo algoritm. O jeigu norite suinoti, kodel jis veikia  isigilinkite i irodym. Irodymas. Pirmiausia prisiminkime sindromo apibreim:

s(x) = s1 + s2 x + . . . + s2t x2t1 , sj = e(j ), sj = e0 + e1 j + e2 (j )2 + . . . + en1 (j )n1 .

Taigi su f (x) = x2t


2t1 n1

(x) = s(x) f (x) =


j=0 n1 2t1 i=0

ei (j+1 )i xj f
j=0,...,n1 ej =0

1 j x

=
i=0

ei

i j=0

(i x)j f
j=0,...,n1 ej =0

1 j x .

Dabar isiiurekime i toki daugianariu lygyb, kuri teisinga su bet kokio kuno elementu :

(1 + (x) + (x)2 + . . . + (x)2t1 )(1 x) = 1 (x)2t .


Jeigu imsime Fq ir f (x) = x2t , i lygyb galime urayti

(1 + (x) + (x)2 + . . . + (x)2t1 ) f (1 x) = 1.


Jeigu = i , tai i (75) gauname
2t1

(75)

(i x)j f (1 i x) = 1.
j=0

Tada
n1 2t1 n1 i j

(x) =
i=0

ei

i j=0

( x)

f
j=0,...,n1 ej =0

1 x =
i=0

ei i
j=i ej =0

1 j x

ir teorema irodyta.

10. CIKLINIAI KODAI

187

O dabar  dvi svarbios ivados i irodytos teoremos, kuriomis pasinaudosime dekoduodami. Viena vertus, klaidu identikatorius yra ne didesnio kaip t 1 laipsnio daugianaris. Jeigu inotume, kad ek = 0 (t. y. (k ) = 0), ir apskaiiuotume (k ), gautume

(k ) = ek k
j=k ej =0

1 j k .

O i reikini galima urayti dar paprasiau  pasinaudojus formaliomis daugianariu ivestinemis (jas skaiiuojame pagal tas paias realiuju skaiiu funkcijoms irodytas taisykles):

(k ) = ek (k ).
Taigi klaidu identikatoriaus vardas pateisintas: naudodamiesi (x), tikrai galime surasti klaidu daugianario koecientus: jei (k ) = 0, tai ek =

(k ) . (k )

Klaidu taisymo metodas jau yra, tik irankiai  klaidu lokatorius ir identikatorius  nepagaminti. Imkimes io darbo. Panagrinekime klaidu identikatoriaus apibreimo lygyb

(x) = s(x) f (x) (f (x) = x2t ).


Ji reikia, kad egzistuoja daugianaris m(x) Fq [x], kad

m(x)x2t + (x)s(x) = (x),

deg() < t.

I ios lygybes matome, kad i (x) dalijasi bendrasis didiausiasis inomu daugianariu x2t ir s(x) daliklis. Galbut klaidu identikatorius pasirodo kaip liekana kuriame nors iu daugianariu bendrojo didiausiojo daliklio iekojimo Euklido algoritmu ingsnyje? Ir tai beveik tiesa! Klaidoms taisyti reikalingus daugianarius, naudodamiesi Euklido algoritmu, galime surasti itaip: paymekime f0 (x) = x2t , f1 (x) = s(x) ir atlikime Euklido algoritmo ingsnius, kol gausime pirmj liekan, kurios laipsnis maesnis u t:

f0 (x) = m1 (x)f1 (x) + f2 (x), f1 (x) = m2 (x)f2 (x) + f3 (x), ... ...............

t deg(f2 ) < deg(f1 ), t deg(f3 ) < deg(f2 ), t deg(fk ) < deg(fk1 ), 0 deg(fk+1 ) < t deg(fk ).

fk2 (x) = mk1 (x)fk1 (x) + fk (x), fk1 (x) = mk (x)fk (x) + fk+1 (x),

188

KODAI IR IFRAI

Daugianaris fk+1 (x) yra jau beveik klaidu identikatorius. Pradej nuo paskutines lygybes ir kopdami i viru, suraskime iraik

fk+1 (x) = m (x)x2t + (x)s(x).


Prisiminkime, kad klaidu lokatoriaus laisvasis narys turi buti lygus 1. Padaugin gautj lygyb i = (0)1 , gausime

fk+1 (x) = (m (x))x2t +( (x))s(x),

(x) = fk+1 (x), (x) = (x).

Argi nenuostabu, kai toks prie por tukstaniu metu sugalvotas instrumentas isprendia tokius iuolaikikus udavinius! Panagrinekime skaitini pavyzdi. Tarkime, norime sudaryti n = 5 simboliu ilgio BCH kod i aibes F11 odiu, kuris taisytu vien klaid, t. y. t = 1. Tada numatytasis atstumas turi buti r = 3. Kokiame pletinyje yra n-osios eiles elementas? Kadangi p 1 = 10 dalijasi i n, tai toli iekoti nereiks, reikiam element rasime jau kune F11 . Taigi iuo atveju BCH kodas sutaps su Reedo-Solomono kodu, sudarytu i abeceles F11 odiu. Nesunku patikrinti, kad = 2 yra generuojantis io kuno elementas, tada = 2 = 4 bus kodo konstrukcijai reikalingas elementas. Jau galime sukonstruoti ir generuojanti daugianari:

g(x) = (x )(x 2 ) = (x 4)(x 5) = x2 + 2x + 9.


Taigi musu kodo dimensija k = 3; sudarykime koki nors kodo odi, pavyzdiui,

c(x) = (x2 + 7)g(x) = x4 + 2x3 + 5x2 + 3x + 8.


Tarkime, siuniant kanalu, is odis pavirto i d(x) = x4 + 5x2 + 3x + 8. Pabandykime vien tik naudodamiesi juo surasti klaidu odi. Sudarykime sindrom:

s1 = d() = d(4) = 4, s2 = d(2 ) = d(5) = 3,


Utenka vieno Euklido algoritmo ingsnio:

s(x) = 4 + 3x.

x2t = x2 = (4x + 2)s(x) + 3, 3 = x2 + (7x + 9)s(x), 4 = 5x2 + (2x + 1)s(x), (x) = 2x + 1, (x) = 4.
Skaiiuodami pasinaudojome tuo, kad 91 5 (mod 11). Taigi (x) = 4 ir (x) = 2x + 1. I karto randame lygties (x) = 0 akni:

x = 21 = 5 = 2 = 25 = 3 .
Taigi klaidu lokatorius rodo, kad neteisingai perduotas koecientas prie x3 . Raskime atitinkam klaidos odio koecient. Skaiiavimai labai paprasti, nes (x) = 2:

e3 = (3 )(3 )1 = 4 21 = 7 6 = 9.
Taigi e(x) = 9x3 ir c(x) = d(x) e(x) = x4 + 2x3 + 5x2 + 3x + 8. Nuostabu!

10. CIKLINIAI KODAI

189

10.7. Klaidu pliupsniai


Duomenu skaitymas i optinio disko  irgi perdavimas kanalu. Jei diskas ibretas, toks kanalas ikraipys daug simboliu, esaniu arti vienas kito. Pliupteles klaidos, o tada vel perdavimas vyks be priekaitu. Kaip atsivelgti i tokiu kanalu ypatybes ir efektyviai taisyti klaidas?

Konstravome klaidas taisanius kodus, darydami prielaid, kad klaidos nera susijusios, t. y. kanalas ikreipia simbolius nepriklausomai vienas nuo kito. Taiau esant technines irangos trikdiams (pavyzdiui, kai duomenu laikmena paeista), klaidos linkusios sudaryti telkinius, kitaip tariant  ivyksta klaidu pliupsniai. Tokiais atvejais musu kodas gali nesuteikti galimybes itaisyti, pavyzdiui, penkiu vienas nuo kito atokiai esaniu ikraipytu simboliu, taiau turetu itaisyti deimt klaidu, jeigu jos ivyksta viena po kitos.

90 apibreimas.
d = c + e,

Jeigu, perdavus odi c Fn , gautas odis yra q

e = 00 . . . 0ei ei+1 . . . ei+N 1 0 . . . 0,

ei , ei+N 1 = 0,

sakysime, kad ivyko N dydio klaidu pliupsnis. Toliau nagrinesime dvejetaines abeceles atveji, t. y. klaidu pliupsnius, kurie atsiranda perduodant Fn aibes odius. Aptarsime tris metodus: simboliu 2 ibarstymo, kodu su didelemis abecelemis ir specialiu kodu. Simboliu ibarstymo metodo ideja pati paprasiausia. Tarkime, dvejetaines abeceles simboliu srautui koduoti turime koki nors pakankamai ger kod C Fn . Koduokime iuo kodu m pradinio srauto fragmentu, gausime 2 m kodo odiu

c1 = c11 c12 . . . c1n , c2 = c21 c22 . . . c2n , . . . , cm = cm1 cm2 . . . cmn .


Taiau, sudar iuos odius, dar nesiuskime i kanal! Suraykime juos i lentel eilute po eilutes:

c11 c21 . cm1

c12 c22 . cm2

... ... ... ...

c1k c2k . cmk

... ... ... ...

c1n c2n . cmn

O dabar i kanal iveskime lenteles simbolius, nuskaitydami juos stulpelis po stulpelio, t. y. i pradiu pirmji stulpeli c11 c21 . . . cm1 , paskui antrji ir t. t. Taigi i kanal perduodame n odiu po m simboliu. Tarkime, siuniant duomenis, ivyko klaidu pliupsnis ir visi simboliai i k -ojo stulpelio buvo ikreipti. Kai gavejas gaus nm simboliu, jis susirays juos i lentel stulpelis po stulpelio ir, perskaits odius i eiluiu, tures m kodo C odiu, kuriuose

190

KODAI IR IFRAI

bus ivyk vos po vien klaid. Taigi klaidu pliupsnio taisymas pavirsta pavieniu klaidu taisymu keliuose odiuose. Tai galima padaryti naudojantis C kodo dekodavimo algoritmu. Aptarkime kit idej. Tarkime, turime ger kod C Fnm , pavyzdiui, 2 BCH kod. Dvejetaines abeceles odius Fm galime interpretuoti kaip abeceles 2 F2m simbolius. Pirmasis ingsnis: paversti dvejetainiu simboliu sraut abeceles F2m simboliu srautu:

x1 x2 . . . xm xm+1 xm+2 . . . x2m . . . y1 y2 . . . ,

xi F2 , yj F2m .

Dabar dideles abeceles simboliu sraut galime koduoti kodo C odiais, iu odiu simbolius keisti Fm odiais ir i kanal perduoti nauj dvejetainiu 2 simboliu sraut:

y1 y2 . . . z1 z2 . . . u1 u2 . . . ,

yj F2m , zi Fm , ui F2 . 2

Gavejas gautji dvejetainiu simboliu sraut turi paversti kodo C odiais, itaisyti klaidas ir nustatyti pradini dvejetaini simboliu sraut. Kokia padetis susidarys, jeigu kanalas sukels m ilgio klaidu pliupsni? Galimi atvejai: ivyks viena arba dvi klaidos viename C odyje; ivyks po vien klaid dviejuose C odiuose. Abiem atvejais klaidas galime itaisyti naudodamiesi C dekodavimo algoritmu. O dabar aptarkime klaidu pliupsniams taisyti tinkamu specialiu kodu sudarymo udavini. Kokias savybes turetu tureti tiesinis dvejetaines abeceles kodas C, kad jis galetu taisyti klaidu pliupsnius? Prisiminkime standartin kodo lentel, sluoksnius, sindromus ir lyderius. I sindromo suinome, i koki sluoksni gautas i kanalo odis d pateko. Jeigu iame sluoksnyje yra vienas lyderis e, tai odi dekoduojame taip:

d d e = c,

c C.

Taigi teisingai dekoduojama tik tais atvejais, kai klaidu odis yra vienintelis kurio nors sluoksnio lyderis. Todel tiesinis kodas gales teisingai dekoduoti klaidu pliupsnius tik tada, kai tie pliupsniai yra vieninteliai atitinkamu sluoksniu lyderiai. Taiau kaip sudaryti tokius kodus? Vien tokiu kodu eim 1959 metais sukonstravo P. Fire.

91 apibreimas. Tegu p(x) F2 [x] yra neskaidus daugianaris, deg(p) = m, s yra maiausias naturalusis skaiius, kad xs + 1 dalijasi i p(x), l yra naturalusis skaiius, kad l m ir 2l 1 nesidalija i s. Paymekime
g(x) = (x2l1 + 1)p(x), n = BMK(2l 1, s),

ia BMK reikia bendrji maiausiji kartotini. Tada daugianaris g(x) dalija xn + 1, o g(x) generuotas ciklinis kodas C Fn vadinamas Fire kodu. 2

11. SSUKU KODAI

191

Taigi Fire kodo dimensija yra n m 2l + 1. O kaipgi klaidu pliupsniu taisymas? nevirija l. Kaip irodyti i teigini? Reikia irodyti, kad bet kuris odis, atitinkantis klaidu pliupsni, kurio ilgis ne didesnis kaip l, yra vienintelis atitinkamo sluoksnio lyderis. odius, atitinkanius klaidu pliupsnius, galime urayti daugianariais

114 teorema.

Fire kodas taiso visus klaidu pliupsnius, kuriu ilgiai

e(x) = xi a(x),

a(x) = 1 + a1 x + . . . + ak1 xk1 ,

deg(e) < n, k l.

Reikia irodyti, kad jokie du tokie daugianariai negali priklausyti tam paiam sluoksniui, t. y. butinai yra savo sluoksniu lyderiai. Tarkime, e1 (x), e2 (x) yra du klaidu pliupsnius atitinkantys daugianariai. Jie nepriklausys tam paiam sluoksniui tada ir tik tada, kai ju suma e1 (x)+e2 (x) nebus kodo odis. Taiau visi Fire kodo odiai dalijasi i generatoriaus g(x). Taigi reikia irodyti, kad e1 (x) + e2 (x) negali dalytis i g(x). itaip irodymas virsta udaviniu apie specialaus pavidalo daugianariu dalyb. Nuo ko pradeti? Kaip pradedame labai danai: tarkime, kad e1 (x) + e2 (x) dalijasi i g(x)...

11 Ssuku kodai
11.1. Tiesiniai registrai ir daugianariu daugyba
Nors daugianariu daugyba gana sudetingas veiksmas, ji galima greitai atlikti naudojant visai paprast irengini.

Koduojant dvejetaines abeceles daugianariu kodais, aibes F2 [x] daugianarius tenka dauginti i ksuoto daugianario  kodo generatoriaus. Panagrinekime, kaip gaunami iu daugianariu sandaugos koecientai. Tegu generatoriaus vaidmuo tenka daugianariui

g(x) = 1 + x + x2 ,
o kitas daugianaris tebunie bet koks:

u(x) = u0 + u1 x + u2 x2 + . . . + un xn ,
Tada ju sandauga yra daugianaris

ui F2 .

v(x) = v0 + v1 x + . . . + vn xn + vn+1 xn+1 + vn+2 xn+2 ,


kurio koecientai randami taip:

vk = uk + uk1 + uk2 ,

k = 2, 3, . . . , n.

192

KODAI IR IFRAI

Kad i lygybe tiktu ir v0 , v1 , vn+1 , vn+2 , reikia susitarti, kad

u2 = u1 = un+1 = un+2 = 0.
Taigi sandaugos v(x) koecientai gaunami susukant i vien tris u(x) koecientus. Jeigu daugianari u(x) uraysime jo koecientu odiu, tai kiekvienas v(x) koecientu odio bitas gaunamas i triju u(x) odio bitu. T bitu ssukos veiksm galime interpretuoti kiek kitaip.

R1
c '

R2

Daugianariu daugybos i g(x) = 1 + x + x2 tiesiniu registru sistema

Sistem sudaro du registrai, kurie gali saugoti po vien bit. I pradiu juose yra nuliai. I i sistem vienas po kito ivedami bitai u0 , u1 , . . . , un (bitas u0 ivedamas pirmasis). Kai pasirodo u0  jis pirmiausia paduodamas i sumavimo irengini, i ji paduodami ir registruose saugoti bitai; juos sudejus gaunamas pirmasis ivesties bitas v0 = u0 . Tada bitas u0 istumia pirmojo registro bit, pirmojo registro bitas  antrojo, o antrojo registro bitas tiesiog dingsta. Kai pasirodo u1 , viskas vyksta analogikai, taiau dabar gauname v1 = u1 + u0 , kai pasirodo u2  gauname v2 = u2 + u1 + u0 ir t. t. Visus daugianario v(x) koecientus generuos is paprastas irenginys, jeigu i ji ivesime u0 u1 . . . un 00. Taigi is paprastas tiesiniu registru irenginys atlieka daugianariu daugyb! O jeigu noretume sukonstruoti tiesiniu registru sistem, kuri daugianarius daugintu i

g(x) = c0 + c1 x + . . . + cn xn ,
Sprendimas paprastas: u E R1

cn = 0?

R2

c0

c1

c2
Ec E '

Rn cn v
E

Daugianariu daugybos i g(x) = c0 + c1 x + . . . + cn xn tiesiniu registru sistema

Tokia tiesiniu registru sistema i tikruju atlieka bitu srauto kodavim: kiekvienam ivesties bitui ui sukuriamas ivesties bitas vi . Taiau itaip koduojant su

11. SSUKU KODAI

193

g(x) = 1 + x + x2 , kad ir koks ilgas butu pradinis odis, jis pailginamas tik dviem bitais. Geru galimybiu taisyti klaidas nera ko tiketis. Taiau mes galime su ta paia registru sistema kievienam ivesties bitui generuoti ne vien, bet, pavyzdiui, du bitus. tai ta patobulinta registru sistema:
E E '

v1

R1
c '

R2

v2

Ivesties daugianario daugybos i g1 (x) = 1 + x2 ir g2 (x) = 1 + x + x2 tiesiniu registru sistema

Dabar ivesties bitu odiui u sistema sukuria du ivesties odius v1 ir v2 , arba, naudojantis daugianariu terminologija, kiekvienam ivesties daugianariui u(x) sukuriami du ivesties daugianariai v1 (x), v2 (x) :

v1 (x) = u(x)g1 (x), v2 (x) = u(x)g2 (x),

g1 (x) = 1 + x2 , g2 (x) = 1 + x + x2 .

Tai jau panau i kodavim, suteikianti galimybiu taisyti klaidas: juk kiekvien ivesties bit atitinka du ivesties srauto bitai. Ivesties daugianari atitinka du ivesties daugianariai v1 (x) ir v2 (x). Galbut noretume supinti abu ivesties srautus i vien, pavyzdiui, padaryti taip, kad kiekvien srauto v1 bit sektu atitinkamas v2 bitas? Toki supint sraut galima urayti daugianariu, kurio koecientai prie lyginiu laipsniu yra skolinti i v1 (x), o prie nelyginiu  i v2 (x). Toki daugianari paprasta sudaryti:

v(x) = v1 (x2 )+xv2 (x2 ) = u(x2 )(g1 (x2 )+xg2 (x2 ) = u(x2 )(1+x+x3 +x4 +x5 ).
Yra ne vienas budas sukurti du ivesties srautus i vieno ivesties srauto. tai dar vienas: E v1 u E E R1 R2
c '

v2

194
Sisteminio kodavimo tiesiniu registru sistema

KODAI IR IFRAI

ios schemos sukurtas srautas v1  tiesiog ivesties srauto kopija. Tai primena sistemini kodavim tiesiniais kodais su standartinio pavidalo generuojania matrica. itaip koduojant kiekvienas duomenu blokas tiesiog pailginamas simboliais, suteikianiais galimyb taisyti klaidas.

11.2. Ssuku kodai


Kartais koduojame daugindami i matricos, kartais  i daugianario. O iame skyrelyje  tiesiog keliaudami i vienos vietos i kit...

Sugrikime prie tiesiniu registru sistemos, kuri atlieka daugyb i daugianariu g1 (x) = 1 + x2 , g2 (x) = 1 + x + x2 , (r. ankstesnio skyrelio breini). Ji apibreia bitu srauto u = u0 u1 . . . kodavim dvigubai ilgesniu srautu (1) (2) (1) (2) (1) (2) v = v0 v0 v1 v1 . . . , ia vi vi ymime du bitus, kuriuos sukuria sistema ivesties bitui ui . Mateme, kad i sistem galima nusakyti daugianariu atitiktimis: u(x) v1 (x), v2 (x) , arba u(x) v(x), ia

v1 (x) = u(x)g1 (x), v2 (x) = u(x)g2 (x), v(x) = u(x2 )g(x),

g1 (x) = 1 + x2 , g2 (x) = 1 + x + x2 , g(x) = 1 + x + x3 + x4 + x5 .

Sakysime, kad i registru sistema (arba daugianariu atitiktys) apibreia ssuku kod su parametrais (k, m, n) = (1, 2, 2). ie parametrai nusako tokias sistemos savybes: k  viename ingsnyje i sistem ivedamu bitu skaiiu, m  sistemos registru skaiiu, kitaip tariant  ivestu bitu, kuriuos atsimena sistema, skaiiu, n  viename ingsnyje ivedamu bitu skaiiu. Santyki k/n vadinsime ssuku kodo koecientu. Taigi musu sistema apibreia ssuku kod su koecientu 1/2. Galime apibreti ssuku kodus su k > 1. Panagrinekime breini.
E E T

v1

u1

E E

E E T

v2

u2

E E

E '

v3
E

Ssuku kodo su parametrais (2, 4, 3) tiesiniu registru sistema

11. SSUKU KODAI

195

I breinyje pavaizduot registru sistem kiekviename ingsnyje paduodami du bitai, o ivedami trys. Taigi tokio kodo koecientas yra 2/3. Panagrinesime dar du budus ssuku kodu darbui vaizduoti. Nagrinesime kod, kuri atitinka tiesiniu registru sistema su daugianariais g1 (x), g2 (x).. Kiekviename ingsnyje sukuriami du ivesties bitai priklauso nuo registru turinio ir ivedamo bito. Sakysime, kad registru turiniai apibreia sistemos busen. Taigi galimos keturios sistemos busenos, kurias uraysime bitu poromis 00, 01, 10, 11. Jeigu, pavyzdiui, sistemos busena yra 01, o ivedame 1, tai ivesties bitai bus 00, o sistema pereis i busen 10. Ivedamus ir ivedamus bitus ymesime taip: 1/00. Pavaizduosime busenu aib grakai, nurodydami visus galimus busenu pasikeitimus.

0/00

0/11

00
0/01 1/11 1/00

01

0/10 1/01

10
1/10

11

Ssuku kodo su parametrais (1, 2, 2) busenu diagrama

Toki diagram galime sudaryti bet kokiam ssuku kodui. Ja patogu naudotis koduojant sraut. Reikia keliauti tais diagramos keliais, kuriuos nurodo ivesties srauto bitai, ir uraineti ivesties sraut. Pavyzdiui, koduojant pagal pateikt diagram,

u = 10011010 . . . 1101111110100001 . . . = v.
Koduodami su busenu diagrama braiome keli, vedanti nuo vienos busenos prie kitos. Galime ji itiesinti, kad nebebutu kilpu ir persidengimu. Tai padarykime taip. Nubrekime laiko ai, paymedami joje laiko momentus (ingsnius), o po kiekvieno ingsnio yma irikiuokime busenas yminiu skrituliuku stulpeli. Dabar keli nuo busenos prie busenos galesime pavaizduoti laute.

196

KODAI IR IFRAI

0 00 01 10 11

2
0/11

3


4
1/11

6 E

1/11


0/01

!
1/10 0/10

is kelias vaizduoja ivesties odio 100110 kodavimo eig

Prie kelio briaunu parayta, kokius ivesties ir ivesties bitus ta briauna atitinka. Pastebekime, kad ivesties bit visada galime atpainti i briaunos krypties. Jeigu briauna veda i viru  ivesties bitas lygus nuliui. Jeigu emyn  vienetas. Tiesa, yra du atvejai, kai briaunos lygiagreios laiko aiai: kai i 00 gritama i 00 ir i 11 i 11. Pirmuoju atveju ivesties bitas nulis, antruoju  vienetas. i savyb tures bet kokio ssuku kodo diagrama, jeigu tik jo busenas idestysime stulpeliu jas yminiu odiu 00 . . . 0, 00 . . . 1, . . . 11 . . . 1 didejimo (interpretuojant juos kaip skaiius) tvarka. Tokia diagrama vadinama ssuku kodo groteliu diagrama. Kiekvienas kodavimo eig atitinkantis kelias prasideda nuo nulines busenos. Musu pavyzdyje yra i viso 4 4 . . . 4 = 4m keliu, vedaniu i pradines busenos i kuri nors m-ojo ingsnio busen. Taiau ne visi keliai atitinka kokiu nors srautu kodavimo eig. Tikru kodavimo keliu yra tik 2m . Jeigu sistemoje butu, pavyzdiui, s atminties registru, tai i viso keliu butu 2sm , o kodavimo keliu  tiek pat, t.y. 2m .

11.3. Viterbi algoritmas


Tai budas dekoduoti ssuku kodus, pasinaudojant kiekvienam suprantamu desniu: jeigu kelias ABC ilgesnis u keli ADC, tai kelias ABCX irgi ilgesnis u keli ADCX. Taigi taupant laik, reikia i A i X keliauti per D.

Tarkime, kodavimui naudojamas tas ssuku kodas, kuri nagrinejome ankstesniajame skyrelyje. Galima koduoti kokio tik norime ilgio bitu srautus, taiau susitarkime koduoti taip: bus koduojama po r srauto bitu, tada dar bus ivedami du nuliniai bitai, kad sistema sugritu i busen 00. Taigi i tiesu i sistem bitas po bito bus ivedami odiai u0 u1 . . . ur1 00. Po r + 2 ingsniu sistema sugri i pradin padeti ir vel bus koduojama i naujo. Jeigu sistemoje butu s atminties registru, tada prie koduojamo bloko reiktu prideti i viso s nuliu. Kiekvien odi u0 u1 . . . ur1 00 groteliu diagramoje atitinka kelias i busenos 00 i 00. Tokiu kodavimo keliu yra 2r . I kanal perduodamas 2(r + 2) ilgio

11. SSUKU KODAI odis

197

v = v0 v0 v1 v1 . . . vr+1 vr+1 .
Tarkime, kad kanalas yra simetrinis ir be atminties. Tada jis su vienodomis tikimybemis ikraipo perduodamus simbolius ir gavejas vietoj srauto v gaus ikraipyt sraut

(1) (2) (1) (2)

(1)

(2)

w = w0 w0 w1 w1 . . . wr+1 wr+1 .
Viterbi algoritmo esme  pagal gautji sraut nustatyti t kodavimo keli groteliu diagramoje, kuri atitinkantis ivesties bitu srautas v maiausiai skiriasi nuo gautojo w. Skirtumui matuoti, kaip iprasta kodavimo teorijoje, pasinaudokime Hammingo atstumu. Taigi reikia rasti t keli v i 2r galimu keliu aibes, su kuriuo Hammingo atstumo h(v, w) reikme yra maiausia. Panagrinekime, kaip tai atliekama musu kodo atveju su r = 4. Dekoduotojas ino, kad po 6 ingsniu registru sistemos busena vel tapo 00. Tarkime, i kanalo gautas toks bitu srautas w = 11 01 10 00 10 11. Tai vieno keturiu bitu odio, papildyto dviem nuliais, kodavimo rezultatas. Iekosime, kuris i galimu srautu maiausiai skiriasi nuo gautojo.

(1)

(2)

(1)

(2)

(1)

(2)

w= 00 01 10 11

11
2

01
3

10
4 |E 1

00
E 4
| 1

10
E 3
| 2

11 E
4 |E 2 

E
0 0

E
3

|4 | 3  1 2  ! !

5 | 2

4 |

 !

4 2
3 4 E | 2 4| E

is kelias vaizduoja ivesties odio 100110 kodavimo eig

Pradekime braiyti groteliu diagram. Pavaizduokime busenu stulpelius, uraykime kiekvien i eiu ingsniu atitinkani gauto srauto bitu por. inome, kad kelias groteliu diagramoje prasideda i nulines busenos. Galimi du keliai. Jeigu perduotas bitas 0, tai sistemos busena liko ta pati, o ivesties bitai  00. Uraykime vir atkarpos, atitinkanios i perejim, Hammingo atstum tarp 00 ir gautu i ingsni atitinkaniu bitu 11. Jis lygus 2. Taiau jeigu buvo ivestas bitas 1, tai ivesties bitai tokie patys kaip gautieji, t.y. atstumas 0. Antrajame ingsnyje galime startuoti i dvieju busenu 00 ir 10. I viso galimi keturi tsiniai. Pavyzdiui, jeigu esant busenai 00, buvo ivestas 1, tai ivesties bitai bus 11. i pora skiriasi nuo gautos poros 01, vadinasi, Hammingo atstumas padideja vienetu. Uraome sukaupt Hammingo atstum 3 prie atitinkamos kelio grandies. itaip galimus kelius braiome ir toliau, usiraydami sukauptus atstumus. Po treiojo ingsnio pasirodo is tas idomaus. I visas busenas galime patekti dviem keliais, vienas ju tolimesnis

198

KODAI IR IFRAI

(sukauptas Hammingo atstumas didesnis), kitas  trumpesnis. Taigi galime atsisakyti ilgesniu keliu, tiesiog perbraukdami juos. Po keturiu ingsniu kelius galime braiyti paprasiau: juk inome, kad penktasis ir etasis bitai lygus nuliui. Taigi i kiekvienos busenos galimas tik vienas kelias. Ir k gi gauname pabaigoje? Vieninteli keli! Tai ir yra tas kelias i visu galimu, kuri atitinkantis srautas maiausiai skiriasi nuo gautojo.

w= 00 01 10 11

11

01

10

00

10

11 E

2

0 0


2 2

R R

i keli atitinkantis ivesties srautas maiausiai skiriasi nuo gautojo

Prisimin, kad kryptis emyn reikia, kad buvo ivestas 1, auktyn  0, galime ikart atkurti ir pradini i sistem ivest odi: v = 101100.

12 Pastabos ir nuorodos
Savo kod Hammingas ideste straipsnyje [36]. Tai vienas pirmuju kodavimo teorijos darbu. Parametru iveriai, kurie destomi iame skyriuje, gauti naudojantis i esmes vien tik kombinatorika. Atskirais atvejais juos galima patikslinti. Parametru iveriams skirtus skyrelius rasite knygose [48], [21]. Knygoje [21] taip pat gana isamiai idestyta Hadamardo kodu teorija. iai knygai skirtame tinklalapyje http://www.wiris.com/cc/ rasite elektronin kopij, taip pat  skaiiavimams skirtas programas. Skaiiavimus, susijusius su kodu konstravimu ir tyrimu, galima atlikti naudojantis universaliomis kompiuterinemis sistemomis Maple, Mathematica, MatLab. Verta pamineti dar vien speciali  GAP (Groups, Algorithms, Programming  a System for Computational Discrete Algebra) [33]. Vienas jos paketas  GUAVA  skirtas kodams tyrineti. is paketas teikia tikrai labai daug galimybiu, be to, GAP sistema platinama nemokamai. Dvinaris Golay kodas paskelbtas 1949 metais autoriaus straipsnyje [31]. Idomu, kad straipsnis apie trinari Golay kod pasirode 1947 metais suomiu urnale, skirtame futbolui. Kodo savybes jame naudojamos turnyro baigiu aibei tyrineti. Naudojant kombinatorikos svokas, kodu struktura nagrinejama P.J. Camerono ir J. H. van Linto knygoje [15]. Ssuku kodai pirm kart buvo apibreti 1955 metais Eliaso darbe [25]. Ciklinius kodus 1957 metais pradejo nagrineti Prange [61]. Reedo-Mullerio

12. PASTABOS IR NUORODOS

199

kodus autoriai nepriklausomai vienas nuo kito paskelbe 1954 metais [62], [57]. Straipsni apie BCH kodus 1959 metais paskelbe A. Hocquenghemas [38], o 1960 metais  Bose ir Ray-Chaudhuri [12]. Reedo-Solomono kodai taip pat pasirode 1960 metais [63]. Greit BCH kodu dekodavimo algoritm 1967 metais paskelbe Berlekampas [7]. Panaudoti Euklido algoritm iu kodu dekodavimui  Sugiyamos ideja [?]. Viterbi algoritm ssuku kodams dekoduoti autorius paskelbe 1971 metais [77]. 1980 metais Sony ir Philips kompanijos susitare del optiniu diskeliu (CD) standartizavimo. Kodavimui buvo panaudotas Reedo-Solomono kodas. 1993 atsirado naujo tipo kodai  turbo kodai. Ju autoriai  Berrou, Glavieux, Thitimajshima [8]. Kodavimo teorijai  daugiau kaip penkiasdeimt metu. Tai verlios raidos metai, nes kodavimo teorija pletojosi kartu su moderniomis ryiu technologijomis. Daugelis svarbiu darbu paskelbti tarptautines organizacijos IEEE (Institute of Electrical and Electronics Engineers) nuo 1953 metu leidiamame urnale IEEE Transactions on Information Theory. Ileidiama nemaai kodavimo teorijos monograju ir vadoveliu. Paminesime kelias knygas, kuriose isamiai destoma klasikine kodavimo teorija, o taip pat ir naujos kryptys: [50], [48], [10], [65], [40], [75].

200

KODAI IR IFRAI

Kriptograja

13 Ivadas
Jei kompiuteris yra kasdienes jusu veiklos irankis, tikriausiai esate patyr, kaip mua altas prakaitas pastebejus, kad po jusu skaitmeniniu duomenu  dokumentu ir programu  archyv pasivaistyta piktavalio viruso ar neimanelio jaunesniojo brolio. O jeigu kas iveiktu banko duomenu apsaugos sistem ir patvarkytu jusu sskaitas? Taigi informacijos apsaugos reikme yra nepaprastai didele ir vis dideja. Galima teigti, kad ir kodavimo teorija, nagrineta antrojoje knygos dalyje sprendia informacijos apsaugos udavinius. I tiesu, siuntejas A prie siusdamas informacij gavejui B gali pasinaudoti kodavimo teorijos idejomis ir parengti informacij taip, kad tikimybe, jog B gaus neikraipyt informacij, padidetu. itaip sprendiamas kanalu perduodamos informacijos vientisumo isaugojimo udavinys, kai paeidimu (ikraipymu) prieastis  atsitiktiniai zines prigimties trikdiai. O dabar isivaizduokime, kad informacijos perdavimo kanal gali kontroliuoti protingas moderniausia skaiiavimo technika ir naujausiomis iniomis apsiginklavs Z. io skyriaus paskirtis  aptarti informacijos apsaugos udavinius, kurie tuomet ikyla.

13.1. Kriptologijos demenys


Kriptologija  mokslas apie matematines duomenu apsaugos priemones. Kas j sudaro ir kaip keliami jos udaviniai?

Apvelkime gerokai supaprastint padeti, i kuri patenka iuolaikines informacines visuomenes mones: A (Algis) siunia informacij B (Birutei), perdavimo kanal kontroliuoja Z (Zigmas) ir jauiasi padeties eimininkas. Jis gali pasyviai stebeti perdavimo kanal, skaityti siuniamus praneimus ir kaupti dosje; jis gali veikti aktyviai  pakeisti dali siuniamos informacijos, o kartais  apsimesti A ir siusti jo vardu praneimus B arba apsimesti B. Taigi del Zigmo veiksmu gali buti paeidiamos ios siuniamu duomenu savybes:

slaptumas; vientisumas; autentikumas.

13. IVADAS

201

Kaip to ivengti? Fizine kanalo apsauga gali buti pernelyg brangi arba tiesiog neimanoma. Kokiomis priemonemis galetumete apsaugoti, pavyzdiui, jusu elektroninio pato perdavimo kanal? Prisiminkime kodavimo teorijos konstrukcijas. Informacijos, kuri reikia perduoti, blokai keiiami specialaus kodo odiais. Taigi  galimu ikraipymu taisymo priemones imontuojamos paioje perduodamu duomenu strukturoje. Ar panaiai negali buti sprendiami ir informacijos apsaugos udaviniai, kuriuos kelia Zigmo egzistavimas? Kriptograja bendriausiu poiuriu ir yra duomenu apsaugos udaviniu sprendimo matematiniais metodais mokslas. Pagrindiniai ios apsaugos tikslai yra trys: utikrinti informacijos slaptum, vientisum ir autentikum. Taiau iuolaikine kriptograja tuo toli grau neapsiriboja. Naudojimasis kompiuteriniais tinklais ir duomenu bazemis kelia daug nauju idomiu teoriniu ir praktiniu udaviniu. Tik pagalvokime, pavyzdiui, kiek reikalavimu reiktu igyvendinti ir numatyti atveju, norint tinkamai organizuoti elektroninius rinkimus! Pirmiausia reikia iduoti biuletenius turintiems teis balsuoti, ukirsti keli ivairaus pobudio klastotems, garantuoti balsavimo anonimikum, suteikti rinkejui galimyb patikrinti, kad jo balsas tinkamai iskaitytas... Jeigu A ir B savo ryiui apsaugoti naudoja tinkamus kriptograjos metodus, tai Zigmui, net ir kontroliuojant perdavimo kanal, turetu buti sunku prisibrauti prie siuniamos informacijos prasmes, pakeisti k nors ir likti nepastebetam arba pasiusti praneim A ar B vardu. Sunku, bet nera neimanoma! Z kanalu siuniamiems informacijos srautams analizuoti irgi gali naudoti mokslinius metodus. Jis gali inoti daugeli naudojamu kriptograniu algoritmu detaliu (iskyrus slaptus parametrus  raktus) ir bandyti iveikti kriptogran duomenu apsaug. Jo metodu visuma irgi yra mokslas  kriptoanalize. Apibendrinant galima teigti, kad kriptoanalize  tai duomenu kriptograniu apsaugos algoritmu patikimumo vertinimo mokslas. Kriptograja siulo, o kriptoanalize vertina. iuo poiuriu Z nera A ir B prieas, bet pagalbininkas. Nieko nera blogiau u apsaug, kurios patikimumas nera ivertintas! O sugretin kriptograj ir kriptoanaliz, gauname kriptologij  moksl apie duomenu apsaug naudojant matematikos ir informatikos priemones: kriptologija = kriptograja + kriptoanalize. Verta pamineti, kad deineje lygybes puseje sau vietos ima reikalauti dar vienas demuo  steganograja. Internetu dabar siuniame pai ivairiausi informacij: dokumentus, fotograjas, audio- ir videoinformacij... Ar negalima siuniamoje kokio nors obuolio fotograjoje paslepti svarbu praneim, kuri kitaip butu rizikinga siusti? Tokiu metodu kurimo ir analizes sritis ir yra steganograja (steganos  slepti, graphein  raau (graik.). i odi 1499 metais pirm kart pavartojo vokietis Johannes Trithemius, pirmojo spausdinto kriptograjos veikalo autorius. Taiau jam steganograja reike ne tik

202

KODAI IR IFRAI

mokym apie ifrus, bet ir apie ivairius okultinius su paslaptimis susijusius dalykus. Kriptograja  taip pat i graikiku odiu sudarytas pavadinimas (krypto  pasleptas graik.) i termin 1661 metais pirm kart panvartojo Johnas Williamsas. Kriptogranes ir steganogranes duomenu apsaugos metodai esmingai skiriasi. Kriptograja neslepia duomenu, bet paslepia ju struktur, t. y. prasm. O steganograja paslepia paius duomenis.

13.2. ifrai ir paraai


ifrai ir skaitmeniniai paraai yra duomenu slaptumo ir autentikumo utikrinimo priemones. Patikslinkime ias svokas.

Noredami, kad paalinis asmuo neivelgtu siuniamu duomenu prasmes, turime pertvarkyti tuos duomenis taip, kad tik teisetas gavejas galetu atkurti pradin duomenu struktur. Duomenu pertvarkym, kurio tikslas  paslepti prasm, vadinsime ifravimu, o pradines strukturos atkurim  deifravimu. Pradinius duomenis, kuriems taikoma ifravimo operacija vadinsime neifruotu arba atviru tekstu, o ifravimo operacijos rezultat  ifru. Pagrindinis iuolaikines kriptograjos reikalavimas  kad ifravimo ir deifravimo operaciju rezultatai i esmes priklausytu nuo tam tikru dydiu, paprastai vadinamu raktais. Tai reikia, kad net jeigu visos A ir B ryio slaptum sauganios sistemos detales (iskyrus raktus) taptu inomos Z, iveikti duomenu apsaugos sistem jam neturetu pasidaryti lengviau (maai naudos bus mogui, noriniam paskambinti telefonu, jeigu mes jam paaikinsime, kad reikia vien po kito paspausti septynis telefono mygtukus su numeriais, bet nepasakysime kokius). Duomenu apsaugos sistem, naudojani ifravim, vadinsime kriptograne sistema arba tiesiog kriptosistema.

92 apibreimas. Kriptograne sistema vadinsime trejet M, K, C ia M  neifruotu tekstu, K  naudojamu raktu ir C  ifru aibes, kartu su ifravimo ir deifravimo operacijomis
e(|Ke ) : M C,
tenkinaniomis slyg kiekvienam M M d(e(M |Ke )|Kd ) = M. Galime isivaizduoti, kad kriptosistemoje naudojamas raktas sudarytas i dvieju daliu: ifravimui skirto rakto Ke ir deifravimui skirto rakto Kd . Gali buti, kad abu raktai sutampa, t. y. Ke = Kd , arba, nors formaliai ir budami skirtingi, lengvai gaunami i vienas kito. Tokias kriptosistemas vadinsime simetrinemis. Jeigu Birute noretu, kad Algis jai paraytu laik ir uifruotu ji simetrine kriptosistema, ji turi slapta nuo Zigmo perduoti Algiui rakt Ke ir jau tuomet laukti laiko. Taigi simetrines kriptosistemos

d(|Kd ) : C M,

Ke , Kd K,

13. IVADAS

203

veiklos pradiai butina nors ir trumpalaike galimybe pasinaudoti visikai saugiu kanalu raktui perduoti.

Ryio apsauga su simetrine kriptosistema

Iki 1976 metu visos kriptosistemos buvo simetrines. Tais metais du matematikai  Die ir Hellmannas5 paskelbe naujos kartos kriptosistemu principus. Ju esme tokia: nors deifravimui skirtas raktas Kd yra susijs su ifravimui skirtu raktu Ke , taiau praktikai, inant Ke , neturi buti imanoma per tikrovik laik nustatyti Kd . Kaip tai gali buti imanoma? Galbut suprasti pades toks hipotetinis pavyzdys. Tarkime, a sukuriau kriptosistem ir sudariau raktu por:

Ke = 2,

Kd = an an+1 . . . an+99 ;

n = 1010 ,

10

Ke = a0 , a1 a2 . . . ,

ia ai yra skaiiaus skleidimo begaline deimtaine trupmena skaitmenys. Ar, inodami ifravimui skirt rakt, greitai galesite nustatyti, koks raktas naudojamas deifravimui? Taigi turedama toki kriptosistem, Birute gali perduoti ifravimui skirt rakt Ke ir nesaugiu kanalu (pavyzdiui, paskelbti savo tinklalapyje). Kadangi ifravimui skirtas raktas gali buti paskelbtas vieai, tokios kriptosistemos pradetos vadinti vieojo rakto kriptosistemomis. ifravimui skirtas raktas danai vadinamas vieuoju, o deifravimui  privaiuoju raktu.

5 W. Die, M. E. Hellman. New Directions in Cryptography. IEEE Transactions on Information Theory, vol. IT-22, Nov. 1976, p. 644654.

204
Ryio apsauga su vieojo rakto kriptosistema

KODAI IR IFRAI

Vieojo rakto kriptosistem galime palyginti su rakinama pato deute. Visi gali mesti laikus pro plyi, t. y. naudotis vieuoju raktu, taiau tik deutes savininkas gali atsirakinti j ir isiimti (deifruoti) laikus. Dabar vieojo rakto kriptosistemu yra sugalvota daug. Pats idomiausias dalykas  konstruojant ias sistemas, taikomi gryniausios matematikos srities  skaiiu teorijos  rezultatai. Erdve, kuri skyre praktinius udavinius sprendianius informatikus ir grynuosius matematikus, dirbanius skaiiu teorijos srityje, tapo didel itak iuolaikiniu ryiu raidai padariusio bendradarbiavimo vieta. Vieojo rakto kriptosistemu atsiradimas isprende ir skaitmeniniu parau udavini. Musu paraas yra tam tikra grane informacija, kuri susiejame su dokumentu. Parao tikrinimo algoritmas labai paprastas  lyginama su dokumentu. O kaip pasirayti skaitmenini dokument, t. y. nuliu-vienetu sraut? Kaip prideti t papildom mus autentikuojani informacij, kad butu galima patikrinti, kad j tikrai sukureme mes, o ne kakas u mus? Sistem, skirt skaitmeniniu duomenu autentikumui irodyti, vadinsime skaitmeninio parao schema. J formaliai galime apibreti taip:

93 apibreimas. Skaitmeniniu parau schem sudaro aibes M, P, K, ia M  tekstu aibe, P  skaitmeniniu parau aibe, K  raktu K = Kv , Kp aibe (Kp  privaioji, paraui sudaryti skirta rakto komponente, Kv  vieoji, paraui tikrinti skirta rakto komponente) ir parau sudarymo bei tikrinimo algoritmu eimos
sig(|Kp ) : M P, ver(|Kv ) : M P {0, 1}.

Parao tikrinimo algoritmai turi savyb:

ver(x, sig(x|Kp )|Kv ) = 1.

(76)

Jeigu y P pateikiamas kaip dokumento x M paraas, tai paraas pripaistamas galiojaniu, jeigu ver(x, y|Kv ) = 1, ir pripaistamas negaliojaniu, jei ver(x, y|Kv ) = 0. Savybe (76) reikia, kad tinkamai sudarytas paraas visada bus pripaistamas. Tai butina kiekvienos skaitmeninio parao schemos savybe. Taiau skaitmeninio parao schema butu beverte, jeigu butu nesunku klastoti paraus, t. y. jeigu i vieojo rakto Kv butu lengva nustatyti paraui sudaryti reikaling privatuji rakt Kp arba ir neinant privataus rakto butu galima parinkti poras x M, y P, tenkinanias lygyb ver(x, y|Kv ) = 1.

13. IVADAS

205

Yra du budai ivengti klastojimo. Viena vertus, galime tikrinimui skirt rakt atskleisti tik tada, kai reikia patikrinti para ir daugiau jo nebenaudoti. Tokios skaitmeniniu parau schemos vadinamos vienkartinemis. Arba galima naudoti vieojo rakto kriptosistemu konstrukcijas ir sudaryti skaitmeninio parao schem taip, kad, inant Kv , praktikai nebutu imanoma nustatyti Kp . Tada tuos paius schemos raktus bus galima naudoti daugeliui dokumentu pasirayti.

Skaitmeninio parao schema

Apskritai skaitmeninio parao schem galime isivaizduoti kaip kriptosistem, kurioje raktai sukeisti vietomis: ifras (paraas) sudaromas naudojant privatuji rakt, o ifras deifruojamas (paraas tikrinamas) naudojant vieji rakt.

13.3. Algoritmai ir protokolai


Jeigu i savo but istatysite arvuotas duris, bet ir toliau ieidami i namu paliksite rakt po kilimeliu... patys sprskite, ar arvuotos durys apsaugos jusu turt. Jeigu su draugu nutarete susitikti dideliame svetimos alies mieste, bet nesusitarete del vietos  net ir detalus miesto emelapis nepades. Panaiai ir su kriptograne apsauga: maa tureti saugius kriptogranius algoritmus, reikia gerai pagalvoti, kaip jie turi buti sujungti i visum.

ifravimas, deifravimas, parao sudarymas, tikrinimas...  tai veiksmai, kuriuos gali atlikti vienas asmuo. Jis naudojasi patikimais irankiais  kriptograniais algoritmais. Tikroveje niekas neatlieka ifravimo del paties ifravimo ir nekuria skaitmeniniu parau tiesiog iaip sau (iskyrus galbut tyrinetojus, kuriems kriptograjos udaviniai yra idomesni ir svarbesni u visus ju rezultatu taikymus). Tikroveje informacijos slaptumas ir autentikumas yra svarbus ivairiu praktiniu udaviniu sprendimo elementai. Tie tikroves udaviniai yra painus ir sudetingi, o ju konstruktyvus sprendimas (arba sprendimo sutrukdymas) gali rupeti daugeliui. Pavyzdiui, reikia naudojantis kompiuteriniais tinklais pasirayti daugiaal sutarti arba organizuoti ifruot ryi tarp daugelio dalyviu, neturint galimybes jiems saugiai perduoti

206

KODAI IR IFRAI

raktus arba organizuoti elektroninius rinkimus arba skaitmeniniu pinigu sistem... Kad patikimi kriptograniai irankiai gali visikai neatlikti savo paskirties, gerai parodo toks pavyzdys. Tarkime, Algis ir Birute nori palaikyti ifruot ryi, naudodamiesi kokia nors saugia vieojo rakto kriptosistema. Atrodo, kas gali buti paprasiau: tegu A nusiunia B ifravimui skirt rakt Ke,A , B tegu nusiunia rakt Ke,B ir problema isprsta! Galima saugiai susiraineti. Taiau prisiminkime Z, kurio galimybes kontroliuoti ryio kanal yra neribotos. Jis taip pat gali sudaryti tos paios kriptosistemos raktu por K = Ke,Z , Kd,Z ir pasielgti taip: perems A siuniam rakt Ke,A jis gali ji pakeisti savo raktu Ke,Z . Taigi uuot gavusi Algio rakt Ke,A , Birute gaus Ke,Z . Galimybes nustatyti, kad raktas pakeistas nera! Z taip pat gali pakeisti ir B siuniam rakt. Kai bus pasikeista raktais, A ir B bandys umegzti saugu ryi. Tarkime, B ketina pasiusti A ifruot praneim M . Ji ifruoja: C = e(M |Ke,Z ), ir siunia A, bet pirmiausia laikas patenka Z, kuris ji isiifruoja ir vel uifravs siunia A:

M = d(C|Kd,Z ),
A irgi isiifruoja ir skaito laik:

C = e(M |Ke,A ).

M = d(C |Kd,A ),
ne nenumanydamas, kad jis nebe pirmasis skaitytojas.

Isiterpimo (man-in-the middle, angl.) ataka

is budas iveikti kriptogran apsaug vadinamas isiterpimo (man in the middle, angl.) ataka. Zigmas net nebande atakuoti patikimos kriptosistemos. Jis nelaue arvuotu duru, jis ilindo pro atvir lang! Zigmas atliko ne kriptogranio algoritmo, bet naudojimosi juo taisykliu atak. Prie pradedami naudotis kriptosistema A ir B turejo atlikti numatytus veiksmus, kuriu tikslas  pasikeisti raktais. Nustatytu veiksmu seka, kuri atlieka du ar daugiau asmenu, noredami pasiekti tam tikr tiksl, vadinama protokolu. Prekes isigijimas, sskaitos

13. IVADAS

207

atidarymas banke, isidarbinimas, egzamino laikymas...  visur vieni protokolai. Protokolas, kuriame, atliekant veiksmus, naudojami kriptograniai algoritmai, yra kriptogranis protokolas. Kriptograniai protokolai skiriasi nuo kasdieni gyvenim reguliuojaniu protokolu tuo, kad daniausiai protokolo dalyviai neturi tiesioginio slyio. Jus negalite savo partneriui, su kuriuo norite naudodamiesi kompiuteriniais tinklais pasirayti sutarti, tiesiog pavelgti i akis ir, pasikliov nuojauta, nusprsti, ar jis neketina jusu apgauti. Apgavystes galimybe turi buti paneigta paioje protokolo strukturoje. Jis turi buti nedviprasmikas ir isamus, kita vertus, ji vykdydami, dalyviai neturetu gauti vienas i kito daugiau iniu, nei ju reikia numatytam tikslui pasiekti. Kurti protokolus ir analizuoti ju patikimum nera lengva. Apskritai lengviau nustatyti, kad naudojamas protokolas nera patikimas, nei irodyti patikimum. Juk saugumui paneigti pakanka nurodyti vien sprag, o teigti, kad trukumu nera, nes ju nepastebeta  netikusi logika. Kuriant protokol, formuluojamas tikslas, kuri tuo protokolu siekiama pasiekti, nustatomi dalyviai, ju funkcijos ir tarpusavio ryiai. Beveik visada reikia ivertinti gresmes, kurios A ir B vykdomam protokolui kyla del Z egzistavimo. Kartais i protokol itraukiami tretieji pasiekti norim tiksl padedantys asmenys. Pavyzdiui, jeigu A ir B gali pasinaudoti nesuinteresuoto ir patikimo treiojo asmens J (Justo) pagalba, tai isiterpimo atakos pasikeiiant vieaisiais raktais galima ivengti. Tarkime, A ir B gali kreiptis i patikim asmeni, turinti skaitmeninio parao schem. Tada A, noredamas pasiusti B savo vieji rakt ir noredamas ivengti pakeitimo, gali pasiusti J laik su praymu pasirayti Ke,A . Gavs i J para ir ji patikrins

y = sig(Ke,A |Kp,Z ),

ver(Ke,A , y|Kv,Z ) = 1,

A gali siusti B rakt Ke,A kartu su parau y = sig(Ke,A |Kd,Z ) nebebijodamas, kad raktas bus pakeistas ir tai liks nepastebeta. Taiau treiuju asmenu pagalba gali brangiai kainuoti arba buti tiesiog neimanoma. Geriausi protokolai yra tie, kurie ivairiu apgavysiu galimyb panaikina del vidines numatytu veiksmu strukturos.

13.4. Kriptosistemu saugumas


Vykdyti kriptogranio algoritmo kriptoanaliz reikia atlikti jo atakas. Kokios tos atakos gali buti? K reikia teiginys, kad kriptosistema yra saugi?

Teisetas ifro C gavejas deifruoja ji, naudodamasis deifravimui skirtu raktu Kd . Zigmas neino io rakto, todel bando atkurti pradini tekst, naudodamasis ifru ir iniomis apie naudojam kriptosistem. Kitaip tariant,

208

KODAI IR IFRAI

jis atlieka jos kriptoanaliz. Kuo jis gali naudotis? iniomis apie ifravimo ir deifravimo operaciju struktur, kriptosistemos darbo duomenimis: ifrais ir juos atitinkaniais tekstais. Viskuo, iskyrus slaptuosius parametrus  raktus. Kriptoanalizes tikslas  naudojantis ifrais, atkurti juos atitinkanius tekstus, o galbut  netgi nustatyti ir raktus. Skaitmeniniu parau sistemos kriptoanalize  tai budu sudaryti galiojanius paraus neinant privaiuju raktu paieka, o taip pat  paraams sudaryti naudojamu raktu nustatymo galimybiu analizuojant tekstus ir galiojanius ju paraus tyrimas. Panagrinekime kriptosistemu ataku ruis. Jos skiriasi atakai naudojamu duomenu pobudiu. Taiau visais atvejais daroma prielaida, kad kriptoanalitikas ino bendrj kriptosistemos struktur: kaip veikia ifravimo ir deifravimo algoritmai, kokia naudojamu raktu aibe. Jeigu naudojamasi tik ifrais, tai ataka vadinama

pavieniu ifru ataka (ciphertext-only attack). Toki atak galime suformuluoti kaip udavini:

e(Mi+1 |Ke ) surastu Mi+1 . Jeigu pavyko gauti ne tik ifruotu, bet ir juos atitinkaniu pradiniu tekstu, kriptoanalitikas atlieka teksto-ifro poru atak (known-plaintext attack).

Duota: C1 = e(M1 |Ke ), . . . , Ci = e(Mi |Ke ). Rasti: arba M1 , . . . , Mi ir Kd , arba algoritm, kuris bet kokiam Ci+1 =

Mi+1 . ifravim musu laikais vykdo, inoma, kompiuteriai. Gali buti, kad Zigmas turi galimyb pateikti ifravimo sistemai kokius nori tekstus ir gauti atitinkamus ifrus. Tada jis gali atlikti rimt kriptosistemos ibandym  pasirinktu teksto-ifro poru atak (chosen-plaintext attack).

Duota: M1 , C1 = e(M1 |Ke ), . . . , Mi , Ci = e(Mi |Ke ). Rasti: Kd arba algoritm, kuris bet kokiam Ci+1 = e(Mi+1 |Ke ) nustatytu

Duota: M1 , C1 = e(M1 |Ke ), . . . , Mi , Ci = e(Mi |Ke ); ia praneimus M1 , . . . , Mi pasirinko pats kriptoanalitikas. Rasti: Kd arba algoritm, kuris bet kokiam Ci+1 = e(Mi+1 |Ke ) nustatytu Mi+1 . Taiau Zigmas gali tureti dar daugiau galimybiu. Vien kart atliks pasirinktu teksto-ifro poru atak, jis gali, atsivelgdamas i kriptoanalizes rezultatus, pasirinkti naujus praneimus ir vel gauti ju ifrus. i ataka vadinama
adaptyvia pasirinktu teksto-ifro poru ataka (adaptive-chosen-plaintext attack). Kartais imanoma ir tokia ataka: kriptoanalitikas pasirenka ifrus ir gauna juos atitinkanius praneimus, tai  pasirinktu ifru ataka (chosen-ciphertext attack).

13. IVADAS

209

Pavyzdiui, jis gali ivairius praneimus deifruoti paraui tikrinti skirtu raktu ir bandyti gauti netiesiogines informacijos apie paraams sudaryti naudojam rakt. Kaipgi galima vertinti kriptosistemos saugum? Yra keli poiuriai, k laikyti saugia kriptosistema. Kriptosistema vadinama beslygikai saugia (unconditional security), jei net ir turedamas beribius skaiiavimo iteklius kriptoanalitikas negali be rakto i ifro nustatyti, koks praneimas buvo siustas. Tai grieiausias saugios kriptosistemos apibreimas. Kriptosistema vadinama saugia sudetingumo teorijos poiuriu (complexitytheoretic security), jei jos negali iveikti Zigmas, kurio skaiiavimo resursai leidia jam taikyti tik polinominio laiko algoritmus (t. y. kai naudojamas laikas ir atmintis polinomikai priklauso nuo ivedamu duomenu dydio). Sakoma, kad kriptosistemos saugumas yra irodomas (provable security), jeigu galima irodyti, kad sistemos iveikimas yra tolygus matematinio (daniausiai skaiiu teorijos) udavinio, kuris laikomas sunkiu, sprendimui. Kriptosistema vadinama skaiiavimu poiuriu saugia (computational security), jeigu pasiektas skaiiavimu resursu lygis yra pernelyg emas, kad naudojant geriausias inomas atakas, sistema butu iveikta. Pagaliau ad hoc saugia, arba euristikai saugia, kriptosistema vadinama tokia sistema, kurios saugum patvirtina tam tikri danai euristiniai argumentai. Suprantama, is terminas tereikia, kad specialistai atliko tam tikr sistemos analiz, taiau iveikti kriptosistemos nepavyko. Ivertinti kriptosistemos saugum  sudetinga uduotis. Jokiu bendru receptu jai sprsti nera. Kriptografo iniu, patirties ir talento niekas neatstos. Kriptograja yra modernus mokslas, taiau, kaip ir senaisiais laikais, ir menas.

210

KODAI IR IFRAI

14 Klasikine kriptograja
Kaip paslepti teksto

M = m1 m2 . . . mn ,

ia mi A yra abeceles simboliai arba odiai,

prasm, isaugant galimyb j atkurti? Galima simbolius perstatyti vietomis, galima juos pakeisti kitais. Tegu, pavyzdiui, : {1, 2, . . . , n} {1, 2, . . . , n} yra elementu perstata (abipus vienareikmis atvaizdis). Naudodami j kaip rakt, ifravimo operacij galime apibreti taip:

e(M |) = m(1) m(2) . . . m(n) .


Kitas budas sudaryti ifr  panaudoti keitini. Jeigu B yra kokios nors kitos abeceles simboliu arba odiu aibe ir : A B yra injektyvus atvaizdis, tai, naudodamiesi juo kaip raktu, galime ifruoti taip:

e(M |) = (m1 )(m2 ) . . . (mn ).


Galima teigti, kad kriptograjos istorija  tai tinkamu ifravimui perstatu ir keitiniu konstravimo istorija. Banaloka, inoma, mintis! Reikia madaug tiek pat kaip teiginys, kad kompiuteriu raida  tai tobulesniu skaiiavimo priemoniu kurimo istorija.

14.1. Skytale ir kitos perstatos


Plutarchas savo Iymiuju moniu gyvenimuose raydamas apie Spartos karaliaus Lisandro gyvenim, mini, kad spartieiai, noredami ji parsikviesti i karo ygiu, pasiunte skytal. Skytale  pirmasis istorijoje inomas ifravimo irenginys, kartu ir ifras.

Skytale graikikai reikia lazdel. Taiau tuo paiu odiu graikai vadino ir ilg siaur odin juostel su uraytu tekstu. Raydavo ant tokios juosteles taip: uvyniodavo j ant lazdeles, kad sluoksniai butu alia vienas kito, ir raydavo ant jos eilute po eilutes vis pasukdami lazdel. Ura vis tekst, juostel nuvyniodavo. Ant jos galejai matyti pabiras raides, idestytas tarsi be jokios tvarkos. Jei skaitytum jas i eiles  tik veltui gaitum laik. Kad iryketu prasme, juostel reikia uvynioti ant tokio pat skersmens lazdeles.

14. KLASIKINE KRIPTOGRAFIJA

211

Graiku istorikas Herodotas savo ratuose mini spartieiu ifravimo irengini  skytal. Spartieiu skytale  tai tiesiog lazdele, ant kurios uvyniojama odos arba papiruso juostele. Siaur popieriaus juostel uvynioj ant pietuko, galite ibandyti, kaip toks prietaisas veikia.

Taigi skytale yra ifravimo irenginys. Siuntejas ir gavejas turi tureti po tokio pat skersmens lazdel  tai ios ifravimo sistemos raktai. Naudodamasis raktu, siuntejas ibarsto savo praneimo raides iilgai juosteles  ifruoja praneim. Tekstas, kuri gautume nuosekliai skaitydami juosteleje uraytas raides nuo pradios iki galo, yra praneimo ifras. ifro gavejas, naudodamasis savo raktu, vel surenka ifro raides taip, kad iryketu siustasis praneimas  deifruoja tekst. i ifravimo sistema sugalvota daugiau kaip prie du tukstanius metu. Taiau ir dabartines ifravimo sistemas  jas pavadinome kriptosistemomis  sudaro tos paios dalys: neifruoti praneimai, raktai ir ifrai, kurie gaunami, pagal tam tikras taisykles (algoritmus) pertvarkant praneimus taip, kad nebutu aiki ju prasme. Panagrinekime, kaipgi veikia skytales kriptosistema. Visai nebutina iekoti lazdeles ir popieriaus juostos. Panagrinej pieini, greitai suprasime, kaip ji veikia. M B A O U U D A S S O D U I A A R L E P D K M A O A E S R Z J M I Y A U J S U S O B N E A I A L D N D D R K A O I I R R J S

Kai ifruojame naudodami skytal, tarsi raome tekst i lentel eilute po eilutes, o ifr sudarome skaitydami stulpeli po stulpelio: MBAOUUDA...

Jeigu teksto raides raysime i staiakampes lenteles eilutes, o skaitysime stulpelis po stulpelio, tai gausime skytales ifr. Deifruodami turime elgtis prieingai  ifro simbolius rayti i stulpelius, o skaityti eilut po eilutes. Taigi skytale apibreia tam tikr teksto simboliu ibarstymo taisykl, kuri galima paaikinti naudojant lentel. Toki taisykl nesunku apibendrinti. Pavyzdiui, suraius tekst i m n matavimu lentel (matric) eilute po eilutes, galima susitarti, kad ifras bus gaunamas perskaitant lentel stulpelis po stulpelio tam tikra tvarka, kuri turi inoti abu ifro vartotojai  ifruotojas ir deifruotojas. Kriptograjos istorijoje buvo naudota ivairiausiu tokios ruies taisykliu. ias operacijas galima matematikai urayti pasinaudojant matricu veiksmais. tai pavyzdys. Tarkime, ifruojama taip: tekstas M suraomas i 3 4 matavimu matric eilute po eilutes, o tada skaitant stulpelis po stulpelio, suraoma i 43 matavimu matric C, pirma perskaitant antrji, tada treiji, paskui  ketvirtji ir pirmji stulpelius. Taigi tokio ifro raktas  stulpeliu numeriu seka 2 3 4 1.

212

KODAI IR IFRAI

Tegu M yra pradine teksto lentele, C  ifras (4 3 matavimu lentele), o K  4 4 matavimu matrica, nusakanti M stulpeliu skaitymo tvark (ifro raktas): 0 1 0 0 0 0 1 0 . K= 0 0 0 1 1 0 0 0 Galime isivaizduoti, kad teksto simboliai pakeisti sveikaisiais skaiiais, pavyzdiui, simboliu eiles numeriais abeceleje. Tada

C = e(M |K) = K M T ,
ia M T yra transponuota matrica; nulinio elemento ir simbolio sandauga laikoma lygia nuliui, o daugyba i vieneto simbolio nekeiia. Prisimin matricu veiksmu savybes, galime ir deifravimo operacij urayti matematikai:

M = d(C|K) = C T (K 1 )T .
inoma, praeities laiku kriptografai matricu nedaugino. Pagrindiniai ju irankiai  pietukas ir popieriaus lapas, ant kurio raydami raidiu virtines iekodavo prasmes. Todel senieji ifrai kriptograjos literaturoje danai ir vadinami popieriaus ir pietuko ifrais. tai dar vienas toks ifras, paremtas perstatomis. Jis nepelnytai vadinamas Fleissnerio kvadratu ifru, nes buvo apraytas austru armijos kapitono E. Fleissnerio (18431874) knygeleje. Taiau i tiesu jis buvo naudotas ir anksiau. Kapitono Fleissnerio ideja paprasta. Tarkime, musu praneim sudaro 16 simboliu. Jam uifruoti pasigaminkime eiolikos langeliu kvadrat, ipjaukime jame keturis langelius (ne bet kaip!) ir prismeikime smeigtuku per centr prie popieriaus lapo. Ira pirmsias praneimo raides i ipjautus lagelius, pasukime kvadrat 90 kampu prie laikrodio rodykl. Jeigu langelius tinkamai ipjoveme, jie atidengs tuias popieriaus vietas. I jas vel iraykime keturias raides ir vel pasukime kvadrat 90 kampu prie laikrodio rodykl. Pasuk kvadrat paskutini kart, iraysime likusias keturias praneimo raides. Nuem kvadrat, ant popieriaus pamatysime i kvadrat suraytas praneimo raides. Tai ir yra ifras. Galime ji pasiusti nura raides eilute po eilutes. Kad gavejas galetu iifruoti ifr, jis privalo tureti toki pat kvadrat, kokiu naudojosi ifruotojas.

14. KLASIKINE KRIPTOGRAFIJA

213

L A U K

S A U M E K

L I

S N L A A I U MU J E K

S A N J

N E U E

I A M K

L I U U

Perskait upildyto kvadrato eilutes, gauname toki ifr: SNILAEAI...

inoma, tokiam ifravimui galime naudoti ir didesni kvadrat. Kiekviename 2n2n langeliu kvadrate galime taip ipjauti n langeliu, kad, tris kartus 90 kampu pasukus kvadrat apie centr, atsidengtu vis naujos popieriaus lapo vietos.

XVIII amiuje naudoto ifro ablonas.

Nors iam ifravimo budui prigijo Fleissnerio vardas, ideja pernelyg paprasta, kad nebutu kilusi ir kitiems. Dviem olandu tyrinetojams pavyko iifruoti XVIII amiaus vidurio ifr, rast Olandijos valdytojo archyvuose; iifruoti pavyko sudarius 16 16 dydio Fleissnerio kvadrat, pavaizduot breinyje. Taigi Fleissnerio sugalvotas ifras jau buvo naudotas imtmeiu anksiau!6 Perstatas naudojantys ifravimo algoritmai nekeiia raidiu daniu: ir neifruotame tekste, ir jo ifre tos paios raides pasitaiko vienodai danai. Taigi sudarius pakankamai ilgo ifro raidiu daniu lentel ir lyginant j su ivairiu kalbu raidiu daniu lentelemis, galima ne tik nustatyti, kad ifravimui naudota perstata, bet ir suinoti, kokia kalba paraytas pradinis neifruotas tekstas. Nors perstatu naudojimas ifravimui labai sena ideja, ji praveria ir iandien konstruojant modernius ifrus. Juk kompiuteriai gali perstatu operacijas atlikti labai greitai, be to  taikyti jas miliniko dydio duomenu kiekiams.
6 Karl de Leuw, Hans van der Meer. A Turning Grille from the Ancestral Castle of the Dutch Stadtholders. Cryptologia, XIX, 2, 1995, p. 153165.

214

KODAI IR IFRAI

14.2. Keitiniai ir ifrai


I romenu raytojo Svetonijaus, gyvenusio madaug 70150 m., veikalo Dvylikos cezariu gyvenimas inome, kaip Julijus Cezaris rae ifruotus laikus Ciceronui...

Paprast Julijaus Cezario ifravimo bud galima nusakyti labai paprastai: keisk abeceles raid treija jos kaimyne . GFE E H I I HGF D I Y E C I J K E B YL D J M CA KN B L O MP R A Z V N S O T U UV Z U U P U RSTU
Cezario ifras su lietuvika abecele. Pagal skrituliu kratus viena po kitos iraytos visos lietuviu kalbos abeceles raides. Po didiojo skritulio abeceles raidemis antrajame skritulyje suraytos raides, kurios abeceleje stovi trimis pozicijomis toliau   treiosios kaimynes . Paskutiniuju abeceles raidiu kaimynes yra pirmosios abeceles raides.

Tarkime, didesnysis skritulys nejuda, o maesnysis sukiojasi apie bendr abieju skrituliu ai. Galime pasukti maji skrituli, kad po didiojo skritulio raide A atsidurtu kita maojo skritulio raide. Gausime nauj Cezario ifro variant. Kiek yra abeceles raidiu, tiek yra maojo skritulio padeiu. Kiekvien i ju galime nusakyti skaiiumi padalu, kuriuo prie laikrodio rodykl pasuktas maasis skritulys. Taigi gauname n ifravimo algoritmu, kuriu raktai yra aibes K = {0, 1, . . . , n 1} skaiiai, ia n yra raidiu skaiius abeceleje. Cezario ifravimo bud patogu apibreti matematikai, pakeitus abeceles raides skaiiais. Tegu A = Zn = {0, 1, . . . , n 1} yra n raidiu turinti abecele, praneimu ir ifru aibes sudarytos i ios abeceles odiu M = C = A , o raktu aibe sutampa su abecele K = A. Tada Cezario ifravimo taisykl galime urayti taip:

e(x|k) x + k (mod n), x Zn ,

e(m1 m2 . . . |k) = e(m1 |k)e(m2 |k) . . .

i paprasta kriptosistema kriptograjoje vadinama Cezario kriptosistema. Raktu yra tiek pat kiek abeceles simboliu. Matematin ifravimo algoritmo iraik norisi apibendrinti. Imkime toki raktu aib:

K = {K = k1 , k2 : ki Zn , (k1 , n) = 1},

14. KLASIKINE KRIPTOGRAFIJA ir vieno simbolio ifr apibrekime taip:

215

e(x|K) k1 x + k2 (mod n).


Jeigu n yra pirminis, tai tokioje apibendrintoje Cezario kriptosistemoje bus n (n 1) skirtingu raktu. Jie valdo tik nedidel dali visu galimu keitiniu Zn Zn ; i viso skirtingu keitiniu yra n! Cezario kriptosistemos apibendrinimu galime laikyti Lesterio Hillo ifrus, kuriuos jis paskelbe 1929 metais.7 Apibrekime Hillo kriptosistemos raktu aib:

Kn,r = {K : K = (kij ) yra r-osios eiles kvadratine matrica (det(K), n) = 1},


ia visi skaiia kij yra sveikieji, o det(K) ymi matricos determinant. Dabar r ilgio odiu ifrus galime apibreti taip:

e(m1 m2 . . . mr |K) = c1 c2 . . . cr ,
o deifravimo operacij

c1 c2 . . . cr = m1 m2 . . . mr K,

d(c1 c2 . . . cr |K) = m1 m2 . . . mr ,

m1 m2 . . . mr = c1 c2 . . . cr K 1 .

Atvirktin matric K 1 reikia skaiiuoti, inoma, moduliu n, o odis dauginamas i matricos naudojantis vektoriaus ir matricos sandaugos apibreimu. Jei n = p yra pirminis skaiius, tai raktu aibeje Kn,r yra tiek matricu, kiek tiesine erdve Fr turi skirtingu baziu. i dydi nesunku apskaiiuoti. p

115 teorema. Jei p yra pirminis, tai


|Kp,r | = (pr 1)(pr p)(pr p2 ) (pr pr1 ).
Jeigu ifravimas naudojant keitini i pradiu apibreiamas pavieniams abeceles simboliams, o ifruojant odius, jis taikomas kiekvienai raidei atskirai, tai pradinio teksto simboliu daniai lygus atitinkamiems ifro simboliu daniams, taip pat  pradinio teksto simboliu poru daniai lygus atitinkamiems ifro simboliu poru daniams ir t. t. Taigi naudojantis ivairiu kalbu simboliu, ju poru, trejetu ir t. t. daniu lentelemis, i ifro galima nustatyti ir kalb, kuria buvo paraytas tekstas, ir pati keitini. Jeigu ifruojame (kaip Hillo ifro atveju) ne pavienius simbolius, bet m ilgio odius, tai ryio tarp pavieniu simboliu daniu tekste ir ifre jau nebus, taiau m, 2m, . . . ilgio simboliu bloku daniai bus tie patys. inoma, kai m yra didelis skaiius, tuos danius skaiiuoti ir lyginti yra sudetinga. Taigi kai ifruojami ne pavieniai odiai, bet m (m > 1) ilgio odiai, ryys tarp simboliu daniu neifruotame tekste ir ifre inyksta. Yra dar viena keitiniu, panaikinaniu ryi tarp simboliu daniu, ruis.
7 L. Hill. Cryptography in an Algebraic Alphabet. Monthly, 36, 1929, June-July, p. 306312.

The American Mathematical

216

KODAI IR IFRAI

Tegu A ir B yra neifruoto teksto ir ifro abeceles. Abeceles B visu poaibiu aib ymesime P(B). Kiekvienam atviro teksto abeceles simboliui a A nurodysime homofonu aib k(a) B, t. y. nurodysime skirtingai uraomus simbolius, kuriuos ifre reikia skaityti kaip a. Tokios kriptosistemos raktas yra funkcija

k : A P(B), k(x) k(y) = , jei x = y, x, y A.


ifravimui dar reikia tureti bud, kuriuo naudojantis, i ifruojamo simbolio homofono butu atsitiktinai parenkamas vienas jo elementas; visu elementu parinkimo tikimybes turetu buti vienodos. ymedami atsitiktinai parinkt homofono k(a) element k(a, ), teksto ifr apibreime taip:

e(m1 m2 . . . |k) = k(m1 , )k(m2 , ) . . .


Naudodami homofoniniais keitiniais grindiamus ifrus, galime panaikinti ryi tarp atviro teksto simboliu daniu lenteles bei ifro simboliu daniu lenteles. Parinkdami funkcij k taip, kad homofono k(a) elementu skaiius butu proporcingas simbolio a daniui atvirame tekste, galime pasiekti, kad ifruotame tekste visu simboliu pasirodymo daniai butu beveik vienodi. Jei kriptosistemoje norime naudoti homofonini keitini, turime nusprsti, kaip apibreti rakt, kad ji butu patogu saugoti bei lengva juo naudotis. Manoma, kad pirmkart homofoniniai keitiniai ifravimui buvo panaudoti 1401 metais slaptam Mantujos hercogystes ir Simeone'o de Crema susirainejimui. Priebalsiams buvo naudoti iprastiniai keitiniai, taiau balsiams ifruoti  homofoniniai ifrai. Idomus homofoniniu keitiniu pavyzdys  Beale'o ifrai. Thomas Jeersonas Beale'as buvo nuotykiu iekotojas. Jis paliko tris ifruotus tekstus apie Virdinijos valstijos apylinkese ukast dideli lobi. Tai ivyko apytikriai 1820 metais. Antrji Beale'o ifr, kuriame apraomas lobis ir nurodoma, kad pirmajame ifre yra detalios instrukcijos, kaip ji surasti, 1880 metais iifravo Jamesas Wardas. Beale'o raktas  JAV Nepriklausomybes deklaracija. Jis naudojosi iuo tekstu taip. Isivaizduokime, kad kokio nors dokumento ar knygos (Beale'o atveju  JAV Nepriklausomybes deklaracijos) odius sunumeravome. odiu, kurie prasideda raide a numeriai tegu sudaro ios raides homofonu aib, odiu, kurie prasideda raide b numeriai sudaro b homofonu aib ir t. t. Jeigu norite  galite numeruoti ne odius, bet raides. Puikus metodas!

14.3. Vigenere ifras


ifras, naudojantis keitini, keiia pradinio teksto abeceles A raides abeceles B raidemis. Panaudoti ifrui ne vien, bet kelias abeceles B1 , B2 , . . . , Bd  pati geriausia naujosios Europos kriptograjos ideja!

14. KLASIKINE KRIPTOGRAFIJA

217

Viduramiu europieiams kriptograja nerupejo. Taiau prasidejus naujiesiems laikams, suklestejus pirmiausia Italijos miestams, kurie eme inirtingai varytis del itakos, valdios, naudos ir turto, atejo metas ir politinei Europos kriptograjai. Italijos miestu valdia turejo savo inioje ifru specialistus, kurie triuse ifruodami ir deifruodami slaptus laikus, tiek savo miesto, tiek svetimus  pagrobtus, uverbuotu agentu perduotus... Pavyzdiui, Venecijoje XVI amiaus viduryje buvo net trys ifru sekretoriai  visas kriptografu skyrius! Kriptologijos meno buvo mokoma mokyklose, buvo rengiami kriptoanalizes konkursai, u nuopelnus dosniai atlyginama. 1555 metais kriptografo (sekretoriaus ifru reikalams) pareigyb isteige ir popieius. Apie 1580 metus popieiams eme tarnauti iymiu kriptografu Argenti eima. Tuo laiku naudotus praneimu prasmes slepimo budus galima suskirstyti i dvi grupes: kodus ir ifrus. Kodas reike iankstini susitarim keisti vienus odius ar frazes kitais odiais, frazemis arba simboliais. Pavyzdiui, viename seniausiu Vatikano tekstu, skirtu kriptograjai, nurodoma, kad tuometinese popieiaus kovose su Romos imperatoriumi dalyvavusiu gelfu ir gibelinu partijas reikia vadinti egiptieiais ir Izraelio vaikais, minint karaliu, rayti raid A, popieiu  raid D ir t. t. Kad gavejas perskaitytu naudojant kod parayt laik, jam turi buti i anksto iteiktas pats kodas  naudojamu odiu ir tikrosios ju prasmes atitikties lentele. Kitaip praneimo prasme slepiama naudojant ifrus. I anksto susitariama, kaip bus keiiamos laiko raides. Jos gali buti keiiamos kitomis raidemis, kokiais nors simboliais arba tiesiog skaiiais. Laiko gavejas turi inoti dvieju simboliu rinkiniu atitikties taisykl, kuria naudojamasi keiiant raides, t. y. rakt. Tokiam raktui perduoti Argenti pradejo naudoti prasmingus odius (juos lengviau isiminti!). Argenti ideja parodyta pavyzdiu.

A 10 K 23

R 11 L 24

G 12 M 25

E 13 O 26

N 14 P 27

T 15 Q 28

I 16 S 29

B 17 U 30

C 18 V 31

D 19 W 32

F 20 X 33

H 21 Y 33

J 22 Z 34

Pirmojoje ir treiojoje eilutese urayta lotynika abecele, taiau ne iprastine tvarka. Ji prasideda rakto odiu ARGENTI, o po jo suraytos likusios abeceles raides eiles tvarka. Antrojoje ir ketvirtojoje eilutese urayti skaiiai, kuriais ifruojant keiiamos abeceles raides. i ideja buvo naudojama net ir po keliu imtu metu. tai Richardo Zorges  valgo, Antrojo pasaulinio karo ivakarese veikusio Japonijoje,  ifro pavyzdys.

218

KODAI IR IFRAI

S 0 C 80 I 1 O 2 X 81

U 82 D 83 J 84 P 85 Z 86

B 87 E 3 K 88 Q 89 . 90

W 91 F 92 L 93 R 4 / 94

A 5 G 95 M 96 T 6

Y 97 H 98 N 7 V 99

Anglu kalbos abecele surayta lenteles eilutese pagal Argenti metod, pradedant odiu SUBWAY. Frazes a sin to er raides pakeistos skaitmenimis, o likusios  dvienkliais skaiiais, pradedant 80. Taip padaryta norint pagreitinti ifro perdavim: frazes a sin to er raides anglu kalbos tekstuose pasitaiko daniausiai.

Apie 1466 metus Leonas Batista Alberti  ymus italu architektas, architekturos teoretikas, muzikantas... tiesiog tikras Renesanso laiku mogus  parae rankrati apie kriptograj, kurioje ideste itin svarbi tolimesnei europieiu kriptograjos raidai idej. GFE E H I I HGF D I Y E C I J K E B YL D J M KN CA B L O MP R A Z N S V O T U UV Z U U U P RSTU
Panaius ifravimo skritulius aprae Leonas Batista Alberti (14041472) savo traktate, skirtame iframs. Maesnysis skritulys yra sukiojamas, taigi ifro abecele yra kaitaliojama.

Prisiminkime du skritulius su abeceles raidemis, kuriais naudojomes nagrinedami Cezario ifrus. Tie skrituliai taip pat yra Alberti iradimas, apraytas jo kriptograjos traktate. Alberti skrituliuose, inoma, buvo uraytos lotynikos abeceles raides; jei suraysime lietuvikos abeceles raides  esme del to nepasikeis.

14. KLASIKINE KRIPTOGRAFIJA

219

Tarkime, didesnysis skritulys nejuda, o maesnysis gali sukiotis. Skrituliu tarpusavio padetis apibreia laiko raidiu keitimo (ifravimo) taisykl: laiko raid surad didesniajame skritulyje, j pakeiiame raide, kuri urayta po ja maesniajame skritulyje. Naujiena yra toks Alberti pasiulymas: Uifrav du ar tris laiko odius, maji skrituli pasukime per vien padal ir kitus du ar tris odius uifruokime naudodamiesi naujja skrituliu padetimi ir vel pasukime maji skrituli... ifruojant itokiu budu, pasikartojanios laiko raides jau nebera keiiamos viena ir ta paia raide. Kokia raide reikia pakeisti, tarkime, raid A, priklauso nuo skrituliu tarpusavio padeties. Taigi ifruojant naudojama nebe viena, bet daugelis abeceliu. Suprantama, kad laiko siuntejas ir gavejas turi tureti vienodus Alberti skritulius ir buti susitar del pradines skrituliu padeties ir maojo skritulio sukiojimo taisykles. Kaip nusakyti tokias taisykles, Alberti nenagrinejo. is nedidelis veikalas, galejs i esmes pakeisti vis tuometin kriptograj, liko neispausdintas ir dideles itakos nepadare. Matyt, ifravimo su daugeliu abeceliu ideja buvo pernelyg nauja tiems laikams. Panai ideja vel iniro madaug po eiasdeimt metu. Ji kilo ne maiau talentingam, taiau visai kito budo mogui. Alberti mego pasaulietiko gyvenimo spalvas, o tai kitas Europos kriptograjos pradininkas labiau vertino vienuolyno celes ramyb ir tyl. Johannes Trithemius (14621516) kriptograjos istorijoje minimas kaip pirmosios ispausdintos knygos apie ifrus autorius. Daugiau kaip penkiu imtu puslapiu jo knyga Poligraphia buvo ileista daugeli kartu. Joje buvo aprayta ir panai kaip Alberti ifravimo su daugeliu abeceliu ideja. Trithemius ifruoti siule taip: pirmj laiko raid su pirmja abecele, antrj  su antrja ir t.t. Taigi ir iuo budu ifruojant, pasikartojanios laiko raides keiiamos ivairiai priklausomai nuo ju vietos laike. Butu teisinga ifravim naudojant daugeli abeceliu pavadinti Alberti arba Tritemijaus vardu. Taiau istorija susikloste taip, kad tokiam ifrui prigijo visai kito mogaus vardas. 1586 metais buvo ispausdinta Blezo de Vigenere knyga Traktatas apie ifrus , kuriame taip pat buvo idestytas ifravimo su daugeliu abeceliu budas. Vigenere vardas kriptograjoje prigijo ifrui, kuriame naudojama keletas abeceliu, o ifro raktas uraomas odiu. Pasirinkime koki nors odi, pavyzdiui, MES. Panaudosime ji kaip Vigenere ifro rakt sakiniui UPELE MUSE RANGOSI VIKRIAI . Pasinaudosime lotynikosios abeceles lentele, todel raid E keisime i E.

220

KODAI IR IFRAI

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

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 A

C 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

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

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 D

F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

H I J K L M N O P Q R S T U V W X Y Z A B C D E F G

I J K L M N O P Q R S T U V W X Y Z A B C D E F G H

J K L M N O P Q R S T U V W X Y Z A B C D E F G H I

K L M N O P Q R S T U V W X Y Z A B C D E F G H I J

L M N O P Q R S T U V W X Y Z A B C D E F G H I J K

M N O P Q R S T U V W X Y Z A B C D E F G H I J K L

N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

P Q R S T U V W X Y Z A B C D E F G H I J K L M N O

Q R S T U V W X Y Z A B C D E F G H I J K L M N O P

R S T U V W X Y Z A B C D E F G H I J K L M N O P Q

S T U V W X Y Z A B C D E F G H I J K L M N O P Q R

T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

U V W X Y Z A B C D E F G H I J K L M N O P Q R S T

V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

W X Y Z A B C D E F G H I J K L M N O P Q R S T U V

X Y Z A B C D E F G H I J K L M N O P Q R S T U V W

Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

Z 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

Lentel, kurioje suraytos atitinkamai paslinktos lotynu kalbos abeceles Tritemijus vadino tabula recta .

Paraykime po io sakinio raidemis rakto raides taip: UPELE MUSE RANGOSI VIKRIAI MESME SMES MESMESM ESMESME ifruojame pirmj raid U: iekome lenteles stulpelio, kuris prasideda raide U, ir eilutes, kuri prasideda rakto raide M; eilutes ir stulpelio sankirtoje parayta raide G, ja ir keiiame raid U. ifruodami sakinio raid P, iekome stulpelio, prasidedanio raide P, ir eilutes, prasidedanios raide E, ju sankirtoje yra raide T, ifruodami raid, naudojame lenteles eilut, kuri prasideda raide S ir t. t. Taip gauname ir vis sakinio ifr: UPELE MUSE RANGOSI VIKRIAI MESME SMES MESMESM ESMESME GTWXI EGWW DEFSSLU ZAWVAMM ifravimui panaudojome tik tris tabula recta eilutes  tiek, kiek yra rakto odio raidiu. Deifruojant Vigenere ifr, taip pat prireiks triju eiluiu (triju abeceliu). ifruodami pirmj raid, naudojome taisykl, kuri nusakoma pirmja lenteles eilute ir eilute, prasidedania raide M, t. y. raide

14. KLASIKINE KRIPTOGRAFIJA

221

A yra keiiama raide M. Deifruodami pirmj raid, naudosime taisykl, kuri raid M keiia raide A. i taisykle nusakoma pirmja lenteles eilute ir eilute, kuri prasideda raide O. Antrajai ir treiajai ifro raidems deifruoti teks naudoti lenteles eilutes, prasidedanias raidemis W ir I. Taigi deifruodami galime elgtis panaiai kaip ifruodami, tik vietoj rakto MES turime naudoti rakt OWI: GTWXI EGWW DEFSSLU ZAWVAMM OWIOW IOWI OWIOWIO WIOWIOW UPELE MUSE RANGOSI VIKRIAI Vigenere kriptosistem matematikai galime apibreti visai panaiai kaip Cezario. Tegu A = Zn = {0, 1, 2, . . . , n 1}, M = C = A , K = Ad . ifravimo algoritmas su raktu k = k1 k2 . . . kd veikia taip:

e(m1 m2 . . . md md+1 . . . |k) = c1 c2 . . . cd cd+1 . . . , c1 m1 + k1 (mod n), c2 m2 + k2 (mod n), . . . , cd md + kd (mod n), cd+1 md+1 + k1 (mod n), . . .
Taigi galime isivaizduoti, kad Vigenere ifras gaunamas suskaidius pradini tekst i d fragmentu (d  naudojamo rakto ilgis) ir kiekvien fragment uifravus atskiru Cezario ifru.

14.4. Vigenere ifro analize


Vigenere ifras ilgai buvo laikomas tiesiog neiveikiamu. Taiau kai ifro raktas trumpas, visai paprasta ideja padeda ji iveikti.

ifrai su keletu abeceliu i pradiu buvo naudoti retai. Alberti, Tritemijaus ir Vigenere laikais slaptaraiuose vyravo kodai. ifrai su daugeliu abeceliu buvo pernelyg sudetingi kasdieniam naudojimui. Vartyti kodu knygas ir uraineti odius to meto slaptu laiku raytojams ir skaitytojams atrode paprasiau. Taiau tie, kas imane, kaip Vigenere ifrai veikia, pripaino, kad jie saugus, netgi neiveikiami. Net XX amiaus pradioje buvo manoma, kad jeigu raktas neinomas, tai nera budo jiems iminti. Tai buvo netiesa. Nedideleje 1863 metais ileistoje knygeleje prusu armijos majoras Kassiskis ideste itin paprast Vigenere ifro analizes metod, kuriuo danai imanoma iifruoti ifr ir be rakto. Taiau Kassiskio idej maai kas ivertino. Pats Kassiskis irgi nesieke ymaus kriptologo loves. Tarnaudamas Prusijos armijoje, laisvalaikiu gilinosi i kriptograj, taiau, paras minet 95 puslapiu knygel Die Geheimschriften und die Dechirir-kunst, nustojo ja dometis ir, iejs i atsarg, atsidejo archeologijai. Koki gi Vigenere ifro analizes bud sugalvojo Kassiskis? Tarkime, Vigenere rakt sudaro d skirtingu simboliu. Tada pirmj teksto raid ifruojame naudodami vien abecel (tabula recta eilut),

222

KODAI IR IFRAI

paymekime j A1 , antrj raid  naudodami abecel A2 , ... d-j  naudodami abecel Ad , d + 1-j  naudodami abecel A1 ir t. t. Taigi galime isivaizduoti, kad tekst M = m1 m2 . . . sudaro d daliu M1 , M2 , . . . , Md

M1 = m1 m1+d m1+2d . . . M2 = m2 m2+d m2+2d . . . ...... Md = md m2d m3d . . . ,

o kiekviena dalis ifruojama naudojantis atskira abecele. Kriptoanalitikas neino nei rakto, nei ji sudaraniu simboliu skaiiaus (rakto ilgio), taiau turi ilgok ifr C = c1 c2 . . . Jeigu jis inotu rakto ilgi d, galetu turim ifr suskaidyti i d fragmentu

C1 = c1 c1+d c1+2d . . . C2 = c2 c2+d c2+2d . . . ...... Cd = cd c2d c3d . . .

ir, naudodamasis raidiu daniu lentelemis, deifruotu kiekvien paprastu keitiniu ifru uifruot fragment. Taigi raktas, kuris atrakina ifro rakt, yra jo ilgis! Kaip jo iekoti? I i klausim Kassiskis atsake labai paprastai: iekokite ifre pasikartojaniu fragmentu! Patyrinekime paprast iek tiek dirbtini pavyzdi. ifruosime tekst Vigenere ifru, kurio raktas yra eiu raidiu odis LAUKAS: PAVARGS VASARIS PUSNYNUOSE MIEGA IR VANDENYS SLUGSO UAL LAUKASLA UKASLAU KASLAUKASL AUKAS LA UKASLAUK ASLAUK ASLAUK vilgtelekime i pirmji ir antrji ifruojamo teksto odius. Juose yra tas pats skiemuo VA, o po juo abiejuose odiuose paraytos tos paios rakto raides UK. Vadinasi, ir ifre gausime du vienodus i dvieju raidiu sudarytus fragmentus. Atstumas tarp ju lygus 6, t. y. rakto ilgiui! Taigi kriptoanalitikas, pastebejs ifre iuos vienodus fragmentus ir surads, kiek raidiu juos skiria, suinotu rakto ilgi! inoma, analizuodami tikr ifr, tokios lengvos sekmes negaletume tiketis. Rastume daug vienodu ifro fragmentu, atstumai tarp ju irgi butu ivairus. Taiau vis tiek gana danai pasitaikytu rakto ilgio kartotiniai! Panagrinekime pavyzdi. Uifrav pai pirmj io skyrelio skilti Vigenere ifru su raktu VIETA (naudojama lietuvika 32 simboliu abecele), gausime toki ifr:

14. KLASIKINE KRIPTOGRAFIJA

223

PJJA FCAFE YMNA OFL FMLP NIHI YARO KIAZO RUT VEGB CBDT NM FUENS FBCDG CIJE YIMFA FCVGA MDEEA JMVNS FBELI KOPDM CLUHI KICIK LLED FPUTI OEHTU MSDU VYYUE YUU UAUR KMSG OEHT FKDK VCHDE KEHN VEHIJ FZADV VBT FUUZU IOCA OUN NIZDN DDMO BHMNS RAT LCSTP RSTI PUJA PUIJ VZVDR OUEDT HDUEA JCEMR LLYYA MBEK FIA Surad vienodas simboliu poras (digramas) ifre, nustat atstumus tarp ju, o tada suskaiiav, kiek atstumu dalijasi atitinkamai i 2, 3, . . . , 10, sudarytume toki lentel:8
Dalikliai Kiek atstumu dalijasi 2 27 3 23 4 10 5 30 6 15 7 1 8 6 9 7 10 10

Skaiiai ikalbingi  rakto ilgis be abejones lygus 5.

14.5. Friedmano kappa testas


Neretai senuju amiu matematikai garsejo ir kaip geri kriptografai: F. Vite, J. Walis... Taiau senuju laiku kriptograja buvo veikiau menas, nei mokslas. Bet XX amiuje jos ryiai su matematika daresi vis glaudesni ir glaudesni...

Kassiskio test vargu ar pavadintume matematiniu kriptoanalizes metodu. Matematikos jame tiek ir tera  atstumu tarp fragmentu skaiiavimas ir dalikliu nagrinejimas. Pirmasis matematinius metodus kriptoanalizei pradejo taikyti Williamas Friedmanas (18911969). Ji kriptograjos istorikai pelnytai vadina vienu didiausiu visu laiku kriptoanalitiku. Jo mona  Elizebeth Friedman irgi buvo ymi kriptografe. Kriptograja ie mones susidomejo atlikdami gana keistus tyrimus turtingo amerikieio Fabyano ikurtame Riverbanko tyrimu centre. Jie tyrinejo, ar didiojo ekspyro kuriniu autorius kartais nera tu laiku ymus losofas Backonas. JAV isitraukus i Pirmji pasaulini kar prireike kriptoanalitiku pagalbos. Tokiu specialistu JAV kariniuose sluoksniuose nebuvo. Utat ju buvo Riverbanke. itaip i ekspyro ratu tyrinetojo W. Friedmanas virto vienu ymiausiu JAV kriptograjos specialistu. Kriptoanalizes metod, kuri iame skyrelyje panagrinesime, W. Friedmanas ideste savo veikale Sutapimu indeksas (The Index of Coincidence ). Panagrinesime, kaip ji galima taikyti Vigenere ifrui. Pats W. Friedmanas ji naudojo ir kitokiu ifru analizei. Tarkime, teksto ir ifro abecel A sudaro n simboliu (lietuviu kalbos abeceleje n = 32): A = {a1 , a2 , . . . , an }.
8

Vigenere ifru analizei galite pasinaudoti Java iskiepiais ios knygos tinklalapyje.

224

KODAI IR IFRAI

Jeigu i ios abeceles su grinimu rinktume dvi raides, tai tikimybe, kad abi 1 1 1 raides butu a1 lygi n n = n2 , kad a2  tokia pati ir t. t. Taigi dydi

1 1 1 1 + 2 + ... + 2 = 2 n n n n galime suvokti kaip tikimyb gauti dvi vienodas raides, kai jas atsitiktinai su grinimu renkame i abeceles. Vadinsime i dydi atsitiktinio teksto sutapimu indeksu. Paymekime p1 , p2 , . . . , pn abeceles raidiu pasitaikymo tikimybes kokia nors kalba paraytame tekste. Jeigu dabar dvi raides atsitiktinai rinktume i kokio nors tikro teksto, tai tikimybe gauti vienodas butu 0 = t = p2 + p2 + . . . + p2 . 1 2 n
i skaiiu vadinsime teksto sutapimu indeksu. Pavyzdiui, lietuviu kalbos teksto sutapimu indeksas yra t 0, 069. Jeigu sugretintume suraydami i dvi eilutes du skirtingus, bet to paties ilgio N ir ta paia kalba paraytus tekstus  kiek stulpeliu i vienodu raidiu gautume? Stulpeliu i vienodu raidiu butu

N t .
O jeigu sugretintume dvieju tokiu tekstu ifrus, gautus panaudojus vien keitini? Vienodu stulpeliu skaiius butu madaug tas pats. O jeigu abu tekstai butu uifruoti tuo paiu Vigenere ifru? Irgi tas pats! O jeigu skirtingais Vigenere ifrais? Nieko konkretaus negalime pasakyti, taiau galima tiketis, kad vienodu raidiu stulpeliu butu

N 0 .
iais samprotavimais ir remiasi Friedmano kappa testas. Isivaizduokime, kad kriptoanalitikui iteiktas Vigenere ifras, kuris buvo sudarytas naudojant, tarkime, rakt ABC, kurio kriptoanalitikas, aiku, neino. Tarkime, tas ifras yra toks: C = c1 c2 c3 c4 c5 c6 . . . Galime isivaizduoti, kad jis gautas naudojant rakt abcabcabc . . . Jeigu kriptoanalitikas nubrauktu pirmji ifro C simboli, gautu ifr, kuris sudarytas naudojant rakt bcabcabc . . . Jeigu jis suskaiiuotu, kiek yra vienodu raidiu stulpeliu tokioje lenteleje

c1 c2 c3 . . . c2 c3 c4 . . .

matyt, gautu, kad ju yra madaug 0 nuo viso stulpeliu skaiiaus. T pati rezultat gautu ir i lenteles

c1 c2 c3 . . . c3 c4 c5 . . .

14. KLASIKINE KRIPTOGRAFIJA O tai skaiiuodamas vienodu raidiu stulpeliu dali lenteleje

225

c1 c2 c3 . . . , c4 c5 c6 . . .
jis turetu gauti reikm, artim skaiiui t . Tada jis galetu padaryti ivad, kad rakto ilgis yra tikriausiai lygus 3. Ibandykime kappa test. Prisiminkime, kaip sekmingai pavyko ispeti rakto ilgi, naudojantis Kassiskio testu. Dabar tam paiam ifrui analizuoti pasinaudokime Friedmano metodu: sugretinkime pradini ifr ir io ifro dali, gaut atmetus pirmuosius d simboliu (d = 1, 2, . . .) ir apskaiiuokime, koki dali sudaro vienodu raidiu stulpeliai. Suapvalin iki tukstantuju, gausime tokius skaiius: Poslinkiai d = Sutapimai 1 0,032 2 0,029 3 0,04 4 0,033 5 0,055 6 0,026 7 0,022

Taigi ir kappa testas rodo, kad rakto ilgis turetu buti lygus 5. Naudojantis sutapimu indeksais, netgi galima ivesti apytiksl Vigenere ifro rakto ilgio formul. Tarkime, pavyko sugauti N ilgio inoma kalba parayto teksto ifr

C = c1 c2 . . . cN .
inome sutapimu indeksus 0 , t . Taiau ifro raidiu daniu lentele skiriasi nuo neifruoto teksto. Kaip surasti ifro sutapimu indeks c , t. y. tikimyb, kad, atsitiktinai i ifro rinkdami dvi raides, gausime vienodas? i dydi suskaiiuosime dviem budais: naudodamiesi gautuoju ifru ir tikimybiniais samprotavimais. Tegu simboliai a1 , . . . , an pasikartoja ifre atitinkamai m1 , . . . , mn kartu. Isivaizduokime, kad atsitiktinai pasirenkame du gauto ifro simbolius. Tikimyb, kad gausime du vienodus, galime skaiiuoti taip:

1 c = 2 CN

n 2 Cmi . i=1

Dabar padarykime prielaid, kad ifravimui panaudotas d ilgio raktas. Suskaidysime ifr i d fragmentu:

c1 c1+d c1+2d . . . c2 c2+d c2+2d . . . . . . . . . . . . . . . . cd c2d c3d ...

226

KODAI IR IFRAI

Tarsime, kad N yra pakankamai didelis skaiius, tad kiekviename fragmente yra N/d simboliu. Kiekvienas fragmentas  Cezario ifras, tad galime manyti, kad tikimybe, jog du simboliai, parinkti i to paties segmento, sutampa, lygi atviro teksto sutapimu indeksui t . Dabar isivaizduokime, kad atsitiktinai pasirenkame x, y  du gauto ifro simbolius. Skaiiuosime tikimyb, kad jie sutampa. I pradiu paymekime ivykius:

A = {pasirinkti simboliai x, y yra i to paties segmento}, Ac = {pasirinkti simboliai x, y yra i skirtingu segmentu}.
Pasinaudokime pilnos tikimybes formule

P (x = y) = P (x = y|A)P (A) + P (x = y|Ac )P (Ac ).


ioje lygybeje imsime:

P (x = y|A) = t ,

P (x = y|Ac ) = 0

ir suskaiiuosime beslygines tikimybes:

P (A) = P (Ac ) =

1 N N 1 , 2 2 d CN 1 N (N N/d) . 2 2 CN

Kadangi P (x = y) = c , tai gausime formul

c =

1 N N 1 N (N N/d) 1 t + 2 0 . 2 2 d 2 CN CN

I ios lygybes jau galime surasti apytiksl formul rakto ilgiui:

N (t 0 ) . c (N 1) + t N 0

14.6. Nauji laikai  nauji iukiai


Su juoduju kambariu  Europos absoliutiniu monarchiju kriptografu tarnybu laikais baigesi ir popieriaus ir pietuko ifru epocha. Mechanizmai keite ranku darb, o kartais ir galvos. Kokie tie pirmieji mechaniniai ifravimo prietaisai? Kokie nauji iukiai kriptograjai?

inome, koki keli nuejo skaiiavimo technikos kurejai: nuo skaitytuvo (abako) iki kompiuterio. Kriptograjos istorijoje irgi galime nubreti toki keli: nuo pirmojo ifravimui skirto irenginio (skytales) iki to paties kompiuterio. Garbing viet skaiiavimo technikos istorijoje usitarnavo mechaniniu prietaisu  aritmometru  kurejai: Pascalis, Leibnizas, Babbage'as ir kiti

14. KLASIKINE KRIPTOGRAFIJA

227

iradejai. Kriptograjoje irgi buta mechaniniu prietaisu, nors ir gerokai menkiau inomu. Po spartieiu ju skytales tikriausiai niekas nenaudojo, Alberti skrituliai taip ir liko iradimu popieriuje... Visai nebloga ideja, kaip mechanizuoti ifravim ir deifravim XVIII amiaus pabaigoje kilo Thomui Jeersonui. Jis buvo treiasis JAV prezidentas, o pirmojo prezidento  George'o Washingtono metais  valstybes sekretorius, taigi rupinosi usienio politika. Galbut todel jis ir susimste apie ifrus. Jeersono prietais sudaro trisdeimt ei siauri vienodo skersmens ritiniai, sumauti ant aies, apie kuri kiekvienas ju gali sukiotis. Ant kiekvieno ritinio oninio paviriaus suraytos abeceles raides  vis kita tvarka. Taigi galime sakyti, kad ant kiekvieno ritinio surayta vis kita abecele. Ritinius galima numauti nuo aies ir perstatyti kitaip. Kai visi ritiniai sumauti ant aies, susidaro 36 raidiu eilutes. ifruojama taip: paymekime vien eilut (eilutei ksuoti galima pritaisyti liniuot) ir, sukiodami ritinius, surinkime ioje eiluteje 36 (ar maiau) raidiu tekst. Visose kitose eilutese irgi susidarys tekstai  tai ifrai. Galime pasiusti bet kuri i ju. Gavejas, noredamas iifruoti ifr, privalo tureti lygiai tokius pat ritinius, suvertus ant aies tokia pat tvarka. Surinks ksuotoje eiluteje ifro raides jis periures kitas eilutes. Vienoje i ju jis perskaitys musu pasiust ini. is ifravimo prietaisas vadinamas Jeersono ritiniu. Svarbu, kad siuntejas ir gavejas naudotusi juo, sumov ant aies siauruosius ritinius su abecelemis ta paia tvarka. Taigi ios ifravimo sistemos raktas yra ritiniu idestymo tvarka. I viso yra 36! skirtingu idestymu. Taigi raktu yra labai daug. inoma, ritiniu skaiius gali buti kitas. Galimos ir kitokios ifro sudarymo taisykles. Pavyzdiui, pus ifro galima perskaityti i vienos, kit pus  i kitos eilutes. is irenginys buvo ne kart irastas pakartotinai. 1891 metais panau prietais sugalvojo iymus prancuzu kriptografas E. Bazeries, XX amiaus pradioje toki prietais naudojo amerikieiai. Tiems laikams tai buvo labai saugus ifras. Taiau juo nesinaudota. Galbut ir todel, kad, rupindamasis sudetingais to meto politikos reikalais, Jeersonas primiro savo iradim. Panaiais ifravimo irenginiais naudojosi karinis JAV laivynas ir vyriausybe antrajame XX amiaus deimtmetyje. Taiau ne todel, kad buvo prisimintas Jeersono ritinys. Jis tiesiog buvo i naujo irastas! Taiau tikrasis kriptograjos prietaisu poreikis atsirado tada, kai Samuelis Morse 1844 metais pasiunte pasauliui praneim apie naujos ryiu epochos pradi. inoma, nei jis, nei kiti nemane, kad prasidejo kakas nepaprasta. Samuelis Morse tiesiog irado telegraf. Telegrafas pakeite visas moniu tarpusavio bendravimo per nuotoli aplinkybes. Juk svetimo laiko skaitymas greiiau iimtis negu taisykle, o ini perduoti telegrafu be paaliniu moniu pagalbos beveik neimanoma. Taigi informacijos slaptumo klausimas tapo svarbus ne vien diplomatams ir karikiams.

228

KODAI IR IFRAI

Pasikeitusi padetis kele naujus udavinius kriptograjai. Vienas i kriptograjos naujos raidos enklu  vel susidometa ifrais. Tiesa, ifrais visada dometasi. Taiau jais dometasi daugiau teorikai, o praktikoje vyravo kodai. Sudaryti ger kod  specialisto darbas, o imokyti juo naudotis galima bet koki eilini diplomatu atstovybes sekretoriu. Tereikia iteikti jam kodu knyg ir paaikinti, kaip j vartyti. Kas kita ifrai. ifruojant ir deifruojant reikia atidiai atlikti algoritmo ingsnius, o vienintele perdavimo arba ifravimo klaida kartais gali vis ifr paversti neiifruojamu. Taiau telegrafo laikais ifru pranaumai su kaupu kompensuoja visus nepatogumus. Svarbiausias dalykas, kad ifro rakt pakeisti yra labai lengva, o pakeisti kod  anaiptol. Juk tektu perrayti itis knyg, o ivykiai juk nelaukia. Kokiu gi ifru reikia telegrafo epochai, kai didele dalis svarbiu praneimu keliauja ne vokuose, ne ant brangaus popieriaus su vandens enklais, bet, pavirt takais ir brukneliais, iveikia didiulius atstumus ir pasiekia adresat mechaninio prietaiso atspausdinti ant siauros popieriaus juosteles? Pirmasis tai labai aikiai suvoke ir suformulavo Augustas Kerckhoas. Jis gime 1835 metais Olandijoje, buvo senos ir ymios gimines atala, todel, matyt, ir visas jo vardas yra itin ilgas: Jean-Guillaume-Hubert-Victor-FrancoisAlexandre-Auguste Kerckhos von Nieuwenhof. Jis buvo labai isilavins mogus: Lieo universitete igijo net du mokslo laipsnius  i kalbu ir tiksliuju mokslu, deste ivairius dalykus, moke kalbu ir rae knygas  daugiausia lologijos. Kriptograjai svarbus Kerckhoo veikalas La cryptographie militaire 9 buvo ispausdintas 1883 metais karo mokslams skirtame urnale, o veliau ileistas atskira knygele. Kerckhoas pabreia, kad veikianioje armijoje atsirado butinybe palaikyti nuolatini ifruot ryi. I to iplaukia nauji reikalavimai naudojamoms ifravimo sistemoms. Kerckhoas suformuluoja eias slygas. Pirma, jeigu ifravimo sistema gali buti iveikta, tai tik matematikai (le systme doit tre matriellement, sinon mathmatiquement, indchirable). Taigi ifruota informacija negali buti atskleista taip kaip i deliones daleliu sudedamas paveikslas, t. y. sistem galima iveikti tik atskleidus jos matematinius pagrindus. Antra, sistema turi buti tokia, kad net j turedamas prieininkas negaletu jos iveikti (il faut qu'il n'exige pas le secret, et qu'il puisse sans inconvnient tomber entre les mains de l'ennemi). Treia, sistemos raktas turi buti isimenamas ir perduodamas jo neuraius, jis turi buti keiiamas (la clef doit pouvoir en tre communique et retenue sans le secours de notes crites, et tre change et modie au gr des corre9 Auguste Kerckhos. La cryptographie militaire. Journal des sciences militaires, vol. IX, Jan. 1883, p. 583, Feb. 1883, p. 161191.

14. KLASIKINE KRIPTOGRAFIJA

229

spondants).

applicable la correspondance tlgraphique). Penkta, ifravimo sistema turi buti neiojama ir naudojimuisi ja nereiktu daugelio moniu (il faut qu'il soit portatif, et que son maniement ou son fonctionnement n'exige pas le concours de plusieurs personnes). eta, sistema turi buti paprasta naudotis: neturi buti reikalinga nei proto itampa, nei ilga taisykliu seka (le systme doit tre d'un usage facile ne demandant ni tension d'esprit, ni la connaissance d'une longue srie de rgles observer). Jeigu ir reiktu k pakeisti pritaikant i kriptograjos kodeks musu laikams  tai vietoj telegrafo mineti elektronini ryi. Taiau kriptograja Kerckhoo laikais vis dar buvo kudikystes amiuje. Pats A. Kerckhoas savo straipsnyje rao, kad ji stebina mokyti mones, siulantys ifravimo sistemas, kurias iveikti galima per pusvalandi. Kad kriptograjos reikme butu suvokta, reikejo sunkiu ibandymu. Butinyb kuo greiiau subrsti atskleide Pirmasis pasaulinis karas.

Ketvirta, sistema turi buti pritaikyta telegrafo ryiui (il faut qu'il soit

14.7. Rotoriai ir Enigma


Enigma  itaip vokieiai vadino ifravimo irenginius, kuriuos jie naudojo Antrojo pasaulinio karo muiuose. Enigma  tai muis, kuri laimejo britu matematikai, dirbdami tyliuose Bletchley Park kambariuose...

Telegrafu ir radijo ryiu Pirmajame pasauliniame kare pradeta naudotis neturint beveik jokios patirties kriptograjos ir kriptoanalizes srityse. Tik prancuzai buvo kiek geriau pasiruo. lovinga britu naujuju laiku kriptograjos istorija prasidejo tiesiog prie vieno stalo su vokieiu ifru usnimi, u kurio susedo keli karo laivininkystes koledo destytojai, tikedamiesi k nors i tos usnies irausti. Kriptoanalitiku darbas niekada nebuvo toks svarbus kaip io karo metu. Utenka pamineti vien Zimmermano telegramos atveji: britams iifravus vokieiu karo ministro telegram pasiuntiniui Meksikoje, vis dar delss JAV prezidentas W. Wilsonas apsisprende del JAV dalyvavimo kare. Taiau karas baigesi ir demesys kriptograjai (o taip pat ir pinigai) sumenko. Talentingas amerikieiu ininierius Gilbertas Vernamas truputi pavelavo. 1918 metais Vaingtone jis pateike paraik naujo ifravimo-deifravimo prietaiso patentui gauti. Jo ideja apie telegrafu perduodamos informacijos ifravim buvo puiki. Tuomet perdavimui buvo naudojamas Baudot'o kodas. Naudojantis iuo kodu, kiekvienai raidei perduoti telegrafu reikia penkiu trumpu laiko intervalu. Per kiekvien interval irenginys arba pasiunia elektros impuls, arba ne. Impulso perdavim galime paymeti vienetu, o jo nebuvim nuliu. Tada kiekviena raide bus koduojama vienetu ir nuliu gretiniu,

230

KODAI IR IFRAI

kuris sudarytas i penkiu simboliu. Gavejo irenginys pagal iuos perduodamus nuliu-vienetu penketus turi atkurti perduodamas abeceles raides. Tarkime, telegrafu reikia perduoti vien raid, t. y. tam tikr nuliuvienetu penket, pavyzdiui, 01001. Vernamui kilo mintis: sudarykime elektrin grandin, kuri sudetu jai perduodamas vienodo ilgio nuliu-vienetu eilutes panariui, naudodamasi tokia sudeties lentele:

0 0 = 0;

0 1 = 1;

1 0 = 1;

1 1 = 0.

Jeigu tokiai grandinei perduosime eilutes m = 01001 ir k = 11011, tai grandine sukurs eilut c = 10010. Jeigu m yra praneimas, kuri reikia perduoti, tai c yra ifras, gautas panaudojus rakt k. Kaip gavejas gali iifruoti gaut ifr c? Jeigu jo irenginyje bus tokia pati sudeties grandine, tai, iveds i j eilutes c ir k, gaus m. Taigi ifruojama ir deifruojama visikai vienodai ir iuos veiksmus gali atlikti pats irenginys. Tiesa, jeigu reikia perduoti ilg praneim, tai ir rakto reikia ilgo. Taigi G. Vernamas pasiule ifravimui naudoti operacij, kuri matematikai vadina sudetimi moduliu 2, o informatikai  XOR operacija. i operacij naudojome nagrinedami klaidas taisanius kodus. iuolaikinese kriptosistemose ji sutinkama kone kiekvianame ingsnyje. Vernamo irenginys galejo padaryti perversm ryiu technikoje. Taiau taip neivyko. Viena vertus, vyriausybes galvojo, kaip baigti kariauti, o ne i naujo pradeti. Kita vertus, komercines istaigos buvo ipratusios naudotis kodu knygomis ir nepirko naujojo irenginio. Svarbiausia ios puikios idejos komercines nesekmes prieastis ta, kad ji atsirado anksiau, nei subrendo nauji saugaus ryio reikalavimai. Kriptograniu prietaisu raida pasuko ne Vernamo nurodyta kryptimi. Pasirode kakas panaaus i Jeersono ritinius, suvertus ant vienos aies. Isivaizduokime disk, padaryt i kietos elektrai nelaidios mediagos, kurio abiejose pusese ratu pagal krat idestyti kontaktai. Kontaktu abiejose pusese yra tiek, kiek raidiu abeceleje (lotynikoje abeceleje 26). Taigi abiejose pusese kiekviena abeceles raide turi po kontakt. ie kontaktai tarpusavyje poromis sujungti laidais. Pavyzdiui, raides A kontaktas gali buti sujungtas su raides C kontaktu, raides B  su L ir t. t. is ritinys ir yra pagrindine naujuju kriptograjos prietaisu detale. Jis vadinamas rotoriumi, jau pats vardas rodo, kad ifravimo sistemoje didele reikme teikiama io ritinio posukiams apie pervert ai. Panagrinekime rotoriu panaudojimo ifravimui idej, kuri kone vienu metu patentavo amerikietis Edwardas Hughas Hebernas, olandas Alexanderis Kochas, vedas Arvidas Gerhardas Dammas ir vokietis Arthuras Scherbiusas.

14. KLASIKINE KRIPTOGRAFIJA

231

ifravimo irenginio, naudojanio rotorius, veikimo principas. Tikrieji irenginiai, inoma, buvo sudetingesni. Pavyzdiui, impulsas, praejs elektros grandine nuo pirmojo iki paskutiniojo rotoriaus kontaktu, atsispindejs gridavo jau kita grandine i pirmji rotoriu.

Isivaizduokime, kad prie abieju rotoriaus pusiu kontaktu prijungtos dvi elektromechanines spausdinimo maineles. Jeigu paspausime kairiosios maineles A raides klavi, tai i kairiosios rotoriaus puses A raides kontakt bus perduotas sroves impulsas, kuris laidu pateks i deiniosios rotoriaus puses raides C kontakt, ir deinioji spausdinimo mainele atspausdins raid C (jeigu, inoma, raides A kontaktas sujungtas su raides C kontaktu). Sukonstravome paprast vienu abeceliu keitiniu paremt ifravimo sistem, kuri nera nei nauja, nei saugi. Jeigu be perstojo spaudysime kairiosios spausdinimo maineles raides A klavi, deinioji mainele spausdins CCCCCC..... Dabar patobulinkime irengini. Musu rotoriu patalpinkime tarp dvieju skritulio formos nejudamu plokteliu su tokia pat tvarka kaip ant rotoriaus idestytais kontaktais: kairiosios plokteles kontaktai lieiasi su rotoriaus kairiosios puses kontaktais, deiniosios plokteles  su deiniosios puses. Spausdinimo maineles prijunkime prie atitinkamu plokteliu kontaktu. ifravimo sistema nepasikeite, taiau itaip mes igijome galimyb sukioti musu rotoriu nepriklausomai nuo prijungtu spausdinimo maineliu. Padarykime taip, kad, kiekvien kart paspaudus kairiosios spausdinimo maineles klavi, rotorius pasisuktu per 1/26 apskritimo, tarkime, laikrodio rodykles kryptimi. Paspaudus raides A klavi, antroji spausdinimo mainele atspausdins raid C, rotorius pasisuks, taiau nejudamu plokteliu kontaktai vel liesis su rotoriaus kontaktais, taiau jau kitais, todel antr kart paspaudus raides A klavi, antroji spausdinimo mainele atspausdins nebe C, bet koki nors kit raid! Jeigu vel be perstojo spaudysime kairiosios spausdinimo maineles raides A klavi, tai deinioji mainele spausdins raidiu sek, kuri ims kartotis tik po 26 raides. is irenginys realizuoja ifravimo sistem, panai i t, kuri pasiule Trithemius. Panagrinekime matematin tokios sistemos su vienu rotoriumi struktur. Tarkime, nejudamu plokteliu kontaktams abeceles raides priskirtos eiles tvarka, t. y. jeigu spaudiame raides A klavi, tai impulsas patenka i kairiosios plokteles pirmji kontakt, jeigu B  i antrji ir t. t. Analogikai jeigu impulsas patenka i deiniosios plokteles pirmji kontakt, tai ifr spausdinanti mainele ispausdina A, jeigu i antrji  B ir t. t. Sunumeruokime plokteliu kontaktus eiles tvarka, raides A kontaktui priskirkime 1, raides B

232

KODAI IR IFRAI

 2 ir t. t. Tegu abeceleje yra n raidiu. Tais paiais skaiiais 1, 2, . . . , n sunumeruokime ir kairiuosius bei deiniuosius rotoriaus kontaktus, abiejose pusese numeravimas prasideda nuo tos paios padeties. Taiau rotoriaus kontaktai yra poromis sujungti. Sujungimus nurodysime keitiniu

1 2 ... n

. = i1 i2 . . . in
iuo keitiniu nurodoma, kad pirmasis kairiosios puses kontaktas sujungtas su i1 deiniosios puses kontaktu ir t. t. Tarkime, plokteliu ir rotoriaus pradine padetis yra tokia, kad kairiosios plokteles pirmasis kontaktas yra ties pirmuoju kairiosios rotoriaus puses kontaktu, rotoriaus deiniosios puses pirmasis kontaktas yra ties pirmuoju deiniosios plokteles kontaktu. Taigi pirmosios plokteles ir rotoriaus kontaktu bei rotoriaus ir antrosios plokteles kontaktu atitikti galime nusakyti tuo paiu trivialiu keitiniu 1 2 ... n . = 1 2 ... n Kairiosios ir deiniosios plokteliu kontaktu atitikti (ifro keitini) galime urayti taip: 0 = = . Pasukime rotoriu per vien pozicij. Dabar kairiosios plokteles ir kairiuju rotoriaus kontaktu bei deiniuju rotoriaus ir deiniosios plokteles kontaktu atitikti uraysime jau kitais keitiniais:

1 2 ... n 1 n , 1 = = 2 3 ... n 1
Savo ruotu ifravimo keitinys bus

2 3 ... n 1 . = 1 2 ... n 1 n

1 = 1 .
Pasuk rotoriu per 2, 3, . . . , m poziciju, gausime plokteliu ir rotoriaus kontaktu atitikties keitinius 2 , 3 , . . . , m ir 2 , 3 , . . . , m . Vadinasi pasuk rotoriu per m poziciju, gauname toki ifro keitini:

m = m m ,

m = 0, 1, 2, . . . , n = .

Taigi visu ingsniu ifravimo keitinius apibreia keitinys ir pradine plokteliu ir rotoriaus kontaktu atitiktis.

14. KLASIKINE KRIPTOGRAFIJA

233

Pavyzdiui, jeigu keturiu raidiu abeceles atveju plokteliu ir rotoriaus kontaktu pradin padeti nusako vienetinis keitinys , tai su rotoriaus kontaktu poru keitiniu gausime tokius keturiu ingsniu ifravimo keitinius:

= 0

1 = 4 1 = 3

2 3 4 1 , 1 = 2 1 3 1 1 2 3 4 , 3 = 1 2 4 4

2 3 4 , 4 2 3 2 3 4 . 1 3 2

Patobulinkime irengini dar kart. Imkime kit rotoriu (kairiosios ir deiniosios pusiu kontaktai sujungti poromis, taiau kokia nors kita tvarka) ir umaukime ant aies. Tegu abu rotoriai lieiasi savo kontaktais: pirmojo rotoriaus deiniosios puses kontaktai lieia antrojo rotoriaus kairiosios puses kontaktus, taigi pirmojo rotoriaus kairiosios puses kontaktai lieia kairiosios nejudanios plokteles kontaktus, o antrojo rotoriaus deiniosios puses kontaktai  deiniosios plokteles kontaktus. Spausdinimo maineles lieka sujungtos su plokteliu kontaktais. Jeigu dabar nuspausime kairiosios spausdinimo maineles raides A klavi, deinioji atspausdins tikriausiai nebe C, bet koki nors kit raid, pavyzdiui, V. Padarykime taip, kad kiekvien kart, kai nuspaudiamas kairiosios maineles klavias, antrasis rotorius pasisuka per 1/26 apskritimo laikrodio rodykles kryptimi, o kai is rotorius po 26 posukiu grita i pradin padeti, per 1/26 apskritimo laikrodio rodykles kryptimi pasisuka pirmasis rotorius. Tada vel sukiojasi antrasis rotorius, o pirmasis vel pajuda tik po 26 antrojo rotoriaus posukiu. Panaiai juda elektros, vandens ar duju apskaitos skaitikliu ritineliai su skaitmenimis. Jeigu nuolat spaudysime kairiosios maineles raides A klavi, po keliu simboliu deiniosios maineles spausdinama raidiu seka ims kartotis? Po 26 26 = 676 simboliu. O jeigu panaudosime ne du, bet tris rotorius? Tada po 676 26 = 17576 simboliu. Net ir pasitelkus matematinius metodus bei kompiuterius, analizuoti toki ifr nera lengva. Taigi rotoriu sistema itin paprastai realizuoja ifrus su daug abeceliu. ifras priklauso nuo pradines rotoriu tarpusavio padeties, kuri galima keisti. itaip galima pasiekti, kad ifras priklausytu nuo rakto. Matematikai ifravim su rotoriais galime aprayti taip. Tarkime, turime tris rotorius ir kiekvieno rotoriaus kontaktai sunumeruoti tokia tvarka kaip nagrinetu atveju, sujungtas kontaktu poras nusako keitiniai 1 , 2 , 3 . Be to, tarkime, kad pradineje padetyje visu besilieianiu kontaktu numeriai tie patys, t. y. kairiosios plokteles pirmji kontakt lieia pirmojo rotoriaus kairiosios puses pirmasis kontaktas, jo deiniosios puses pirmji kontakt lieia antrojo rotoriaus kairiosios puses pirmasis kontaktas ir t.t. Koks ifravimo keitinys bus m-ajame ingsnyje, jei m < n3 ? Ireikkime m n-aineje

234 skaiiavimo sistemoje:

KODAI IR IFRAI

m = m1 + m2 n + m3 n 2 ,

0 mi < n.

Tada kiek pagalvojus galima isitikinti, kad ifravimo abeceles keitinys bus toks: m = m3 3 m3 m2 2 m2 m1 1 m1 . Rotoriu principas panaudotas iymiuosiuose vokieiu ifravimo irenginiuose Enigma . Antrojo pasaulinio karo metu vokieiai naudojo kelis irenginiu variantus su trimis rotoriais, kuriuos buvo galima parinkti i penkiu rotoriu rinkinio. Irenginiai buvo puikus, taiau jie neatlaike lenku ir britu kriptoanalizes ataku. tai tik dvi pavardes i didingos Antrojo pasaulinio karo kriptoanalizes istorijos: Marijanas Rejewskis ir Alanas Turingas. Kodel Enigma pasidave? Ne todel, kad algoritmas buvo nesaugus, bet todel, kad kiekvienos apsaugos sistemos saugumo lygis yra toks pat kaip paios silpniausios jos grandies. Silpnoji Enigmos praktinio naudojimo grandis  butinybe susitarti del raktu (pradiniu rotoriu padeiu) ir vokieiu iprotis tai daryti.

15 Informacijos teorija ir kriptosistemos


Itisus imtmeius kriptosistemu saugumas vertintas pasikliaujant tik subjektyvia ios srities autoritetu nuomone. inoma, patyrusiu kriptoanalitiku nuomone ir dabar yra svarbus argumentas. Kriptograjoje ir iandien ne visk galima objektyviai pasverti ir ivertinti. Taiau daug k galima. Kokie gi tie moksliniai kriptosistemu saugumo vertinimo kriterijai?

15.1. Shannono modelis


C. Shannonas  informacijos teorijos pradininkas  yra ir teorinio kriptosistemu vertinimo pagrindu kurejas. Panagrinekime jo sukurt modeli.

Pirmasis teorini kriptosistemu vertinimo pagrind pabande pateikti C. Shannonas. Jis pasinaudojo savo paties sukurtos informacijos teorijos svokomis. Informacijos teorijoje nagrinejamos patikimo ryio nepatikimais kanalais galimybes. Kada i ikraipytos perdavimo kanale informacijos galima atkurti siustj? ifravim irgi galima interpretuoti kaip pradines informacijos ikraipym. Kada i ifro (ikraipytos informacijos) galima atkurti pradin, o taip pat  ifravimui naudot rakt? Kitaip tariant  kaip galima kiekybikai vertinti kriptosistemos atsparum pavieniu ifru ataku atvilgiu? Panagrinekime kriptosistema apsaugoto A ir B ryio modeli, kuri naudojo C. Shannonas. Apsiribosime simetrinemis kriptosistemomis M, K, C ; tarsime, kad ifravimui ir deifravimui naudojamas raktas yra tas pats: Ke = Kd = K.

15. INFORMACIJOS TEORIJA IR KRIPTOSISTEMOS Iankstines inios: Z Patikslintos inios:


T

235

P (M ), P (C), P (K)
Tekstai A

P (M |C), P (K|C)
E M = d(C|K)

E C = e(M |K)

KT Raktai

C. Shannono ifruoto ryio modelis. Kriptosistema tuo silpnesne, kuo labiau gautas ifras patikslina kriptoanalitiko iankstines inias apie siuniam tekst ir panaudot rakt.

Tarsime, kad kriptoanalitikui Z visos kriptosistemos komponentes yra gerai inomos: jis ino, kokiai aibei priklauso ifruojami praneimai, i kokios aibes pasirenkami raktai ir kaip veikia ifravimo ir deifravimo algoritmai. Jis taip pat turi neribotas galimybes stebeti ryio kanal bei atlikti skaiiavimus. Isivaizduokime, kad jis laukia pirmojo siuntinio, kuri jis pasiruos isirayti i savo laikmenas. Praneimas, kuris bus uifruotas, jo poiuriu, yra atsitiktinio dydio reikme. ymesime ji taip pat kaip galimu praneimu aib, t. y. M. Kriptoanalitikas taip pat turi tam tikr iankstin informacij, kokie praneimai yra maiau, kokie daugiau tiketini, t. y. jis ino tikimybes

p(M ) = P (M = M ).
Analogikai naudojam rakt irgi galime interpretuoti kaip atsitiktini dydi K, igyjanti reikmes su tikimybemis p(K). Naturalu daryti prielaid, kad dydiai M ir K yra nepriklausomi atsitiktiniai dydiai. ifruot tekst irgi galime suprasti kaip atsitiktini dydi C, su tikimybemis p(C) igyjanti reikmes i galimu ifru aibes; jis vienareikmikai apibreiamas su M, K sryiu

e(M|K) = C.
Taigi tikimybes p(M ), p(K), p(C) yra ta iankstine informacija, kuri turi kriptoanalitikas Z prie sugaudamas pirmji siuniam ifr. Tarkime, kad to ifro C jis galu gale sulauke. Tuomet jis gali patikslinti savo turimas inias apie siuniam praneim, apskaiiuodamas slygines tikimybes

P (M = M |C = C),

M M.

Gali buti, kad reikmes liko tos paios, tada Z i gauto ifro netures jokios naudos! Kriptosistem M, K, C vadinsime beslygikai saugia tada ir tik tada, kai su visomis M ir C reikmemis M, C teisinga lygybe P (M = M |C = C) = P (M = M ).

94 apibreimas.

236

KODAI IR IFRAI

Pastebekime, kad is apibreimas reikia, kad atsitiktiniai dydiai M, C yra nepriklausomi. Tiesiog i io apibreimo ir slyginiu tikimybiu savybiu iplaukia toks teiginys: Kriptosistema M, K, C yra visikai saugi tada ir tik tada, kai su visomis M ir C reikmemis M, C teisinga lygybe

116 teorema.

P (C = C|M = M ) = P (C = C).
Ar egzistuoja visikai saugios sistemos? Prisiminkime amininku neivertint G. Vernamo idej. Tegu B = F2 = {0, 1}  dvejetaine abecele, o praneimu, raktu ir ifru aibes sudarytos i ios abeceles n ilgio odiu:

M = K = C = Bn .
Tegu ifravimo operacija  tiesiog odiu sudetis, kuri naudojome kodavimo teorijoje:

C = e(M |K) = M + K,

d(C|K) = C + K = M.

Jeigu visos rakto reikmes yra vienodai galimos, t. y.

p(K) =

1 , 2n

tai tokia kriptosistema yra visikai saugi. I tikruju, jeigu ifruojamas praneimas yra M, tai ifras C bus gautas tik tuomet, kai bus naudojamas raktas K = M + C, taigi

P (C = C|M = M ) = P (K = M + C) =

1 . 2n

Kita vertus, pasinaudoj pilnosios tikimybes formule, gauname

P (C = C) =
M M

P (M = M )P (C = C|M = M ) P (M = M )P (K = M + C) =
M M

1 2n

P (M = M ) =
M M

1 . 2n

Taigi tokia kriptosistema yra visikai saugi. Tikriausiai pastebejote, kad analogik visikai saugi kriptosistem galime sudaryti imdami vietoj dvejetaines abeceles bet koki baigtini kun Fq . Tokia sistema yra visikai saugi, jeigu raktas naudojamas tik vienam praneimui ifruoti. Panagrinekime atveji, kai ios slygos nesilaikoma. Tarkime, raktas pakeiiamas uifravus du praneimus. Tada kriptoanalitikas gali savo analiz pradeti sulauks dvieju ifru C1 , C2 ir manyti, kad stebi kriptosistem su praneimu, ifru ir raktu aibemis

M = C = B2n ,

K = Bn .

15. INFORMACIJOS TEORIJA IR KRIPTOSISTEMOS

237

Prie gaudamas ifrus kriptoanalitikas galbut mane, kad visu 22n praneimu tikimybes P (M ) yra teigiamos. Koki informacij apie siust praneim M = M1 M2 kriptoanalitikui suteikia ifras C = C1 C2 ? Sudej abu ifrus, gauname

D = C1 + C2 = (M1 + K) + (M2 + K) = M1 + M2 .
Taigi i visu praneimu, kurie galejo buti siusti, aibes kriptoanalitikas gali atmesti visus tuos, kurie neturi ios savybes, t. y. M1 + M2 = D. Tada nelygybe P (M |C) > 0 liks galioti tik 2n visu aibes praneimu! Gavs ifrus kriptoanalitikas gerokai patikslino savo iankstines inias. Deja, sudetingoms praneimu aibems visikai saugios sistemos irgi yra neivengiamai sudetingos. itaip galite interpretuoti i teorem. raktu yra ne maiau, negu praneimu. Irodymas. Paymekime Mi visus galimus praneimus, Cj  visus galimus ifrus, kuriu tikimybes teigiamos,

117 teorema. Jei kriptosistema yra visikai saugi, tai |K| |M|, t. y.

P (Cj |Mi ) = P (C = Cj |M = Mj ),
Jeigu sistema visikai saugi, tai su visais i, j

P (Cj ) = P (C = Cj ).

P (Cj |Mi ) = P (Cj ).


Tarkime, raktu yra maiau negu praneimu. Imkime koki nors praneim Mi ir ifruokime ji visais raktais. Kadangi ifru yra ne maiau negu praneimu, tai ifrai e(Mi |K) nesutaps su visu galimu ifru aibe, t. y. egzistuos ifras Cj , kad e(Mi |K) = Cj . Tai reikia, kad P (Cj |Mi ) = 0. Taiau P (Cj ) > 0. Gavome prietar. Kriptosistema negali buti visikai saugi.

15.2. Kriptosistemos dydiu entropijos


Atsitiktinio dydio entropija  tai neapibretumo, kuri stebetojas jauia laukdamas dydio reikmes, matas. Geras irankis kriptosistemos elementu savybems reikti!

Kriptosistemos saugumas priklauso nuo to, kiek netiesiogines informacijos apie atsitiktini dydi M (ir K) suteikia atsitikinis dydis C. Informacijos kiekiams reikti galime pasinaudoti entropijos svoka. Su kriptosistema kriptoanalitikas sieja tris atsitiktinius dydius M, K, C, o neapibretum ju atvilgiu prie gaudamas ifr ir ji gavs gali reikti naudodamas beslygines ir slygines entropijas

H(M), H(K), H(C), H(M|C), H(K|C).


Jeigu kriptosistema yra visikai saugi, tai praneimas ir ifras yra nepriklausomi atsitiktiniai dydiai. Prisimin entropijos savybes galime visiko saugumo slyg suformuluoti taip:

238

KODAI IR IFRAI

118 teorema. Kriptosistema M, K, C yra visikai saugi tada ir tik tada, kai H(M|C) = H(M). Kriptosistemoje rakto slaptumas yra didesnis negu siuniamu praneimu slaptumas. Madaug tokia yra ios teoremos prasme. 119 teorema. Kriptosistemos elementams M, K, C teisinga lygybe
H(K|C) = H(M|C) + H(K|M, C).

Irodymas. Panaudoj lygyb H(X|Y ) = H(X, Y ) H(Y ) su X = M, Y = C, gausime


H(M|C) = H(M, C) H(C).
Dar kart pasinaudokime ta paia lygybe tik dabar su X = K, Y = M, C :

H(K|M, C) = H(M, K, C) H(M, C), H(M, C) = H(M, K, C) H(K|M, C).

Taigi

H(M|C) = H(M, K, C) H(K|M, C) H(C).


Analogikai gauname

(77)

H(K|C) = H(K, C) H(C) = H(M, K, C) H(M|K, C) H(C).


Pastebej, kad i d(C|K) = M iplaukia H(M|K, C) = 0, paskutinij lygyb galime perrayti taip:

H(K|C) = H(M, K, C) H(C).

(78)

Kad gautume teoremos tvirtinim, belieka pasinaudoti gautuoju sryiu (77) lygybeje:

H(M|C) = H(K|C) H(K|M, C).


Skaiiuoti praktikoje naudojamu kriptosistemu dydiu entropijas yra sudetinga. Panagrinekime aislini" pavyzdi. Ir toks pavyzdys padeda suvokti, kas vyksta sudetingu sistemu atvejais. Pavyzdys. Tarkime urnoje yra baltu, juodu ir raudonu rutuliu. Ju yra atitinkamai b = 5, j = 4, r = 3. Atsitiktinai itraukus rutuli, uraoma pirmoji jo spalvos raide: B, J arba R. Ta raide  tai praneimas. Taiau tas praneimas ifruojamas", t. y. raide keiiama kita. ifravimui naudojami

15. INFORMACIJOS TEORIJA IR KRIPTOSISTEMOS ei keitiniai k1 , k2 , . . . , k6 , kurie parenkami su vienodomis tikimybemis: B J J R B R B J R R J R B J B

239

k1 k2 k3 k4 k5 k6

B B J J R R

Apskaiiuokime entropijas H(M), H(K), H(M|C), H(K|C). Praneimu B, 5 4 3 J, R tikimybes lygios atitinkamai 12 , 12 ir 12 , taigi

H(M) =

12 4 12 3 12 5 log2 + log2 + log2 1.5546. 12 5 12 4 12 3

Nesunku rasti ir rakto entropij;

H(K) = log2 6 2.585.


Kiek daugiau tenka padirbeti skaiiuojant slygines entropijas

H(M|C) =
C

H(M|C = C)P (C = C),

H(K|C) =
C

H(K|C = C)P (C = C).

ifru tikimybes surasti nesunku, pasinaudojus pilnosios tikimybes formule:

P (C = B) = P (C = J) = P (C = R) =

5 2 4 2 3 2 2 1 + + = = . 12 6 12 6 12 6 6 3

Entropijai H(M|C = C) apskaiiuoti reikia tikimybiu P (M = M |C = C). Suraskime, pavyzdiui, P (M = B|C = J):

P (M = B|C = J) = =

P (M = B, C = J) P (M = B)P (C = J|M = B) = P (C = J) P (C = J) 2 P (M = B) 6 = P (M = B). P (C = J)

Kitais atvejais taip pat gautume, kad slygines tikimybes lygios beslyginems: P (M = M |C = C) = P (M = M ). Taigi kriptosistema visikai saugi ir H(M|C) = H(M).

240

KODAI IR IFRAI Taiau slygines raktu tikimybes nelygios beslyginems, pavyzdiui,

P (K = k1 |C = B) =

P (K = k1 , C = B) = P (C = B)

1 6

1 3

5 12

5 . 24

Apskaiiav visas tikimybes ir visas entropijas H(K|C = C), gautume

H(K|C) = 2.5546,

H(K|C) < H(K).

Galima suvokti toki reikini kad ir taip: kriptosistemos rakto entropija buvo pertekline", kriptosistema gali buti visikai saugi ir su maesne rakto entropija. tai iek tiek to pertekliaus ir nubyrejo... O dabar tarkime, kad vienas po kito i urnos traukiami du rutuliai ir pagal ju spalvas sudaromas dvieju raidiu odis. odiui ifruoti naudojamas vienas i eiu raktu. Raktai kaip ir anksiau parenkami su vienodomis tikimybemis. Dabar i viso galimi devyni odiai, o raktu tik ei. Taigi sistema visikai saugi jau nebegali buti. Kadangi rutuliai traukiami be grinimo, tai praneimu tikimybes skaiiuojame taip:

P (M = BB) =

54 20 = , 12 11 132

P (M = BR) =

53 15 = ,... 12 11 132

Praneimo beslygine entropija lygi

H(M) 3.0968.
ifru tikimybes yra dabartiniu atveju tokios:

P (C = BB) = P (C = JJ) = P (C = RR) = P (C = BJ) = . . . = P (C = RR) =


Apskaiiav gautume

47 . 396

19 , 198

H(M|C = BB) = H(M|C = JJ) = H(M|C = RR) 1.433, H(M|C = BJ) = . . . = H(M|C = RJ) 2.5533.

Slygine praneimo entropija dabar yra

H(M|C) = 3H(M|C = BB)P (C = BB)+6H(M|C = BJ)P (C = BJ) 2.2308.


Taigi musu kriptoanalitikas, sugavs ifr, gauna madaug vien bit informacijos apie siuniam uifruot praneim. Kaip jis t bit panaudos  ne musu reikalas.

15. INFORMACIJOS TEORIJA IR KRIPTOSISTEMOS

241

15.3. Rakto iminimo takas


Kuo ilgesnis ifras, tuo daugiau jame netiesiogines informacijos apie ifruot praneim bei naudot rakt. Kokio ilgio ifro utenka, kad pavienio ifro ataka butu imanoma, t. y. kad, naudojantis juo, butu galima nustatyti rakt? Imanoma teorikai, inoma, nereikia, kad praktikai lengva tai padaryti.

Jeigu raktu aibe lieka ta pati, o praneimu aibe dideja, tai kriptosistema darosi vis maiau saugi. Tai pastebejome ir i ankstesniu skyreliu pavyzdiu. Panagrinesime i minti detaliau. Tarkime, siuniami praneimai yra parayti lietuvikos 32 simboliu abeceles A raidemis, o ifravimui naudojama Cezario kriptosistema, kurios raktai renkami su vienodomis tikimybemis. Jeigu ifruojamus praneimus sudaro pavienes raides, tai Cezario kriptosistema yra visikai saugi. Dabar tarkime, kad praneimu aib M2 sudaro dvieju raidiu lietuviki odiai. Gavs ifr c = c1 c2 , kriptoanalitikas gali bandyti visus raktus vien po kito. itaip jis gautu 32 simboliu poras m = d(c1 |ki )d(c2 |ki ). inodamas, kokia kalba buvo paraytas tekstas, jis gali atmesti beprasmes kombinacijas ir gauti praneimu bei raktu, kurie galejo buti panaudoti, aibes. Jeigu praneimu aib MN sudaro N simboliu ilgio tekstai, kur N yra didelis skaiius, tai, sugavs ifr cN ir ibands visus raktus, kriptoanalitikas ko gero gautu tik vien galim prasming tekst d(cN |ki ). Taigi raktas vienareikmikai atkuriamas pagal ifr: K = f (CN ). Taiau tada H(K|CN ) = 0, t. y. kriptosistemos slaptumas inyksta, ji imenama. iame pavyzdyje padareme prielaid, kad kriptoanalitikas gali vertinti tekstus kaip prasmingus ir neprasmingus. Taiau i pavyzdiu mateme, kad kriptosistema silpneja ir tada, kai prasmes faktoriaus nera. Nagrinekime koki nors kriptosistem M, K, C , tegu ifrus sudaro abeceles A pavieniai simboliai. Interpretuodami M, K, C kaip atsitiktinius dydius, galime apibreti ju entropijas H(M), H(K), H(C). Kaip visada, tarsime, kad M, K yra nepriklausomi, o C = e(M|K). Taigi

H(M, K) = H(M) + H(K),


Tada

H(C|M, K) = 0.

H(M, K, C) = H(M, K) + H(C|M, K) = H(M) + H(K).


Panaudoj i sryi lygybeje (78), gausime

H(K|C) = H(M) + H(K) H(C).

(79)

Dabar apibrekime naujas kriptosistemas MN , K, CN , kur praneimu ir ifru aibes yra MN = MN , CN = C N , raktai renkami su tomis paiomis tikimybemis, o ifravimo proceduros apibreiamos taip:

e(m1 m2 . . . mN |K) = e(m1 |K)e(m2 |K) . . . e(mN |K).

242 Tada ioms kriptosistemoms (79) lygybe irgi teisinga:

KODAI IR IFRAI

H(K|CN ) = H(MN ) + H(K) H(CN ).


Jau mateme, kad entropija H(K|CN ) gali maeti augant N.

95 apibreimas.

Jei N yra maiausias skaiius, tenkinantis lygyb

H(MN ) + H(K) H(CN ) = 0,

(80)

tai ji vadinsime rakto iminimo taku. ia apibretas rakto iminimo takas anglikoje literaturoje vadinamas unicity point. Kartais vietoj lygybes reikalaujama, kad reikinys butu ne didesnis u 1. Jeigu H(K|CN ) 1, tai i esmes reikia, kad rakt galima nustatyti naudojantis vien ifru. Taigi rakto iminimo takas  tai trumpiausio ifro, i kurio galima nustatyti rakt, ilgis. i skaiiu turetume rasti i (80) lygybes. Taiau kaip tai padaryti? Pasielkime lyg zikai: negaledami isprsti bendros lygties, suformuluokime sveikam protui priimtinas slygas, kurios palengvina rakto iminimo tako lygties sprendim. Visu pirma tarkime, kad musu praneimus MN generuoja altinis, turintis entropij H. Tada galime manyti, kad dideliems skaiiams N

H(MN ) = N H(M) = N H.
Jei, pavyzdiui, praneimai yra kokios nors kalbos tekstai, tai H yra kalbos entropija, kuri galima suskaiiuoti naudojantis simboliu pasirodymo tikimybiu lentelemis. Toliau, tarkime, kad visi aibes AN elementai turi vienodas galimybes pasirodyti kaip ifrai. Toki savyb mateme nagrinetuose paprastuose pavyzdiuose. Tada

H(CN ) = N log2 |A|.


Pagaliau jei visi raktai renkami su vienodomis tikimybemis, tai

H(K) = log2 |K|.


Su iomis prielaidomis rakto iminimo tako lygti (80) galima isprsti:

N=

log2 |K| . log2 |A| H

Gavome gerokai supaprastintos rakto iminimo lygties sprendini. Jis pateikia praktikai reikaling iverti, rodanti, kada kriptosistemos naudojimas jau tampa nebesaugus. Lygties su nurodytomis slygomis sprendimas duoda tik apytiksl iminimo tako reikm10 , nei tikslus sprendimas, bet tai juk nera didelis trukumas.
10

Tikslios lygtys gali i viso netureti sprendiniu.

15. INFORMACIJOS TEORIJA IR KRIPTOSISTEMOS

243

Rakto iminimo takas nurodo, kokio ilgio ifr reikia tureti, kad butu efektyvi pavienio ifro ataka. Taiau i ataka atliekama vykdant perrank! Taigi praktikai j ivykdyti gali buti labai sudetinga. Panagrinekime konkretu kriptosistemos pavyzdi. Imkime koki nors skaiiu aibes perstat (bijekcij)

k : {1, 2, , . . . , d} {1, 2, , . . . , d}
ir apibrekime toki praneimo M, parayto abeceles A simboliais, ifravimo taisykl jei M = m1 m2 . . . md md+1 md+2 . . . m2d , . . . , tai e(M, k) = mk(1) mk(2) . . . mk(d) md+k(1) md+k(2) . . . md+k(d) . . . Taigi praneimas skaidomas d ilgio odiais ir jie vienas po kito ifruojami. Todel galime manyti, kad teksto abecele i tikruju yra Ad . Tada rakto iminimo tako reikme nurodys, kiek d ilgio ifro odiu reikia raktui iminti. Kadangi raktu skaiius tokioje sistemoje yra lygus d!, tai i rakto iminimo lygties gauname:

N=

log2 d! log2 d! = , d| H d(log2 |A| H) log2 |A d

ia Hd yra teksto, kuri interpretuojame kaip sudaryt i d ilgio odiu, entropija, o H  teksto, sudaryto i pavieniu simboliu, entropija, Hd dH. Lietuvikoje abeceleje yra 32 raides, todel log2 |A| = 5; lietuviku tekstu entropija H 3. Taigi iminimo tako reikme

log2 d! . 2d

Paskaiiav su nedidelemis d reikmemis (N reikme imame maiausi sveikji skaiiu, didesni u reikinio reikm), gautume N = 1, kai d 8, ir N = 2, kai 9 < d 20.

244

KODAI IR IFRAI

16 Blokiniai ifrai
Blokiniais ifrais vadinsime kriptosistemas, kuriu ifravimo algoritmai transformuoja ksuoto ilgio teksto odius (blokus) i tokio pat ilgio ifro odius. Raktas, valdantis ifravimo operacij, irgi paprastai renkamas i ksuoto ilgio odiu aibes. Dvejetaine abecele B = {0, 1} yra pati svarbiausia kriptograjoje, todel tik j ir naudosime.

96 apibreimas. Kriptosistem, kurios tekstu, ifru ir raktu aibes yra sudarytos i ksuoto ilgio odiu: M = C = Bn , K = Bk , vadinsime blokine kriptosistema arba tiesiog  blokiniu ifru.
Taigi blokines kriptosistemos ifravimo ir deifravimo taisykles yra funkcijos, kuriu argumentai  dvejetainiu odiu poros:

e(|), d(|) : {0, 1}n {0, 1}k {0, 1}n .


Turint blokin kriptosistem, reikia nusprsti, kaip ja bus ifruojami ilgi duomenu srautai. Pasirinkti galima ivairiai. Tie budai kriptograjoje vadinami blokiniu ifru naudojimo reimais. Svarbiausius i ju aptarsime kiek veliau. Apskritai blokines kriptosistemos gali buti tiek simetrines, tiek vieojo rakto. Taiau paprastai taip vadinamos simetrines kriptosistemos.

16.1. Dvi schemos


Du svarbus iuolaikiniu blokiniu kriptosistemu projektavimo principai.

Teksto odi galime pakeisti kitu (atlikti keitini), galima sumaiyti jo simbolius (atlikti perstat). Tokios pavienes transformacijos, inoma, nesukurs saugaus ifro. Viena i C. Shannono ideju, kuria remiasi ir musu laiku kriptosistemu kurejai, yra labai paprasta: teksto blokui reikia taikyti toki perstatu ir keitiniu sek, kad kiekvienas gautojo ifro bitas priklausytu nuo kiekvieno teksto ir rakto bito, t. y. pakeitus net vieninteli teksto ar rakto bit, ifro odis labai pasikeistu. itaip sukonstruota daug blokiniu ifru: kol gaunamas ifras, teksto odis praeina kelet ciklu (arba iteraciju), kur jam taikomos perstatos ir keitiniai. Kiekvieno ciklo transformacijas valdo daliniai raktai, gaunami i kriptosistemos rakto pagal tam tikr taisykl. Tokia schema kriptograjoje vadinama keitiniu-perstatu tinklu (Substitution-Permutation Network, (PSN) angl.).

16. BLOKINIAI IFRAI


cccc cccc cccc

245

cccc

cccc

cccc

Keitiniu-perstatu tinklo schema. Danai cikle apdorojamas simboliu blokas skaidomas i maesnius ir keitiniai taikomi pastariesiems. Strukturiniai schemos elementai, kurie skirti keitiniams atlikti, kriptograjoje vadinami S-deemis.

Daugelio geru blokiniu ifru konstrukcijoje taikoma Horsto Feistelio strukturine schema, kuri jis, dirbdamas IBM, panaudojo LUCIFER kriptosistemai. Feistelio strukturos blokiniuose ifruose transformacijos atliekamos su lyginio ilgio duomenu blokais. Tegu M0 = m1 m2 . . . mn mn+1 . . . m2n yra pradinis tekstas. Jo ifras gaunamas po r Feistelio iteraciju, kurias valdo daliniai raktai k1 , k2 , . . . kr :

k1 M = M0 M1

k2 M2 . . . Mr1

kr Mr = C.

Atliekant vien iteracij, blokas Mj dalijamas i dvi vienodo ilgio dalis  kairij ir deinij  ir pertvarkomas taip:

Mi = Li Ri Mi+1 = Li+1 Ri+1 ,

Li+1 = Ri , Ri+1 = Li f (Ri , ki+1 ),

ia ymi bloku sudeti moduliu 2, o f yra funkcija, i dvejetaines abeceles n ilgio odio ir rakto sukurianti nauj n ilgio odi. Naudinga r iteraciju grandin papildyti dar vienu paprastu pertvarkiu: kairiosios ir deiniosios bloku pusiu perstatymu. L0 L1 Lr1 Lr Lr+1
B E fs E E E fs E B E  E E fs E B E !

Paskutinis blokas C = Rr Lr laikomas pradinio bloko M = L0 R0 ifru.

R0

k T1

R1

k T2

Rr1

k Tr

Rr

Rr+1

Taigi visa bloku pertvarkymo grandine atrodo taip:

L1 = R0 , R1 = L0 f (R0 , k1 ) L2 = R1 , R2 = L1 f (R1 , k2 ) ................................... Lr = Rr1 , Rr = Lr1 f (Rr1 , kr ) Lr+1 = Rr , Rr+1 = Lr .

246

KODAI IR IFRAI

Kam gi reikalingas tas paskutinis ingsnis? Tuoj isitikinsime, kad tai gudrus sumanymas. Taigi po visu pertvarkymu gavome pradinio bloko M = L0 R0 ifr C = L0 R0 = Rr Lr . Isivaizduokime, kad t pati pertvarkymu cikl atliekame su C, tik raktus naudojame atvirkia tvarka: kr , kr1 , . . . , k1 . Atlik pirmji ingsni, gausime blok C1 = L1 R1 , ia

L1 = R0 = Lr = Rr1 , R1 = L0 f (R0 , kr ) = Rr f (Rr1 , kr ) = Lr1 f (Rr1 , kr ) f (Rr1 , kr ) = Lr1 .


Taigi C1 = Rr1 Lr1 . Atlik r iteraciju, gautume Cr = R0 L0 , paskutiniame ingsnyje sukeit bloko puses vietomis, gautume M. ifravimo iteraciju seka tinka ir deifravimui  tik raktus reikia naudoti atbuline tvarka. Ir jokiu reikalavimu funkcijai f !

16.2. DES
DES, arba Data Encryption Standard, yra kriptograjos mokslo brandos enklas. Tai pirmoji kriptosistema valstybes institucijos ivertinta ir pripainta ifravimo standartu.

1973 metais JAV vyriausybe nusprende, kad metas standartizuoti informacijos srautu apdorojimo metodus. Uduotis parengti iuos standartus teko Nacionaliniam standartu institutui (NBS  National Bureau of Standards). Vienas i daugelio tikslu, kurie buvo keliami,  parengti duomenu ifravimo standart. Buvo paskelbtas konkursas, bet jo rezultatai ikeltu slygu netenkino. Konkursas buvo pakartotas. Vien i pasiulymu pateike IBM. Siuloma kriptosistema buvo sukurta naudojantis H. Feistelio kriptosistemos LUCIFER idejomis. Svarstymai truko pusantru metu, o konkursas pasibaige IBM pergale. Ju pasiulymas tapo pirmuoju pasaulyje ifravimo standartu DES (Data Encryption Standard, patvirtinta 1976 metais). DES yra Feistelio strukturos blokine kriptosistema, ifruojanti 64 bitu ilgio blokus ir naudojanti 56 bitu ilgio raktus. Jos strukturine schema yra tokia: L0 L1 L15 L16 M EP 
B E fs E E B E fs E E B E Bf E T k16 j B P 1 E C 

R0

k T1

R1

k T2

R15

R16

DES kriptosistemos schema. IP ymi tam tikr pradiniu duomenu perstat, o IP 1  iai perstatai atvirktin.

DES naudoja 16 iteraciju ir 56 bitu ilgio rakt. Formaliai rakto ilgis yra toks pat kaip ir bloku  64 bitai. Taiau atuoni bitai sudarant dalinius

16. BLOKINIAI IFRAI

247

raktus nedalyvauja, jie yra tiesiog kontroliniai. Paskutines iteracijos sudarytas blokas R16 sudaro kairij ifro pus, L16  deinij (prisiminkime aptartj Feistelio schemos pabaig!), perstatos IP ir IP 1 yra ksuotos, t. y. nepriklauso nuo rakto, todel kriptosistemos saugumas nuo ju nepriklauso. Jos itrauktos i schem techniniais sumetimais  noreta, kad duomenys i DES mikroschem butu ikeliami greiiau. Taigi visa esme gludi f deese. Kas gi jose vyksta?
R  32 bitai E

c c E '
k  48 bitai

E(R)  48 bitai

c Bloko suspaudimas 6 6 6 6 6 6 6 6

4 4 4 4 4 4 4 4
P

cccccccc c c

Perstata f (R, k)

Transformaciju, atliekamu DES f -deeje schema.

Pirmas faktas: i i de ivedamas 32 bitu ilgio duomenu blokas ir 48 bitu  dalinis raktas. Pirma operacija skirta duomenu blokui iplesti iki tokio pat ilgio kaip raktas. Tai daroma paprastai  keletas bitu panaudojami du kartus.
32 1 2 3

Pleiamo bloko bitai


4 5 6 7

E E

48 1

c c c c
3 4 5 6

Iplesto bloko bitai

c c c c

9 10 11 12 13

Duomenu ipletimo operacija DES deeje.

Tada ateina laikas pasinaudoti raktu. Iplestas 48 bitu raktas tiesiog sudedamas moduliu 2 su daliniu raktu (XOR operacija) ir gaunamas naujas 48 bitu blokas. Taiau i dees turi ieiti 32 bitai, taigi reikia bloko ilgi sumainti. Tiesiog nubraukti eiolika bitu butu prastas sprendimas. DES kurejai sugalvojo kitaip: 48 bitai paskirstomi po eis ir kiekvienas eetukas eina i savo deut. I kiekvienos deutes ieina tik 4 bitai. itaip gaunamas reikalingo ilgio duomenu blokas. Kiekvienai i atuoniu deuiu DES kurejai sudare 4 16 dydio lentel, kurios elementai  keturiais bitais uraomi naturiniai skaiiai (taigi skaiiai nuo 1 iki 15). Jeigu i deut ieina bitu eetas b1 b2 . . . b6 , tai skaiius e = b1 + 2b6 nurodo lenteles eilutes numeri, o

248

KODAI IR IFRAI

s = b2 + 2b3 + 4b4 + 8b5  stulpelio. Vadinasi, i ios deutes turi buti ivestas skaiius (keturi bitai) uraytas e-ojoje eiluteje ir s-ajame stulpelyje! tai itaip veikia DES. Kam idomu, kaip sudarytos tos lenteles bei kaip i 56 bitu rakto sudaroma 16 daliniu raktu, pavartykite DES apraym. 11 DES buvo naudojamas beveik trisdeimt metu. Ne tik naudojamas, taiau ir nuodugniai tyrinejamas. Konstrukcija pasirode esanti tokia gera, kad i esmes nebuvo rasta praktikai reikmingu saugumo spragu. Ir vis delto  musu dienomis DES nebegalima laikyti saugiu ifru. Kodel? Nes gerokai iaugo kompiuteriu galia. Paprastas raktu perrankos atakas, kurioms nepakako itekliu tuomet, kai DES buvo sukurtas, dabar jau galima vykdyti. Perrankos ataka yra teksto-ifro poru ataka. Jeigu inomas tam tikras kiekis neifruotu tekstu M1 , M2 , . . . , Mr ir juos atitinkaniu ifru C1 = e(M1 |K), C2 = e(M2 |K), . . . , Cr = e(Mr |K), gautu panaudojus neinom rakt K, tai galima bandyti visus galimus raktus ir tikrinti lygybes: d(Ci |K) = Mi , i = 1, 2, . . . , r; K K.
Blogiausiu atveju tektu atlikti madaug 256 tokiu tikrinimu. Tai didiulis skaiius, taiau dabartiniai kompiuteriai irgi labai galingi. Taiau ir su DES dar galima pasiekti tinkam saugumo lygi, tiksliau su 3DES. Skaiius 3 reikia, kad DES taikomas tris kartus:
?

C = e(d(e(M |K1 )|K2 )|K1 ).


Jeigu K1 = K2 , tai toks ifravimas tolygus DES ifravimui su vienu raktu. Kai K1 = K2 , gauname algoritm, kurio rakto ilgis yra 112 (raktu K1 ir K2 ilgiu suma).

16.3. AES
1997 JAV Nacionalinis standartu ir technologiju institutas (NIST  National Institute of Standards and Technology) paskelbe nauj konkurs garbingojo DES vietai uimti. Atsirado 15 kandidatu. I nal iejo ie: MARS, RC6, Rijndael, Serpent ir Twosh.

O nugalejo Rijndael. ifro pavadinimas Rijndael sudarytas sujungus jo kureju  dvieju belgu kriptografu V. Rijmen ir J. Daemen  pavardiu skiemenis. Ju ifrui ir buvo suteiktas titulas AES (Advanced Encryption Standard). Standartas paskelbtas 2001 metais12 , po 5 metus trukusio vertinimo proceso. Taiau tai nereikia, kad tai vienintelis geras ifras i penkiu nalininku. Kai kurie i ju pagal atskirus kriterijus netgi geresni. Taiau tu kriteriju
FIPS 46-3, Data Encryption Standard (DES).http://csrc.nist.gov/publications/ps/ps463/ps46-3.pdf 12 ADVANCED ENCRYPTION STANDARD (AES). Federal Information Processing Standards Publication 197 November 26, 2001.
11

16. BLOKINIAI IFRAI

249

buvo daug: saugumas, operaciju greitis, diegimo paprastumas, strukturines savybes... I kitu blokiniu ifru AES isiskiria savo strukturos paprastumu bei matematikumu . Prisimin DES dees, negaletume paaikinti, kokiais matematiniais desniais remtasi jas sudarant. O tai visos AES transformacijos labai paprastai apraomos naudojantis matematiniais objektais. Tai privalumas, o galbut ir trukumas. Juk niekas negali uginyti, kad sudetingiems, bet tiksliai suformuluotiems matematiniams udaviniams gali atsirasti ir elegantiki bei efektyvus sprendimai. Kitaip tariant, naujos matematines AES atakos... Taiau kol kas tai tik svarstymai. Geriau panagrinekime AES struktur. AES kriptosistema atlieka veiksmus su baitais. Kiekvien bait, t. y. atuoniu bitu odi b = b7 b6 b5 b4 b3 b2 b1 b0 , interpretuokime kaip erdves F2,8 [x] daugianari b(x) = b7 x7 + b6 x6 + . . . + b1 x + b0 . Du tokius daugianarius sudej, vel gausime tos paios erdves daugianari. Taigi du baitus galime sudeti; ties sakant, ta sudetis  iprastine odiu sudetis moduliu 2 (XOR operacija) ir tiek. Imkime atunto laipsnio daugianari

f (x) = x8 + x4 + x3 + x + 1
ir apibrekime daugianariu i F2,8 [x] (baitu) sandaug, kaip tai dareme nagrinedami kunu pletinius.

a(x) f b(x) = a(x)b(x) dalybos i f (x) liekana.


Taigi dabar turime du veiksmus su baitais: sudeti ir daugyb. Su iais veiksmais baitu aibe sudaro ied. O dabar gera naujiena  daugianaris f (x) yra neskaidus vir kuno F2 . Tai reikia (vilgtelekite i daugianariams skirt skyreli), kad daugianariu erdve F2,8 [x] su sudeties ir daugybos operacijomis sudaro kun, turinti 28 = 256 elementus. is kunas yra izomorkas kunui F28 . Taigi veiksmus su baitais, kuriuos naudoja AES, galime interpretuoti kaip veiksmus su kuno F28 elementais. DES kriptosistem galima naudoti su ksuotu duomenu bloko ir rakto ilgiu. AES yra iuo poiuriu kiek lankstesne: galima naudoti kelis kriptosistemos variantus su skirtingais rakto ilgiais ir skirtingu iteraciju skaiiumi. Kriptosistemos kurejai taip pat numate galimyb naudoti ir ivairius duomenu bloko ilgius (128, 160, 192, 224 ir 256 bitu), taiau standartizuotas tik variantas su 128 bitu ilgio duomenu blokais. Rakto ilgis AES-128 AES-192 AES-256 128 192 265 Bloko ilgis 128 128 128 Iteraciju skaiius 10 12 14

250

KODAI IR IFRAI

Pradiniu duomenu blokas prie pradedant transformacijas suraomas i lentel.

s00 s01 s02 s03 s10 s11 s12 s13 s20 s21 s22 s23 s30 s31 s32 s33

AES duomenu blokas; lenteles elementai  atuoniu bitu ilgio odiai (baitai).

ifruojant su ia lentele atliekamos keturiu ruiu operacijos: baitu keitimo, eiluiu postumio, stulpeliu maiymo ir sudeties su iteracijos raktu. Deifruojant vykdomos analogikos (bet ne tokios pat) operacijos. Bendra AES-128 algoritmo schema atrodo taip:

k0
E '
SB c

k9
'
SB c

Tekstas

c SR c MC ' c c

k1

c SR c ' c

k10

ifras

AES-128 sudaro 10 vienodos strukturos ingsniu. Kiekvienai operacijai i kriptosistemos bendro rakto sudaromas dalinis raktas. ifravimas prasideda sudeties su pradios raktu veiksmu. Pirmieji devyni ingsniai vienodi  atliekamos baitu keitimo (SB), eiluiu postumio (SR) ir stulpeliu maiymo (MC) operacijos. Paskutiniame ingsnyje stulpeliu maiymo nera.

Baitu keitimo operacija kiekvien lenteles bait pakeiia nauju. Kiekvienas baitas (interpretuojamas kaip kuno F28 elementas) keiiamas atvirktiniu, kuriam dar be to atliekama tam tikra nesudetinga transformacija. Nulinis baitas neturi atvirktinio, todel jis nekeiiamas. Baito b0 b1 b2 b3 b4 b5 b6 b7 keitimo baitu b0 b1 b2 b3 b4 b5 b6 b7 operacij galima urayti matricine forma

16. BLOKINIAI IFRAI taip:

251

b0 1 b1 1 b 1 2 b 1 3 = b 1 4 b 0 5 b6 0 b7 0

0 0 0 1 1 1 1 b0 1 1 0 0 0 1 1 1 b1 1 1 1 0 0 0 1 1 b2 0 1 1 1 0 0 0 1 b3 0 + . 1 1 1 1 0 0 0 b4 0 1 1 1 1 1 0 0 b5 1 0 1 1 1 1 1 0 b6 1 0 0 0 1 1 1 1 1 b7

Baitu keitimo operacijos matricine iraika. Antroji matricos eilute gauta i pirmosios, atlikus jos elementu postumi, analogikai i antrosios eilutes gaunama treioji ir t. t.

Eiluiu postumio operacija yra pati paprasiausia: duomenu eilutes baitai ciklikai perstumiami ir tiek.

s00 s01 s02 s03 s10 s11 s12 s13 s20 s21 s22 s23 s30 s31 s32 s33
Eiluiu postumio operacija
E

s00 s01 s02 s03 s11 s12 s13 s10 s22 s23 s20 s21 s33 s30 s31 s32

Kiek sudetingesne yra stulpeliu maiymo operacija. Ji atliekama su kiekvienu duomenu lenteles stulpeliu. i operacij galima apibreti naudojant daugianariu veiksmus arba matricin lygyb

02 s 0c s1c 01 = s2c 01 03 s3c

s 03 01 01 0c 02 03 01 s1c . 01 02 03 s2c s3c 01 01 02

AES stulpeliu maiymo operacijos matricine iraika. Matricos elementus reikia interpretuoti kaip eioliktaine sistema uraytus baitus. Baitu daugyba atliekama interpretuojant juos kaip kuno F28 elementus.

Paskutine  sudeties su raktu  operacija  tai paprasta matricu su elementais i F28 sudeties operacija. tai ir viskas. Truksta tik daliniu raktu sudarymo i kriptosistemos rakto algoritmo ir galima pradeti programuoti!

252
k0 k4 k8 k12 k1 k5 k9 k13 k2 k6 k10 k14 k3 k7 k11 k15

KODAI IR IFRAI

w0

w1

w2

w3

E g c c Q c Q c c Q c c

w0

w1

w2

w3

w4

w5

w6

w7

Vienas rakto ipletimo algoritmo ciklas. Pradinis AES raktas isaugomas odiuose w0 , w1 , w2 , w3 , o naudojantis jais sukuriami dar keturi odiai

Pradinis AES 128 bitu raktas isaugomas keturiuose 32 bitu odiuose w0 , w1 , w2 , w3 , naudojantis jais, sukuriami dar keturi odiai, naudojantis pastaraisiais  dar keturi... I viso sukuriami 44 odiai wi , i = 0, 1, . . . , 43. Pradinei sudeties su raktu operacijai panaudojami pirmieji keturi odiai, antrajai sudeiai raktas sudaromas i sekaniu odiu ir t. t. Rakto ipletimo schemoje naudojama funkcija g. Ji veikia taip:

g(w) = SB(rot(w)) + Rj ,
ia rot baitu postumio operacija, rot(b0 b1 b2 b3 ) = b1 b2 b3 b0 ; SB  baitu keitimo operacija, apibreta anksiau, o Rj  j -ojo ingsnio konstanta. ios konstantos sudaromos pagal paprast taisykl (baitus dauginame interpretuodami juos kaip F28 elementus):

Rj = rj 000000,

r1 = 01,

rj = 2 rj1 .

Dabar tai jau tikrai viskas apie AES. Kuo vadovavosi ios kriptosistemos kurejai, kodel panaudojo tokias operacijas, o ne kitokias? Tikriausiai ibande ne vien. Pagrindinis kriterijus  kad kriptosistema atlaikytu visas inomas atakas ir, inoma, veiktu greitai. Strukturos paprastumas irgi svarbus kriterijus. Juk sudetingas schemas sudetinga ir analizuoti, vadinasi, sudetinga ir vertinti.

16.4. Penki reimai


Turite ger blokini ifr? Laikas nusprsti, kam ir kaip ji naudoti...

Blokine kriptosistema ifruoja ir deifruoja vien ksuoto ilgio odi:

C = e(M |K), M = d(C|K) M, C {0, 1}n .


Taiau duomenis, kuriuos norime apsaugoti, sudaro daugybe odiu. Kaip taikyti kriptosistem tokiam srautui? Kriptografai ino kelet budu.

Elektronine kodu knyga (ECB, Electronic Codebook)

16. BLOKINIAI IFRAI

253

Tai pats paprasiausias blokines kriptosistemos naudojimo budas. Savo duomenu sraut skaidote i vienodo ilgio odius ir juos vien po kito ifruojate:

M1 M2 . . . C1 C2 . . . ,

Cj = e(Mj |K).

Tekstas

E E

ECB ifravimas
Mi c( |k) Ci = e(Mi |k)

E E

ifras

ECB deifravimas
Ci d( |k) Mi = d(Ci |k)

ifras

Tekstas

Duomenu ifravimas ir deifravimas blokine kriptosistema ECB reimu.

Paprastumas  turbut vienintelis io reimo privalumas. O trukumu daug. Pavyzdiui, vienodi duomenu srauto odiai visada uifruojami vienodai. Jeigu kas nors paalins kelis ifro srauto odius  nepastebesite. ymus kriptografai N. Fergusonas ir B. Shneieris savo knygoje Praktine kriptograja rao taip: minime ji tik todel, kad inotumete, kokio reimo niekada nereikia naudoti.

ifru bloku grandines reimas (CBC, Cipher Block Chaining)


Naudojantis iuo reimu, kiekvieno odio Mi ifras priklauso nuo anksiau ifruotu odiu:

C1 = e(M1 IV |K), Ci = e(Mi Ci1 |K), i 2, M1 = d(C1 K|IV ), Mi = e(Ci |K) Ci1 , i 2.

254

KODAI IR IFRAI

Duomenu ifravimas ir deifravimas blokine kriptosistema CBC reimu.

Pirmajam blokui ifruoti naudojamas odis IV  pradios (kriptografai sako  inicializacijos) vektorius. Taigi ifro gavejas turi inoti ne tik rakt, bet ir inicializacijos vektoriu. Jeigu naudojamasi vienu i iu reimu, tai ifravimo irenginys perskaito vis ifruojam blok, paskui ji ifruoja ir tada pasiunia kanalu arba irao i sudarom ifro fail. Padidinto saugumo reikalavimu atveju gali buti neleidiama perskaityti ir nors trumpam saugoti ifruojam blok. Duomenys turi buti skaitomi bitas po bito, bitai ifruojami ir i karto siuniami i kanal. Tokiam atvejui, pavyzdiui, tinka

ifro atgalinio ryio reimas (CFB, Cipher Feedback)


Naudojantis iuo reimu duomenu srautas gali buti ifruojamas blokeliais po s, 1 s n, bitu, ia n yra naudojamo blokinio ifro bloko ilgis. Duomenys ifruojami sudedant moduliu 2 (kitaip tariant, atliekant XOR operacij) s ilgio duomenu blokelius su tokio pat ilgio blokeliais, kuriuos generuoja kriptosistema. Darbo pradiai taip pat reikalingas inicializacijos vektorius.

16. BLOKINIAI IFRAI

255

Duomenu ifravimas ir deifravimas blokine kriptosistema CFB reimu.

Pirmajame ingsnyje blokine kriptosistema ifruoja inicializacijos vektoriu. Gautojo ifro s bitu panaudojama XOR operacijai, kiti atmetami. Tada pradinis inicializacijos vektorius pakeiiamas: pirmieji jo s bitu atmetami, o prie sutrumpinto vektoriaus prijungiama s gautojo ifro bitu. Galima isivaizduoti, kad ifro bitai istumia pirmuosius s inicializacijos vektoriaus bitu. Analogikai inicializacijos bitai keiiami ir kituose ingsniuose. Deifruojama lygiai taip pat kaip ifruojama. Tai net paprasiau negu Feistelio ifre  net raktu tvarkos nereikia keisti. Panaus i i reim yra

Srauto atgalinio ryio reimas (OFB, Output Feedback)


Esminis skirtumas tik tas, kad srautas, kuris sudaromas XOR operacijai su ifruojamais duomenimis, generuoja pats save, taigi ifras nebenaudojamas.

256

KODAI IR IFRAI

Duomenu ifravimas ir deifravimas blokine kriptosistema OFB reimu.

Vienas io reimo privalumu  bitu sraut, kuris naudojamas XOR operacijoje su duomenu srautu, galima generuoti i anksto, t. y. neturint nei duomenu, nei ifro.

Skaitliuko reimas (CTR, Counter)


ios paprastos schemos esme tokia: blokinis ifras naudojamas blokams, kuriuos generuoja koks nors atskiras irenginys (skaitiklis), ifruoti. Gautieji ifro odiai naudojami XOR operacijai su duomenu srautu.

16. BLOKINIAI IFRAI

257

Duomenu ifravimas ir deifravimas blokine kriptosistema CTR reimu

Reikalaujama, kad skaitiklio generuojami blokai butu skirtingi (inoma, po daugelio ingsniu pasikartojimai neivengiami). Paprasiausias pavyzdys: dvejetaines skaiiu g, g + 1, g + 2, . . . iraikos. ifravimas ir deifravimas ir iame reime yra vienodos operacijos. Taiau reikia, kad ifro gavejas turetu taip pat veikianti skaitikli kaip siuntejo. Skaitytojas, inoma, atkreipe demesi i tai, kad paskutinieji trys reimai priveria blokin kriptosistem veikti kitaip. I tiesu, ie reimai i blokiniu kriptosistemu sukuria srautinius ifrus. Reimu, inoma, yra ir daugiau. Ir jus galite sugalvoti savo reim. ia aptartieji reimai pasirinkti todel, kad jie yra itraukti i ocialu JAV Nacionalinio standartu ir technologiju instituto patvirtint standart13 .

13 Morris Dworkin. Recommendation for BlockCipher Modes of Operation Methods and Techniques. NIST Special Publication 800-38A 2001 Edition.

258

KODAI IR IFRAI

17 Srautiniai ifrai
Blokiniu kriptosistemu kurejai sprendia klausim: kaip transformuoti duomenu sraut, kad gautume ifr? Srautiniu kriptosistemu kurejai atsako i i klausim paiu paprasiausiu budu. Tegu M = m1 m2 . . . dvejetaines abeceles simboliu srautas, generuokime tokio pat ilgio rakto odi K = x1 x2 . . . ir apibrekime M ifr taip:

C = e(M |K) = c1 c2 . . . ,

ci = mi xi , i = 1, 2, . . .

Taigi teksto ifras  tai jo ir rakto srauto XOR operacijos rezultatas. Rakto simboliu srautas tiesiog paslepia teksto simbolius. Deifravimas  ta pati XOR operacija, tik j atlikti reikia su ifro ir rakto srautais:

M = d(C|K) = m1 m2 . . . ,

mi = ci xi , i = 1, 2, . . .

Taiau iuo atsakymu klausimai tik prasideda. Kaip sukurti t rakto sraut K ? Jeigu generuosime rakto sraut visikai atsitiktinai ir naudosime ji tik vien kart, realizuosime Vernamo kriptosistem. Taiau tuomet bus reikalingas saugus kanalas raktui perduoti. Ar gavejas negaletu pats generuoti rakto srauto? Taigi priartejame prie pseudoatsitiktiniu bitu srauto generavimo idejos. Reikia sugalvoti algoritm, kuris i ksuoto ilgio odio k = k1 k2 . . . km sukurtu reikiamo ilgio rakto sraut K :

k1 k2 . . . km = k K = x1 x2 . . .
i sraut galetume naudoti XOR operacijai su teksto simboliu srautu. Rakto srautas jau nebebus sudarytas i atsitiktinai generuotu bitu, taigi ji vadinsime pseudoatsitiktiniu bitu seka. Kuo i seka panaesne i tikrai atsitiktin, tuo geriau. Taigi svarbiausias srautiniu ifru kureju rupestis  kaip generuoti pseudoatsitiktiniu bitu srautus?

17.1. Golombo pseudoatsitiktines sekos


Tikrai atsitiktin bitu sek gautume metydami simetrik monet ir usiraydami rezultatus. Tai idealus, bet nepraktikas budas. Yra daug geresniu. Taiau kaip nusprsti, ar sudarytas bitu srautas yra panaus i atsitiktini?

Tarkime, sugalvojome koki nors bud generuoti nepriklausomu vienodai pasiskirsiusiu atsitiktiniu dydiu X1 , X2 , . . .

1 P (Xi = 0) = P (Xi = 1) = , 2

17. SRAUTINIAI IFRAI reikmes. Naudodamiesi iuo budu, gavome n reikmiu

259

x1 x2 . . . xn ,

xi {0, 1}.

(81)

Gali pasitaikyti taip, kad, atlik tiesiog tobulas dydiu reikmiu generavimo operacijas, mes gausime, pavyzdiui, toki bitu sek: 00011 . . . 11. Ir niekas nepatikes, kad tai nepriklausomu atsitiktiniu dydiu sekos reikmes! Taiau taip ivyks labai retai. Daniausiai gausime sekas, turinias tam tikras tipines savybes. Noredami pagristi, kodel tos savybes yra tipines, turetume formuluoti matematinius teiginius apie atsitiktiniu dydiu tikimybes. Pavyzdiui, viena i tokiu tipiniu savybiu (u jos slypi svarbus tikimybiu teorijos teiginys  didiuju skaiiu desnis) yra tokia: madaug puse (81) sekos elementu yra vienetai, kiti  nuliai. Vien ar kelias tipines atsitiktiniu dydiu reikmiu sekos savybes gali tureti labai taisyklingos sekos. Pavyzdiui, suformuluot savyb tures seka, kuri sudaryta i dvieju vienodo ilgio bloku: 00 . . . 0 ir 11 . . . 1. Todel tiriant, ar bitu seka panai i atsitiktin, reikia pasitelkti daugiau kriteriju. Pavadinkime r nuliu grup, saugom dvieju vienetu, ( t. y. grup 10 . . . 01) 10r 1 bloku, o grup 01 . . . 10, kurioje nuliu apsuptyje yra r vienetu,  01r 0 vienetu bloku. Jeigu sekos pirmieji r nariai lygus nuliui, o po ju seka vienetas, tai toki sek vadinsime 0r 1 bloku; jeigu seka baigiasi r nuliais, toki pabaig vadinsime 10r bloku. Analogikai apibreime 1r 0 ir 01r blokus. Blokus 10r 1, 0r 1, 10r vadinsime tiesiog 0r blokais. Analogikai apibreime 1r blokus. Tarkime, N yra bendras (81) sekos bloku skaiius, t. y.

N = 01 skaiius + 11 skaiius + 02 skaiius + . . .


Tada tipineje sekoje bloku skaiiai tenkintu lygybes:

01 skaiius + 11 skaiius

N , 2

02 skaiius + 12 skaiius

N ir t.t. 22

Jeigu sugretintume (81) su ciklikai pastumta seka

x1 xt

x2

x3

...

xn

xt+1 xt+2 . . . xn+t1

ir suskaiiuotume, kiek yra poziciju su vienodais simboliais ir kiek su skirtingais, tai tipineje sekoje sutapimu ir nesutapimu butu beveik po lygiai. ios trys tipines savybes panaudotos bandant apibudinti bitu sekas, panaias i atsitiktinai generuotas.

97 apibreimas. Tegu x1 x2 . . . xn , xi {0, 1}, yra bitu seka, (1), (0), (0r ), (1r ) yra atitinkamai vienetu, nuliu ir r ilgio bloku skaiiai

260

KODAI IR IFRAI

ioje sekoje, o N  bendras bloku skaiius. Sek vadinsime pseudoatsitiktine Golombo seka, jeigu ji tenkina tokias slygas:

1) |(1) (0)| 1; N N 2) (01 ) + (11 ) , . . . , (0r ) + (1r ) r , . . . ; 2 2 3) dydis


n

C(t) =
i=1

(2xi 1)(2xi+t 1),

t = 0, 1, . . . , n 1, xk+n = xk , k 1

igyja tik dvi reikmes: C(0) = n, C(t) = m (t = 0). Antrojoje slygoje nelygybes turi tenkinti, inoma, tik sekoje egzistuojaniu bloku kiekiai. Be to, dar pageidautina, kad butu (0r ) (1r ). Treioji slyga reikalauja, kad sutapimu ir nesutapimu skaiiu skirtumas butu nedidelis (lygus m). Golombo slygos yra gana grietos. Taiau jeigu seka tenkina grietas slygas, tai j nedrsu vadinti atsitiktine. Golombo slygas tenkinanias sekas galima sukonstruoti. Pavyzdiui, seka

011001000111101
yra pati tikriausia Golombo seka. Bendras bloku skaiius joje N = 8.

17.2. Statistiniai testai


Vertindami bitu sek, sprendiame klausim, ar ji tinka kriptograjos reikmems, ar ne. Hipoteziu tikrinimo terminologija ir metodai  geri irankiai iekant atsakymo.

Dauguma kriteriju (testu), kurie taikomi tiriamai bitu sekai, siekiant nustatyti, ar ji yra panai i tipin nepriklausomu atsitiktiniu dydiu generuot reikmiu sek, naudoja tam tikrus tikimybiu teorijos rezultatus ir i matematines statistikos pasiskolint hipoteziu tikrinimo schem. Trumpai aptarkime io metodo esm. Tarkime, X1 , X2 , . . . , Xn yra tikri nepriklausomi atsitiktiniai dydiai, su vienodomis tikimybemis igyjantys reikmes 0 ir 1. Sudaromas naujas atsitiktinis dydis (paprastai vadinamas tiesiog statistika)

T = T (X1 , X2 , . . . , Xn ),
kurio reikmiu pasiskirstymas paklusta gerai inomiems ir ityrinetiems desniams. Svarbiausi ir daniausiai pasitaikantys i ju  standartinis normalusis desnis N (0, 1) ir 2 (m)  chi-kvadrat desnis su m laisves laipsniu (ia m 1, taigi turime vis desniu eim). Visi ie dydiai yra absoliuiai tolydus, t. y. turi tikimybinius tankius  neneigiamas funkcijas, kuriomis reikiamos su dydiais susijusios tikimybes:

17. SRAUTINIAI IFRAI

261

P (X < u) =

pX (x)dx, pY (x)dx,

P (Y < u) =
0

x2 1 pX (x) = e 2 , 2 x2 1 pY (x) = n/21 xn1 e 2 , x > 0, 2 (n/2)

ia (t) yra speciali funkcija (kai t naturinis skaiius, tai (t) = (t1)!, todel j galima interpretuoti kaip faktorialo tsini). Dydis Y neigyja neigiamu reikmiu, todel P (Y < u) = 0, kai u < 0. Sudarius geras savybes turini statistik T (X1 , X2 , . . . , Xn ), galima konstruoti test, kuri taikant bitu sekai

x = x1 x2 . . . xn ,
priimama viena i dvieju hipoteziu:

(82)

H0 : x yra tipine dydiu X1 , X2 , . . . , Xn generuota seka, H1 : x nera tipine dydiu X1 , X2 , . . . , Xn generuota seka.
Jeigu priimama hipoteze H0 , sakome, kad seka praejo test, t. y. jos panaumas i atsitiktinai generuot sek yra patvirtintas. Sprendimas priimamas apskaiiavus statistikos reikm

t = T (x1 , x2 , . . . , xn ).
Testui taikyti dar reikia pasirinkti nedideli teigiam skaiiu , vadinam reikmingumo lygmeniu, (pavyzdiui, = 0, 01; 0, 005) ir, naudojantis juo, sudaryti reikmiu aib, i kuri patekus t = T (x1 , x2 , . . . , xn ), hipoteze H0 yra atmetama. i sritis matematineje statistikoje vadinama kritine sritimi. Jeigu statistika T pasiskirsiusi pagal standartini normalini desni, tai hipoteze H0 atmetama, jei

|T (x1 , x2 , . . . , xn )| z ,
ia z randamas i lygybes

P (|X| > z ) = ,

X N (0, 1).

Jeigu statistika T pasiskirsiusi pagal chi-kvadrat desni su m laisves laipsniu, tai hipoteze H0 atmetama, jei

T (x1 , x2 , . . . , xn ) zn, , zn, randamas i lygybes P (X > zn, ) = , X 2 (m).

262

KODAI IR IFRAI

tai tokia statistiniu testu ideologija. Reikia pabreti, kad apskritai statistikos T (X1 , X2 , . . . , Xn ) pasiskirstymo desnis i tiesu niekada nesutampa nei su standartiniu normaliuoju, nei su chi-kvadrat desniu. Taiau kai n yra pakankamai didelis skaiius, skirstiniai yra panaus, todel, juos tiesiog sutapatinant, paklaidos neturi praktines reikmes. O dabar liko isiaikinti, kaip konstruoti tas statistikas T, t. y. naujus gerus atsitiktinius dydius i nepriklausomu vienodai pasiskirsiusiu atsitiktiniu dydiu sekos

X1 , X2 , . . . ,

1 Xi {0, 1}, P (Xi = 0) = P (Xi = 1) = . 2

(83)

Statistiniu testu i tiesu yra sugalvota labai ivairiu. Jei prireiks, teks paiekoti jiems skirtu publikaciju14 . O mes aptarkime tik penkis. Tegu N0 yra nuliu skaiius atsitiktiniu dydiu sekos (82) reikmiu aibeje, o N1  vienetu. Tada dydio

Pavieniu bitu testas

T1 =

(N1 N0 )2 n

pasiskirstymo desnis, kai n 10 yra labai artimas desniui 2 (1). Taigi seka praeis i test, jeigu joje vienetu ir nuliu kiekiai bus panaus. Galime sugretinti test su pirmuoju Golombo reikalavimu. Kuris i ju rodo daugiau tolerancijos? Tegu dydiu N0 , N1 reikmes yra tos paios kaip pavieniu bitu teste, o N00 , N01 , N10 , N11 yra atitinkamai bitu bloku 00, 01, 10, 11 kiekiai (82) reikmiu sekoje. Kadangi poros gali tureti vien bendr bit, tai

Bitu poru testas

N00 + N01 + N10 + N11 = n 1.


Apibrekime statistik

T2 =

4 2 2 2 2 2 2 2 N00 + N01 + N10 + N11 N0 + N1 + 1. n1 n

Tikimybiu teorija garantuoja, kad su n 21 statistikos T2 pasiskirstymo desnis artimas desniui 2 (2). Atliekant pavieniu bitu test, skaiiuojami nuliu ir vienetu kiekiai reikmiu sekoje. Kodel nepaskaiiavus, kiek kartu pasikartoja ilgesni odiai? Fiksuokime m (m < n); visu skirtingu odiu aibe yra Fm = {a1 , a2 , . . . , a2m }. 2 n Padalykime (82) reikmiu sek i k = m m ilgio odiu ir, periurej
14

Pokerio testas

Pavyzdiui, NIST rekomendacijos apie statistiniu testu taikym, r. [66].

17. SRAUTINIAI IFRAI

263

juos, nustatykime, kiek kartu pasitaiko odiai a1 , a2 , . . . , a2m . iu odiu pasitaikymo kiekius paymekime N1 , N2 , . . . , N2m . Dabar jau galime sudaryti statistik

2m T3 = k

2m

Ni2 k.
i=1

Jeigu k 5 2m , tai T3 pasiskirstymo desnis artimas 2 (2m 1). Antroji Golombo pseudoatsitiktines sekos apibreimo slyga reikalauja, kad sekoje blokai pasirodytu gana danai. Paymekime Fr bloku 10r 1 skaiiu (82) reikmiu sekoje, o Gr bloku 01r 0 skaiiu. Paymekime

Bloku testas

Ei =

ni+3 2i+2

ir k  didiausi naturini skaiiu, su kuriuo Ek 5. Statistik apibreime taip:


k

T4 =
i=1

(Fi Ei )2 (Gi Ei )2 + Ei Ei

Statistikos T4 pasiskirstymo desnis yra artimas 2 (2k 2). Treioji Golombo slyga kelia griet reikalavim sutampaniu bitu kiekiui, kada lyginame pradin sek su paslinkta. Autokoreliacijos testas taip pat yra reikalavimas sutapimams, taiau ji lengviau ivykdyti. Tegu 1 d [n/2] ir
nd+1

Autokoreliacijos testas

X(d) =
i=1

Xi Xi+d1 .

Dydis Xd yra lygus nesutampaniu bitu skaiiui, kai lyginame atsitiktiniu dydiu (83) reikmiu sek su ja paia, paslinkta per d 1 pozicij i kair (x1 lyginamas su xd ). Jeigu n d 10, tai statistikos

T5 =

2X(d) n + d nd

pasiskirstymo desnis yra artimas standartiniam normaliajam desniui N (0, 1).

17.3. Tiesiniu registru sistemos


Vienas paprasiausiu instrumentu bitu srautams, panaiems i atsitiktinius, generuoti  tiesiniu registru irenginys. Juo naudojamasi ir kodavimo teorijoje, ir kriptograjoje... todel, kad juo paprasta naudotis.

264

KODAI IR IFRAI

Yra daug budu generuoti bitu sekas, kurios tenkintu atsitiktinumo testus. Tikriausiai pats paprasiausias ir geriausiai inagrinetas yra tiesiniu registru metodas. Tarkime, kad sistem sudaro n sujungtu tarpusavyje irenginiu, kuriuos vadinsime registrais ir ymesime R1 , . . . , Rn . Kiekvienas registras gali saugoti vien informacijos bit bei ji perduoti kitam registrui. Kiekvieno registro Ri turini laiko momentu t ymesime xi (t), xi (t) {0, 1}, t = 0, 1, 2, . . . Tegu pradini sistemos buvi nusako vektorius

x(0) = x1 (0), . . . , xn (0) .


Registru sistemos turinio kitim laikui begant nusakysime rekureniosiomis lygybemis.
'

c1 E
E

c2 E

cn1 E
E

cn E R1
E

Rn

E Rn1

R2

Tiesiniu registru sistema. Kiekviename ingsnyje atliekamas registru bitu postumis: pirmojo registro bitu papildomas generuojamas bitu srautas, antrojo registro bitas perraomas i pirmji registr, ..., n-ojo  i n 1ji, o i n-ji registr iraoma registru bitu tiesine kombinacija.

Jei

x(t) = x1 (t), . . . , xn (t)


yra sistemos padetis laiko momentu t, tai sekaniame ingsnyje bus atlikti tokie veiksmai

xi (t) = xi+1 (t),

1 i n 1,

(84) (85)

xn (t + 1) c1 xn (t) + . . . + cn x1 (t) (mod 2),

ia ci {0, 1}, 1 i n. Sakysime, kad cn = 0, nes prieingu atveju registru sistem galetume sutrumpinti. Tokia registru sistema yra technikai lengvai realizuojama: net ir daug registru turintis irenginys yra kompaktikas ir dirba greitai. Registru sistemai veikiant, registru turiniai nuolat keiiasi. Galime isivaizduoti, kad kiekviename ingsnyje odis x(t) (dvejetainis vektorius) yra atvaizduo-

17. SRAUTINIAI IFRAI

265

jamas i odi x(t + 1). Atvaizdi galime urayti naudodami matricas taip: 0 0 . . . 0 cn 1 0 . . . 0 cn1 x(t + 1) = x(t)C, C = 0 1 . . . 0 cn2 . . . .. . . . . . . . . . . . 0 0 . . . 1 c1 i lygybe apibreia tiesini atvaizdi Fn Fn . Kadangi matrica yra neisigimusi, 2 2 tai atvaizdis yra abipus vienareikmis, t. y. bijekcija. Aptar tiesiniu registru sistemos konstrukcij, panagrinekime jos darbo rezultat  pseudoatsitiktin sek

x1 (0), x1 (1), x1 (2), ...

(86)

Elementu sek {yi } (i = 0, 1, . . .) vadinsime periodine, jeigu egzistuoja toks naturalusis skaiius p, kad su visais i 0 teisinga lygybe yi+p = yi . Maiausi naturaluji skaiiu p, su kuriuo visos lygybes teisingos vadinsime sekos periodu. Tiesiniu registru seka gali generuoti tik periodines sekas. Tiesine n registru sistema generuoja periodines sekas, kuriu periodas yra ne didesnis u 2n 1. Irodymas. Jei x(0) (pradine registru sistemos padetis) yra nulinis vektorius, tai teoremos tvirtinimas akivaizdus. Todel toliau sakysime, kad x(0) = 0, . . . , 0 . Pasinaudoj lygybe x(s + 1) = x(s)C t kartu, gausime

98 apibreimas.

120 teorema.

x(t) = x(t 1)C = x(t 2)C 2 = . . . = x(0)C t .


Paymej m = 2n 1, galime tvirtinti, kad vektoriu

x(0), x(0)C, ..., x(0)C m


sekoje butinai bus pasikartojimu, nes i viso yra tik m skirtingu nenuliniu n-maiu vektoriu. Taigi galima rasti tokius s ir t, kad 0 s < s + t m ir

x(0)C s = x(0)C s+t .


Kadangi neisigimusi matrica C s turi atvirktin matric C s , tai

x(t) = x(0)C t = x(0)C s+t C s = x(0).


Dabar su bet kokiu r 0 gausime

x(r + t) = x(0)C r+t = x(0)C t C r = x(t)C r = x(0)C r = x(r).

266

KODAI IR IFRAI

Tai rodo, kad generuojama seka yra periodine, o jos periodas yra ne didesnis u t, t m = 2n 1. Ar visada galima sukonstruoti tiesin n registru sistem, kuri generuotu maksimalaus periodo m = 2n 1 sek? Tiketis teigiamo atsakymo i i klausim leidia kad ir toks pavyzdys. Pavyzdys. Nagrinekime keturiu registru sistem, kurioje

c1 = c4 = 1, c2 = c3 = 0, x(0) = 1, 0, 1, 0 .
Paeiliui skaiiuodami sistemos busenas, gausime: x(1) = 1, 1, 0, 1 , x(2) = 0, 1, 1, 0 , x(3) = 0, 0, 1, 1 ir t. t., kol pasieksime x(15) = x(0) = 1, 0, 1, 0 . Taigi tokia registru sistema generuoja maksimalaus periodo sek. Kokios gi tiesiniu registru sistemos generuoja tokias sekas? Pirmiausia prisiminkime vien svok.

99 apibreimas. n-ojo laipsnio daugianaris f (x) F2 [x] vadinamas primityviuoju, jeigu jis yra neskaidus ir nera jokio daugianario xd + 1 su d < 2n 1 daliklis. Rasti n-ojo laipsnio primityviuosius daugianarius nera paprastas algebros udavinys. Taiau inoma, kad visiems naturaliesiems n jie egzistuoja. 100 apibreimas. Tiesines registru sistemos, nusakytos (85) lygybemis charakteringuoju daugianariu vadinsime daugianari
Pn (x) = 1 + c1 x + . . . + cn xn , cn = 0.
O dabar  atsakymas i suformuluot klausim.

121 teorema. Tiesine registru sistema generuoja maksimalaus periodo sek tada ir tik tada, kai jos charakteringasis daugianaris yra primityvus. Jeigu jau ketiname naudoti tiesiniu registru sistem pseudoatsitiktiniu bitu srautui generuoti, tai verta pasirupinti, kad io srauto periodas butu maksimalus. O kaipgi su atsitiktinumo testais? tai viena tiesiniu registru sistemos generuoto srauto savybe: 122 teorema. Jeigu tiesiniu registru sistema generuoja maksimalaus periodo m sek, tai bet kuri ios sekos m ilgio atkarpa yra Golombo pseudoatsitiktiniu bitu seka. Pasirodo, yra be galo daug ir kiek norima ilgu seku, kurios tenkina grietuosius Golombo reikalavimus! Be to, jas ne taip jau sudetinga ir sukonstruoti. Irodysime, kad maksimalaus periodo tiesiniu registru sistemos generuota seka tenkina pirmsias dvi Golombo slygas. Tai iplauks i tokio teiginio: 123 teorema. Tegu tiesines registru sistemos generuotos sekos periodas yra maksimalus ir lygus m = 2n 1. Tuomet bet kurioje ios sekos m ilgio atkarpoje yra:

17. SRAUTINIAI IFRAI 1. 2n1 1 nuliu ir 2n1 vienetu;

267

2. 2nt2 bloku 10t 1 ir tiek pat bloku 01t 0 kiekvienam t, 1 t n 2. ireikti n-enkliu dvejetainiu skaiiumi, priklausaniu intervalui [1, 2n 1]. Kiekvienas eilinis generuotos sekos elementas bus lygus pirmojo registro turiniui, t. y. io dvejetainio skaiiaus pirmajam skaitmeniui. Kadangi registru sistema generuoja maksimalaus periodo sek, tai ji turi pereiti visas galimas padetis nuo 1 iki 2n 1. Taiau tarp iu skaiiu yra 2n1 1 lyginiu (paskutinis bitas 0) ir 2n1 nelyginiu (paskutinis bitas 1). I ia iplaukia pirmasis teiginys. Kad sekoje pasirodytu t ilgio vienetu blokas, reikia, kad kuriame nors ingsnyje registru sistemos padetis butu 011 . . . 10x1 . . . xnt2 , ia xi {0, 1}. I viso tokiu padeiu yra 2nt2 . Taigi tiek t ilgio vienetu bloku ir bus viename sekos periode. Analogikai randamas ir t ilgio nuliu bloku skaiius. Taigi maksimalaus periodo m ilgio sekoje bendras bloku 10r 1, 01r 0 skaiius yra 2(2n3 + 2n2 + . . . + 1) = 2n1 2. Pridej dvejet (sekos pradios ir pabaigos blokai), gauname, kad bendras bloku skaiius lygus N = 2n1 . Dabar jau nesudetinga isitikinti, kad antroji Golombo slyga yra patenkinta. Paiurekime i (86) sek kriptoanalitiko akimis. Tarkime, kad praneimas yra dvejetaine seka m1 m2 . . . J uifrav, gausime ifr y1 y2 . . . , ia

Irodymas. n registru sistemos padeti kiekviename ingsnyje galima

yi mi + xi (mod 2), i = 1, 2, . . .
inodami mi ir yi , nesunkiai randame xi :

xi mi + yi (mod 2).
Surad bet kuriuos 2n i eiles einanius simbolius xi , galesime sudaryti n tiesiniu lygiu su neinomaisiais c1 , . . . , cn . Jas isprend rasime registru sistemos koecientus ir galesime atkurti vis rakto sraut. Taigi kriptosistem nesudetinga iveikti turint pakankamai ilg teksto ir jo ifro fragment. Ivada. Jeigu vienkartinio rakto kriptosistemoje raktas generuojamas tiesiniu registru sistema, tai pavienes teksto-ifro poros ataka tokia kriptosistema yra iveikiama.

17.4. I paprastu  sudetingesni


Keletas ideju, kaip, jungiant paprastus pseudoatsitiktiniu skaiiu generatorius, galima sukurti sudetingesnes rakto srauto generavimo sistemas.

268

KODAI IR IFRAI

Tiesiniu registru sistemos nera vienintelis budas generuoti pseudoatsitiktines bitu sekas. Taiau tai lengviausiai realizuojamas budas ir todel danai naudojamas. Pagrindinis tokiu sistemu trukumas  generuoto srauto tiesikumas, t. y. tiesine generuoto simbolio priklausomybe nuo ankstesniuju. Vienas i budu panaikinti tiesikum  keliu tiesiniu registru sistemu generatoriu jungimas i sudetingesn sistem.

T SRS1 x c1

T SRS2 x c2 f (x1 , x2 , . . . , xn )
c

T SRSn x cn

Rakto srautas

Keliu tiesiniu registru sistemu lygiagretus jungimas

Rakto srauto bitus generuoja Bulio funkcija f (x1 , x2 , . . . , xn ), j visada galima urayti kaip n kintamuju daugianari. Pavyzdiui, tris tiesiniu registru sistemas jungianiame Gee generatoriuje

f (x1 , x2 , x3 ) = x1 x2 (1 x2 )x3 .
Jeigu Gee schemoje visos sujungtos tiesiniu registru sistemos generuoja maksimalaus periodo sekas, o registru kiekiai sistemose L1 , L2 , L3 yra tarpusavyje pirminiai skaiiai, tai Gee generatorius sukuria sraut, kurio periodas yra (2L1 1)(2L2 1)(2L3 1). (87)
x1 T SRS1

E T c
1+

x2 T SRS2 x3 T SRS3

c c

T Rakto srautas

Gee generatorius

Taiau ioje schemoje yra vienas plika akimi nematomas trukumas, kuris gali palengvinti tokios schemos kriptoanaliz. Tarkime, turime pakankamai ilg Gee generatoriaus sukurt rakto srauto fragment ir galime naudotis paiu generatoriumi. Tikslas  suinoti, kokie buvo registru turiniai, kai buvo sudaromas rakto srautas, kurio fragment pavyko gauti. Suinoj i viso L1 + L2 + L3 bitu, galetume patys generuoti kokio tik reikia ilgio rakto sraut ir deifruoti su juo gaut ifr. Galima butu tiesiog bandyti visus variantus: upildius registrus, generuoti raktu sraut ir lyginti ji su jau turimu. I viso blogiausiu atveju tektu atlikti (87)

17. SRAUTINIAI IFRAI

269

tikrinimu. Taiau kiekvien i triju sistemu, pasirodo, galima luktenti skyrium. Paymekime x1 (t), x2 (t), x3 (t) registru sistemu generuotus bitus t ingsnyje, o k(t)  i ju gaut rakto srauto bit. Tarkime, kad visos trys sistemos generuoja pakankamai atsitiktinumo savybiu turinius srautus, pavyzdiui, tarkime, kad xi (t) ir xj (t) kai, i = j, yra nepriklausomi ir

1 P (xi (t) = 0) = P (xi (t) = 1) = . 2 Nesunku isitikinti, kad 1 1 1 3 P (k(t) = x1 (t)) = P (x2 (t) = 1)+P (x2 (t) = 0)P (x3 (t) = x1 (t)) = + = . 2 2 2 4 Taigi pirmosios sistemos generuotas bitas labai danai sutampa su rakto bitu. Tai teisinga ir treiosios sistemos generuotam srautui: 3 P (k(t) = x3 (t)) = . 4 Nustaius i savyb, schemos atak galima vykdyti taip: upildius pirmosios sistemos registrus ir generavus sraut, reikia ji lyginti su rakto srautu ir tikrinti, ar sutapimu yra madaug trys ketvirtadaliai. Jeigu taip  pirmosios registru sistemos raktas ispetas. Blogiausiu atveju prireiks 2L1 1 tikrinimu. Analogikai galima nustatyti ir treiosios sistemos pradines registruose saugotas reikmes, o paskui ir antrosios sistemos. Taigi blogiausiu atveju prireiks (2L1 1) + (2L2 1) + (2L3 1)
tikrinimu, tai yra daug maiau u (87) dydi. is paprastas pavyzdys demonstruoja koreliaciniu ataku, kurios taikomos srautinems kriptosistemoms, esm: jeigu yra priklausomybe tarp rakto srauto ir vieno schemos elemento generuoto srauto, tai toki priklausomyb galima panaudoti daliai rakto bitu nustatyti. Panagrinekime kelias nuoseklaus tiesiniu registru sistemu jungimo idejas. Golmano generatoriu grandineje kiekviena sistema klauso pirmesnes sistemos.
c

T SRS1
Valdymas

T SRS2 E
E Valdymas

T SRS3 E
E Valdymas

Golmano tiesiniu registru sistemu grandine. Jeigu i tiesines registru sistemos valdymo skyriu perduoto bito reikme lygi vienetui, sistema generuoja eilini bit ir atlieka registru turiniu postumi; jeigu valdymo bitas lygus nuliui, registru turiniai nepasikeiia. Rakto srautas  dvieju paskutiniu registru bitu suma.

270

KODAI IR IFRAI

Jeigu, pavyzdiui, pirmoji sistema t ingsnyje generuoja x1 (t) = 0, tai antroji sistema, generavusi savo simboli, nepakeiia registru busenu, jeigu x1 (t) = 1  pakeiia. Analogiku budu antroji sistema valdo treij ir t.t. Vienos registru sistemos generuotas srautas gali buti naudojamas ne vienai, bet kelioms kitoms registru sistemoms valdyti.

T SRS2 T SRS1
E
Valdymas

c T

T SRS3
E
Valdymas

Pirmosios registru sistemos generuotas srautas valdo antrosios ir treiosios sistemu busenu kait. Jeigu x1 (t) = 1, tai i naujo upildomi antrosios sistemos registrai, o treiosios  lieka kaip buv. Jeigu x1 (t) = 0, keiiasi treiosios sistemos registru turiniai, o antroji sistema nepajuda.

Dar viena dvieju sistemu derinimo ideja: pirmosios sistemos generuot sraut galima naudoti antrosios srautui praretinti. Pavyzdiui, jeigu pirmoji sistema generavo sraut

x1 = 0100111001100011001 . . . ,
tai rakto srautas bus sudaromas i antrosios sistemos generuoto srauto bitu:

k = x2 (2)x2 (5)x2 (6)x2 (7)x2 (10)x2 (11)x2 (15)x2 (16)x2 (19) . . .

17.5. A5 ir Bluetooth E0
Operacijos su bitais srautiniu ifru sistemose vykdomos greitai ir nereikalauja dideliu itekliu. Todel jie naudojami tose ryio priemonese, kur reikia ifruoti daug ir greitai. Pavyzdiui, bevieliam kompiuteriu tinklui arba pokalbiams mobiliaisiais telefonais apsaugoti.

Srautiniu ifru yra daug ir ivairiu. Panagrinesime dvi iuolaikiniuose ryiuose naudojamas kriptosistemas. A5 sistema naudojama pokalbiams telefonu ifruoti, o Bluetooth E0  bevielio kompiuteriu tinklo protokoluose.

17. SRAUTINIAI IFRAI

271

18 17 16

13

21 20

10

22 21 20

10

A5/1 kriptosistema

Srautinio ifro A5/1 rakto srautas sukuriamas atlikus sudeties moduliu 2 operacij su bitais, kuriuos generuoja trys tiesiniu registru sistemos. Taiau kiekviena i iu sistemu nebutinai kiekviename ingsnyje pakeiia savo busen, t. y. i naujo suformuoja registru turinius. Sudarius rakto srauto bit ksuojami pirmosios sistemos atuntojo registro, antrosios ir treiosios sistemu  deimtuju registru bitai. Pavyzdiui, tegu ie bitai yra 0, 1, 0. Nuliu yra daugiau, todel pirmosios ir treiosios sistemu registru turiniai yra pakeiiami, o antrosios  lieka kaip buv. Jeigu visuose registruose butu nuliai arba vienetai  visu triju sistemu registrai butu perkrauti.

272
Bluetooth E0 srautinio ifro schema

KODAI IR IFRAI

Bluetooth E0 rakto srauto bitai kt gaunami atlikus sudeties moduliu operacij su keturiu tiesiniu registru generatoriu pateiktais bitais ir vienu sistemos vidines busenos bitu:

kt = x1 x2 x3 x4 c0 . t t t t t
Kartu sudejus i viso yra 128 registrai, kiek ju kiekviename i generatoriu matyti i ju charakteringuju daugianariu, kurie visi yra primityvus:

p1 (x) = x25 + x20 + x12 + x8 + 1, p2 (x) = x31 + x24 + x16 + x12 + 1, p3 (x) = x33 + x28 + x24 + x4 + 1, p4 (x) = x39 + x36 + x28 + x4 + 1.

Taigi kiekviena i keturiu tiesiniu registru sistemu generuoja maksimalaus periodo pseudoatsitiktines sekas. Tiesiniu registru sistemos ioreje, deutese Z1 ir Z2 , saugomi keturi sistemos vidines atminties bitai. Deuteje Z1 saugoma bitu pora ct = c0 c1 , o deuteje Z2  bitu pora ct1 = c0 c1 . t t t1 t1 Bitas c0 naudojamas t ingsnio rakto srauto bitui sudaryti, o kiti  vidinei t busenai pakeisti. Vidine busena t ingsnyje pasikeiia taip: deutes Z2 bitu pora ct1 = c0 c1 pakeiiama i ct = c0 c1 , o i deut Z1 ikeliami du bitai t t t1 t1 ct+1 = c0 c1 , gauti atlikus XOR operacij irenginyje X2 . i operacija t+1 t+1 atliekama su bitu poru trejetu. Pirmoji i ju  per T1 perduodama pora ct = c0 c1 . Antrj i deutes Z2 perduotos poros ct1 = c0 c1 sukuria t t t1 t1 irenginys T2 . Jame bitu pora transformuojama taip:

T2 : z0 z1 z2 z0 ,

z2 = z0 z1 .

Daugiausia vargo del treiosios poros, kuri paymesime st+1 = s0 s1 . t+1 t+1 Pirmiausia sudedant keturiu registru bitus kaip naturaliuosius skaiius, sudaromas trimis bitais uraomas skaiius

yt = x1 + x2 + x3 + x4 . t t t t
Tada, pasinaudojus deutes Z1 bitais, sudaromas skaiius ct = c0 + 2c1 ir t t suskaiiuojama suma yt + ct . Paskutine operacija jau sukuria treij bitu por: yt + ct st+1 = s0 s1 = . t+1 t+1 2

18. SUDETINGUMO TEORIJOS PRADMENYS

273

18 Sudetingumo teorijos pradmenys


Deifruodamas ifr, teisetas gavejas naudojasi raktu ir sprendia nesunku udavini, o neteisetas, bandydamas iifruoti ifr be rakto,  sunku. Jeigu jums tokio paaikinimo utenka, galite io skyriaus ir neskaityti. Taiau jeigu noretumete suinoti, pagal kokius poymius nesunkus udaviniai skiriami nuo sunkiu  tada nepraleiskite ir iu puslapiu. Tuo labiau kad vienoje nuoalioje io skyriaus vieteleje yra paaikinta, kaip galima usidirbti milijon doleriu.

18.1. Udaviniai ir ju sprendimai


Udavini sudaro slyga ir klausimas. Slyg inome, o atsakymo i klausim  ne. Udavinio sprendimas  tai planas, kuris visada nuo slygos duomenu nuveda iki atsakymo. Udavinio sudetingumas matuojamas io plano ilgiu. tai toks trumpas io skyrelio turinys. Prisiminkite tai, jeigu paklysite matematiniuose tankumynuose!

Tiek teisetas ifro gavejas, tiek kriptoanalitikas deifruodami sprendia udavini: koki praneim atitinka ifras? Gavejui, turiniam kriptosistemos rakt, i problema nesunki, o kriptoanalitikui gali buti net teorikai neisprendiama (kaip vienkartinio rakto kriptosistemos atveju). iame skyriuje nagrinesime tik turinius sprendimus udavinius. Taiau udaviniu buna ivairiu: vieni turi vien, kiti  kelis sprendimus. Kita vertus, k reikia isprsti udavini? Tad i pradiu pabandykime formalizuoti udavinio ir jo sprendimo svokas. Udavini paprastai sudaro slygos duomenys (danai vadinsime juos ieities duomenimis, santrumpa ID) ir uduotis arba klausimas (santrumpa U), i kuri reikia pateikti atsakym. Tiek ieities duomenis, tiek atsakym reikia urayti kokios nors abeceles simboliais. Dvejetaines abeceles B = {0, 1} iam tikslui visikai pakaks. Visu imanomu ios abeceles odiu aib ymesime, kaip visada, B , B B reikia visu odiu poru aib. Udaviniu vadinsime aib B B , turini savyb: kiekvienam x B atsiras y B , kad x, y . Jei x, y , tai x vadinsime ieities duomenimis, o y  atsakymu. Taigi ieities duomenys pateikiami dvinares abeceles odiu. Kiekvienu konkreiu atveju toki duomenu pateikti nebuna sudetinga sudaryti. Akivaizdu, pavyzdiui, kaip nuliu-vienetu odiais urayti naturaliuosius skaiius, iek tiek reikia pagalvoti, kaip pateikti orientuotus grafus. Gali atrodyti keista, kad bet kuris odis ieina i udavini kaip ieities duomenys. Juk kad ir koki, pavyzdiui, grafu uraymo bud naudotume, ne visi dvinares abeceles odiai reik egzistuojani struktur. Taiau tokiais atvejais galime numatyti, kad atsakymas A reikia, kad ieities duomenys neturi prasmes.

101 apibreimas.

274

KODAI IR IFRAI

Udavini B B vadinsime funkcija, jei kiekvienam x atsiras vienintelis y B , kad x, y . Jei galimos tik dvi atsakymo reikmes, funkcij vadinsime isprendiamumo udaviniu. Isprendiamumo udavinio atsakymo reikmes interpretuosime kaip teigiam bei neigiam atsakymus T (taip, arba galima ymeti tiesiog 1) ir N (ne, arba 0). Visus udavinius formaliai galima pertvarkyti i isprendiamumo udavinius, t. y. kiekvienam udaviniui galima rasti orakul, kuris i pateikiamus klausimus atsakineja tik taip ir ne, bet i tokiu jo atsakymu jus galite sukurti savo udavinio sprendim. Apsiribosime naturaliojo skaiiaus skaidymo pirminiais daugikliais (faktorizacijos) udavinio pavyzdiu: ID: naturalusis skaiius n; U: rasti netrivialu n dalikli arba nustatyti, kad tokio daliklio nera. itaip suformuluotas udavinys nera, inoma, isprendiamumo udavinys. Tarkime, turime ger algoritm tokiam isprendiamumo udaviniui sprsti: ID: naturalieji skaiiai n, k; U: ar egzistuoja n daliklis m, tenkinantis nelygyb m k? Pastarasis udavinys yra isprendiamumo udavinys, juk praoma atsakyti tik taip arba ne. Pasinaudosime io udavinio sprendimo algoritmu skaiiaus skaidiniui rasti. Apsiribokime skaitiniu pavyzdiu. Tarkime, reikia rasti netrivialu n = 63 dalikli m. Kadangi n < 26 , tai dalikli, jeigu jis egzistuoja, galima urayti taip: m = 5 25 + 4 24 + 3 23 + 2 22 + 1 21 + 0 ,

102 apibreimas.
B

ia i {0, 1}. ymekime A(n, k) atsakym, kuri duoda antrojo udavinio algoritmas ieities duomenims n, k. Kadangi A(n, 25 ) = N, tai galime teigti, kad 5 = 0; A(n, 24 ) = T, tai 4 3 4 2 4 = 1; A(n, 2 + 2 ) = N, todel 3 = 0; A(n, 2 + 2 ) = T, taigi 2 = 1; 4 + 22 + 2) = N, 4 + 22 + 1) = T, A(n, 2 1 = 0; pagaliau A(n, 2 0 = 1. Iekomas netrivialus daliklis toks:

m = 24 + 22 + 1 = 31.

vadinsime poaibi

103 apibreimas.

Isprendiamumo udavinio B B kalba

L = {x : x B , x, T }.

Taigi isprendiamumo udavini galime interpretuoti kaip klausim, ar odis x B ieina i kalb L . Udavinio sprendim intuityviai suvokiame kaip tam tikru nurodymu rinkini, kuris valdo proces, pasibaigianti atsakymu (kartais nesekme). Sudetingumo teorijoje naudojama ne viena formali udavinio sprendimo sam-

18. SUDETINGUMO TEORIJOS PRADMENYS

275

prata. Apsiribosime determinuotomis Turingo mainomis. Mums uteks neformalaus ju apibreimo15 . Galime isivaizduoti, kad Turingo main sudaro begaline i kvadratelius padalyta juosta ir slankiojanti skaitymo-raymo galvute. Kiekviename kvadrate gali buti iraytas vienas abeceles B simbolis. Galvute gali nuskaityti simboli i kvadrato, ties kuriuo ji stovi. Maina gali buti vienoje i padeiu, nusakomu aibe Q = {q0 , . . . , qm }. Maina gali atlikti kelis paprastus veiksmus, kuriuos vadinsime elementariomis operacijomis:

pakeisti nuskaityt simboli kitu B simboliu; paslinkti galvut per vien kvadrat i kair ar i dein; pakeisti mainos padeti i qi i qj .
Kuris i iu veiksmu bus atliktas i-ajame ingsnyje, vienareikmikai lemia nuskaitytas simbolis ir tuometine padetis qi . Darbo pradioje i juostos kvadratus nuo 1 iki n uraomas pradinis odis x B , |x| = n, ia |x|  odio x ilgis. Maina pastatoma i pradin padeti q0 , o jos galvute ties pirmuoju kvadratu. Toliau maina atlieka elementarias operacijas ir baigia darb, patekusi i padeti qm . Juostos turinys tuo metu ir bus mainos darbo rezultatas. Ji ymesime f (x) ir sakysime, kad Turingo maina skaiiuoja funkcij f : B B . Mainai M reikmei skaiiuoti reikaling elementariuju operaciju skaiiu ymesime tM (x).

TM

104 apibreimas.

Turingo mainos M darbo laiku vadinsime funkcij : N N, kurios reikme kiekvienam naturaliajam n yra lygi

TM (n) = max{t : egzistuoja x B , |x| = n, tM (x) = t}.


Taigi udavinio (funkcijos, atskiru atveju  isprendiamumo udavinio) sprendim matematikai suvoksime kaip atitinkam Turingo main. T pai funkcij f (x) gali skaiiuoti ivairios Turingo mainos priklausomai nuo to, koks algoritmas yra naudojamas. Konstruoti Turingo main ir skaiiuoti jos darbo laik  keblus darbas. Sudetingesniems algoritmams patogiau konstruoti Turingo main, kuri yra paprastesniu Turingo mainu sistema (panaiai kaip programa, sudaryta i paprogramiu). Lengviau skaiiuoti ne Turingo mainos elementarias operacijas, o iprastiniu matematiniu veiksmu kieki. Pavyzdiui, dvieju n dvejetainiais skaitmenimis uraomu skaiiu sudeiai atlikti reikia n operaciju su simboliais. Kiekvienam tokiam veiksmui atlikti Turingo mainai prireikia tam tikru dydiu c1 apreto elementariuju operaciju kiekio. Galime tarti, kad dar reikia papildomai atlikti
Matematinio grietumo norintis skaitytojas turetu pavartyti R. Lassaigne'o ir M. de Rougemont'o knyg Logika ir algoritmu sudetingumas, kuri i lietuviu kalb iverte S. Norgela, r. [47].
15

276

KODAI IR IFRAI

ne daugiau kaip c2 techniniu operaciju, pavyzdiui, skaiiu pabaigos enklui nuskaityti. Taigi skaiiu sudeiai atlikti prireiks

TM (n) c1 n + c2
operaciju. Panagrinekime daugiau pavyzdiu. Vertindami operaciju skaiiu, naudosime ymeni O(g), kuris reikia tam tikr dydi, ne didesni kaip c g, ia c > 0 yra tam tikra konstanta, kurios tiksli reikme daniausiai nera svarbi. 1 pavyzdys. Sveikuju skaiiu daugyba ir dalyba. Tarkime, kad skaiiai x = x1 . . . xn , y = y1 . . . yn urayti dvejetaineje sistemoje. Paeiliui daugindami xi i y1 , y2 , . . . , yn , atliksime n2 bitu daugybos operaciju. Gautas sandaugas pastumdami ir sudedami atliksime dar madaug n2 operaciju. Taigi reikalingas bitu operaciju skaiius bus T (n) = O(n2 ). Jeigu reikia skaiiu x = x1 . . . xn padalyti su liekana i skaiiaus y = y1 . . . ym (m n), tai, pagalvoj, kaip atliekamas dalybos kampeliu algoritmas, isitikinsime, kad reikalingas operaciju su bitais skaiius nevirys

T (n) = O ((n m + 1) m) = O(n2 ).


Taiau tiek dalybai, tiek daugybai galima sukonstruoti ir greitesnius algoritmus. Panagrinekime daugybos veiksm. Kaip ir anksiau T (n) ymesime kieki elementariu operaciju, kuriu reikia dviem skaiiams, uraomiems n ilgio bitu odiu, sudauginti. Tarkime, kad reikia sudauginti skaiius x = x1 . . . xn , y = y1 . . . yn , uraytus dvejetaineje sistemoje, ir n yra lyginis. Jeigu n nera lyginis, visada galime prideti gale nuli. Skaiius x ir y perskelsime pusiau: x = a2n/2 + b, y = c2n/2 + d. Dabar sandaug x y galesime skaiiuoti taip:

x y = (ac)2n + (ac + bd (a b)(c d))2n/2 + bd.


Taigi reikia apskaiiuoti tris sandaugas (ac, bd, (ab)(cd)), kuriose daugikliai yra ne ilgesni kaip n/2, bitu ir atlikti kelias sudeties operacijas. Kadangi daugyba i 2n yra labai paprasta, tai gausime nelygyb

T (n) 3T

n + O(n). 2

Taiau perpus trumpesniu skaiiu daugybai taip pat galime taikyti t pati metod, taigi

T (n) 3 3T

n n +O 4 2

+ +O(n), n n + . . . + 3k1 k1 , 2 2

T (n) 4 3k + O n + 3

18. SUDETINGUMO TEORIJOS PRADMENYS

277

ia k yra naturinis skaiius, n/2k 2; galime imti k = [log2 n]. Kiek paskaiiav gautume

3k 3log2 n = nlog2 3 ,
Taigi

n+3

n n 2 3 + . . . + 3k1 k1 2 3 2 2

< nlog2 3 .

T (n) = O nlog2 3 .

is daugybos metodas yra kiek greitesnis u tiesiogini. Taiau yra ir dar greitesniu. Palyginimui pasakysime, kad geriausiam iki iol inomam Sch`onhageStrasseno algoritmui16

T (n) = O(n ln n ln ln n).

(88)

Naturaliojo skaiiaus dalybai i kito skaiiaus irgi yra algoritmas, kurio veiksmu skaiiui teisingas (88) ivertis. 2 pavyzdys. Patikrinti, ar naturalusis skaiius N yra pirminis. Paprasiausias (bet ne greiiausias!) budas toks: patikrinti, ar N dalosi 2 ir i visu nelyginiu k, 3 k N . Tam blogiausiu atveju reikes apie N /2 dalybos operaciju. Kadangi N dvejetaineje iraikoje bus n = [log2 N ] + 1 dvejetainiu skaitmenu, tai reikaling operaciju skaiiu T (n) galime vertinti taip: T (n) = O( N ) = O ean , ia a  teigiama konstanta. Ivertis rodo, kad ilginant ieities duomenis skaiius operaciju, reikalingu blogiausio atvejo sprendimui, dideja labai greitai. Tiesa, yra ir geresniu budu iam udaviniui sprsti, r. [3].

18.2. P ir NP udaviniu klases


Vienus udavinius sprendiame nuosekliai atlikdami veiksmus i pateikto srao. Kitiems geriau taikyti toki bud: perskaiius slyg, nueiti miegoti arba vejoti. Gal gera ideja kils netyia, o tada jau udaviniui isprsti reikes visai mau pastangu. Pirmuoju budu sprendiami P klases udaviniai, o antruoju  NP.

Ankstesniame skyrelyje idestytu poiuriu udavinio sprendimas yra (determinuota) Turingo maina. Ji visada realizuoja tam tikr instrukciju rinkini, t. y. algoritm. Danai vietoj Turingo mainu kalbesime tiesiog apie algoritmus. Algoritmus klasikuosime pagal ju Turingo mainu darbo laik.

105 apibreimas. Algoritmas, kurio Turingo mainos darbo laikas yra TM (n), vadinamas polinominio laiko algoritmu, jei egzistuoja daugianaris
16 A. Sch`onhage, V. Strassen. Schnelle Multiplikation grosser Zahlen. Computing, 7(1971), p. 281292.

278

KODAI IR IFRAI

p, kiekvienam n N tenkinantis nelygyb TM (n) p(n). Sakysime, kad udavinys priklauso polinominio laiko udaviniu klasei P, jei jos sprendimui inomas polinominio laiko algoritmas17 . Paprastai laikomasi nuomones, kad polinominio laiko algoritmas yra greitas ir ji galima praktikai realizuoti. Todel udavinio priklausymas klasei P yra svarbi jo savybe. Taiau praktiniam taikymui polinominis algoritmas gali buti net blogesnis u nepolinomini. Juk darbo laiko reius nustatanio daugianario laipsnis gali buti didelis! Galima isitikinti, kad pagrindiniu aritmetiniu bei palyginimo operaciju algoritmai priklauso klasei P. Todel norint irodyti, kad udavinys priklauso klasei P, pakanka rasti jo sprendimo algoritm, kuris turetu polinomini laik, ireikt iu pagrindiniu operaciju t.y sudeties, daugybos, palyginimo ir t. t.  skaiiumi. Kitaip sakant, nera butina kiekvien kart konstruoti Turingo main. Prisiminkime ankstesnius pavyzdius. Dvieju skaiiu sandaugos, dalmens, liekanos ir bendrojo didiausiojo daliklio radimas yra polinominio laiko udaviniai. Tiktai visai neseniai buvo sugalvotas polinominio laiko algoritmas, nustatantis, ar duotasis skaiius yra pirminis, r. [3]. O dabar panagrinesime udavinius, kuriems sprsti iki iol nera surasta polinominio laiko algoritmu. Taiau tai butu per daug platus ir neapibretas tyrimo objektas. Todel kalbesime tik apie vadinamuosius nedeterminuoto polinominio laiko (NP) udavinius. Apsiribosime isprendiamumo udaviniais, nes i juos formaliai gali buti pertvarkyti kiti udaviniai. Pradesime vel nuo pavyzdiu. 1 pavyzdys. Patikrinti, ar naturalusis skaiius N yra sudetinis. Jeigu skaiteme minet straipsni apie polinomini algoritm, tikrinanti, ar duotasis skaiius yra pirminis, tai ir i udavini, inoma, priskirsime P klasei. Juk klausim, ar skaiius yra sudetinis, galime pakeisti klausimu, ar jis pirminis. Tarkime, kad to dar nesuinojome, todel udavinio nepriskiriame iai klasei. Taigi mums duotas didelis naturalusis skaiius N ir reikia pateikti atsakym, ar jis sudetinis. Tarkime, kad mes kakaip suinojome (galbut susapnavome) problemos sprendimo rakt: koki nors skaiiaus N dalikli d, 1 < d < N. Aiku, kad iuo atveju atsakymui gauti pakanka vienos dalybos operacijos, taigi ji isprendiame polinominio laiko algoritmu. Taiau jeigu mums duotas skaiius nebutu sudetinis, tai gauti atsakym per polinomini laik nepadetu jokie sapnai.
17 Man patinka vietoj lotyniko odio polinomas vartoti lietuvik daugianaris. Jis skambus ir gerai perteikia prasm. Taiau termino daugianarinis laikas pavartoti vis delto nesiryau. Galima, inoma, vartoti ilg ir todel nepatogu termin, pavyzdiui, daugianariu apribotas laikas. Taiau tegu iame skyrelyje bus polinominis laikas. Skaitytojams, kurie studijuos sudetingumo teorij i kitomis kalbomis paraytu knygu bus lengviau atpainti inomas svokas (polynomial problem, algorithm angl.

18. SUDETINGUMO TEORIJOS PRADMENYS

279

is isprendiamumo udavinys turi toki savyb: jeigu i pateiktus duomenis atsakymas yra teigiamas, tai ji galima nustatyti per polinomini laik, suinojus tam tikr papildom informacij (rakt), taiau jeigu atsakymas yra neigiamas, tai surasti ji per polinomini laik gali ir nepavykti. Tokius udavinius vadinsime NP (nedeterminuoto polinominio laiko) udaviniais. Gautojo ifro deifravimas paprastai buna NP klases udavinys: jei rakt inome, galime ji isprsti lengvai, jeigu ne  kartais sprendimas i viso neimanomas. Pastebesime, kad kiekvienas P klases udavinys yra ir NP klases udavinys. 2 pavyzdys. Patikrinti, ar grafas yra Hamiltono, t. y. ar egzistuoja ciklas, jungiantis visas virunes ir einantis per kiekvien i ju tik po vien kart. Bendruoju atveju tai yra sudetingas udavinys, kuriam iki iol nera surastas polinominio laiko algoritmas. Akivaizdu, kad tai yra NP udavinys. Jo raktas  Hamiltono ciklas. Taiau jeigu i udavini suformuluotume itaip: ID: grafas G; U: ar G nera Hamiltono grafas? tai udavinys jau nebepriklausytu klasei NP! O dabar  kiek painokas matematinis NP udavinio apibreimas. Primename, kad nagrinejame tik isprendiamumo udavinius, taigi klausimus galime interpretuoti taip: ar odis x B (ieities duomenys) priklauso udavinio kalbai B (aibei duomenu, i kuriuos atsakymas yra teigiamas).

106 apibreimas. Sakysime, kad yra NP udavinys (ymesime NP), jei egzistuoja funkcija f : B B {0, 1} tokia, kad
1. x tada ir tik tada, kai egzistuoja toks y B , kad f (x, y) = 1; 2. f (x, y) skaiiuojama |x| atvilgiu polinominio laiko algoritmu. iame apibreime odis y B ir yra udavinio sprendimo raktas, kuri reikia kaip nors ispeti (kartais jis vadinamas sertikatu). Dabar isitikinsime, kad NP udaviniu klase turi savotik struktur. Bet prie tai dar viena nauja svoka.

107 apibreimas. Sakoma, kad udavinys 1 yra polinomikai pertvarkomas i udavini 2 , jei egzistuoja polinominio laiko funkcija : B B , tenkinanti slyg x 1 tada ir tik tada, kai (x) 2 . Kitaip sakant, polinomikai pertvarkyti udavini i kit reikia per polinomini laik performuluoti klausim, kad teigiamas atsakymas i ji reiktu taip pat teigiam atsakym i pirmji klausim, o neigiamas  neigiam. Pavyzdiui, visi inome, kaip udavini ID: sveikieji skaiiai a, b, c; U: ar lygtis ax2 + bx + c = 0 turi du skirtingus sprendinius? galima pertvarkyti i udavini

280

KODAI IR IFRAI

ID: sveikas skaiius D; U: ar D teigiamas?


ir 1 P.

124 teorema. Jei 1 yra polinomikai pertvarkomas i 2 ir 2 P, tai Irodymas. Tarkime, kad x B , |x| = n,  polinominio laiko

funkcija, pertvarkanti 1 i 2 . Tada |(x)| g(n), ia g  daugianaris. I klausim, ar x 1 , atsakysime patikrin, ar (x) 2 . Prisimin, kad 2 P, galime teigti, kad i tikrinim galima atlikti algoritmu, kurio laikas nevirija p(|(x)|) q(n), ia p, q  daugianariai. Taigi 1 P. Dabar jau galime suformuluoti vien iymi teorem apie santykius NP udaviniu aibeje.

125 teorema. (S. A. Cook, 1973) Egzistuoja NP udavinys, i kuri polinomikai galima pertvarkyti bet kuri kit NP udavini. Toks universalus udavinys vadinamas pilnuoju NP udaviniu. Ties sakant, Cookas suformulavo i teorem kiek kitaip. Jis pateike ir NP pilno udavinio pavyzdi. Dabar tokiu pavyzdiu inoma labai daug. 1979 m. Garey ir Johnsonas pateike katalog [30], kuriame yra vir 3000 pilnuju NP problemu i skaiiu teorijos, logikos, kombinatorikos ir automatu teorijos. Tarp ju yra ir musu jau nagrineta grafo Hamiltono ciklo egzistavimo udavinys. Polinominiu udaviniu aibe sudaro NP udaviniu aibes poaibi. Ties sakant, niekas pasaulyje neino, ar NP udaviniu yra i tikruju daugiau negu P klases udaviniu! Juk, pavyzdiui, niekas negali paneigti, kad kas nors nesuras polinominio laiko algoritmo Hamiltono ciklo radimo grafe udaviniui sprsti. Jeigu tai ivyktu, butu nustatyta, kad is udavinys priklauso klasei P, o tuo paiu metu... kad visi NP udaviniai sprendiami polinominio laiko algoritmais, t. y. kad P = NP! Prie kelet metu Clay matematikos institutas Kembride (JAV, Masachusetts), kuri nansuoja verslininkas Landonas T. Clay, paskelbe septyniu matematiniu udaviniu sra. Atlygis u kiekvieno i ju sprendim  milijonas JAV doleriu. Vienas i iu udaviniu formuluojamas itin paprastai: irodyti arba paneigti, kad P = NP. Taigi milijon doleriu galima udirbti tyrinejant paprasiausius grafus.

18.3. Nepilnas NP pilnu problemu sraelis


NP pilnu udaviniu inoma labai daug. Ir i nedidelio skyrelyje pateikiamo srao susidarysite ispudi apie tokiu udaviniu ivairov.

Minejome, kad NP pilnu udaviniu dabar jau inoma keli tukstaniai. Ju galima rasti visose diskreiosios matematikos srityse. Tuo isitikinsite pervelg ir i nedideli NP udaviniu rinkini. Visur G = V, E reikia graf, V  jo viruniu aibe, E  briaunu aibe.

Viruniu denginys (vertex cover)

18. SUDETINGUMO TEORIJOS PRADMENYS

281

priklausytu V ? Grafo k-spalvinimas (graph k-colorability) ID: G = V, E , k |V |; U: ar galima virunes nuspalvinti k spalvomis, kad bet kurios briaunos dvi virunes butu nuspalvintos skirtingai?

ID: G = V, E , k |V |; U: ar egzistuoja V V, |V | k, kad kiekvienos briaunos virune

Vienspalvis trikampis (monochromatic triangle) ID: G = V, E ; U: ar galima nuspalvinti visas grafo briaunas dviem spalvomis, kad i Komercinis keliautojas (traveling salesman) ID: miestu aibe C, atstumai tarp miestu d(ci , cj ), skaiius B > 0; U: ar egzistuoja budas apeiti visus miestus, kad viso kelio ilgis nevirytu

tos paios spalvos briaunu ir atitinkamu viruniu negaletume sudaryti vieno trikampio?

B?

Aibiu pakavimas (set packing) ID: baigtines aibes poaibiu rinkinys C, skaiius k, 0 < k |C|; U: ar rinkinyje C egzistuoja k poromis nesikertaniu aibiu? Aibiu skaidymas (set splitting) ID: baigtines aibes S poaibiu rinkinys C; U: ar galima S iskaidyti i dvieju nesikertaniu aibiu sjung S = S1 S2 , Trumpiausias virodis (shortest common supersequence) ID: baigtine abecele , R ir naturalusis skaiius k; U: ar egzistuoja odis w , kad |w| k ir kiekvienas odis x R
butu w fragmentas (dalis)? kad jokia C aibe nebutu nei S1 , nei S2 poaibis?

Skaidymas (partition) ID: baigtine aibe A ir neneigiami sveikieji skaiiai (elementu svoriai)
s(a), a A; U: ar egzistuoja A A, kad

s(a) =
aA aA\A

s(a)?

Kvadratiniai lyginiai (quadratic congruences) ID: naturalieji skaiiai a, b, c; U: ar egzistuoja naturalusis skaiius x, |x| < c, kad x2 a(mod b)? Dalumo palyginimas (comparative divisibility) ID: du naturaliuju skaiiu rinkiniai {a1 , . . . , an } ir {b1 , . . . , bm }; U: ar yra toks naturalusis skaiius c, kad skaiiu i pirmojo rinkinio,
kuriuos dalo c, yra daugiau nei analogiku skaiiu i antrojo rinkinio?

Kvadratines Diofanto lygtys (quadratic diophantine equations) ID: naturalieji skaiiai a, b, c;

282

KODAI IR IFRAI

kurios elementai yra vienetai; U: ar galima i W odiu sukonstruoti kryiaodi pagal A kaip ablon (raant raides i langelius, kurie paymeti 0, o langelius, paymetus 1, laikant utuuotais)?

U: ar egzistuoja naturalieji skaiiai x, y su slyga ax2 + by = c? Kryiaodio konstravimas (crossword puzzle construction) ID: baigtine abecele , baigtine odiu aibe W , n n matrica A,

18.4. Tikimybiniai algoritmai


Deterministinio algoritmo taikytojas apie sunku udavini galvoja taip: kadangi udavinys sunkus, tai, norint gauti atsakym, reiks daug dirbti. Tikimybinio algoritmo taikytojo poiuris kitoks: nors udavinys sunkus, bet jeigu pasiseks, isprsiu ji lengvai.

Tikimybiniu algoritmu ideja labai paprasta, juos mes gyvenime neretai naudojame. Tarkime, reikia atsakyti i klausim, ar eere yra uvu. Algoritmas paprastas  umerkti meker ir palaukti. Galimos dvi baigtys: pagausime uvi arba nepagausime. Pirmuoju atveju atsakymas i klausim yra teigiamas ir visikai teisingas, antruoju  atsakymas neigiamas, taiau jo teisingumas yra tik tiketinas, o ne absoliutus. Sudarysime panaias savybes turinti algoritm tokiam udavinius sprsti: ID: N  nelyginis skaiius; U: ar N sudetinis? Pasinaudosime Fermat teorema (i labai svarbu visai vieojo rakto kriptograjai teigini irodysime kitame skyriuje).

126 teorema. Jei N  nelyginis pirminis skaiius, (a, N ) = 1, tai aN 1 1 (mod N ). Dabar galime tikrinti, ar N yra pirminis, taip:
parinkime nelygini w, 1 < w < N ; jei w|N, tai N  sudetinis skaiius; jei (w, N ) = 1, skaiiuokime wN 1 (mod N ). Jei wN 1 1(mod N ), tai N sudetinis, jei wN 1 1(mod N ), darome ivad, kad N yra pirminis.
Aiku, kad teigdami, jog N pirminis, ne visada busime teisus. Galima atveju wN 1 1 (mod N ) kartoti test, parinkus kit w reikm. Danai itokiu budu pavyksta demaskuoti pirminiu apsimetusi sudetini skaiiu. Deja, ne visada. Egzistuoja be galo daug skaiiu18 N, kurie su visais (w, N ) = 1 tenkina slyg wN 1 1 (mod N ). Maiausias Carmichaelio skaiius yra 561. Taiau visiems kitiems sudetiniams skaiiams nepavyks ilikti neatpaintiems, jeigu tik testas bus pakankamai daug kartu pakartotas. Tai iplaukia i tokios teoremos:
18

Jie vadinami Carmichaelio skaiiais; R. D. Carmichael (18791967).

18. SUDETINGUMO TEORIJOS PRADMENYS

283

Tegu N  nelyginis skaiius. Tada slyga wN 1 1 (mod N ) teisinga arba visiems w, (w, N ) = 1, 1 w < N, arba daugiausiai pusei tokiu w. Dabar apibrekime tikimybinio algoritmo svok.

127 teorema.

108 apibreimas. Algoritm isprendiamumo udaviniui sprsti vadinsime tikimybiniu, jeigu ieities duomenims jo pateikiamas atsakymas T AIP yra visada teisingas, o N E  teisingas su tikimybe, didesne u 1/2. Teiginys teisingas su tikimybe, didesne u 1/2, reikia, kad, su ieities duomenimis, kuriems teisingas atsakymas yra N E, atlikus algoritm visais imanomais budais, is atsakymas bus gautas daugiau kaip pus kartu. Taigi del Carmichaelio skaiiu negalime musu algoritmo, pagristo Fermat teorema, pavadinti tikimybiniu. Juk jeigu pasitaike taip, kad musu ieities duomuo yra Carmichaelio skaiius, tai tikimybe, kad algoritmas duos teising atsakym, lygi nuliui! Jeigu tikimybinio algoritmo naudojamo laiko kiekis yra polinominis ieities duomenu dydio atvilgiu, tai algoritm vadinsime tikimybiniu polinominiu algoritmu, o jo sprendiam udavini  tikimybiniu polinominiu udaviniu. Tikimybiniu polinominiu udaviniu klase literaturoje ymima RP (random polynomial angl.). Dabar sukonstruosime tikr tikimybini polinomini algoritm sudetiniu skaiiu atpainimo udaviniui sprsti. Tegu N  nelyginis skaiius. Suraskime skaiius s, t, (t, 2) = 1, kad butu N 1 = 2s t. Parinkime a, (a, N ) = 1 ir patikrinkime, ar at 1 (mod N ). Jei galioja lygybe, parinkime kit a. Suskaiiuokime
at (mod N ), a2t (mod N ), . . . a2
s1 t

(mod N ), aN 1 (mod N ). (89)

Tarkime, N yra pirminis skaiius. Kiek vienetu yra sekoje (89)? I Fermat teoremos gauname, kad paskutinis ios sekos skaiius yra butinai vienetas. Vienetas gali pasitaikyti ir anksiau (pirmas skaiius tikrai ne vienetas). Tegu pirmasis sekos vienetas yra

a2 t 1 (mod N ),
tada prie ji einantis skaiius b a2 t (mod N ) yra lyginio x2 1 (mod N ) sprendinys. Kadangi N yra pirminis, tai is lyginys turi tik du sprendinius: 1 ir N 1. I slygos b 1 (mod N ), gauname, kad b N 1 (mod N ). Taigi pirminiam skaiiui N teisingi tokie teiginiai: 1. paskutinis (89) sekos skaiius yra 1; 2. prie pirmji (89) sekos vienet stovi N 1. Dabar algoritm galime aprayti taip:
l1

284

KODAI IR IFRAI

surasti skaiius s, t, (t, 2) = 1, kad N 1 = 2s t; parinkti 1 < a < N ; jei a|N, tai N  sudetinis; jei at 1 (mod N ), parinkti kit a; sudaryti sek (89); jei bent vienas i teiginiu 1), 2) (89) sekai neteisingas, tai N  sudetinis skaiius; jei abu teisingi  pirminis.
is algoritmas vadinamas Millerio (arba Millerio-Rabino) testu. Algoritmas polinominis. Ar ji galime pavadinti tikimybiniu, t. y. ar jis tenkina musu apibreimo slygas? Teigiamas atsakymas, inoma, visada yra teisingas. Reikia isitikinti, kad neigiamas atsakymas teisingas su tikimybe, didesne u 1/2. Tai iplaukia i tokio teiginio: Tegu N  nelyginis sudetinis skaiius, 4 < N. Tada ne maiau kaip 3(N 1)/4 skaiiu a, 1 < a < N, arba teiginys 1), arba 2) neteisingas. Taigi Millerio-Rabino testas  tikimybinis polinominis algoritmas. Tikimybe, kad sudetini N pripainsime pagal i test pirminiu, yra ne didesne u 1/4. Pakartojus test k kartu, klaidingo sprendimo tikimybe bus ne didesne u 1/4k . Matome, kad, pakartoj test daug kartu, j galima kiek norime sumainti.

128 teorema.

19 Skaiiu teorijos svokos ir algoritmai


Vieojo rakto kriptosistemu, skaitmeniniu parau ir kitu moderniosios kriptograjos schemu pagrindas  veiksmai baigtinese algebrinese strukturose. Tos strukturos  dalybos liekanu iedai Zn , baigtiniai kunai Fp , Fpm ... Jas tyrinejo paios gryniausios matematikos atstovai, niekada turbut neman, kad ju teiginiai bus pritaikyti labai praktikiems tikslams. Udavinius sprendiame naudodamiesi tam tikromis taisyklemis  algoritmais. Jie nurodo, kokius veiksmus reikia atlikti su duomenimis, kad gautume rezultat. Veiksmu skaiius priklauso nuo udavinio duomenu dydio. Kuo matuoti duomenu dydi? Naturali ideja  dvejetaines abeceles simboliu skaiiumi, reikalingu duomenims urayti. Kai duomenu dydis auga (pavyzdiui, skaiiuojame su vis didesniais skaiiais) veiksmu skaiius irgi dideja. Jeigu veiksmu skaiius, reikalingas algoritmui su n ilgio duomenimis atlikti nevirija tam tikro daugianario f reikmes f (n), toks algoritmas vadinamas polinominiu. Paprastai laikoma, kad udavinys, kuriam sprsti inome polinomini algoritm, yra sprendiamas greitai. Taiau tai tik pavirutinika, nors danai ir teisinga nuomone. Algoritmu vertinimo pagal sudetingum udaviniai nagrinejami sudetingumo teorijoje. Norintys i j isigilinti turetu pavartyti, pavyzdiui, [30], [47] knygas. Mes tik retkariais pabandysime

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

285

ivertinti algoritmui atlikti reikalingu veiksmu skaiiu. Tokiuose iveriuose patogu naudoti ymeni f = O(g), kuris reikia, kad dydis f nevirija dydio c g, ia c > 0 yra konstanta, kurios tiksli reikme paprastai nera svarbi.

19.1. Euklido algoritmas


Bendrji didiausiji dvieju skaiiu dalikli Antikos graikai suvoke kaip bendrji skaiiu mat. Euklido algoritmas jam rasti  nedaug matematiniu kuriniu gali jam prilygti paprastumu, teorine ir praktine reikme.

Kas yra bendrasis didiausiasis dvieju naturiniu skaiiu daliklis, visi inome. Nuo jo ir pradekime.

109 apibreimas. Bendruuoju didiausiuoju naturiniu skaiiu a, b dalikliu vadinamas didiausias skaiius, kuris dalija ir a, ir b. Bendrji didiausiji dalikli ymesime (a, b). Jeigu (a, b) = 1, iuos skaiius vadinsime tarpusavyje pirminiais. Jeigu b dalijasi i a, tai, inoma, (a, b) = b. Darni naturiniu skaiiu dalumo teorija idestyta Euklido Pradmenyse. Visi skaiiu teorijos vadoveliai, kuriuose teiginiai destomi nuosekliai ir isamiai, j pakartoja. Bet mums juk pirmiausia rupi ne loginiai teorijos pagrindai, bet jos teiginiai, kuriuos kaip irankius galima panaudoti kriptograjoje. Taigi praleiskime irodymus tu teiginiu, kurie tiesiog akivaizdus. Pavyzdiui, jei (a, b) = d, tai a = da , b = db ir (a , b ) = 1. Skaiiu dalyb su liekana jau aptareme kodavimo teorijai skirtoje knygos dalyje. Jeigu a > b yra naturalieji skaiiai, tai
a = qb + r, 0 r < b.

Euklido algoritmas bendrajam didiausiajam skaiiu a, b dalikliui rasti remiasi teiginiu: (a, b) = (b, r). Jei a > b  naturalieji skaiiai, tai, kartodami dalybos su liekana veiksmus, gausime:

a = q0 b + r0 , b = q1 r0 + r1 , r0 = q2 r1 + r2 ,

0 < r0 < b, 0 < r1 < r0 , 0 < r2 < r1 , 0 < rm < rm1 , 0 < rm+1 < rm ,

............ rm2 = qm rm1 + rm , rm1 = qm+1 rm + rm+1 , ............ rn2 = qn rn1 + rn , rn1 = qn+1 rn . 0 < rn < rn1 ,

286

KODAI IR IFRAI Tada paskutine nelygi nuliui liekana ir yra bendrasis didiausiasis daliklis:

(a, b) = (b, r0 ) = (r0 , r1 ) = . . . = (rn1 , rn ) = rn .


tai ir visa Euklido algoritmo esme. I priepaskutines lygybes gausime:

(a, b) = rn = rn2 + (qn )rn1 .


Istat i i lygyb rn1 iraik per rn2 , rn3 , gausime bendrojo didiausiojo daliklio iraik per liekanas su maesniais indeksais. Galu gale, itaip kopdami i viru, surasime sveikuosius x, y, kad

(a, b) = xa + yb.
Pastebekime, kad jei (a, b) = urm +vrm+1 , tai (a, b) = vrm1 +(uvqm+1 )rm . Pasinaudoj ia pastaba, galime iekoti skaiiu x, y taip. Suraykime Euklido algoritmo skaiiavimus tokioje lenteleje:

ri1 , ri a, b b, r0 r0 , r1 ... rm1 , rm rm , rm+1 ... rn2 , rn1 rn1 , rn

qi+1 q0 q1 q2 ... qm+1 qm+2 ... qn qn+1

ui1 , ui

... v, u vqm+1 u, v ... 1, qn

Treiji stulpeli pildome nuo apaios i viru. Jeigu paskutine upildyta eilute yra tokia: rm , rm+1 | qm+2 | u; v , tai i virutines eilutes treiji stulpeli raome skaiius v; uvqm+1 . Su kiekvienos eilutes skaiiais ri1 , ri , ui1 , vi1 teisinga lygybe (a, b) = ui1 ri1 + vi1 ri . Pirmosios eilutes skaiiai duoda lygyb

ax + by = (a, b).
Lenteleje pateiktas skaiiavimo pavyzdys su a = 57, b = 10.

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

287

57; 10 10; 7 7; 3 3; 1

5 1 2 3

3; 17; 2; 3; 1; 2;

1 = 57 3 + 10 (17) 1 = 10 (2) + 7 3 1 = 7 1 + 3 (2)

Panagrinekime, kiek daugiausia Euklido algoritmo ingsniu reikia atlikti, kad surastume bendrji didiausiji dalikli. Apibrekime skaiius

f0 = 1, f1 = 2, fi = fi1 + fi2 (i 2).


Kas nors, be abejones, pastebejo, kad tai  Fibonaio skaiiai. Isitikinsime, kad musu dalybos liekanoms teisingos nelygybes:

rn f0 , rn1 f1 , . . . , rnm fn , . . . , r0 fn , b fn+1 .


I tikruju, nelygybes rn f0 , rn1 f1 akivaizdios. Jeigu teisingos nelygybes rnm+2 fm2 , rnm+1 fm1 , tai

rnm = qnm+1 rnm+1 + rnm+2 rnm+1 + rnm+2 fm1 + fm2 = fm .


Taigi teisinga nelygybe b fn+1 . Taiau savo ruotu Fibonaio skaiiai tenkina nelygybes 1+ 5 m , 2 = + 1. fm , = 2 I tikruju, nelygybes f0 0 , f1 1 yra akivaizdios. Jeigu teisingos nelygybes fm1 m1 , fm m , tai

fm+1 = fm + fm1 m + m1 = m1 ( + 1) = m1 2 = m+1 .


Matematines indukcijos metodu nelygybes Fibonaio skaiiams irodytos. Tada

n+1 fn+1 b,

n log b 1.

Jeigu skaiiui a urayti reikia N dvejetainiu skaitmenu, o vienam Euklido ingsniui atlikti reikalingu operaciju skaiiu vertinsime dydiu O(N 2 ), tai visam algoritmui reikalingu operaciju skaiiu galime ivertinti dydiu

O(n N 2 ) = O(log b N 2 ) = O(N 3 ).


Taigi bendrojo didiausiojo daliklio radimo algoritmas yra polinominis; i tikruju, vertinant operaciju skaiiu tiksliau, galima gauti iverti O(N 2 ). Skaiius , kuris padejo isprsti udavini, yra labai iymus: tai aukso pjuvio skaiius.

288

KODAI IR IFRAI

19.2. Apie iedus Zn


io skyrelio teiginiu atradejai sudaro rykiausi matematiku vaigdyn. Lyginius sukure Gausas, Fermat ir Euleris irode svarbias skaiiu teorijai (ir kriptograjai) teoremas ir, inoma, vel  Euklidas.

Jeigu sveikuju skaiiu a ir b skirtumas dalijasi i n, raome

a b (mod n).
Toki sryi vadiname lyginiu, skaitome: a lygsta b moduliu n. Toks sryis teisingas tada ir tik tada, kai, dalijant a ir b i n, gaunama ta pati liekana. Baigtiniams kunams skirtame skyrelyje suformuluotas teiginys apie paprasiausias lyginiu savybes: jei a b (mod n) ir c d (mod n), tai a + c b + d (mod n); jei a b (mod n) ir c yra sveikasis skaiius, tai ca cb (mod n); jeigu ca cb (mod n) ir (c, n) = 1, tai a b (mod n). Naudodamiesi iomis savybemis, galime atlikti veiksmus su lyginiais, t.y. i vienu lyginiu gauti kitus. Kiekvien lygini moduliu n, kurio abi puses sudarytos i skaiiu ar simboliu, naudojant sudeties ir daugybos veiksmus, galime interpretuoti kaip dalybos liekanu iedo Zn = {0, 1, . . . , n1} elementu sryi. Pakanka skaiius pakeisti ju dalybos liekanomis, o veiksmus  liekanu iedo veiksmais. Primename, kad iame iede apibretos tokios sudeties ir daugybos operacijos:

a +n b = a + b dalybos i n liekana, a n b = a b dalybos i n liekana.

Taip pat ir reikinius su iais veiksmais galime skaiiuoti naudodamiesi lyginiu ymeniu ir savybemis. Pavyzdiui, apskaiiuokime 53 9 76 :

53 76 25 5 (49)3 7 5 43 (1) 1 8 (mod 9).


Taigi 53 9 76 = 8. Daniausiai veiksmams liekanu iede ymeti vartosime iprastines skaiiu sudeties ir daugybos enklus. Kodavimo teorijoje svarbiausias veiksmas buvo iedo elementu sudetis ir daugyba, kriptograjoje, kaip netrukus pamatysime,  kelimas laipsniu, t.y. daugelio vienodu elementu daugyba. Kelimo laipsniu operacij iede Zn galime atlikti labai spariu kelimo kvadratu algoritmu. Panagrinekime skaitini pavyzdi. Tarkime, iede Z11

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

289

reikia apskaiiuoti 1031 , t.y. reikia rasti skaiiaus 100 . . . 0 su 31 nuliu dalybos i 11 liekan. Kas ims dalyti  praus. Skaiiuokime kitaip. Ura 31 dvejetaineje skaiiavimo sistemoje, gausime:

31 = 1+121 +122 +123 +124 ,


Dabar skaiiuojame

1031 = 101 102 (102 )2 ((102 )2 )2 (((102 )2 )2 )2 .

102 7 (mod 31), 182 14 (mod 31),


taigi

72 18 (mod 31), 142 10 (mod 31),

1031 10 7 18 14 10 25 (mod 31).

Jeigu n = p yra pirminis skaiius, tai iedas Zp yra kunas; ji paprastai ymedavome Fp . inome, kad kiekvienas nenulinis io kuno elementas a turi atvirktini, t.y. egzistuoja b Fp , paprastai ymimas a1 , kad

a n b = 1,
O kaipgi bendruoju atveju?

t.y. a n a1 = 1.

110 apibreimas.

Tegu n 1 yra naturalusis skaiius,

Z = {m : 1 m < n, (m, n) = 1}. n


Funkcij (n) = |Z |, apibret naturaliuju skaiiu aibeje, vadinsime Eulerio n funkcija. Eulerio funkcijos (n) reikme lygi maesniu u n ir tarpusavyje pirminiu su juo skaiiu kiekiui. Pavyzdiui,

(1) = (2) = 1, (3) = (4) = 2, . . .


Jeigu p yra pirminis, tai nesunku suvokti, kad

(p) = p 1,

(pm ) = pm pm1 .

(90)

O dabar imkimes atvirktiniu klausimo.

129 teorema. Kiekvienas Z elementas turi atvirktini. n


Jeigu a Z , tai n

a(n) 1 (mod n).

(91)

Irodymas. Tegu
Z = {a0 , a1 , . . . , a(n) }, n a0 = 1,

ir a Z . Pirmiausia reikia isitikinti, kad visi skaiiai n

a a0 , a a1 , . . . , a a(n)

(92)

290

KODAI IR IFRAI

atitinka skirtingus Z elementus, t.y. duoda skirtingas dalybos i n liekanas. n Padar prielaid, kad taip nera, tuoj pat gautume prietaravim. Taiau jeigu visi (92) atitinka skirtingus Z elementus, tai vienas atitinka a0 = 1. n Todel atsiras toks b Z , kad a n b = 1. n Taigi (92) yra tie patys elementai a0 , a1 , . . . , a(n) , tik kitaip persirikiav. Sudaugin juos visus ir pasinaudoj lyginiu savybe, gausime

a(n) a0 a1 a(n) a0 a1 a(n) (mod n),

a(n) 1 (mod n).

Dar keletas pastabu apie i teorem. I tikruju irodeme kiek daugiau negu teigeme. Irodeme, kad daugybos veiksmo atvilgiu aibe Z yra grupe. n Teiginys (91) skaiiu teorijoje vadinamas Eulerio teorema. Vienas jos atvejis nusipelno atskiro vardo. ir (a, p) = 1, tai

130 teorema. (Maoji Fermat teorema.) Jeigu p yra pirminis skaiius


ap1 1 (mod p).

Kriptograjai nepakanka inoti, kokie elementai turi atvirktinius, reikia moketi juos greitai surasti. Taiau greitas metodas jau yra! Tegu a Z , reikia rasti jo atvirktini. Kadangi (a, n) = 1, tai, pasinaun doj Euklido algoritmu, galime rasti sveikuosius skaiius x, y, kad butu

ax + ny = 1.
Taiau i ios lygybes iplaukia lyginys ax 1 (mod n). Tada x dalybos i n liekana yra a atvirktinis. Pavyzdiui, su n = 57, a = 10 i lygybes 1 = 57 3 + 10 (17) gauname

10 (17) 1 (mod 57),

10 40 1 (mod 57),

101 40 (mod 57).

Kitas budas surasti atvirktini  pasinaudoti Eulerio teorema: jei (a, n) = 1, tai a(n) 1 (mod n), a a(n)1 1 (mod n), taigi a1 a(n)1 (mod n). O dabar dar patyrinekime Eulerio funkcij. Kiekvien naturaluji skaiiu n galime urayti pirminiu skaiiu laipsniu sandauga:

n = p1 p2 pt , t 1 2

p1 < p2 < . . . < pt ,

ia pi yra pirminiai skaiiai. is teiginys vadinamas pagrindine aritmetikos teorema. Nors tokiu pavidalu jis suformuluotas gana neseniai, juo naudojosi ir Euklido laiku matematikai. inodami visus pirminius skaiiaus n daliklius, galime jais pasinaudoti ir urayti Eulerio funkcijos iraik.

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

291

dalikliai, tai

131 teorema. Jeigu p1 < p2 < . . . < pt yra visi pirminiai skaiiaus n
(n) = n 1 1 p1 1 1 p2 1 1 pt .
(93)

Irodymas. Paymekime A = {m : 1 < m n, (m, n) > 1}. Tada (n) = n |A|. Savo ruotu jei Ai = {m : 1 < m n, (pi , n) = pi }, tai A = t Ai . Taigi reikia apskaiiuoti, kiek skaiiu yra ioje aibiu sjungoje. i=1 Pasinaudokime kombinatorine pliuso-minuso taisykle:
t t

Ai =
i=1 i=1

|Ai |
1i1 <i2 t

|Ai1 Ai2 | + . . . + (1)t+1 |A1 A2 . . . At |.

Aibiu sankirtai Ai1 . . . Air priklauso tie ne didesni u n skaiiai, kurie dalijasi i pirminiu skaiiu sandaugos pi1 pi2 . . . pir . Tokiu skaiiu yra n/(pi1 pi2 . . . pir ). Taigi
t

n |A| = n
i=1

n + pi

ni1 <i2 t

n n . . . + (1)t . pi1 pi2 p1 p2 . . . pt

(94)

Belieka isiiureti ir isitikinti, kad reikiniai (93) ir (94) yra lygus. Pasinaudojus gautja Eulerio funkcijos iraika nesunku irodyti toki ios funkcijos savyb: t.y. (m, n) = 1, tai

132 teorema. Jeigu naturiniai skaiiai m, n yra tarpusavyje pirminiai,


(m n) = (m)(n).
(95)

Funkcijos, apibretos naturaliuju skaiiu aibeje ir turinios i savyb, vadinamos multiplikatyviomis. Taigi Eulerio funkcija yra multiplikatyvi.

19.3. Kvadratiniai lyginiai


tai tokia padetis: didiuliame ir sudetingu sryiu pilname realiuju skaiiu kune kvadratines lygtis sprsti galime greitai, o paprastame dalybos i skaiiaus liekanu kune greito budo nera.

Kvadratines lygtis jau prie kelis tukstanius metu sprende babilonieiu moksleiviai. Musu dienu moksleivius gelbsti diskriminantas: i ji paiurejus galima pasakyti, ar lygtis turi sprendiniu ir kokie jie. O mes panagrinekime kvadratines lygties

x2 + bx + c = 0
sprendim iede Zn , ia, inoma, b, c yra sveikieji skaiiai. Kitaip tariant, panagrinekime, su kokiomis x reikmemis lyginys

x2 + bx + c 0 (mod n)

(96)

292

KODAI IR IFRAI

yra teisingas. Jeigu pirminis p dalija n ir su kokia nors x reikme (96) yra teisingas, tai su ta paia reikme bus teisingas ir lyginys

x2 + bx + c 0 (mod p).

(97)

Taigi galima pradeti nuo kvadratiniu lygiu tyrinejimo kunuose Fp tikintis (ir pagristai!), kad, inagrinejus tokius atvejus, bus nesunku pereiti ir prie bendrojo. Tarkime, kad p > 2 yra pirminis, ir nagrinekime (97) lygini. Atlikime kelet paprastu pertvarkiu:

x2 + bx + c 0 (mod p), 4x2 + 2(2x)b + b2 b2 4c (mod p), (2x + b)2 b2 4c (mod p), y 2 D (mod p), y = 2x + b, D = b2 4c.
Taigi diskriminantas pasirodo ir ia. Jis lemia sprendiniu skaiiu, taiau kaip  nelengva pasakyti. Matome, kad svarbiausia inagrineti visu paprasiausio lyginio

x2 a (mod p) (a = 0)

(98)

atveji. inome, kad kune n-ojo laipsnio lygtis negali tureti daugiau kaip n sprendiniu. Musu atveju padetis tokia: jeigu sprendiniu yra  tai ju lygiai du. Ities, jeigu x0 tenkina lygini, tai ir x1 = p x0 tenkins. Kada (98) lyginys turi sprendini? Atsakyti i i klausim galima greitai, jeigu pasinaudosime gerais skaiiu teorijos irankiais. Tegu p yra pirminis skaiius. Legendre'o (Leandro) simboliu vadinama funkcija

111 apibreimas.
0, = 1, 1,

a p

jei a 0 (mod p), jei lyginys x2 a (mod p), turi sprendiniu, jei lyginys x2 a (mod p), neturi sprendiniu.

Atrodo, kokia nauda i tokio apibreimo? Ar jis nera tik paprastas triju atveju enklinimas skaiiais? Taiau su skaiiais galima atlikti veiksmus. O veikiant visada galima k nors pasiekti. iuo atveju veiksmu su Legendre'o simboliais efektyvum lemia geros ju savybes.

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

293

133 teorema. Su bet kokiu pirminiu skaiiumi p teisingos ios lygybes:


a2 = 1, p a a(p1)/2 (mod p), p 1 = (1)(p1)/2 , p ab a b = , p p p a + kp a = , p p 2 2 = (1)(p 1)/8 . p

Ir dar vienas teiginys, kuris padeda skaiiuoti Legendre'o simbolius. Tai Gauso desnis  vienas i paiu istabiausiu skaiiu teorijos teiginiu. lygybe

134 teorema. Su bet kokiais skirtingais pirminiais skaiiais p, q teisinga


p q q p = (1)(p1)(q1)/4 .

Kelios i suformuluotu simbolio savybiu visikai akivaizdios, kitu esmes lengvai neivelgsi. Irodymus galite susirasti skaiiu teorijos vadoveliuose. O dabar ibandykime Legendre'o simboliu skaiiavimo technik. Tarkime, mums reikia nustatyti, ar turi sprendiniu lyginys

x2 46 (mod 57).
Skaiiuokime naudodamiesi Legendre'o simbolio savybemis:

46 57

2 23 57

2 57

57 23

23 57 =

23 57 57 2 23 + 11 = 23 23 23 1 = = 1. 11 11

= (1) =

(231)(571) 4

11 23

= (1)

(111)(231) 4

Taigi lyginys sprendini turi. Kaip ji galima surasti? Tiesa yra tokia: greito metodo, tinkanio visiems pirminiams, nera! Taigi belieka perrinkti pretendentus, tikintis, kad vienas i dvieju sprendiniu ilgai nesislapstys. Tiesa, yra vienas atvejis, kai sprendini galima rasti skaiiavimais. Tegu pirminis skaiius p, dalijant i 4, duoda liekan 3, t.y. p 3 (mod 4). Jeigu lyginys x2 a (mod p) turi sprendiniu, tai vienas i ju yra p+1 x0 a 4 (mod p).

135 teorema.

Irodymas. Kadangi lyginys turi sprendiniu, tai i Legendre'o simbolio savybiu gauname
a p = 1, a
p1 2

a p

(mod p),

p1 2

1 (mod p).

294 Tada

KODAI IR IFRAI

x2 a 0

p+1 2

aa

p1 2

a (mod p).

Tai beveik viskas, k galima pasakyti apie kvadratiniu lyginiu sprendim pirminiu moduliu. Greito sprendimo budo tiesiog nera. O dabar panagrinekime sudetinio modulio atveji. Apsiribokime atveju, kai n = pq, ia p, q  du skirtingi pirminiai skaiiai. Surasti lyginio

x2 a (mod n)

(99)

sprendini reikia rasti toki x reikm v, kad v 2 a dalytusi i n. Taiau tada ir p bei q dalytu v 2 a, taigi reikme x = v butu abieju lyginiu

x2 a (mod p),

x2 a (mod q)

(100)

sprendinys. Kita vertus, jeigu rastume vien x reikm, tinkani abiem (100) lyginiams, ji butu ir (99) sprendinys. Taiau sprsdami (100) lyginius atskirai, vargu ar galime tiketis, kad gausime t pati skaiiu. Gautume, pavyzdiui, kad pirmajam lyginiui tinka visi skaiiai m, tenkinantys slyg m m1 (mod p), o antrajam  visi skaiiai, tenkinantys slyg m m2 (mod q). Taigi reikia skaiiaus, kuris tenkintu abi slygas! Isprsti i udavini galime pasinaudoj dar vienu labai senu, bet kriptograjai labai naudingu irankiu  kinikja liekanu teorema.

136 teorema. Tegu n1 , n2 , . . . , nt yra tarpusavyje pirminiai skaiiai, o m1 , m2 , . . . , mt  bet kokie sveikieji skaiiai. Tegu n = n1 n2 nt , o sveikieji skaiiai a1 , a2 , . . . , at tenkina slygas
ai
Sudarykime skaiiu

n 1 (mod ni ), ni

i = 1, 2, . . . , t.

M = m1 a1

n n n + m2 a2 + . . . + mt a t . n1 n2 nt

Tada is skaiius tenkina visus lyginius M mi (mod ni ), i = 1, 2, . . . , t. Irodymas. Isitikinkime, pavyzdiui, kad M m1 (mod n1 ). Kadangi visi demenys skaiiaus M iraikoje, iskyrus pirmji, dalijasi i n1 , tai

M m1 a1

n (mod n1 ). n1

n Taiau sandaug a1 n1 galime pakeisti vienetu, taigi M m1 (mod n1 ). n inoma, pastebejote, kad skaiiai ai yra skaiiu ni atvirktiniai moduliu ni . Kaip juos rasti, jau inome. O dabar sugrikime prie lyginiu (99), (100). Tarkime, pirmojo lyginio sprendiniai yra x1 , o antrojo  x2 . Tada surad skaiius a, b, kad

aq 1 (mod p),

bp 1 (mod q),

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI galesime pagal kinu liekanu teorem sudaryti ir (99) sprendinius

295

x = x1 aq x2 bp.
Taigi gauname net keturis sprendinius. Taisykle sprendiniu nera daugiau nei lygties laipsnis galioja tik kunuose!

19.4. Naturiniu skaiiu skaidymas


Skaidyti naturaliuosius skaiius pirminiais daugikliais  sunkus skaiiavimo udavinys. Taiau tai nereikia, kad skaidyti kiekvien dideli skaiiu yra sunku.

Tarkime, n yra didelis naturalusis skaiius. Udavinys  surasti jo pirminius daliklius. Pirmiausia, kas ateina i galv  bandyti ji dalyti i pirminiu, irikiuotu didejimo tvarka: p1 < p2 . . . Jeigu n yra sudetinis skaiius, tai n = n1 n2 ir vienas i skaiiu n1 , n2 yra ne didesnis u n. Taigi iekant pirminiu dalikliu tokiu elementarios perrankos budu, tikrai neteks atlikti daugiau kaip n perranku. Taiau lyginant su dydiu log2 n, nusakaniu bitu skaiiu, reikaling n urayti, perranku gali tekti atlikti labai daug. Todel toks algoritmas nera efektyvus. Kai nera visiems atvejams tinkaniu efektyviu sprendimo taisykliu, kliautis atsitiktine sekme nera blogas sprendimas. Panagrinekime Pollardo sugalvot skaiiu skaidymo algoritm, kuriame sekme vaidina svarbu vaidmeni. Pollardo metodas Tarkime, n yra naturalusis skaiius, o p  mums neinomas jo pirminis daliklis. Atsitiktinai pasirinkime skaiius s1 , s2 , . . . , sm . Kai m yra pakankamai didelis skaiius, tiketina, kad atsiras du skaiiai si , sj , kad si sj (mod p), taiau si sj mod n. Tada skirtumas si sj dalysis i p, bet nesidalys i n. Bendrasis didiausiasis skirtumo ir n daliklis n1 = (si sj , n) bus nelygus vienam, taigi tokiu atveju gautume skaidini n = n1 n2 ir toliau galetume iekoti maesniu skaiiu n1 , n2 pirminiu dalikliu. Taiau ar toks budas nera toks pat neefektyvus kaip ir tiesiogine perranka? I tikruju, toks jis ir butu, jeigu skaiiuotume visus bendruosius didiausiuosius daliklius (si sj , n). Viena gera ideja paveria ji madaug dukart spartesniu u tiesiogin dalikliu perrank. Visu pirma tarkime, kad atsitiktiniams skaiiams parinkti sudareme tam tikr funkcij f : Zn Zn , kurios reikmes isibarsiusios aibeje Zn gana atsitiktinai. Be to, tarkime, i funkcija turi savyb: bet kokiam naturaliajam a i u v (mod a) seka f (u) f (v) (mod a). i savyb turi, pavyzdiui, daugianariai. Daugelis auktesnio laipsnio daugianariu f neblogai tinka iam metodui. Atsitiktinai pasirink s0 Zn , kitas reikmes skaiiuokime taip:

s1 f (s0 ) (mod n), s2 f (s1 ) (mod n), . . . , sm f (sm1 ) (mod n).

296

KODAI IR IFRAI

Tarkime su skaiiais 0 i < j teisingas sryis si sj (mod p), ia p yra mums neinomas pirminis n daliklis. Paymekime k = j i, tada j = i + k, si si+k (mod n). Panagrinekime toki teisingu lyginiu lentel:

f (si ) f (si+k ) (mod p) f (si+1 ) f (si+1+k ) (mod p) ...

arba si+1 si+1+k (mod p) arba si+2 si+2+k (mod p) ... ... si+k si+2k (mod p)

f (si+k1 ) f (si+k+k1 ) (mod p) arba

Taiau i lyginiu si si+k (mod p), si+k si+2k (mod p) gauname, kad si si+2k (mod p). Samprotaudami toliau, gautume, kad lyginys si si+tk (mod p) teisingas su bet kokiu naturaliuoju t. Jeigu yra toks t, kad tk = i, tai tada turime teising lygini si s2i (mod p). Taigi daliklio paiek galime atlikti taip: skaiiuojame si ir s2i ir d = (s2i si , n), kol gauname d > 1. Skaiiavimus organizuoti patogu taip: 1. parenkame funkcij f : Zn Zn ir atsitiktini r Zn ; 2. priskiriame reikmes a = r, b = r; 3. skaiiuojame a = f (a), b = f (f (b)); 4. randame d = (b a, n); jei d = 0, n  rastas netrivialus n daliklis; jei d = 1, kartojame 3) ingsni. Treiajame ingsnyje skaiiuojami dydiai si ir s2i . Ibandykime i metod, pavyzdiui, su n = 34571317791. Pasirinkta funkcija f (x) x2 + 732 (mod n). Keliu skaiiavimo ingsniu rezultatai pateikti lenteleje

a 142107

b 20194400180

(b a, n) 1 3 1 141

20194400180 21542042492 17674479849 10362019826 21542042492 16189403312

Jau antrajame ingsnyje suradome dalikli 3. inoma, kad skaiius dalijasi i 3, galejome nustatyti i karto, naudodamiesi dalybos i 3 poymiu: skaitmenu suma dalijasi i 3. Taigi

34571317791 = 141 34571317791 = 3 47 34571317791.

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

297

Jeigu bandytume skaidyti skaiiu 34571317791  nieko nelaimetume. is skaiius yra pirminis. Pollardo p 1 metodas Pollardas sugalvojo dar vien skaiiu skaidymo metod, kuriuo naudojantis kartais pirmini dalikli galima rasti labai greitai. Tegu m, B yra du naturiniai skaiiai. Skaiiu m vadinsime B -glodiu, jeigu visi jo pirminiai dalikliai yra ne didesni u B. Pollardo p 1 metodas skaiiui n skaidyti yra efektyvus tada, kai n turi pirmini dalikli, kuriam p 1 yra B -glodus su nedidele B reikme. Kitaip tariant  kai bent vienam pirminiam dalikliui p visi skaiiaus p 1 pirminiai dalikliai yra mai. Todel is Pollardo metodas ir vadinamas p 1 metodu. Tarkime, n yra skaiius, kuri reikia iskaidyti, o p  mums neinomas pirminis daliklis. Maoji Fermat teorema teigia: jei skaiius a nesidalija i p, tai ap1 1 (mod p). Taiau tada ir su bet kokiu naturaliuoju skaiiumi t lygybe at(p1) 1 (mod p) taip pat teisinga. Metodo esme yra tokia: darant prielaid, kad p 1 sudarytas i mau pirminiu dalikliu, galima pabandyti sukonstruoti koki nors p1 kartotini N = t(p1). Tada butu teisinga lygybe aN 1 (mod p), t.y. aN 1 dalytusi i p. Kadangi ir n dalijasi i p, tai galetume Euklido algoritmu suskaiiuoti (aN 1, n) = d ir rasti netrivialu n dalikli. inoma, skaiius aN 1 gali buti tiesiog milinikas, taiau jo reikme skaiiuojant bendrji didiausiji dalikli visai nereikalinga, pakanka laipsnius skaiiuoti moduliu n. Parinkti skaiiu N galima ivairiais budais. Pavyzdiui, galima pasirinkus B apibreti N = BM K(2, 3, . . . , B), ia BM K(a1 , a2 , . . . , ak ) ymi bendrji maiausi skaiiu kartotini. io didelio skaiiaus reikm irgi nebutina skaiiuoti i anksto, pakanka surasti visus pirminius skaiius q, kurie yra maesni u B ir reikm aN apskaiiuoti palaipsniui. tai tokio algoritmo apraymas: 1. pasirenkamas skaiius a0 = a ir surandami visi pirminiai skaiiai q1 , q2 , . . . , qh , ne didesni u B; 2. atliekama h algoritmo ingsniu, i-ajame ingsnyje skaiiuojama

112 apibreimas.

ri =

log B , log qi

ai ari (mod n); i1

3. skaiiuojama d = (ai 1, n); jeigu d = 1, n  skaiiaus n daliklis rastas. Pabandykime iskaidyti iuo metodu gana dideli naturaluji skaiiu

n = 406222941815702227.
Galima i pradiu pasirinkti nelabai dideli B, o tada, jeigu nepasiseka, skaiiuoti su didesniu. Imkime, pavyzdiui, B = 20. is skaiius yra nedidelis,

298

KODAI IR IFRAI

todel galime visu skaiiu iki B bendrji maiausiji kartotini suskaiiuoti ir tiesiogiai: N = 24 32 5 7 11 13 17 19 = 232792560. Imkime, pavyzdiui, a = 2; skaiiuodami gausime:

2232792560 327811457795757939 (mod n), (327811457795757939 1, n) = 8893, n = 8893 45678954437839.


inoma, tokia greita sekme nusiypsos retai. ikart pasiseke todel, kad i anksto buvo parinktas geras skaiius. Taigi naturaliuju skaiiu skaidymo udavinys ne visada yra sudetingas. Jeigu reikalingas sudetinis skaiius, kuri butu sunku iskaidyti dauginamaisiais, jo pirminiai dalikliai, sumainti vienetu, neturi buti itin glodus. Efektyviausi iuo metu inomi skaiiu skaidymo metodai naudoja skaiiu lauku ir elipsiniu kreiviu savybes. Ju esm paaikinti butu sudetingiau nei nagrinetuju paprastu, bet danai greitai duodaniu rezultat Pollardo metodu.

19.5. Generuojantys elementai ir diskretieji logaritmai


Skaiiuodami su realiaisiais skaiiais, danai naudojames apytikslemis reikmemis. Taiau baigtinese grupese apytikslis skaiiavimas tiesiog neturi prasmes, o paprastai formuluojami udaviniai neturi paprastu ir efektyviu sprendimu. Logaritmo skaiiavimas baigtinese grupese  tokio udavinio pavyzdys.

Tegu G yra baigtine grupe, joje apibreta elementu daugyba. Jeigu elementus a, b G sieja lygybe ax = b, ia x yra sveikasis skaiius, tai ji pagal realiuju skaiiu pavyzdi naturalu pavadinti elemento b logaritmu pagrindu a. Taiau verta toki apibreim patikslinti: butu gerai, kad logaritmas butu apibretas vienareikmikai ir nereiktu papildomai nagrineti, ar logaritmas duotuoju pagrindu egzistuoja, ar ne.

113 apibreimas. Tegu G yra baigtine cikline grupe, o g G jos generuojantis elementas, t.y. toks elementas, kad
G = {g 0 , g 1 , . . . , g N 1 },
ia N = |G| yra grupes eile, t.y. jos elementu skaiius. Elemento y diskreiuoju logaritmu pagrindu g vadinsime aibes ZN 1 skaiiu x, su kuriuo y = g x . Logaritm ymesime x = logg y.

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

299

Taigi diskreiuosius logaritmus apibreeme tik ciklinese grupese, ju pagrindais gali buti tik generuojantys elementai. Ne visos baigtines grupes yra ciklines, taiau ir ciklines grupes ne retenybe. Pavyzdiui, bet kokio baigtinio kuno Fpm nenuliniu elementu aibe Fm daugybos atvilgiu sup daro ciklin grup. Daniausiai kriptograjos reikmems naudosime grup F = {1, 2, . . . , p 1}. p Diskreiojo logaritmo pagrindas turi buti generuojantis elementas. Kaip surasti bent vien? Kadangi tu generuojaniu elementu yra pakankamai daug, tai iekojimas pasikliaujant sekme nera bloga ieitis. O nustatyti, ar pasirinktas elementas yra generuojantis, galime naudodamiesi tokiu kriterijumi: tegu N yra ciklines grupes G eile, g G jos elementas; jei g d = 1 su visais netrivialiais N dalikliais d, tai g yra generuojantis elementas. Panagrinekime, pavyzdiui, atveji G = F7 , g = 2. Kadangi grupes eile N = 6, tai pakanka patikrinti, ar nei vienas i laipsniu 22 , 23 nelygus vienetui. Kadangi 23 1 (mod 7), tai g = 2 nera generuojantis elementas. Taiau h = 3 tenkina i kriteriju, taigi yra generuojantis elementas. Diskretieji logaritmai turi panaias savybes kaip ir logaritmai realiuju skaiiu aibeje. Taiau yra vienas esminis skirtumas: apytikslis diskreiuju logaritmu skaiiavimas neturi prasmes, o efektyviu budu surasti tikslias reikmes kol kas niekas nesugalvojo.

137 teorema. Tegu G yra cikline grupe, N  jos eile, o g  generuojantis elementas. Tada
1. su visais x, y G teisinga lygybe logg (xy) logg x+logg y (mod N ); 2. su visais x G ir su visais sveikaisiais k teisinga lygybe logg xk k logg x (mod N ). Teiginiai beveik akivaizdus, panagrinekime pirmji. Tegu u = logg x, v = logg y, w = logg (x y), tada

x = g u , y = g v , x y = g u g v = g u+v = g w .
Taiau i laipsniu g a = g b lygybes iplaukia a b (mod N ), taigi u + v w (mod N ). Efektyviu metodu diskretiesiems logaritmams skaiiuoti nera. Visada galima iekoti diskreiojo logaritmo reikmes perrankos budu: tikrinti galimas reikmes, kol pasitaikys tikroji. Yra ir iek tiek iradingesniu metodu, kurie, nors ir negarantuoja greitos sekmes, kartais padeda rasti diskretuji logaritm gana greitai. iuo metodu iekoma elementu i F diskreiuju logaritmu pagrindu g, p ia p  pirminis skaiius. Bet kurio elemento y F diskretusis logaritmas p

Shankso metodas

300

KODAI IR IFRAI

x yra skaiius, ne didesnis u p 1. Paymekime m = [ p 1] + 1; padalij x i m su liekana, gautume x = im + j,


Taigi

0 i < m, 0 j < m. g mi = yg j .

(101)

g mi+j = y,

ia lygybe ir remiasi algoritmo ideja: galima i anksto apskaiiuoti reikmes ir susidaryti poru i, g mi , i = 0, 1, . . . , m 1, lentel; tada sudaryti kit lentel i poru j, yg j ir iekoti abiejose lentelese irau su vienodomis antrosiomis komponentemis, t.y. lygybes g mi = yg j . Surad atitinkamus i ir j, pagal (101) galime apskaiiuoti diskreiojo logaritmo reikm. Blogiausiu atveju reiktu madaug p skaiiavimu; iekant logaritmo tiesiogines perrankos budu, didiausias tikrinimu skaiius, kurio gali prireikti, yra madaug p. i metod dar kartais vadina maylio-milino ingsniu metodu (baby-stepgiant-step method). Maais ingsneliais sudarome lenteles, randame i, j ir, eng dideli ingsni, apskaiiuojame diskreiojo logaritmo reikm. Pavyzdys. Apskaiiuokime skaiiu y1 = 13, y2 = 17, y1 , y2 F diskrei23 uosius logaritmus pagrindu g = 5. Musu atveju m = 5; taigi lentelese bus tik po penkias poras.

i, j = g mi y1 g j 0 1 2 3 4
I lenteles matome

y2 g j 17 8 20 4 10

1 20 9 19 12

13 21 18 22 9

g 2m = y1 g 4 ,
taigi

g 1m = y2 g 2 , logg y2 = m + 2 = 7.

logg y1 = 2m + 4 = 14,

Pollardas, kurio naturaliuju skaiiu skaidymo logaritmus nagrinejome ankstesniame skyriuje, sugalvojo ir du diskreiuju logaritmu skaiiavimo metodus. Vienas vadinamas -metodu, kitas  -metodu. Panagrinesime pirmji, kuris primena metod skaiiams skaidyti. Pollardo -metodas Reikia surasti skaiiaus y F diskretuji logaritm pagrindu g, ia g  p generuojantis elementas. Metodo esme tokia: vienas po kito skaiiuojami

19. SKAIIU TEORIJOS SVOKOS IR ALGORITMAI

301

elementai xi+1 = f (xi ), xi F , kad su atitinkamais ai , bi butu teisinga p lygybe

xi y ai g bi (mod p),
ia skaiiai ai , bi irgi skaiiuojami vienas po kito. Jeigu gautume, kad su kokiais nors i, j teisinga lygybe

xi xj (mod p),

y ai g bi y aj g bj (mod p),

y ai aj g bj bi (mod p),

tai, paymej x = logg y, gautume lygini

(ai aj )x bj bi (mod p)
reikmei x rasti. Kaip ir naudojant panau skaiiu skaidymo metod, daugelio tikrinimu xi xj (mod p) galima ivengti skaiiuojant i karto xk ir x2k bei tikintis, kad jie sutaps:

xk+1 = f (xk ),

x2k+2 = f (f (xk )).

Jeigu xi = x2i , tai gautume toki lygyb:

(ai a2i )x b2i bi (mod p).


Belieka apibreti seku xi , ai , bi skaiiavimo taisykles. tai jos: x0 = 1, a0 = b0 = 0,

xi+1

yxi (mod p), = x2 (mod p), i gxi (mod p),

jei 0 < xi < p/3 jei p/3 < xi < 2p/3 jei 2p/3 < xi < p; jei 0 < xi < p/3 jei p/3 < xi < 2p/3 jei 2p/3 < xi < p; jei 0 < xi < p/3 jei p/3 < xi < 2p/3 jei 2p/3 < xi < p.

ai+1

1 + ai (mod p 1), = 2ai (mod p 1), ai (mod p 1), bi (mod p 1), = 2bi (mod p 1), 1 + bi (mod p 1),

bi+1

Lyginius xi y ai g bi (mod p) patikrinti nesudetinga. Pavyzdys. Tegu p = 23, tada g = 5 yra generuojantis elementas. Pabandykime Pollardo -metodu surasti x = logg y, y = 18. tai skaiiavimu

302 eiga:

KODAI IR IFRAI

i 0

xi 1

ai bi x2i a2i b2i 0 1 1 1 2 0 0 1 2 4 1 21 13 21 8 0 1 1 4 8 0 1 2 9 20

1 18 2 21 3 13 4 8

Taigi jau ketvirtajame ingsnyje pasiseke gauti lygyb x4 = x8 . Dabar galime iekoti ir logaritmo:

y 2 g 4 y 8 g 20 (mod 23), 3x 8 (mod 11),

y 6 g 16 (mod 23),

6x 16 (mod 22),

3x 3 (mod 11),

x 1 (mod 11).

Gauname du lyginio 6x 16 (mod 22) sprendinius: x = 1 ir x = 1 + 11 = 12. Antroji reikme ir yra diskretusis logaritmas: log5 18 = 12. Taiau ne visada Pollardo metodo procesas baigiasi taip sekmingai. Pavyzdiui, skaiiuodami analogikai su y = 14, gautume:

i 0

xi 1

ai bi x2i a2i b2i 0 1 2 4 5 0 0 0 0 0 1 12 6 15 15 0 2 4 5 5 0 0 0 0 0

1 14 1 12 2 6

3 15

Taigi gavome, kad sutampa ne tik xi = x2i , bet ir ai = a2i , bi = b2i . I to mums nera jokios naudos. Taiau galime pakartoti Pollardo algoritm su kita pradine x0 reikme. Pavyzdiui, imdami x0 = 3, jau antrajame ingsnyje gauname: x2 = x4 , a2 = b2 = 1, a4 = b4 = 2, ir logaritm randame i lyginio yg y 2 g 2 (mod 23), arba x 1 (mod 22), x = 21.

20 Vieojo rakto kriptosistemos


Jeigu nera saugaus budo perduoti raktams, simetrines kriptosistemos naudojimas ryiui apsaugoti tiesiog neimanomas. Kai didiuliu informacijos srautu judejimas kompiuteriniais tinklais tapo kasdienybe, saugius ryio kanalus

20. VIEOJO RAKTO KRIPTOSISTEMOS

303

teko tiesiog umirti. Tiesa, diplomatinis bagaas egzistuoja ir dabar, taiau dauguma i musu nesame nei diplomatai, nei ruoiames jais tapti. Taigi kompiuteriu amius ikele kriptograjai kone neimanom iuki: reikia ifruoti, bet saugiai perduoti raktu neimanoma! Galime prisiminti, kaip buvo atsakyta i klausim: ar galima palaikyti labai patikim ryi nepatikimu kanalu, turint tik ribotus iteklius? C. Shannonas irode, kad tai imanoma. Teigiamai atsakyta ir i klausim apie ifravim, kuriam nebutini saugus raktu perdavimo budai. Naujsias kompiuteriu amiaus kriptograjos kryptis 1976 metais pirmieji nurode W. Die ir M. Hellman19 . Ideja labai paprasta: kadangi neimanoma sukurti tokios kriptosistemos, kurios ifravimui ir deifravimui skirti raktai butu nesusij, tai reikia padaryti bent taip, kad, norint i deifravimo rakto nustatyti ifravimui skirt rakt, tektu sugaiti tiek laiko, kad moniu pasaulyje jis prilygtu kone aminybei. Nereikia netgi aminybes, pakanka, kad tokiam darbui prireiktu laiko, per kuri ir naudojamas raktas butu pakeistas, ir uifruotas praneimas taptu nebesvarbus. Tada ifravimui skirt rakt galima butu paskelbti vieai, nebijant, kad i jo bus greitai nustatytas deifravimo raktas. Todel tokia ideologija pagristos kriptosistemos ir vadinamos vieojo rakto kriptosistemomis. tai tokio vieo, bet saugaus paskelbimo pavyzdys. Tarkime, sugalvojau kriptosistem, kurioje ifruojama naudojant rakt

ke =

1173908528796953165066664959903583199389821389874079 901878483399279250664089454410631078630298707184023,

o deifravimo raktas  maesnysis skaiiaus ke pirminis daliklis. Teks gerokai pasidarbuoti jusu programoms, kol nustatysite, kad

kd = 100000000000000000000000000000000000000000000000151.
Neilgai trukus po Die ir Hellmano ideju paskelbimo atsirado ir pirmosios vieojo rakto kriptosistemos. Jas sukure R. Merkle ir M. Hellmanas, o taip pat triju autoriu grupe: R. Rivestas, A. Shamiras ir L. Adlemanas. Jie laikomi vieojo rakto kriptograjos pionieriais. Taiau buti laikomam pirmuoju  tai dar ne juo buti. Visai neseniai paaikejo, kad vieojo rakto kriptosistemu principai buvo sukurti madaug deimtmeiu anksiau. Ju autoriai  Jungtines Karalystes vyriausybines organizacijos darbuotojai Jamesas Ellisas, Cliordas Cocksas ir Malcolmas Williamsonas. Taiau ju darbai buvo islaptinti, todel jie galejo tik i alies stebeti, kaip laisvi akademinio sluoksnio mones pletoja naujuju laiku kriptograj.
19 W. Die, M. Hellman. New Directions in Cryptography. IEEE Transactions on Information Theory, vol. IT-22, Nov. 1976, p. 644654.

304

KODAI IR IFRAI

20.1. Kuprines ir ifrai


R. Merkle ir M. Hellmanas sukure vieojo rakto kriptosistem, kuriai prigijo kuprines vardas20 . J verta panagrineti del keliu prieasiu: viena vertus tai pirmoji vieojo rakto kriptosistema, antra  j labai paprasta paaikinti, treia  tai kriptosistemos, kuri buvo iveikta pasitelkus ne didiulius skaiiavimo iteklius, bet matematines idejas, pavyzdys.

Kuprines udavinys formuluojamas taip: ID: naturaliuju skaiiu seka W = {w1 , w2 , . . . , wn } ir skaiius v. U: rasti skaiius xi {0, 1}, kad

v = x1 w1 + x2 w2 + . . . + xn wn ,
arba nustatyti, kad tokiu skaiiu nera. i problema yra NP pilna, taigi kai ivesties duomenu (svoriu) yra daug, j sprsti sudetinga. Taiau kai kuprines svoriai wi turi specialiu savybiu, kuprines udavinys irgi gali buti greitai sprendiamas.

114 apibreimas. Sakysime, kad skaiiai w1 , w2 , . . . , wn sudaro spariai didejani sek, jei visiems i > 1 teisinga nelygybe
w1 + w2 + . . . + wi1 < wi .

138 teorema. Jei kuprines svoriai W = {w1 , w2 , . . . , wn } sudaro spariai didejani sek, tai kuprines udavinys sprendiamas polinominiu algoritmu. Jeigu skaiiu v galima ireikti sistemos W svoriais, tai tokia iraika yra vienintele. Irodymas. Tegu v  naturalusis skaiius. Iekosime jo iraikos
v = x1 w1 + x2 w2 + . . . + xn wn , xi {0, 1}.

Pirmiausia reikia patikrinti, ar v wn . Jeigu i nelygybe teisinga, tai svori wn butinai teks itraukti i sum, t. y. xn = 1. Jeigu neteisinga, tai xn = 0. Tada reikia lyginti skaiiu v xn wn su wn1 ir nustatyti xn1 reikm. Matome, kad skaiiu xj reikmes yra nustatomos vienareikmikai; taigi jei iraika egzistuoja, tai ji vienintele. Udavinio sprendimo algoritm galima urayti taip: 1. w := v, j := n; 2. jei w wj , tai xj = 1; jei w < wj , tai xj = 0; w := w xj wj ; j := j 1; 3. jei w = 0, tai iraika rasta; jei w = 0, j = 0, iraika neegzistuoja; kitais atvejais reikia kartoti 2 ingsni.
20 R. C. Merkle, M. Hellman. Hiding Information and Signatures in Trapdoor Knapsacks. IEEE Transactions on Information Theory, v. 24, n. 5, 1978, p. 525530.

20. VIEOJO RAKTO KRIPTOSISTEMOS

305

Skaiiavim sudaro ne daugiau kaip n ingsniu. Galime tarti, kad vienam ingsniui atlikti reikia O(|v|) operaciju su bitais, ia |v| ymi v uraymui reikalingu bitu kieki. Tada bendras operaciju skaiius bus

O(n|v|) = O((|w1 | + . . . + |wn |)|v|).


Taigi algoritmas yra polinominis. Turint svoriu sistem W = {w1 , w2 , . . . , wn }, galima taip ifruoti nuliuvienetu blokus:

x1 x2 . . . xn c = x1 w1 + x2 w2 + . . . + xn wn .
Taiau tenka pasukti galv del dvieju dalyku. Kaip parinkti svorius, kad dviem skirtingiems blokams visada gautume du skirtingus skaiius c? Kaip deifruoti c, t. y. kaip sprsti kuprines udavini, kad jis butu sunkus kriptoanalitikui ir lengvas teisetam ifro gavejui? Jei naudosime spariai augani svoriu sistem, tiek ifravimo, tiek deifravimo veiksmai bus atliekami spariai, taiau ir kriptoanalitikas, ir teisetas gavejas tures vienodas galimybes. Vien i sprendimo budu 1976 metais pasiule Merkle ir Hellmanas. Tegu W = {w1 , w2 , . . . , wn } yra spariai didejanti svoriu sistema, p  skaiius, didesnis u visu svoriu sum (nebutinai pirminis):

p > w1 + w2 + . . . + wn ,

(102)

s, t  du tarpusavyje pirminiai su p skaiiai, tenkinantys slyg st 1 (mod p). Vien i iu skaiiu galime parinkti laisvai, o kit surasti pasinaudoj Euklido algoritmu. Algio privatuji (slaptji) rakt sudaro svoriu sistema W ir skaiius s, taigi Kp =< W, s >. Vieasis raktas bus svoriu sistema V = {v1 , v2 , . . . , vn }, vi wi t (mod p), Kv = V .

i svoriu sistema nebera spariai didejanti, taigi galime tiketis, kad paprasto algoritmo kuprines udaviniui sprsti nera. Praneimas M = m1 m2 . . . mn {0, 1}n bus ifruojamas taip:

C = e(M |Kv ) = m1 v1 + m2 v2 + . . . + mn vn .
Taigi ifras yra skaiius, ne didesnis u n(p 1). Kaip A gali deifruoti C ? Visu pirma jis turi suskaiiuoti

C1 Cs

m1 sv1 + m2 sv2 + . . . + mn svn m1 w1 + m2 w2 + . . . + mn wn (mod p).

(102) slyga garantuoja, kad skirtingiems praneimams M skaiiai C1 irgi bus skirtingi. Kad surastu praneim M, Algis turi sprsti kuprines

306

KODAI IR IFRAI

udavini su spariai didejaniu svoriu sistema W ir skaiiumi C1 . Jau inome, kad toks udavinys sprendiamas polinominiu algoritmu. Deja, i paprasta ir elegantika kriptosistema turi dideli trukum. Pasirode, kad i vieojo rakto svoriu sistemos V, pasinaudojus tam tikromis matematinemis idejomis imanoma greitai rasti privatuji rakt, t. y. spariai didejani svoriu sistem. Taigi i kriptosistema nera saugi. Buvo sugalvota ivairiu kitu kuprines kriptosistemos variantu. Taiau ir jie vienas po kito buvo iveikti. Kuprines tipo kriptosistemu ir ju analizes apvalga yra pateikta straipsnyje21 .

Kuprines kriptosistema
Praneimu aibe M = {0, 1}n , ifru aibe C N. Privatusis raktas: Kp = W, s , ia W = w1 , w2 , . . . , wn  spariai didejanti svoriu sistema; w1 + w2 + . . . + wn < p, (s, p) = 1.

Vieasis raktas: Kv = v1 , v2 , . . . , vn , vi wi s1 (mod p). ifravimas: C = e(m1 m2 . . . mn |Kv ) = m1 v1 + . . . + mn vn . Deifravimas: C1 Cs (mod p), C1 = m1 w1 + . . . + mn wn ,
m1 . . . mn = d(C|Kp ).

20.2. RSA
i triju autoriu  R. Rivesto, A. Shamiro ir L. Adlemano sukurta vieojo rakto kriptosistema yra pati populiariausia. Ja naudojamasi jau daugiau kaip dvideimt metu. Dvideimt metu trunkantys jos tyrinejimai neatskleide esminiu saugumo spragu.

ioje kriptosistemoje ir praneimai, ir ju ifrai yra tos paios aibes skaiiai. Raktu parinkimas. Ryio dalyvis A pasirenka du pirminius skaiius p, q ir sudaugina juos: n = p q. Dar reikia pasirinkti naturaluji skaiiu e = eA , kad jis butu tarpusayyje pirminis su (n) = (p 1)(q 1), t. y. (e, (p 1)(q 1)) = 1. Naudojantis Euklido algoritmu, reikia surasti skaiiu d = dA , kad butu e d 1 (mod (p 1)(q 1)). Dabar jau galima sudaryti raktus: vieji Kv = e, n ir privatuji Kp = d . Skaiius p, q geriausia i viso itrinti. Ju nebeprireiks, taiau jeigu jie taptu inomi kriptoanalitikui Z, jis surastu ir privatuji rakt.
Andrew M. Odlyzko. The Rise and Fall of Knapsack Cryptosystems. In: Cryptology and Computational Number Theory, Proceedings of Symposia in Applied Mathematics, vol. 42. American Mathematics Society, Providence, RI, 1990, p. 7588. http://www.research.att.com/ amo/doc/arch/knapsack.survey.ps
21

20. VIEOJO RAKTO KRIPTOSISTEMOS

307

ifravimas. Praneimai, kuriuos bus galima siusti A, yra aibes M = {1, 2, . . . , n} skaiiai. ifravimas apibreiamas lygybe:
C = e(M |Kv ) M e (mod n).
imo:

Deifravimas. Deifravimo algoritmas visikai toks pat kaip ir ifravd(C|Kp ) C d (mod n).

Isitikinkime, kad deifruojant visada gaunama C d M (mod n). Kadangi n = pq, tai pakanka isitikinti, kad C d M (mod p), C d M (mod q). Jei M 0 (mod p), tai akivaizdu, kad C 0 (mod p) ir

C d 0 M (mod p).
Tegu (M, p) = 1. Tada

C M ed M 1+t(p1)(q1) M (M p1 )q1 (mod p).


Taiau pagal Fermat teorem M p1 1 (mod p), taigi C d M (mod p). Aiku, kad analogiki samprotavimai tinka ir skaiiui q. Kriptosistemos saugumas remiasi tuo, kad Z, noredamas surasti privatuji rakt d, turi sprsti lygini e d 1 (mod (p 1)(q 1)). Taiau tam reikia inoti (p 1)(q 1). Kad i skaiiu surastu, Z turi iskaidyti n pirminiais daugikliais. Tai yra sunkus skaiiavimo udavinys. Taigi kol efektyvus dideliu pirminiu skaiiu skaidymo pirminiais daugikliais algoritmas nera inomas, tol RSA kriptosistema yra saugi. Gali buti, kad RSA galima iveikti ir be greito naturiniu skaiiu skaidymo algoritmo, taiau to niekas kol kas neino.

RSA kriptosistema
Praneimu ir ifru aibes M = C = Zn , n = pq, skaiiai p, q yra pirminiai.

Privatusis raktas: Kp = d , (d, (n)) = 1, (n) = (p 1)(q 1). Vieasis raktas: Kv = n, e , ed 1 (mod (n)). ifravimas: C = e(M |Kv ) M e (mod n). Deifravimas: M = d(C|Kp ) C d (mod n).
Norint RSA kriptosistema ifruoti, pavyzdiui, lietuvikus tekstus, reikia susitarti, kaip jie bus veriami skaiiais. Galima, pavyzdiui, raides interpretuoti kaip skaiiavimo sistemos su pagrindu N = 33 skaitmenis, o tarp tarp odiu ymeti nuliu:

308

KODAI IR IFRAI

F T

G U

H U

I U

I V

Y Z

1
K

2
L

3
M

4
N

5
O

6
P

7
R

8
S

10 11 12 13 14 15 16

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Tada kiekvien odi galesime urayti skaiiumi, pavyzdiui,

KN Y GA = 17 334 + 20 333 + 15 332 + 11 33 + 1 = 20896096.


Galima ilg tekst skaidyti sakiniais ir pastaruosius keisti skaiiais. Galima tiesiog versti tekst dvejetainiu simboliu srautu, pastarji skaidyti blokais ir interpretuoti juos kaip naturaliuju skaiiu dvejetaines iraikas.

20.3. RSA saugumas


Keletas paprastu RSA kriptosistemos ataku, kuriu nesudetinga ivengti.

Jau minejome, kad esminiu RSA kriptosistemos saugumo spragu kol kas neaptikta. Taiau neatsargiai ja naudojantis, kriptoanalitikas gali igyti galimyb surasti privatuji rakt. Pavyzdiui, jei praneimas M nera tarpusavyje pirminis su n, tai jo ifras C irgi tures su n netrivialu bendr dalikli (bent vien i skaiiu p, q ) ir ji galima suskaiiuoti Euklido algoritmu. Tiesa, tikimybe, kad praneimas bus p arba q kartotinis, labai nedidele, viso labo tik 1 1 1 + . p q pq Reikia iek tiek atsargumo parenkant pirminius skaiius p, q. Tarkime, pavyzdiui, A pavyko surasti vien, jo nuomone, pakankamai dideli pirmini skaiiu p, pavyzdiui, p = 3138428376749 ir jis nutare kito pirminio iekoti netoli p, t. y. tikrinti, ar p + 2, p + 3, . . . yra pirminiai. Neilgai trukus jis toki pirmini surado ir, apskaiiavs RSA moduli

n = 9849732676328590205251391,
ji paskelbe. Kriptoanalitikas Z, turedamas marias laisvo laiko ir geru mokyklines matematikos iniu, usirae paprastas lygybes

4n = (p + q)2 (p q)2 ,

(p + q)2 = 4n + (p q)2

ir sukure paprast program, kuri tikrina, ar kartais kuris nors i skaiiu

4n + 22 , 4n + 32 , 4n + 42 , . . .

20. VIEOJO RAKTO KRIPTOSISTEMOS nera pilnas kvadratas. Ilgai jo kompiuteriui dirbti nereikejo:

309

4n + 1102 = 62768567536082 .
Dabar liko vieni niekai:

p + q = 6276856753608, p q = 110

ir p = 3138428376749, q = 3138428376859. io pavyzdio moralas toks: jeigu norite saugumo, skaiius |p q| turi buti pakankamai didelis. Atskirais atvejais gali buti sekmingos ir kitokios atakos. Pavyzdiui, efektyvi atak galima atlikti, kai privaiojo rakto komponente d yra maa palyginus su n.

139 teorema. Jeigu Kv = n, e , Kp = d yra RSA kriptosistemos raktai ir p, q, d tenkina slygas


q < p < 2q, 1 1 d < n4 , 3

tai i vieojo rakto polinominiu algoritmu galima rasti privatuji. i mao privaiojo rakto atak sugalvojo M. Wieneris22 . Nesigilindami i teoremos irodym, panagrinekime, kaip vykdoma privaiojo rakto paieka. Kiekvien paprastj nesuprastinam trupmen a (a < b) galima urayti b baigtine grandinine trupmena. Kaip tai daroma, pamatysite i pavyzdio. Tarkime, a = 17, b = 57. Pirmiausia atlikime didiausiojo bendrojo daliklio iekojimo Euklido algoritmu ingsnius:

57 = 3 17 + 6, 17 = 2 6 + 5, 6 = 1 5 + 1,

6 57 =3+ 17 17 17 5 =2+ , 6 6 6 1 =1+ . 5 5

Skaiiaus skleidinys grandinine trupmena atrodys taip:

17 1 1 = = = ... = 6 57 57 3+ 3+ 17 17

1 1 2+ 1 1+ 1 5

22 M. Wiener. Cryptanalysis of short RSA secret exponents. IEEE Transactions on Information Theory. 36, 1990, p. 553558.

310

KODAI IR IFRAI

Grandinin trupmen visikai apibreia skaiiai vardikliuose. Taigi kad nereiktu rayti tokios ilgos grandines, galime j ymeti tiesiog

17 = [3; 2; 1; 5]. 57
Sumaindami koecientu kieki, sudarysime dar tris grandinines trupmenas:

1 1 t1 = [3] = , t2 = [3; 2] = 3 3+

1 2

2 3 17 = , t3 = [3; 2; 1] = , t4 = [3; 2; 1; 5] = . 7 10 57

ias trupmenas vadinsime skaiiaus 17 konvergentemis. Paskutinioji konver57 gente lygi paiam skaiiui. Bet kokio skaiiaus konvergentes skaiiuojamos efektyviai. Ryys su RSA kriptosistema yra toks: jeigu RSA dydiai tenkina Wienerio teoremos slygas, tai kriptoanalitikui e inomos trupmenos n vienos konvergentes vardiklis lygus privaiajam raktui d! Iveikti RSA reikia sugalvoti efektyvu bud, kaip deifruoti ifr, kai deifravimo raktas neinomas. Jeigu turetume efektyvu algoritm kriptosistemos moduliui n skaidyti pirminiais daugikliais, surastume (n), o tada jau ir privatuji rakt. Taigi skaiiu skaidymo udavinio sprendimas duoda bud iveikti ir RSA. Galbut imanoma RSA ifr deifruoti ir nenustaius privataus rakto? Ar toks aplinkinis RSA iveikimo metodas taip pat duotu galimyb efektyviai skaidyti naturaliuosius skaiius pirminiais daugikliais? Tai nera inoma. Taiau jeigu RSA butu iveikiama nustatant privatuji rakt, tai ir moduli butu galima efektyviai skaidyti.

140 teorema. Jeigu inomi abu RSA kriptosistemos raktai Kv = n, e ir Kp = d , tai n galima iskaidyti naudojant tikimybini polinomini algoritm. Irodymas. Kadangi kriptoanalitikas ino ir e, ir d, jis gali apskaiiuoti ed 1 = k(n). Kiekvienam skaiiui a, (a, n) = 1, teisingas lyginys aed1 1 (mod n). Taiau gali buti, kad parinktajam a lyginys am 1 (mod n) teisingas ir su maesniu laipsnio rodikliu m. Galime greitai nustatyti, i kokio dvejeto laipsnio dalijasi ed1, ir surasti toki iraik: ed 1 = 2s t, (2, t) = 1.
Parinkime a, (a, n) = 1, ir skaiiuokime:

a0 at (mod n),

a1 a2 (mod n), 0

...

ai a2 (mod n), . . . i1

Kuris nors i elementu aj bus lygus 1. Tarkime, v yra maiausias indeksas, su kuriuo av1 1 (mod n), av 1 (mod n).

20. VIEOJO RAKTO KRIPTOSISTEMOS Kadangi

311

av a2

vt

a2 (mod n), v1

tai

av 1 (av1 1)(av1 +1) 0 (mod n).

Dabar galima bandyti sekm: sandauga (av1 1)(av1 + 1) dalijasi i n; jeigu nei vienas i abieju daugikliu nesidalytu i n, tai vienas turetu dalytis i p, kitas i q. Tada Euklido algoritmu surastume:

p = (av1 1, n),

q = (av1 + 1, n).

O jeigu abu daugikliai dalytusi i n? Tada tektu bandyti laim su kitu a. Todel is algoritmas ir yra tikimybinis. Taigi organizuojant grupes dalyviu tarpusavio ryiu apsaug su RSA, reikia pasirupinti, kad moduliai butu skirtingi. Jeigu dvieju dalyviu moduliai bus vienodi, tai tas, kuris imano kriptograj, gales suinoti savo kolegos privatuji rakt, iskaids bendrji moduli pirminiais daugikliais (jeigu ne jis pats sukure savo raktus, tai to skaidinio ir pats neino). Bendras keliu vartotoju modulis kelia pavoju ir del kitos prieasties. Tegu dvieju ryio dalyviu RSA vieieji raktai yra Kv,A = n, eA , Kv,B = n, eB , (eA , eB ) = 1. Tarkime, kakas pasiunte jiems abiem to paties praneimo ifrus:

C1 M eA (mod n),

C2 M eB (mod n).

Kriptoanalitikas Zigmas ino Kv,A , Kv,B , C1 , C2 . Atskleisti M jam visai nesunku: surads Euklido algoritmu skaiius a, b, su kuriais aeA + beB = 1 jis lengvai apskaiiuos
a b C1 C2 M aeA +beB M (mod n).

20.4. Pohligo-Hellmano ir Massey-Omura kriptosistemos


Tai dvi idomios variacijos RSA kriptosistemos tema.

Jeigu kriptosistema yra vieojo rakto, tai nereikia, kad ifravimui skirt rakt butina paskelbti. Jeigu nenorite  neskelbkite. Pavyzdiui, perduokite RSA ifravimo rakt savo draugams saugiu budu ir naudokites RSA kaip paprasta simetrine kriptosistema. Jeigu daug ifruoti nereikia, toks vieojo rakto kriptosistemos naudojimas ne pagal paskirti visikai tinkamas. Taiau jeigu tenka ifruoti didelius duomenu srautus, geriau jau pasitelkti koki nors iprastin simetrin kriptosistem, nes ji tiesiog daug greitesne. O RSA naudojimo budas nepaskelbiant raktu kriptograjoje netgi turi atskir vard  tai Pohligo-Hellmano simetrine kriptosistema. Tiesa, daniau taip vadinamas kiek pakeistas kriptosistemos variantas.

312

KODAI IR IFRAI

Pohligo-Hellmano kriptosistema
Praneimai ir ifrai  aibes Z skaiiai, p  didelis pirminis skaiius. p

ifravimo ir deifravimo raktai:

Ke = e, Kd = d, ed 1 (mod p 1)  abu raktus gauna ir A, ir B.

ifravimas: C e(M |Ke ) M e (mod p). Deifravimas: M d(C|Kd ) C d (mod p).


Pohligo-Hellmano kriptosistemos modulis p netgi gali buti paskelbtas, galimybiu suinoti e, d kriptoanalitikui toks paskelbimas nesuteiks. Susitarti del modulio A ir B gali ir nesaugiu kanalu, pavyzdiui, telefonu. Skaiiai e ir d jiems turi buti iteikti saugiai. Idomu, kad galima ia kriptosistema naudotis visikai neperdavus skaiiu e ir d! inoma, bent jau deifravimo algoritm teks pakeisti, todel turesime nauj kriptosistem. Tai Massey-Omura kriptosistema; i tiesu tai tam tikras kriptogranis protokolas, suteikiantis simetrinei kriptosistemai vieojo rakto kriptosistemos savybes.

Massey-Omura kriptosistema
Praneimai ir ifrai  aibes Z skaiiai, p  didelis pirminis. p

Vieasis raktas: pirminis skaiius p. Privatieji raktai: ryio dalyviai A, B, naudodami p, sudaro savo privaiuosius raktus i dvieju komponeniu:

KA = eA , dA , KB = eB , dB , eA dA 1 (mod p 1), eB dB 1 (mod p 1).

ifravimas: A ifruoja C e(M |KA ) M eA (mod p) ir siunia B. Deifravimas: B gavusi C, ifruoja C1 e(C|KB ) C eB (mod p) ir

d siunia A. A gavs C1 , deifruoja C2 d(C1 |KA ) C1 A (mod p) ir dB siunia B. B, gavusi C2 , deifruoja d(C2 |KB ) C2 M (mod p).

Isitikinkime, kad deifruojama bus tikrai teisingai:


d C2 B

((C1 )dA )dB ((C eB )dA )dB (((M eA )eB )dA )dB (M eA dA )eB dB M eB dB M (mod p).

RSA kriptosistemoje visi ryio dalyviai savo vieuosius raktus turi paskelbti su skirtingais moduliais. Jeigu dvieju dalyviu moduliai vienodi, jie gali

20. VIEOJO RAKTO KRIPTOSISTEMOS

313

nustatyti vienas kito privaiuosius raktus. Bendro modulio pavojaus nera Massey-Omura kriptosistemoje. Idomi ios kriptosistemos savybe  vienas asmuo gali paskelbti visiems ryio dalyviams bendr moduli. Tada bet kurie du dalyviai, naudodamiesi Massey-Omura protokolu, gales umegzti ifruot ryi. ia ypatybe pasinaudojama kai kuriuose kriptograniuose protokoluose. I ryio kanalo, kuriuo naudojasi A ir B, kriptoanalitikas gali gauti ifrus C, C1 , C2 . Taiau jam i to maai naudos, nes, pavyzdiui, lyginyje

C M eA (mod p)
yra netgi du neinomieji.

20.5. Rabino kriptosistema


Vieojo rakto kriptosistemu kurejai naudojasi skaiiavimo udaviniais, kuriuos sunku sprsti. Vienas tokiu udaviniu  kvadratiniu lygiu sprendimas ieduose Zn . is udavinys  Rabino kriptosistemos pagrindas.

Mateme, kad RSA kriptosistemos iveikimo udavinys nera sunkesnis u naturaliuju skaiiu skaidymo pirminiais daugikliais udavini. Taiau neinoma, ar jie ekvivalentus, t. y. neinoma, ar suradus efektyvu RSA kriptosistemos ifro deifravimo be privataus rakto algoritm, ji butu galima panaudoti naturaliuju skaiiu skaidymo pirminiais daugikliais udaviniui. iame skyrelyje inagrinesime kriptosistem, kurios sulauymo udavinys sudetingumo poiuriu ekvivalentus naturaliuju skaiiu skaidymo pirminiais daugikliais udaviniui. Raktu parinkimas. Parink du didelius pirminius skaiius p, q, i ju sudarome privatuji rakt Kp = p, q ir vieji rakt Kv = n , n = pq. ifravimas. Praneimu ir ifru aibe ta pati: M = C = {0, 1, . . . , n 1}. ifravimui pasirinkime parametr a, 0 a < n (jis yra vieas). Tada ifras sudaromas taip:

c = e(m|Kv ) m(m + a) (mod n).

Deifravimas. Deifruojant reikia sprsti lygini


x(x + a) c (mod n).
i lygini galima pertvarkyti i paprastesni:

x(x + a) x2 + 2 21 x a + (21 a)2 , (21 a)2 c (mod n) y 2 d (mod n), y x + 21 a (mod n), d c + (21 a)2 (mod n).
Taiau greito algoritmo lyginio y 2 d (mod n) sprendiniui rasti taip pat nera. Taigi kriptoanalitikas turi sprsti sudeting skaiiavimo udavini.

314

KODAI IR IFRAI

Sprendiant variantu perrinkimo algoritmu, blogiausiu atveju prireiks madaug n perrankos operaciju. Privataus rakto savininkas gali vietoj lyginio y 2 d (mod n) sprsti du lyginius u2 d (mod p) ir v 2 d (mod q). Net ir perrinkimo algoritmu jis greiiau ras sprendinius, nes perranku skaiius p + q daug maesnis skaiius u n = pq. I rastuju sprendiniu jis gali sudaryti lyginio y 2 d (mod n) sprendini, naudodamasis kinikja liekanu teorema. Taiau i teorema duoda net keturis sprendinius. I ju reikia atsirinkti vien. Jeigu buvo ifruotas koks nors tekstas, tai maai tiketina, kad visi keturi sprendiniai reik k nors prasminga. Jeigu vertinti praneimu pagal prasm negalime, tada reikia kokio nors susitarimo, kaip atskirti tikrji praneim nuo paaliniu . Pavyzdiui, galima susitarti, kad tikrasis praneimas turi baigtis tam tikra galune.

Praneimai ir ifrai  aibes Zn , n = pq, skaiiai; ia p, q yra pirminiai, tenkinantys slygas p, q 3 (mod 4).

Rabino kriptosistema

Privatusis raktas: Kp = p, q . Vieasis raktas: Kv = n . ifravimas: C = e(M |Kv ) M 2 (mod n). Deifravimas: randami skaiiai u, v,
u M (mod p), u C
(p+1)/4

v M (mod q), v C (q+1)/4 (mod q),

(mod p),

naudojantis kinikja liekanu teorema, randami keturi skaiiai Mi

M1 u (mod p), M1 v (mod q), M2 u (mod p), M2 v (mod q), M3 u (mod p), M3 v (mod q), M4 u (mod p), M4 v (mod q)
ir i ju atrenkamas praneimas M = d(C|Kp ). Deifruojant tenka sprsti lyginius pirminiais moduliais. Tai irgi gali buti nelengva. Taiau ankstesniame skyrelyje irodeme teigini, kad atskiru atveju lyginio sprendini galima surasti visai lengvai. Prisiminkime t teorem. Jei p 3 (mod 4) ir u2 d (mod p) turi sprendini, tai vienas i sprendiniu yra u0 = d(p+1)/4 .

141 teorema.

20. VIEOJO RAKTO KRIPTOSISTEMOS

315

Taigi parinkus Rabino kriptosistemos pirminius i progresijos 4m + 3, deifravimui perrankos neprireiks, abu lyginio u2 d (mod p) sprendiniai gaunami panaudojus vien kelimo laipsniu veiksm. Todel kriptosistema daniausiai ir naudojama su tokiais pirminiais. Iveikti Rabino kriptosistem reikia sudaryti efektyvu algoritm lyginiui 2 d (mod n), n = pq, sprsti. Jeigu sprendinys egzistuoja, tai ju yra x net keturi. Gav i algoritmo sprendinius x1 , x2 , x3 , x4 , galime sudaryti dvi ju poras, pavyzdiui, x1 x3 (mod n), x2 x4 (mod n). Tada su tam tikrais sveikaisiais skaiiais a, b, u, v bus teisingos lygybes:

x1 vap + ubq (mod n),

x2 vap + ubq (mod n),

ia p, q  skaiiaus n pirminiai dalikliai. Tuomet x1 + x2 0 (mod q), bet x1 + x2 nesidalija i n. Todel skaiiuodami didiausiji bendrji skaiiu n ir x1 + x2 , dalikli surasime vien i n pirminiu dalikliu: (x1 + x2 , n) = q. Taigi Rabino kriptosistema yra viena i nedaugelio vieojo rakto kriptosistemu, kuriu saugumas yra irodytas, t. y. matematikai nustatyta, kad kriptosistemos iveikimas tolygus sudetingo skaiiavimo udavinio sprendimui.

20.6. Blomo-Goldwasserio tikimybine kriptosistema


Dar viena kriptosistema, kurioje naudojamasi kvadratiniais sprendiniais. Ji vadinama tikimybine todel, kad praneimo ifras priklauso nuo atsitiktinio skaiiaus, kuri pasirenka ifruotojas.

Kriptosistemos raktai parenkami kaip Rabino kriptosistemoje. Raktu sudarymas. Tegu p, q yra du pirminiai skaiiai su slyga p, q 3 (mod 4). Tada vieasis raktas Kv = n , o privatusis  Kp = p, q . ifravimas. ifruojami bet kokio ilgio dvejetaines abeceles odiai, taigi M = {0, 1} . ifruojamas praneimas skaidomas i h ilgio fragmentus:

M = m1 m2 . . . mt ,

mi {0, 1}h ,

h = [log2 k],

k = [log2 n].

ifruojama taip. Pasirinkus atsitiktini skaiiu r Z , apskaiiuojamas n kvadratas x0 r2 (mod n). Kiekvienas fragmentas mi ifruojamas atskirai:

xi x2 (mod n), i1

ci = e(mi |Kv ) = mi yi ,

ia yi yra odis, sudarytas i skaiiaus xi dvejetaines iraikos h paskutiniu (maiausiai reikmingu) bitu. Baigus ifruoti visus blokus, dar surandamas skaiius xt+1 x2 (mod n) ir siuniamas ifras t

C = c1 c2 . . . ct , xt+1 .
Pastebekime, kad visi skaiiai yra tarpusavyje pirminiai su n, taigi ir su p bei q.

316

KODAI IR IFRAI

Deifravimas. Akivaizdu, kad, norint deifruoti C, pakanka rasti x0 . Tada galima skaiiuoti kvadratus xi x2 (mod n), surasti yi ir deifruoti i1 praneimo fragmentus: mi = ci yi . Skaiiui xi rasti ir reikalingas xt+1 . Pirmiausia randami skaiiai u x0 (mod p), v x0 (mod p), o tada, naudojantis kinikja liekanu teorema, apskaiiuojamas ir x0 . Kaip inant xt+1 , surasti u, u x0 (mod p)? Kadangi skaiiai xi susieti lyginiais xi x2 (mod n), tai jiems taip pat bus teisingi ir lyginiai xi i1 x2 (mod p). Taigi visi musu skaiiai x0 , x1 , . . . , xt+1 nesidalija i p ir yra i1 kvadratai moduliu p. iek tiek paskaiiuokime:
xt+1
(p+1)/4

xt

(p+1)/2

xt (xt )(p1)/2 xt (xt1 )(p1) xt (mod p).

Taigi keldami xt+1 laipsniu (p + 1)/4, galime rasti xt (mod p). Keldami xt tuo paiu laipsniu, galime rasti xt1 (mod p) ir t. t. Arba i karto

x0 (xt )((p+1)/4)

(t+1)

(mod p).

Skaiiuodami visu pirma galime surasti a ((p + 1)/4)(t+1) (mod p 1), o tada apskaiiuoti u xa (mod p), t. y. u x0 (mod p). t+1 Skaiiavimas su q, inoma, yra analogikas. ifruotojas gali pasirinkti parametr r. Nuo io skaiiaus priklauso ir ifras. Taigi tas pats praneimas su tuo paiu raktu gali buti ifruojamas ivairiai.

20.7. ElGamalio kriptosistema


i kriptosistema, tiksliau tariant, ivairus jos variantai, populiarumu rungiasi netgi su RSA. Jos kurejas Taheras ElGamalis yra vienas ymiausiu musu laiku kriptograjos autoritetu. Kasdien milijonai moniu, narydami po Internet, naudojasi SSL protokolu, kuriame idiegtos ElGamalio idejos.

Nagrinejome kriptosistemas, kuriu saugumas pagristas sveikuju skaiiu skaidymo bei kvadratiniu lyginiu sprendimo udaviniu sudetingumu. Laikas patyrineti kriptosistemas, kuriose panaudojamas dar vienas sudetingas skaiiavimo udavinys  diskreiojo logaritmo radimo. Raktu sudarymas. Tegu p  didelis pirminis skaiius, kad rasti diskretuji logaritm moduliu p butu sunku, g  primityvioji aknis moduliu p, kitaip tariant  multiplikatyvios grupes F generuojantis elementas. Pasirinkime p skaiiu a, 0 < a p 1 ir sudarykime vieji rakt Kv praneimams ifruoti ir privatuji deifravimo rakt Kp :

Kv = p, g, ,

g a (mod p),

Kp = a .

20. VIEOJO RAKTO KRIPTOSISTEMOS

317

ifruojant parenkamas skaiius k F ir praneimo M ifras sudaromas p taip:

ifravimas. Praneimu aibe M  visi nenuliniai F elementai. Prie p

e(M |Kv ) = C1 , C2 = C,

C1 g k (mod p),

C2 M k (mod p).

Deifravimas. ifro C = C1 , C2 deifravimas:


a d(C|Kp ) C2 (C1 )1 (mod p).

Nesunku patikrinti, kad deifravimo procedura tikrai veikia:


a C2 (C1 )1 M k (g ka )1 M g akak M (mod p).

Jeigu kriptoanalitikui pavyktu i lyginio C1 g k (mod p) surasti k = logg C1 , tai jis be vargo nustatytu ir M. Taiau kriptosistema nebutu iveikta, nes kit kart ifruotojas panaudotu kit k reikm. inoma, kriptosistema butu visikai iveikta, jeigu kriptoanalitikas apskaiiuotu diskretuji logaritm a = logg . Taiau bent kol kas diskreiajam logaritmui skaiiuoti greitu budu nera. Ar butina kiekvienam ifruojamam praneimui parinkti vis kit k reikm? Panagrinekime, kas gali atsitikti, jeigu du skirtingus praneimus M ir M ifruotume ElGamalio kriptosistema su tuo paiu k. Tada ju ifrai butu

C = e(M |Kv ) = C1 , C2 ,

C = e(M |Kv ) = C1 , C2 .

Kriptoanalitikas kaipmat pastebejs, kad pirmosios komponentes sutampa galetu apskaiiuoti


1 C2 C2 (M k )1 M k M 1 M (mod p).

is lyginys nustato ryi tarp praneimu: jeigu vien i ju suinotume, surastume ir kit. O jeigu su tuo paiu k butu uifruota ne du, bet keli imtai praneimu? Kad Z visus juos atskleistu, pakanka suinoti vieno i ju turini. ElGamalio kriptosistemoje skaiiuojama su kuno Fp multiplikatyviosios grupes elementais. Vietoj ios grupes galima naudoti bet koki baigtin ciklin grup, kurioje diskreiojo logaritmo udavini yra sunku sprsti. Tokiu grupiu yra daug, taiau yra ir tokiu, kuriose diskretuji algoritm logg x rasti vienas juokas. tai tokios kriptograjai netinkamos ciklines grupes pavyzdys: Zn = {0, 1, . . . , n 1} su sudeties moduliu n veiksmu. Kokie elementai generuoja i grup ir kaip skaiiuojami diskretieji logaritmai?

318

KODAI IR IFRAI

Praneimai ir ifrai  baigtines ciklines grupes G, kurioje diskreiojo logaritmo skaiiavimo udavinys yra sunkus, elementai, t. y. M = C = G. Privatusis raktas: Kp = a , a naturalusis skaiius, a < |G|.

Bendroji ElGamalio kriptosistemos schema

Vieasis raktas: Kv = G, g, , = g a . ifravimas: praneimui M G ifruoti atsitiktinai parenkamas


naturalusis skaiius k, skaiiuojama C1 = g k ir C2 = M k . Sudaromas ifras C = e(M |Kv ) = C1 , C2 .
a Deifravimas: d(C|Kp ) = C2 (C1 )1 = M.

Galime ElGamalio kriptosistem sukonstruoti, pavyzdiui, panaudoj kokio nors kuno Fpm multiplikatyvij grup. iuo metu labai intensyviai tyrinejamos galimybes kriptograjai panaudoti baigtines grupes, susijusias su kreivemis, kuriu lygtys yra

y 2 = ax3 + ax + b.
ios kreives vadinamos elipsinemis. Naudojant tokias grupes tam paiam saugumo lygiui kaip kriptosistemose su Fp garantuoti, pakanka trumpesniu raktu ir reikia maiau skaiiavimu. i savybe yra labai svarbi diegiant kriptosistemas irenginiuose su ribotais skaiiavimo resursais, pavyzdiui, autentikavimui naudojamose kortelese.

20.8. McElliece'as: deifravimas yra dekodavimas


ifravimas yra duomenu pradines strukturos sugadinimas , deifravimas  atstatymas. Panaus veiksmai vyksta perduodant informacij nepatikimu kanalu. Robertui McElliece'ui kilo mintis, kad perdavimo trukumas  simboliu ikraipymai  tampa privalumu, kai norime praneimus apsaugoti nuo tu, kam jie nera skirti.

Kodavimo teorijos skyriuje aptareme, kaip perdavimo klaidoms taisyti naudojami tiesiniai kodai. Jeigu klaidu skaiius nevirija pasirinktojo kodo galimybiu, tai pagal gautji ikraipyt kodo odi galime atkurti t, kuri mums siunte siuntejas. Nagrinejome visiems tiesiniams kodams tinkanti lyderiu-sindromu metod. Ar klaidu taisymas iuo metu vyksta greitai? Kartais i tikruju greitai, pavyzdiui, dvejetainiu Hammingo kodu atveju. Taiau apskritai dekodavimo algoritmas  ne polinominis. Galima pasakyti dar daugiau  tiesiniu kodu dekodavimas, t. y. siustu odiu radimas pagal gautuosius, kai ikraipymu kiekis nera didesnis u to kodo taisomu klaidu skaiiu, yra NP pilnas udavinys. Taiau yra kodu, kurie specialiais kodu savybes panaudojaniais metodais dekoduojami greitai. Panaiai yra ir su kuprines udaviniu: nors

20. VIEOJO RAKTO KRIPTOSISTEMOS

319

tai NP pilnas udavinys, bet spariai didejaniu svoriu sistemos atveju jis sprendiamas polinominiu algoritmu. iomis prieingybemis  dekoduoti yra sunku, bet kartais lengva  ir pasinaudojama McElliece'o kriptosistemoje. duoti yra greitas algoritmas (pavyzdiui, BCH kodu eimos narys). Tegu kodo dimensija yra k, generuojanti matrica G, o taisomu klaidu skaiius t. Sudarykime dar dvi matricas: neisigimusi k k matric S i kuno Fq elementu ir n n matric P, kuri gaunama i vienetines, kokia nors tvarka sukeiiant stulpelius. Matrica P bus naudojama odio komponentems sukeisti: jeigu x Fn , tai xP yra odis, sudarytas i tu paiu komponeniu, tik q idestytu kita tvarka. Dabar jau galime sudaryti raktus:

Raktu sudarymas. Tegu C Fn yra koks nors kodas, kuriam dekoq

Kp = S, G, P ,

Kv = G ,

G = SGP.

Matrica G yra tam tikro tiesinio [k, n] kodo C Fn generuojanti matrica. q Tai sugadintas geras kodas C, taigi dekoduoti ikraipytus jo odius turetu buti sudetinga. odiai i aibes M = Fk ; ifravim sudaro odio kodavimas C odiu ir t q (arba maiau) simboliu ikraipymas:

ifravimas ir deifravimas. ifruojami praneimai yra k simboliu ilgio

C = e(M |Kv ) = M G + e,

e Fn . q

Klaidu odis e parenkamas atsitiktinai ir jo svoris ne didesnis u t, t. y. jame ne daugiau kaip t nenuliniu komponeniu. Gavejas ikraipyt odi (ifr) deifruoja taip: apskaiiavs C1 = CP 1 = (M S)G + eP 1 , jis gali manyti, kad C1 yra kanalu siustas, bet ikraipytas kodo C odis c = (M S)G. Svarbu, kad naujojo klaidu odio eP 1 svoris yra ne didesnis u t, todel klaidas galima itaisyti. Pritaiks greitji dekodavimo algoritm, jis gali surasti M = M S ir M = M S 1 = d(C|Kp ).

320

KODAI IR IFRAI

Sukonstruojamas tiesinis [n, k] kodas C Fn , taisantis t klaidu, kuq rio odiams dekoduoti yra greitai veikiantis algoritmas, G generuojanti kodo matrica. Praneimu aibe M = Fk . q Privatusis raktas: Kp = S, G, P , S neisigimusi k k matrica i Fq elementu, P  n-os eiles matrica, gauta i vienetines, kokia nors tvarka perstaius stulpelius.

McElliece'o kriptosistema

Vieasis raktas: Kv = G , G = SGP. ifravimas: C = e(M |Kv ) = M G + e, e Fn , w(e) t, odis e q


parenkamas atsitiktinai. Deifravimas: C1 = CP 1 , odyje C1 itaisius klaidas, randama

M = M S,

M = d(C|Kp ) = M S 1 .

tai ir viskas. i kriptosistema  viena pirmuju vieojo rakto kriptosistemu. Esminiu saugumo spragu kol kas niekas neivelge. Tinkamai parinkus kod ifravimo ir deifravimo greiiu ji gali pranokti ir RSA. Taiau yra ir keletas trukumu, del kuriu ji nera populiari. Viena vertus, tinkamam saugumui garantuoti reikalingi dideli kodo parametrai. Pavyzdiui, pats R. McElliece'as rekomendavo naudoti kodui i dvejetaines abeceles odiu

n = 1024,

k = 524,

t = 30.

Tada vieaji rakt sudarys net nk = 30720 bitu! Kita vertus, ifro dydis gerokai virija praneimo. Tiesa, taip yra ir kitose kriptosistemose, pavyzdiui, ElGamalio.

21 Skaitmeniniu parau schemos


Prie ifruojant praneim vieojo rakto kriptosistema reikia ji urayti schemoje numatytu budu. Kartais ifruojami dvejetaines abeceles odiai, kartais praneim reikia paversti skaiiumi. T pradini duomenu uraymo veiksm tenka atlikti ir prie sudarant skaitmenini para. Parengtus pasiraymui skaitmeniniu parau duomenis vadinsime tekstais. Skaitmeninis teksto x paraas  tai tam tikri duomenys, sukurti naudojant tekst bei privatuji pasiraymui skirt rakt. Tikrinant para, naudojamas tekstas x, jo paraas y ir vieasis paraui tikrinti skirtas raktas Kv . Paraas priimamas, jeigu ie trys dydiai tenkina tam tikr skaitmeninio parao schemoje numatyt slyg.

115 apibreimas. Skaitmeniniu parau schem sudaro tekstu aibe M, skaitmeniniu parau aibe P , raktu K = Kv , Kp aibe K (ia Kp 

21. SKAITMENINIU PARAU SCHEMOS

321

privaioji paraui sudaryti skirta komponente, Kv  vieoji paraui tikrinti skirta rakto komponente) ir parau sudarymo bei tikrinimo algoritmu eimos

sig(|Kp ) : M P, ver(|Kv ) : M P {0, 1}.


Parao tikrinimo algoritmai turi savyb:

ver(x, sig(x|Kp )|Kv ) = 1.

(103)

Jeigu y P pateikiamas kaip teksto x M paraas, tai paraas pripaistamas galiojaniu, jeigu ver(x, y|Kv ) = 1, ir pripaistamas negaliojaniu, jei ver(x, y|Kv ) = 0. Taigi teksto x M skaitmeninis paraas yra y = sig(x|Kp ). Iprastiniai paraai tikrinami lyginant juos su pavyzdiu, o skaitmeniniai  atliekant skaiiavimus, kurie parodo, ar x ir y tenkina tam tikr matematini sryi. Daugeli vieojo rakto kriptosistemu galima paversti skaitmeninio parao schemomis. I vieojo rakto Kv nustatyti privatuji Kp praktikai neimanoma. Jeigu neimanoma ir i privaiojo rakto nustatyti vieji, tai toki kriptosistem galime paversti skaitmeninio parao schema tiesiog paskelbdami deifravimui skirt rakt Kp ir paslepdami vieji Kv . Tada teksto paraas bus jo ifras, kuri gali sukurti tik turintis rakt Kv :

y = e(x|Kv ).
Tikrinant para, pateikiama pora x, y . Jeigu reikme x = d(y|Kp ) sutampa su x, paraas priimamas. Jeigu x yra tekstas, kuri galime vertinti prasmes poiuriu, tai tikrinimui galima pateikti vien tik para y. Jeigu jis prasmingai isiifruoja, tai gautji tekst galime laikyti pasiraytu to asmens, kurio rakt tikrinimui naudojome. Tikimybe, kad gerai isiifruos be Kv sudarytas paraas y, labai maa. Taiau ne visu vieojo rakto kriptosistemu raktai Kv , Kp turi minet savyb. Pavyzdiui, Rabino kriptosistemoje Kp = p, q , o Kp = n , n = pq. Aiku, kad, paskelbus pirminius p, q, slepti ju sandaug nebera jokios prasmes. Taiau ir tokiu atveju, kai privaiojo rakto negalima paskelbti, yra paprastas budas paversti kriptosistem skaitmeninio parao schema. Galima deifravimo algoritmo, pritaikyto praneimui x, rezultat y = d(x|Kp ) laikyti skaitmeniniu parau. Tada, tikrinant para, pakaks isitikinti, ar x = e(y|Kv ).

21.1. RSA skaitmeniniai paraai


Beveik nieko nereikia keisti RSA kriptosistemoje, jeigu norime j naudoti kaip skaitmeniniu parau schem. Vis delto, diegdami j praktikai, tam tikru keblumu neivengtume.

322

KODAI IR IFRAI

Kadangi RSA kriptosistemoje ifruojama ir deifruojama tuo paiu algoritmu tik su skirtingais raktais, tai, norint RSA naudoti kaip skaitmeninio parao schem, nieko nereikia keisti. Jeigu A vieasis RSA raktas yra Kv,A = nA , eA , o privatusis Kp,A = dA , tai praneimo x para A gali sudaryti tiesiog taip:

y = sig(x|Kp,A ) xdA (mod nA ),


ir siusti B por x, y arba tiesiog y. Parao tikrinimas  deifravimas su vieuoju raktu:

x y eA (mod nA ).
Tikrinti A para ir skaityti pasirayt tekst gales visi, kas panores. Kaip pasiekti, kad tik B galetu perskaityti A laik ir, patikrinusi para, butu tikra, kad laik atsiunte tikrai A? Patarkime B irgi susikurti RSA kriptosistem. Tegu B raktai bus Kv,B = nB , eB ir Kp,B = dB . Dabar A, noredamas siusti ir ifruot, ir pasirayt laik x, gali elgtis dvejopai: siusti c1 arba c2 :

c1 = e(sig(x|dA )|eB ),

c2 = sig(e(x|eB )|dA ).

Kuri bud pasirinkti? Abu budai ne tik nera lygiaveriai, bet vienas netgi gali neveikti. Tarkime, pavyzdiui, nA > nB . Kad, sudar para y = sig(x|dA ), galetume ji sekmingai uifruoti, turi buti teisinga nelygybe y < nB . Taiau nA > nB , todel gali buti ir y > nB . Tada ifruodami sugadinsime savo laik. Taigi tokiu atveju reikia pirma ifruoti, o tada pasirayti, t. y. siusti c2 . Taiau is variantas irgi turi ioki toki trukum. Perems siuniam c2 , kriptoanalitikas Z gali ji deifruoti A vieuoju raktu, t. y. surasti c = e(x|eB ), ir, jeigu jis irgi yra ios ryiu sistemos dalyvis, pasiusti ji B savo vardu: c3 = sig(c|dZ ). Birute bus kiek suklaidinta. Tokiu keblumu galima ivengti. Kiekvienam dalyviui sukurkime po du komplektus RSA raktu su skirtingais moduliais. Pirmoji raktu pora skirta skaitmeniniams paraams, o antroji  ifravimui. Jeigu paraams sudaryti skirtu raktu moduliai bus maesni u tam tikr nustatyt slenksio reikm T, o ifravimui skirtu raktu moduliai didesni u T  ivengsime visu nesusipratimu pirma pasiraydami, o paskui ifruodami. Tada A, noredamas pasiusti pasir(1) (2) (1) ayt ir ifruot laik B, turetu siusti c1 = e(sig(x|dA )|eB ), ia dA yra (2) A paraams sudaryti skirtas privatusis raktas, o eB  ifruotiems laikams rayti B vieasis raktas.

21. SKAITMENINIU PARAU SCHEMOS

323

RSA skaitmeninio parao schema


Tekstu aibe Zn , n = pq, p, q  du pakankamai dideli pirminiai skaiiai. Privatusis paraams sudaryti skirtas raktas: Kp = d , (d, (n)) = 1. Vieasis paraams tikrinti skirtas raktas: Kv = n, d , ed 1 (mod (n)).

Parao sudarymas: tekstas x Zn , jo paraas y xd (mod n). Parao tikrinimas: paraas priimamas, jeigu y e x (mod n) arba
jeigu x neatsiustas, ivertinus y e (mod n) pagal prasm.

RSA schema turi multiplikatyvumo savyb: jei y1 = sig(x1 |Kv,A ), y2 = sig(x2 |Kv,A ), tai y = y1 y2 yra praneimo x = x1 x2 paraas. Taigi Z turi galimyb i dvieju A pasiraytu praneimu sudaryti treiojo praneimo para. To galima ivengti, pavyzdiui, pasirainejant ne paius praneimus, bet ju vaizdus, gautus naudojant visiems schemos dalyviams inom injekcij R : M MS , jei tik i funkcija parinkta taip, kad neturetu multiplikatyvumo savybes, t. y. R(x1 x2 ) = R(x1 ) R(x2 ). Tam tikruose kriptograniuose protokoluose reikia, kad subjektas sukurtu skaitmenini para, nematydamas paties teksto. Tai tarsi pasiraymas ant uklijuoto voko, kuriame ideta kalke ir pasiraymui parengtas dokumentas. Kalke perkelia para nuo voko ant paties dokumento. Tokie paraai vadinami aklais paraais. Ju prireikia nansineje kriptograjoje bei elektroniniu rinkimu sistemose. Pavyzdiui, rinkimine komisija savo parau turi patvirtinti, kad skaitmeninis balsavimo biuletenis yra galiojantis, taiau neturi suinoti, u k rinkejas balsavo. Sukurti akl para su RSA sistema labai paprasta. Tarkime, B nori, kad A sukurtu galiojanti teksto m RSA para, bet nepamatytu paties teksto. Tegu A raktai yra Kv,A = eA , nA ir Kp,A = dA . Parinkusi skaiiu r, (r, n) = 1, B apskaiiuoja

x reA m (mod nA )
ir nusiunia A pasirayti. A pasirao ir atsiunia B para

z = sig(x|Kp,A ) xdA (mod nA ).


Dabar B skaiiuoja

y r1 z r1 xdA r1 (reA m)dA mdA (mod nA ).


Taigi y = sig(m|Kp,A ) yra galiojantis teksto m paraas.

324

KODAI IR IFRAI

21.2. Rabino skaitmeninis paraas


Praneimo x Rabino skaitmeninis paraas  tiesiog lyginio y 2 x (mod n) sprendinys. iek tiek keblumu sudaro tai, kad ne su visais x i lygini galima isprsti.

Rabino kriptosistemoje privatuji rakt sudaro pirminiu skaiiu pora Kp = p, q , o vieji  ju sandauga Kv = n , n = pq. ifruojamu praneimu aibe yra M = Zn . Praneimo x ifravimas  tiesiog kelimas kvadratu

C = e(x|Kv ) x2 (mod n).


Galime Rabino kriptosistem paversti skaitmeniniu parau schema, kurioje parao tikrinimas yra toks pat kelimas kvadratu. Tegu x Zn yra praneimas, kuri norime pasirayti. Naudodamiesi privaiuoju raktu, galime pabandyti isprsti lygini y 2 x (mod n). (104) Jeigu tai pavyko, tai gaut sprendini y galime siusti kaip praneimo x para: y = sig(x|Kp ). Paraas bus priimtas, jeigu y 2 (mod n) ir x sutaps. Taiau yra vienas keblumas: (104) lyginys ne su visais x yra isprendiamas. Kaip elgtis tuo atveju, kai sprendinio nera? inome, kad nustatyti, ar lyginys isprendiamas, naudojantis Legendre'o simboliais galima labai greitai. Jeigu ifruojame koki nors tekst, galima bandyti ji kiek pakaitalioti, pavyzdiui, iterpiant daugiau intervalu, itaip tikintis, kad galu gale gausime x, kuriam sprendinys egzistuoja. I tikruju, ilgai vargti tikrai nereikes. Taiau jeigu tokia empirine paieka yra nepriimtina, tai reikia sugalvoti koki nors funkcij R : Zn Qn , ia Qn Zn yra poaibis tu elementu x, su kuriais (104) lyginys turi sprendini. i funkcija turi buti viea. Tada praneimo x skaitmeniniu parau laikytume lyginio

y 2 R(x) (mod n)
sprendini. Tikrinimui tektu pateikti por x, y , o tikrinant pirmiausia butu apskaiiuojama reikme R(x) ir tikrinama, ar lyginys

y 2 R(x) (mod n)
yra teisingas. Jeigu teisingas  paraas priimamas. Kriptografai yra sukonstrav tokiu funkciju R. Taiau tai padaryti nera paprasta. Viena i butinu slygu tokiai funkcijai: lygti R(x) = r su inomu r turi buti sunku sprsti. Jeigu butu lengva, piktavalis Z galetu siuntineti prasmingus ir neprasmingus tekstus su musu paraais. I tikruju, parinkime bet koki y ir raskime lygties R(x) = y 2 sprendini x. Tada y = sig(x|Kp )  paraas suklastotas!

21. SKAITMENINIU PARAU SCHEMOS

325

Rabino skaitmeninio parao schema


Pasiraomi tekstai  skaiiai x Zn , su kuriais lyginys y 2 x (mod n) turi sprendini; n = pq, p, q  du dideli pirminiai skaiiai. Privatusis paraams sudaryti skirtas raktas: Kp = p, q .

Vieasis paraams tikrinti skirtas raktas: Kv = n . Parao sudarymas: teksto x Zn paraas  lyginio y 2 x (mod n)
sprendinys.

Parao tikrinimas: paraas priimamas, jeigu y 2 x (mod n).

21.3. ElGamalio skaitmeninio parao schema


Geras ElGamalio schemos idejas ne vien kart panaudojo kitu skaitmeninio parao sistemu kurejai. Schema gera ir tuo, kad j galima idiegti naudojant ivairias baigtines ciklines grupes.

ios schemos saugumas priklauso nuo atitinkamo diskreiojo logaritmo udavinio sudetingumo. Raktu parinkimas. Tegu p  pirminis skaiius, pakankamai didelis, kad diskreiojo logaritmo udavini multiplikatyvioje Fp grupeje, t. y. grupeje F = {1, 2, . . . , p1}, butu sunku sprsti. Tegu yra i grup generuojantis p elementas (primityvioji vieneto aknis). Parink a Zp1 , skaiiuojame a (mod p) ir sudarome vieji rakt Kv = p, , . Privatusis raktas sudarytas tik i vienos komponentes: Kp = a . Parau sudarymas. Praneimai, kuriuos galima pasirayti  aibes M = F skaiiai, parau aibe  P = F Zp1 . Praneimo x paraui sudaryti p p pasirenkame atsitiktini (slapt) skaiiu k Z (taigi (k, p 1) = 1) ir p1 skaiiuojame:

k (mod p),

(x a)k 1 (mod (p 1)).

i skaiiu pora ir yra praneimo x paraas: sig(x|Kp ) = , . Matome, kad praneimo paraas priklauso nuo to, koki atsitiktini parametr k parenkame. Taigi tam paiam praneimui gali buti sudaryta daug skirtingu, bet galiojaniu parau. Parau tikrinimas. Skaiiu pora y = , laikoma galiojaniu praneimo x parau tada ir tik tada, kai

x (mod p).

(105)

I tikruju, jei y sudarytas tinkamai, tai x a + k (mod (p 1)), taigi

a+k x (mod p).

326

KODAI IR IFRAI

Pasiraomu tekstu aibe M = F , ia p  didelis pirminis skaiius; parau p aibe P = F Zp1 . p

ElGamalio skaitmeninio parao schema

Privatusis raktas: Kp = a , a Zp1 . Vieasis raktas: Kv = p, , , ia  generuojantis elementas,


a (mod p).

Parao sudarymas: pasirenkamas atsitiktinis k, (k, p 1) = 1 ir skaiiuojama: k (mod p), (x a)k 1 (mod (p 1)), , = sig(x|Kp ). Parao tikrinimas: paraas priimamas tada ir tik tada, kai x (mod p).

Kriptoanalitikas, noredamas praneimui x sudaryti be privaiojo rakto galiojanti para, turi parinkti , , kad butu teisingas (105) lyginys. Galima pasirinkti, pavyzdiui, ir iekoti tinkamo skaiiaus . Taiau

x (mod p),

log (x ) (mod (p 1)),

t. y. tenka sprsti diskreiojo logaritmo udavini. Jeigu pasirenkamas ir i (105) iekoma , tai problema yra dar sudetingesne. Jeigu pasirinksime abi parao komponentes , ir iekosime praneimo x, kuriam y = , butu tinkamas paraas, tai vel teks iekoti diskreiojo logaritmo. Taiau vis delto galima parinkti (105) lygini tenkinanius skaiius renkant juos kartu. Vienas budas yra toks. Pasirinkime skaiius i, j, tenkinanius slyg 0 i, j p2, (j, p1) = 1. Dabar suskaiiuokime:

i j (mod p),

j 1 (mod p 1),

x ij 1 (mod p 1).

Nesunku isitikinti, kad tada y = , yra galiojantis x paraas, t. y. skaiiai x, , tenkina (105) lygini. Skaiiu k, kuri naudojame paraui sudaryti, geriausia, baigus skaiiuoti, ikart itrinti. Jeigu jis taps inomas kriptoanalitikui, tai jis, naudodamasis praneimu x ir jo parau , , nesunkiai suras slaptji skaiiu a:

a (x k) 1 (mod p 1).
Toks pat pavojus kyla, jeigu du skirtingus praneimus x1 ir x2 pasiraeme naudodami t pati k : , 1 = sig(x1 |Kp ), , 2 = sig(x2 |Kp ). Tada i lyginiu 1 x1 (mod p), 2 x2 (mod p) gauname x1 x2 1 2 (mod p). Kadangi k (mod p), tai neinomam parametrui k rasti gauname lygini x1 x2 k(1 2 ) (mod p 1).

21. SKAITMENINIU PARAU SCHEMOS

327

Tegu d = (1 2 , p 1), suprastin i d, skaiiui k rasti gauname lygini x k (mod p ), ia x = (x1 x2 )/d, = (1 2 )/d, p = (p 1)/d. Jeigu d > 1, tai gautji lygini tenkina ne vienintelis skaiius k, 1 k p 1. Taiau tikrji visada galima atsirinkti naudojantis slyga k (mod p). Suinojus k, jau aptartu budu galima surasti ir a.

21.4. Schnorro skaitmeninio parao schema


Tai variacija ElGamalio skaitmeninio parao tema. Kriptograneje literaturoje, o taip pat ir taikymuose galima surasti ir variaciju Schnorro skaitmeninio parao tema.

ios schemos saugumas taip pat remiasi diskreiojo logaritmo udavinio sudetingumu. Raktu sudarymas. Kaip ir ElGamalio schemoje, pirmiausia reikia parinkti dideli pirmini skaiiu p. Toliau  surasti koki nors pakankamai dideli pirmini q, kuris dalija p1. Gali pasitaikyti, kad p1 skaidinys bus sudarytas tik i mau pirminiu daugikliu. Toks p Schnorro schemos kurimui netiktu. Geriausia, ko galime tiketis: p 1 = 2q, ia q yra pirminis. Tokio pavidalo pirminiai skaiiai yra gera aliava ivairioms kriptogranems schemoms konstruoti. Jie vadinami saugiais pirminiais. Ju, inoma, nera daug, taiau daug ir nereikia. tai pirmasis saugiu pirminiu, didesniu u milijon, penketukas:

1000919, 1001003, 1001159, 1001387, 1001447.


Rad pakankamai dideli q, suraskime q -osios eiles kuno Fp element , t. y. toki, kuriam q 1 (mod p) ir j 1 (mod p), jei 0 < j < q. Praneimu aibe M = Fq . Pasirink dar vien skaiiu e, 0 < e < q, jau galime sudaryti raktus:

Kp = a ,

Kv = p, q, g, ,

a (mod p).

skaiiuojame:

Parao sudarymas ir tikrinimas. Parink skaiiu 0 r < q 1,


r (mod p), r + ax (mod q), sig(x|Kp ) = , .

Paraas bus priimtas tada ir tik tada, kai teisingas lyginys

x (mod p).

328

KODAI IR IFRAI

Praneimu aibe M = Fq , ia q yra pirminis skaiiaus p 1 daliklis; p irgi yra pirminis. Privatusis raktas: Kp = a , 0 < a < q 1. Vieasis raktas: Kv = p, q, , , Fp yra q -osios eiles elementas, a (mod p). Parao sudarymas: pasiraymui skirtas tekstas yra x; parinkus skaiiu 0 r < q 1, skaiiuojama: r (mod p), r + ax (mod q), sig(x|Kp ) = , . Parao tikrinimas: praneimo x paraas sig(x|Kp ) = , priimamas tada ir tik tada, kai x (mod p). Nesunku isitikinti, kad pagal taisykles sudarytas paraas bus visada priimtas. Sudarant para, reikia apskaiiuoti dydius ir . Pirmasis dydis nesusijs su praneimu, todel ji galima apskaiiuoti ir isaugoti i anksto. Antrajam dydiui skaiiuoti reikia visai nedaug veiksmu  vienos daugybos ir sudeties moduliu q. Taigi paraui sudaryti nereikia daug skaiiavimo itekliu. Todel toki schem galima diegti autentikavimui naudojamose kortelese su nedidelio galingumo mikroprocesoriais.

Schnorro skaitmeninio parao schema

21.5. DSA
i parao schem savo reikme galima palyginti su DES. DSA (Digital Signature Algorithm) yra pirmoji kriptograjos istorijoje vyriausybiniu lygiu pripainta skaitmeniniu parau schema.

1991 metais JAV Nacionalinis standartu ir technologijos institutas pasiule skaitmeniniu parau schem, kuri JAV buvo pripainta skaitmeniniu parau standartu (DSA  Digital Signature Algorithm). Tai pirmoji vyriausybiniu lygiu pripainta skaitmeniniu parau schema. Teoriniu poiuriu DSA yra ElGamalio skaitmeninio parao variantas. Vienas i privalumu, lyginant DSA su ElGamalio schema  DSA paraai yra trumpesni. Ankstesniame skyrelyje mateme, kad ElGamalio skaitmeniniai paraai gali buti net dvigubai ilgesni u pati praneim. Raktu sudarymas. Parinkime du pirminius skaiius p, q, kad q dalytu p 1, t. y. q|p 1. Kad kriptosistema butu saugi, diskreiojo logaritmo udavinys moduliu p turi buti sunkus. Rekomenduojama naudoti apie 512 bitu skaiiu p ir apie 160 bitu skaiiu q. Tegu F yra q -osios eiles elementas. Parink a Fq , apskaiiuojame p a (mod p), sudarome vieji rakt Kv ir slaptji Kp :

Kv = p, q, , ,

Kp = a .

21. SKAITMENINIU PARAU SCHEMOS

329

Parao sudarymas. Praneimu, kuriuos bus galima pasirayti, aibe yra M = F , parau aibe  P = Fq Fq . Praneimo x M paraas sudaromas p taip. Parink atsitiktini k F , skaiiuojame: q
k (mod p) (mod q), (x + a)k 1 (mod q), sig(x|Kp ) = , .

Be to, reikia pasirupinti, kad butu patenkinta slyga q |. Jeigu q|, reikia pasirinkti nauj k ir vel skaiiuoti para. Parao tikrinimas. Tegu reikia patikrinti, ar y = , yra praneimo x paraas. I pradiu skaiiuojame e1 x 1 (mod q), e2 1 (mod q). Paraas pripaistamas tada ir tik tada, kai

e1 e2 (mod p) (mod q).


I tikruju, jei paraas sudarytas teisingai, tai tikrindami gausime

(106)

e1 e2

1 (x+a)

(mod p).

Taiau i parao sudarymo lygybes gauname 1 (x + a) k (mod q), taigi

e1 e2 k (mod p).
Taiau deinioji puse moduliu q lygi , taigi (106) lygybe teisinga. Jeigu pasirinktasis pirminis skaiius p uraomas 512 bitu ilgio odiais, o q  160, tai 512 bitu ilgio teksto skaitmeninis paraas yra sudarytas i madaug 2 160 = 320 bitu. Pavyzdys. Pasirinksime nedidelius p, q. Skaiius p = 10007 yra saugus pirminis, t. y. p = 2q + 1, ia q = 5003 irgi yra pirminis skaiius. Dabar reikia parinkti q -osios eiles element . I pradiu suraskime generuojanti element moduliu p. Ju yra daug, pavyzdiui, = 51 yra vienas ju. Taigi galime imti 512 (mod p), t. y. = 2601 yra q eiles elementas. Dabar parinkime a, pavyzdiui, a = 300, tada a (mod p), = 2774. Taigi

Kv = p, q, , = 10007, 5003, 51, 2774 ,

Kp = 300 .

Sudarykime praneimo x = 1111 skaitmenini para. Pasirinkime k = 44, k 1 1933 (mod q). Tada

5144 (mod p),

8661 (mod p),

3658 (mod q), = 3476.

(1111 + 300 3658) 1933 (mod q),

Slyga (, q) = 1 patenkinta, taigi sig(1111|Kp ) = 3658, 3476 . Tikrindami para, pirmiausia surandame 1 2051 (mod q). Dabar skaiiuojame:

e1 11112051 (mod q),

e1 = 2296,

e2 36582051 (mod q),

e2 = 3061.

330 Toliau tikriname: e1 e2 8661, mas.

KODAI IR IFRAI

8661 3858 (mod q), paraas priima-

Praneimu aibe M = parau aibe  P = Fq Fq , ia q yra pirminis p 1 daliklis. Privatusis raktas: Kp = a , 0 < a < q 1. Vieasis raktas: Kv = p, q, , , Fp yra q -osios eiles elementas, a (mod p). Parao sudarymas: praneimui pasirayti parenkamas skaiius k F q ir skaiiuojama: sig(x|Kp ) = , ,

F , p

DSA

k (mod p) (mod q), (x + a)k 1 (mod q).

Parao tikrinimas: paraas pripaistamas tada ir tik tada, kai


e1 e2 (mod p) (mod q), e1 x 1 (mod q), e2 1 (mod q).

Turi buti patenkinta slyga (, q) = 1.

21.6. Nepaneigiami skaitmeniniai paraai


Tai schema, kurioje skaitmeninis B paraas tikrinamas jai dalyvaujant. Taiau asmens dalyvavimas kriptograniame protokole tiesiogine prasme yra beveidis: nepaiuresi i akis ir nenusprsi, teisingai elgiasi ar sukiauja. Vadinasi, reikalingi tam tikri matematiniai saugikliai...

Kartais pageidautina, kad, atliekant skaitmeninio parao tikrinim, dalyvautu ir parao autorius. Pavyzdiui, jeigu asmuo kreipiasi i bank savo sskaitos tvarkymo klausimu, saugiau, jeigu informacija tikrinama jam dalyvaujant. Tai galima atlikti naudojantis klausimu-atsakymu protokolais (challenge-and-response protocol). Tokioje situacijoje svarbu, kad abi puses (tikrintojas ir parao autorius) laikytusi protokolo taisykliu. Taiau iame tikrinimo procese abieju pusiu padetys skirtingos. Tikrintojas remiasi tik viea informacija, jei jis netinkamai atlieka protokolo veiksmus, autorius gali pareikalauti ji pakeisti ir pasiekti, kad jo paraas bus pripaintas. Parao autorius atlieka veiksmus naudodamasis tik jam prieinama (slapta) informacija, taigi atlikdamas protokolo veiksmus, ne taip, kaip numatyta, jis gali pasiekti, kad jo paraas bus pripaintas negaliojaniu. Pavyzdiui, itaip jis gali neprisiimti kokiu nors jo pasiraytu isipareigojimu. Chaum ir van Antverpeno nepaneigiamo parao schemoje yra galimybe nustatyti, kad parao autorius elgiasi protokolo vykdymo metu netinkamai, taigi bando paneigti savo para. i schema paskelbta 1989 metais.

21. SKAITMENINIU PARAU SCHEMOS

331

Raktu parinkimas. Parinkime p  pakankamai dideli pirmini skaiiu, kad diskreiojo logaritmo udavinys grupeje F butu sunkus. Tegu q  pirmip nis skaiiaus p 1 daliklis, o F  q -osios eiles elementas. Parinkime p skaiiu a, 1 a q1, ir suskaiiuokime a (mod p). Dabar jau galime sudaryti raktus: Kp = a , Kv = p, , . Parau sudarymas. Praneimus reikia koduoti aibes
G = {m : m = 0, . . . , q 1}
skaiiais. Paraai  taip pat ios aibes elementai, taigi M = P = G. Jei x M, tai sig(x|Kp ) xa (mod p). Parao tikrinimas. Tarkime, A turi patikrinti, ar y yra B paraas. Tikrinimo protokolas vykdomas taip: 1. A parenka atsitiktinius skaiius e1 , e2 F , skaiiuoja c y e1 e2 (mod p) q ir siunia B; 2. B skaiiuoja d ca
1 (modq)

(mod p) ir siunia A;

3. paraas priimamas tada ir tik tada, kai d xe1 e2 (mod p). Jeigu paraas yra tikras, t. y. y xa (mod p), tai nesunku isitikinti, kad jis bus priimtas. I tikruju,

d ca

1 (modq)

y e1 a e2 a

xe1 aa e2 aa

xe1 e2 (mod p).

Taiau gali atsitikti, kad bus u teising priimtas ir negaliojantis paraas, t. y. toks, kuriam y xa (mod p) . Taiau tokia galimybe maai tiketina. Jei y xa (mod p), tai tikimybe, kad y bus pripaintas praneimo x parau, lygi 1/q. Parao tikrinimo protokolas gali duoti neigiam atsakym dviem atvejais: kai paraas i tikruju netikras, t. y. y xa (mod p), arba B nesilaiko protokolo. inoma, ir tikrintojas A gali nesilaikyti protokolo, taiau jis skaiiuodamas nesinaudoja jokia slapta informacija, taigi jei jis netinkamai elgiasi, gali buti pakeistas kitu. ioje parao schemoje yra galimybe nustatyti, kada paraas yra tikrai netikras, o kada B megina (nesvarbu, ar smoningai ar del skaiiavimo klaidu) to parao atsisakyti. Jeigu B siekia, kad tikrinimo protokolas duotu neigiam rezultat, tai 2-ajame ingsnyje ji pasirenka d pavelgusi i lubas, t. y. bet koki. Jeigu tikrinimo protokolas duoda neigiam atsakym, protokolas dar kart kartojamas: 1. jeigu d xe1 e2 (mod p) A parenka atsitiktinius skaiius f1 , f2 F , q skaiiuoja C y f1 f2 (mod p) ir siunia B;

142 teorema.

332 2. B skaiiuoja D C a lubu ) ir siunia A;


1 (mod

KODAI IR IFRAI
q)

(mod p) (arba vel pasirenka D nuo

3. jeigu D xf1 f2 (mod p), A para pripaista; 4. jeigu D xf1 f2 (mod p), A laiko para klastote tada ir tik tada, kai

(de2 )f1 (Df2 )e1 (mod p),


prieingu atveju A apkaltina B protokolo nesilaikymu arba bandymu suklastoti svetim para.

tai

143 teorema. Jei y xa (mod p), taiau ir A, ir B laikosi protokolo,


(de2 )f1 (Df2 )e1 (mod p).

Irodymas.

Apskaiiuokime dydi (de2 )f1 (mod p). Kadangi B laikosi protokolo, tai

(de2 )f1 (ca e2 )f1 (y e1 a e2 a e2 )f1 y e1 f1 a

(mod p).

Skaiiuodami (Df2 )e1 (mod p), gautume lygiai t pati. Taigi lyginys yra teisingas. Galbut kiek keista, kad skaiiuodami niekur nepanaudojome slygos y xa (mod p). Jeigu ji nebutu patenkinta, t. y. jeigu y tikrai butu paraas, tai iki io lyginio tikrinimo ne neprieitume  paraas butu pripaintas galiojaniu jau anksiau. i teorema rodo, kad B negali buti apkaltinta nekaltai. Kokia gi tikimybe B apgauti A  irodyti, kad jos galiojantis paraas yra klastote, t. y. atsisakyti savo parao? Tam ji turetu atsiusti ne pagal protokolo taisykles suskaiiuotus d, D, kad lyginys butu vis delto teisingas. Tikimybe, kad tai pavyks yra nedidele.

144 teorema. Jei y xa (mod p) ir B parenka atsitiktinius d, D, kad


d xe1 e2 (mod p),
tai tikimybe, kad

D xf1 f2 (mod p),

(de2 )f1 (Df2 )e1 (mod p),


lygi 1/q. Taigi galimybe atsisakyti savo parao yra menka.

21. SKAITMENINIU PARAU SCHEMOS

333

21.7. Slaptieji kanalai skaitmeniniu parau schemose


Skaitmeninis paraas gali kartais buti ir ifras. Tuoj suinosite, kaip tai padaryti.

Vienose skaitmeninio parao schemose teksto paraas apibretas vienareikmikai (pavyzdiui, RSA). Kitose paraas priklauso nuo papildomai parenkamo dydio. Paraas  tai tam tikri duomenys. Tikrinant para, su praneimu ir tais duomenimis atliekami tam tikri skaiiavimai. Priklausomai nuo ju rezultatu paraas priimamas arba atmetamas. Taiau tie duomenys gali buti kito praneimo slaptaviete! Taigi skaitmeniniu parau galima pasinaudoti kaip slaptu kanalu informacijai perduoti. Toki slapt kanal galima irengti beveik kiekvienoje skaitmeninio parao schemoje, kurioje paraas nera vienareikmikai apibretas. Panagrinekime, kaip tai galima padaryti su ElGamalio skaitmeniniu parau schema. ElGamalio schemos raktai

Kp = a ,

Kv = p, , ,

a (mod p),

ia F yra generuojantis elementas. Privatusis raktas sudarytas tik i p vienos komponentes: Kp = a . Praneimo x paraas sig(x|Kp ) = , sudaromas pasirinkus skaiiu k Z ir apskaiiavus p1

k (mod p),

(x a)k 1 (mod (p 1)).


(107)

Paraas pripaistamas, jeigu teisingas lyginys

x (mod p).

Dabar tarkime, kad A veiksmai yra kontroliuojami ir jis negali pasiusti B jokio nors menkiausi itarim kelianio praneimo. Tarkime, kad iek tiek anksiau A sugebejo praneti B savo ElGamalio skaitmeninio parao rakt Kp = a . Noredamas perduoti B slapt praneim x, A ketina pasielgti taip: pasirayti koki nors nekalt praneim x ir paskelbti ji kartu su parau y = sig(x |Kp ) = , . Paraas tenkins tikrinimo slyg, todel nekels itarimo jokiems kontrolieriams. Taiau ia ir slypi gudrybe  parae gludes slaptasis praneimas x, kuri B gales atskleisti inodama Kp = a . Taigi A ketina sudaryti x para. Tarkime, (x, p 1) = 1 (jeigu taip nera, galima x iek tiek pakeisti). Tada para galima kurti su k = x. Jei

x (mod p 1),

(x a)x1 (mod p 1),

tai sig(x |Kp ) = , . . Taiau inodama praneim, para ir rakt, B gali surasti jai skirt inut x:

x (x a) 1 (mod p 1).
Tiesa, B gali kilti iokiu tokiu sunkumu, jei nera tarpusavyje pirminis su p 1. Tada 1 neegzistuos. Taiau tai nedideli sunkumai. Be to, ju ivengti gali padeti ir A, pasirupindamas, kad butu (, p 1) = 1.

334

KODAI IR IFRAI

22 Maios funkcijos
Skaitmeniniu parau schemos, kokias nagrinejome, kone visikai netinkamos praktiniam naudojimui! I tiesu, kiek reiktu atlikti sudetingu skaiiavimu, kad pasiraytume, pavyzdiui, 1Mgb dydio tekst! Todel reikia iekoti budo, kaip tas nepraktikas schemas paversti lengvai pritaikomomis. Ieitis gali buti paprasta: pasiraineti reikia ne visus tekstus, bet ksuoto ilgio santraukas. Taigi reikia tu santrauku sudarymo metodu. Tarkime, tekstai, kuriuos reikia pasiraineti, gali buti bet kokio ilgio dvejetaines abeceles odiai, o skaimeninio parao schema sukuria tik n bitu ilgio odiu paraus. Todel reikalinga funkcija

h : {0, 1} {0, 1}n ,


sudaranti bet kokio praneimo santrauk. Tokios funkcijos kriptograjoje vadinamos maios funkcijomis (hash functions, angl.). Jeigu naudojama maios funkcija, tai praneimo x parau laikome jo santraukos para y = sig(h(x)|Kp ). Gavs por x, y , parao tikrintojas pirmiausia suskaiiuoja x = h(x), o tada tikrina, ar y yra x paraas. Parao sudarymo ir tikrinimo veiksmu snaudos nepriklauso nuo praneimo ilgio. Kadangi praneimu yra daugiau negu santrauku, tai yra tekstu su vienodomis santraukomis. Tada iu tekstu skaitmeniniai paraai bus vienodi. Maios funkciju naudojimas, be abejones, susilpnina skaitmeninio parao schemos saugum. Todel, konstruojant maios funkcijas reikia gerai apsvarstyti, ar parao schema su iomis funkcijomis ilieka praktikai saugi.

22.1. Kokios maios funkcijos yra saugios?


Kad maios funkcija butu saugi, ji turi tenkinti kelias slygas, kurias paprasta suformuluoti, bet sunku igyvendinti.

Tarkime, h : M H yra maios funkcija, kurianti tekstu santraukas. Kokius reikalavimus ji turetu tenkinti? Visu pirma, sudaryti santrauk turi buti nesudetinga, t. y. funkcijos reikme h(x) turi buti skaiiuojama efektyviu algoritmu. Tarkime, ir funkcijos pirmavaizdio elementai gali buti randami greitai, t. y. yra efektyvus algoritmas duotam z, randantis lygties

h(x) = z,

z H,

sprendini x M. Tada kriptoanalitikas galetu lengvai atlikti skaitmeninio parao schemos su maios funkcija atak, visikai neanalizuodamas parao sudarymo algoritmu. I tiesu, isaugojs teksto ir jo parao por x, y , y = sig(h(x)|Kp ), jis galetu iekoti lygties h(u) = y sprendiniu ir, rads u = x , x = x, pateikti por x , y kaip nauj tekst su galiojaniu parau. Kad tokios atakos tikimybe butu maa, pirmavaizdio elemento skaiiavimo udavinys turi buti sudetingas.

22. MAIOS FUNKCIJOS

335

116 apibreimas. Funkcij h : M H vadinsime vienakrypte, jeigu jos reikmes skaiiuojamos efektyviu algoritmu, o lygties h(x) = z su inomu z sprendiniams rasti efektyvaus algoritmo nera. Efektyviais algoritmais paprastai vadiname polinominius algoritmus. Apibreimas aikus, taiau labai grietas. I tiesu neinome nei vienos funkcijos, kuri patenkintu jo reikalavimus! Tiesa, yra daug funkciju, kuriu reikmes yra efektyviai skaiiuojamos, o pirmavaizdio elementams rasti greitas budas neinomas. iandien neinomas, o rytoj gal atsiras! I tiesu tos funkcijos, kurias vadiname vienakryptemis tera tik kandidates i jas. Taigi maios funkcijos turetu buti vienakryptes. Suformuluokime dar por reikalavimu. 117 apibreimas. Tegu h : M H yra maios funkcija. Jeigu x, x M, x = x , bet h(x) = h(x ), tai i por vadinsime sutapimo pora, arba tiesiog sutapimu (collision, angl.). Funkcij vadinsime atsparia sutapimams, jeigu nera efektyvaus algoritmo duotajam x M, randanio x M, x = x, kad h(x) = h(x ). Funkcij vadinsime labai atsparia sutapimams, jeigu nera efektyvaus algoritmo, randanio koki nors sutapimu por. Anglikoje kriptograjos literaturoje funkcijos, atsparios sutapimams, vadinamos weekly collision free, o labai atsparios  strongly collision free funkcijomis. Jeigu maios funkcija nera labai atspari sutapimams, tai galima tokia j naudojanios skaitmeninio parao schemos ataka. Tarkime, A sutinka pasirayti sutarti s su tam tikrais isipareigojimais. B noretu, kad tie isipareigojimai butu grietesni, todel yra parengusi kit sutarties variant s . Taiau A tikrai nesutiks jo pasirayti. Tada B gali kiek padirbeti su pora s, s , neymiai kaitaliodama tekstus, pavyzdiui, iterpdama daugiau tuiu tarpu, ir skaiiuodama h(s) ir h(s ). Jeigu maios funkcija nera labai atspari sutapimams, galbut pavyks gauti h(s) = h(s ). Tada B gali pateikti pasiraymui tekst s, o sprendiant teisinius ginus, pateikti s su galiojaniu A parau. Jeigu funkcija yra atspari sutapimams, tai ji nebutinai yra vienakrypte. Taiau jeigu ji nera vienakrypte, tai sutapimui rasti yra efektyvus (tiesa, tikimybinis, t. y. priklausantis nuo sekmes) budas. Tokia yra teiginio, kuri tuoj suformuluosime ir irodysime, prasme.
Tegu h : M H yra maios funkcija, praneimu ir santrauku aibes yra baigtines ir |M| 2|H|. Jeigu yra efektyvus algoritmas lygties h(x) = z sprendiniui x rasti, tai egzistuoja tikimybinis algoritmas, randantis sutapim su tikimybe, ne maesne u 1/2. Irodymas. Slyga |M| 2|H| ivertus i kasdien kalb reikia, kad, uraius praneim ir santrauk dvejetaines abeceles odiais, santrauka bus bent vienu bitu trumpesne. Tikriausiai sutiksite, kad tai naturalus noras. Sutapimu radimo algoritm, kuri dabar nagrinesime, net algoritmu nelabai tinka vadinti. Jis toks. Paymekime efektyviai randam lygties h(x) = z

145 teorema.

336

KODAI IR IFRAI

sprendini A(z). Sutapimo iekosime taip: atsitiktinai parink x M, skaiiuosime y = h(x), o tada x = A(y). Jeigu x = x, sutapimas rastas. Jeigu ne  veiksmus galime kartoti. Reikia isitikinti, kad P (x = x) 1/2. Paymekime Mz = {u : h(u) = z}. Skirtingiems z, z aibes Mz , Mz arba nesikerta, arba sutampa. iu aibiu yra tiek, kiek gali buti skirtingu santrauku, paymekime i skaiiu t. Taigi
t

Mi = Mzi ,

Mi Mj = (i = j),
i=1

Mi = M,

t 1 . |M| 2

Kadangi, iekant sutapimo, visi praneimai pradiniame ingsnyje gali buti parinkti su vienodomis tikimybemis, tai

P (x = x ) =
xM

P (A(h(x)) = x) 1 |M|
t i=1 xMi

1 1 = |M| |M|

|Mi | 1 1 = |Mi | |M|

xM t

|Mh(x) | 1 |Mh(x) | t 1 . |M| 2

(|Mi | 1) = 1
i=1

Jeigu maios funkcijos reikmiu aibe tures nedaug elementu, tai daug tekstu tures t pai santrauk. Tada sutapimas gali pasitaikyti kriptoanalitikui kaip aklai vitai grudas. Panagrinekime, kokio ilgio turetu buti santraukos, kad is metodas neveiktu. Tiesa, kriptograjoje jis vadinamas ne aklos vitos metodu, bet gimtadieniu ataka. Taip yra todel, kad ataka siejama su inomu elementarios tikimybiu teorijos udaviniu: kiek maiausiai moniu turi susirinkti, kad ivykio, jog atsiras gimusiu t pai metu dien, tikimybe butu didesne u 1/2? Beveik visi, bandantys atsakyti vadovaudamiesi sveiku protu, apsigauna. Atsakymas  23. Taigi panagrinekime toki sutapimo iekojimo bud: atsitiktinai pasirinkime skirtingus x1 , x2 , . . . , xn ir apskaiiuokime z1 = h(x1 ), z2 = h(x2 ), . . . , zn = h(xn ). Jeigu nors dvi reikmes sutapo, sutapimas rastas. Tegu i viso santrauku yra m, t. y. |H| = m. Padarykime prielaid, kad toks santauku skaiiavimas ekvivalentus atsitiktiniam ju pasirinkimui i visos aibes su grinimu. Tada sutapimo tikimyb galime skaiiuoti sprsdami toki udavini: kokia tikimybe, kad, i urnos su m skirtingu rutuliu paeiliui su grinimu traukdami n rutuliu, nors vien rutuli itrauksime pakartotinai? Lengviau suskaiiuoti tikimyb q, kad visi rutuliai bus skirtingi:

q =

m(m 1) . . . (m n + 1) = mn
n1

1 m

2 m

... 1

n1 m

1 exp m

i
i=1

exp

1 2 n . 2m

Jeigu sutapimo radimo tikimybe iuo metodu yra , tai q = 1 ir

n2 . 2 ln(1 )

22. MAIOS FUNKCIJOS

337

Jeigu musu kriptoanalitikas gali atlikti sutapimu paiek su milijardu pasirinktu tekstu, kiek turetu buti santrauku, kad jo sekmes tikimybe butu tik 0, 001? Uraant santraukas kaip dvejetainius odius, koks turetu buti ju ilgis? Istat n = 109 , = 103 ir kiek paskaiiav gautume:

m 5 1020 ,

santrauku ilgis bitais 69.

Tokio ilgio santraukos yra pernelyg trumpos. Praktikai dabar naudojamos 128, 256 ir 512 bitu ilgio santraukos.

22.2. Blokiniai ifrai ir maios funkcijos


Maios funkcijas naudojame kaip pagalbinius skaitmeniniu parau schemu irankius. O blokinius ifrus galime naudoti kaip pagalbinius irankius maios funkcijoms konstruoti!

Danai maios funkcijos sudaromos taip, kad santrauka sukuriama atliekant iteracinio proceso ingsnius. Tarkime, turime tam tikr funkcij

H : {0, 1}n {0, 1}n {0, 1}n .

(108)

Tada, panaudoj j, galime sukonstruoti maios funkcij h : {0, 1} H, H = {0, 1}n . Bet kokio ilgio tekst x {0, 1} padalykime n ilgio odiais, jeigu reikia, papildydami paskutiniji odi iki reikiamo ilgio:

x = x1 x2 . . . xt , hi = H(hi1 , xi ),

xi {0, 1}n . h(x) = ht .

Tegu h0 {0, 1}n yra koks nors pradinis ksuotas odis. Apibrekime

i = 1, 2, . . . , t,

itaip sudarant santrauk dalyvaus kiekvienas praneimo simbolis. Taiau kaip sudaryti (108) funkcijas? Panaios funkcijos kakur matytos... I tiesu  jos naudojamos blokinese kriptosistemose! Pavyzdiui, jeigu blokines kriptosistemos rakto ir bloko ilgiai sutampa, galime imti

H(u, v) = e(u|v),
t. y. ios funkcijos reikme  bloko u ifras panaudojant blok v kaip rakt. Taigi blokines kriptosistemos gali buti maios funkciju konstrukcijos pagrindas. Jas galima panaudoti ne vien tik minetu budu. Panagrinekime kelis maios funkciju sudarymo naudojantis kriptosistemomis metodus.

xi
c

hi1
c

xi
c

hi1E

e( | )
c ' c

xi E e( | )
c ' c

hi1E

e( | )
c ' c

hi

hi

hi

338

KODAI IR IFRAI
Matyaso-Meyerio-Oseaso, Davieso-Meyerio ir Miyaguchi-Preneelio metodai maios funkcijoms konstruoti i blokiniu kriptosistemu.

Breiniuose pavaizduotose schemose iteraciniai ingsniai apibreiami lygybemis

hi = e(xi |hi1 ) xi hi = e(hi1 |xi ) hi1 hi = e(xi |hi1 ) xi hi1 .


Metodu, inoma, yra ir daugiau. Pavyzdiui, parink dydiams 1 , 2 , 1 , 2 , 1 , 2 reikmes i F2 , galime iteracini ingsni apibreti taip:

hi = e(1 xi 2 hi1 |1 xi 2 hi1 ) 1 xi 2 hi1 .


Ne su visais parametru rinkiniais tokiu budu gauname saugias maios funkcijas.

22.3. SHA-1
Panagrinejus praktikai naudojamu maios funkciju konstrukcijas, susidaro ispudis, kad ju kurejai veikiau kliovesi savo intuicija nei kokiais nors objektyviais mokslikais kriterijais. Galite patys tuo isitikinti.

Skaitmeniniu parau schemu naudojimas be saugiu maios funkciju yra praktikai neimanomas. Nenuostabu, kad skaitmeniniu parau schemu kurejai susirupino ir maios funkciju konstravimu. Vienas i pirmuju praktiniams taikymams skirtu maios funkciju kureju  Ronaldas Rivestas. Jo idejos panaudotos kuriant MD (Message Digest) maios funkciju eim. Kita kriptograjoje gerai inoma maios funkciju eima  SHA (Secure Hash Algorithm) funkcijos. Funkcija SHA-1 buvo patvirtinta kaip standartine skaitmeninio parao DSA schemai. Dabar ios eimos funkcijos ymimos nurodant, kiek bitu turi su funkcija sudaryta teksto santrauka: SHA256, SHA-384 ir SHA-512. Panagrinekime maios funkcijos SHA-1, sudaranios 160 bitu ilgio santraukas, veikimo principus. i funkcija atlieka iteracinius 512 bitu ilgio bloku pertvarkius. Todel pirmiausia tekstas, kurio santrauk reikia sudaryti, pailginamas (jeigu reikia), kad ilgis bitais butu skaiiaus 512 kartotinis. Santrauka formuojama penkiuose registruose A,B,C,D,E, kiekviename i ju saugomi 32 bitai, taigi santraukos ilgis 532 = 160. Prie pradedant darb registrai upildomi pradinemis standartinemis reikmemis. Pirmasis teksto 512 bitu ilgio blokas padalijamas i 16 odiu po 32 bitus: m[0], m[1], . . . , m[15].

22. MAIOS FUNKCIJOS

339

Su iuo bloku bus atliekama 80 operaciju, kiekvienai operacijai reikalinga 32 bitu odiu pora Kt , Wt , t = 0, 1, . . . 79. Jos sudaromos taip: 230 2 , 0 t 19, 30 2 3 , 20 t 39, Kt = 30 5 , 2 40 t 59, 30 2 10 , 60 t 79,

Wt =

m[t], 0 t 15, (Wt3 Wt8 Wt14 Wt16 ) 1, 15 < t < 80,

ia ir kitur r reikia ciklini postumi i kair per r bitu; skaiiai Kt uraomi 32 bitu odiais. Kiekviename i 80 ingsniu panaudojama sava funkcija

ft : {0, 1}32 {0, 1}32 {0, 1}32 {0, 1}32 .


tai jos visos, apibretos naudojant logines OR, AND ir NOT operacijas su bitais: (x y) ((x) z), 0 t 19, x y z, 20 t 39, ft (x, y, z) = (x y) (x z) (y z), 40 t 59, x y z, 60 t 79. O dabar jau galima nusakyti funkcijos darb labai trumpai: kiekviename ingsnyje t = 0, 1, . . . , 79 atliekami tokie veiksmai:

= (A 5) + ft (B, C, D) + E + Wt + Kt ,

E = D, D = C, C = B 30, B = A, A = T.
Sudetingiausias veiksmas yra odiu sudetis: odiai interpretuojami kaip naturalieji skaiiai ir sudedami moduliu 232 . Atlikus visas 80 iteraciju, registruose A, B, C, D, E esanios reikmes naudojamos atliekant kito 512 bitu ilgio bloko pertvarkius. Tai, kas iuose registruose atsiranda paskutiniojo bloko pertvarkymo pabaigoje, ir yra maios funkcijos reikme. Iveikti maios funkcij reikia imokti efektyviai rasti sutapimus. Kartais pasklinda viena kita inia, kad toki sutapim pavyko surasti. Taiau tokie pavieniai sutapimai praktiniam schemu, kuriose ios maios funkcijos naudojamos, saugumui gresmes kol kas nekelia.

340

KODAI IR IFRAI

22.4. Aritmetine maios funkcija


Ar yra maios funkcija, kurios saugumas kokiu nors budu gali buti irodytas? Viena kita atsiranda...

Panagrinesime Chaumo, van Heijsto ir Ptzmann sugalvot maios funkcij, kurios saugum galime susieti su diskreiojo logaritmo udavinio sudetingumu. Tegu p yra saugus pirminis skaiius, t. y. p = 2q + 1, ia q irgi yra pirminis skaiius. Tegu , Fp yra du generuojantys elementai. Apibreime funkcij h : {0, 1, . . . , q 1} {0, 1, . . . , q 1} Fp taip:

h(x1 , x2 ) x1 x2 (mod p).


Jeigu uraytume funkcijos argumentus x1 , x2 ir reikm h(x1 , x2 ) bitais, matytume, kad reikmei urayti reikia madaug dvigubai maiau simboliu. Taigi h galime laikyti maios funkcija. Tiesa, ji apibreta tik riboto ilgio duomenims, taiau yra metodu, kaip tokias funkcijas pratsti. ios funkcijos saugumo patvirtinimu galime laikyti toki teigini:

x1 , x2 = x , x su slyga h(x1 , x2 ) = h(x , x ), galime rasti log . 1 2 1 2 Taigi sutapimo radimas tolygus diskreiojo logaritmo udavinio atvejo sprendimui. Kadangi is udavinys laikomas sudetingu, tai ia maios funkcija galima pasikliauti. Irodymas. Tegu x1 , x2 = x , x , taiau 1 2 x1 x2 x1 x2 (mod p).
Jeigu butu x2 = x , tai i karto gautume, kad x1 = x . Taigi galime daryti 2 1 prielaid, kad x2 = x . Paymej u = log , gausime 2

146 teorema. Surad funkcijos h(x1 , x2 ) sutapim, t. y. argumentus

x1 +ux2 x1 +ux2 (mod p)


arba

u(x2 x ) x x1 (mod p 1). 2 1

(109)

Paymekime d = (x2 x , p 1). Jeigu d = 1, tai diskretuji logaritm 2 gauname i karto:

u (x x1 )(x2 x )1 (mod p). 1 2


Jeigu d = 2, tai (109) tures du sprendinius, i kuriu atsirinksime, kuris mums tinka. Atvejo d = q i viso negali buti. Ities, kadangi 0 x2 q 1, 0 x q 1, tai (q 1) x2 x q 1 ir is skirtumas negali dalytis i 2 2 q. Teorema irodyta.

23. PASLAPTIES DALIJIMO SCHEMOS

341

23 Paslapties dalijimo schemos


Penki keliautojai rado dideles vertes brangakmeni. Kadangi keliones vargai suartina, tai nesutarimu del netiketo radinio nekilo, kol jie sugrio. O sugri jie nutare brangakmeni laikyti seife, kol nusprs, k su juo veikti. Taiau kasdienis gyvenimas jau nebe kelione. Ar nekils kam nors noras pasisavinti brangenyb? Kaip padaryti, kad seif jie galetu atverti tik susirink visi? Vienas sprendimas  reikia, kad butu penki uraktai su skirtingais raktais. O jeigu uraktas vienas, be to, atrakinamas surinkus, pavyzdiui, deimties skaitmenu kod? Kaip nors paskirstyti skaitmenis po por, kad kiekvienas inotu tik savo? Tai imanoma, taiau nelabai saugu. Vienas i tu penkiu gal ir negales apgauti likusiu keturiu, taiau keturi vien  visai lengvai. Juk susirinkus keturiems tektu patikrinti daugiausiai imt variantu, kad seifas atsivertu. Paiurekime, kaip toks paslapties padalijimo udavinys sprendiamas kriptograjoje.

23.1. Shamiro paslapties dalijimo schemos su slenksiais


Kartais paslapiai atkurti butina, kad dalyvautu visi, kartais pakanka, kad susirinktu ne maiau kaip t dalyviu.

Paslapties padalijimo schema negali apsieiti be dalytojo(s). Tarkime, kad dalytojas yra D (Dalia arba Dalius), kuri(s) po paslapties dalijimo ivyksta kur nors labai ilgam. Paslapties daliu gavejus ymekime D1 , D2 , . . . , Dn . Jeigu paslaptis yra pakankamai ilgas dvejetaines abeceles odis S {0, 1}m , o padalyti paslapti reikia taip, kad tik visi dalyviai susirink galetu j atkurti, sprendimas gali buti labai paprastas. Dalytojas atsitiktinai parenka n 1- odi S1 , . . . , Sn1 {0, 1}m ir apskaiiuoja

Sn = S S1 S2 . . . Sn1 .
Dabar kiekvienas dalyvis Di gauna savo paslapties dali Si . Susirink visi kartu gali atkurti paslapti taip:

S = S1 S2 . . . Sm1 Sn .
O tai Shamiro pasiulyta schema, naudojanti lyginius. Tegu m yra didelis naturinis skaiius, o paslaptis  koks nors skaiius S Zm . Dalytojas D atsitiktinai parenka skaiius S1 , S2 , . . . , Sn1 Zm ir apskaiiuoja Sn S S1 S2 . . . Sn1 (mod m). Kiekvienas dalyvis Di gauna savo paslapties dali Si . Jas visas sudejus gaunama tikroji paslaptis:

S S1 + S2 + . . . + Sn (mod m).

342

KODAI IR IFRAI

Aiku, kad susirinkusiems n 1 dalyviui atspeti paslapti taip pat sunku kaip ir tam vienam, neatejusiam i susitikim. Taigi sugadinti paslapties atkurimo misterij gali bet kuris neatvyks i rengini dalyvis. Galima sugadinti ir kitaip  jeigu bent vienas i dalyviu nurodytu savo paslapties dali neteisingai, paslaptis butu nesuinota, nesekmes kaltininkas irgi nebutu nustatytas. Panagrinekime, kaip bent i dalies galima ivengti tokiu nepatogumu.

118 apibreimas. Tegu S yra paslaptis, o S1 , S2 , . . . , Sn yra jos dalys, kurias dalytojas D iteike dalyviams D1 , D2 , . . . , Dn . i paslapties padalijim vadinsime paslapties dalybomis su slenksiu t (1 t n), jeigu S galima atkurti tik i ne maiau kaip t bet kuriu paslapties daliu. Abieju nagrinetu paslapties padalijimo schemu slenkstis lygus dalyviu skaiiui. Jeigu t = 1, tai paslapties dalijimo budas irgi aikus: Si = S, t. y. kiekvienam iteikiama paslapties kopija. O kaip padalyti paslapti, kai 1 < t < n? Panagrinesime Shamiro pasiulyt metod. Dalytojas D parenka pakankamai dideli pirmini skaiiu p, p > n, parenka skirtingus skaiius x1 , x2 , . . . , xn Fp ir kiekvienam dalyviui Di iteikia xi . ie skaiiai nera slapti, todel galima, pavyzdiui, vis skaiiu sra kartu su p paskelbti paslapties dalyboms skirtame tinklalapyje. Paslaptis yra skaiius S Fp . Dalytojas atsitiktinai pasirenka skaiius a1 , a2 , . . . , at1 ir sudaro daugianari
a(x) = S + a1 x + a2 x2 + . . . + at1 xt1 Fp [x].
Paslapties dalis, kuri iteikiama dalyviui Di , yra Si a(xi ) (mod p). Paslapti S, t. y. laisvji daugianario nari, galima nustatyti i bet kuriu t paslapties daliu Si1 , Si2 , . . . , Sit . I tikruju, susirink t dalyviu gali pasinaudodami savo paslapties dalimis sudaryti t lygiu su t neinomuju sistem

S + a1 xi1 + a2 x21 + . . . + at1 xt1 = Si1 , i i1 S + a1 xi2 + a2 x22 + . . . + at1 xt1 = Si2 , i i2 ........................ S + a1 xit + a2 x2t + . . . + at1 xt1 = Sit i it
su neinomaisiais S, a1 , a2 , . . . , at1 . i sistema moduliu p turi vieninteli sprendini. Taigi t dalyviu visada gali surasti S. Paslapti galima apskaiiuoti ir i karto, pasinaudojus Lagrange'o interpoliacine formule. Kadangi daugianario a(x) laipsnis yra t 1, tai ji galime surasti inodami t jo reikmiu, igyjamu su skirtingomis argumento reikmemis. Tegu vi = a(ui ), i = 1, 2, . . . , t, ia ui Fp yra skirtingi elementai. Tada t x uj a(x) = vi (mod p). ui uj 1jt
i=1
j=i

23. PASLAPTIES DALIJIMO SCHEMOS

343

Skaiiuojant dalyb reikia suprasti, inoma, kaip daugyb i dalikliu atvirktiniu elementu kune Fp . Jeigu istatysime x = 0, gausime laisvji nari, t. y. paslapti, kuri reikia atskleisti:
t

S
i=1

vi
1jt j=i

uj (mod p). uj ui

Taigi susirink t dalyviu Di1 , Di2 , . . . , Dit gali istatyti i i lygyb vi = Sji , ui = xji ir paslaptis bus suinota.

Shamiro paslapties dalijimo schema su slenksiu t Paslapties dalijimas: D  dalytojas, D1 , D2 , . . . , Dn  dalyviai. D


parenka pirmini p, skirtingus x1 , x2 , . . . , xn Fp ir Di iteikia skaiiu xi . Pirminis p yra vieas, paslaptis  skaiius S Fp . D parenka skaiius a1 , a2 , . . . , at1 , sudaro daugianari

a(x) = S + a1 x + a2 x2 + . . . + at1 xt1


ir, apskaiiavs paslapties dalis Si a(xi ) (mod p), iteikia jas Di . Paslapties atkurimas: susirink t dalyviu Di1 , Di2 , . . . , Dit paslapti gali atkurti taip:
t

S
i=1

Sji
1kt k=i

xjk (mod p). xjk xji

Pastebekime, kad Shamiro paslapties padalijimo schem galime sukurti imdami vietoj Fp bet koki baigtini kun Fq . Jeigu bent vienas i susirinkusiu dalyviu nurodys neteising savo paslapties dali, paslaptis bus neatkurta. Tarkime, i paslapties atkurimo rengini" susirinko dalyviai D1 , D2 , . . . , Dt+r (r 2), taigi dalyviu yra iek tiek daugiau, negu i tikruju reikia. Samprotavimai, inoma, nepasikeistu, jeigu vietoje ios grupes susirinktu kita tokio pat dydio dalyviu grupe. I iu dalyviu paslapiu sudarykime odi c = S1 , S2 , . . . , St+r . Prisimin, kaip dalytojas sukure ias paslapties dalis, galime urayti:

c = S 1, 1, . . . , 1 + a1 x1 , x2 , . . . , xt+r + . . . + at1 xt1 , xt1 , . . . , xt1 . t+r 1 2


Prisimin kodavimo teorij, galime padaryti ivad: c yra Reedo-Solomono kodo su abecele Fp odis! io kodo parametrai yra [t + r, t, r + 1], taigi kodas gali itaisyti v = [r/2] klaidu. Jeigu ne visi dalyviai nurodys teisingas savo paslapiu dalis, tai gausime ne odi c, bet ikraipyt odi d. Taiau jeigu nesiningu dalyviu

344

KODAI IR IFRAI

nera daugiau kaip v, tai, pritaik klaidu taisymo algoritm, ne tik nustatysime tuos, kurie melavo, bet ir suinosime, kokias savo paslapiu dalis jie turejo nurodyti!

23.2. Dar dvi schemos


Vienoje schemoje naudojamasi algebra, o kitoje  skaiiu teorija. Jeigu tiksliau  kinu liekanu teorema.

Galima tarti, kad, atkuriant paslapti, padalyt pagal Shamiro schem su slenksiu, sprendiama t lygiu sistema su t neinomuju. Kiekvienas dalyvis i i sistem atnea" savo lygti. Taigi galima isivaizduoti, kad, dalijant paslapti, kiekvienas dalyvis gauna duomenis savo lygiai  paslapties atkurimo sistemos daliai  sudaryti. Panagrinekime Blakely paslapties padalijimo schem, kurioje dalyviai gauna jau dalytojo sudarytas lygtis. Tegu p yra pakankamai didelis pirminis skaiius, paslaptis  skaiius S < p. Dalytojas atsitiktinai parenka skaiius s2 , s3 , . . . , st , sudaro vektoriu

s = s1 , s2 , . . . , st ,

s1 = S,

ir pradeda dalyti paslapti. Dalyvio Dj paslapties dali jis sukuria taip: (j) (j) (j) parenka atsitiktinius elementus a1 , a2 , . . . , at1 , apskaiiuoja
t1

cj st
i=1

ai si (mod p)

(j)

ir iteikia dalyviui Dj lygti


t1

xt cj +
i=1

ai xi (mod p).

(j)

Susirink t dalyviu gali sudaryti t lygiu su t neinomuju sistem ir j isprend rasti paslapti m1 = S. Tiesa, kad tai jiems pavyktu, t. y. kad sprendinys butu vienintelis, sistemos koecientu matrica turi buti neisigimusi. Jeigu dalytojas nesinaudojo kokiu nors specialiu koecientu parinkimo budu, kartais taip gali ir nebuti. Shamiro paslapties padalijimo schema i tiesu yra atskiras ios sistemos atvejis su garantija, kad bet kuri t lygiu sistema tures vieninteli sprendini. O dabar panagrinekime paslapties padalijimo schem, kurioje panaudojama senoji geroji kinu liekanu teorema. Metod vadinsime autoriu vardais: Asmutho-Bloomo paslapties padalijimo schema su slenksiu. Tegu n yra dalyviu skaiius, o t  slenksio parametras. Dalytojas parenka n + 1- skaiiu p < p1 < . . . < pn ; pi turi buti tarpusavyje pirminiai (kad butu pirminiai nebutina), be to, reikia, kad butu patenkinta slyga:

p1 p2 . . . pt > ppn pn1 . . . pnt+2 .

(110)

23. PASLAPTIES DALIJIMO SCHEMOS

345

Taigi t maiausiuju skaiiu pj sandauga turi buti didesne u t1 didiausiuju sandaug. Visi ie skaiiai yra viei. Tegu skaiius S, S < p, yra paslaptis, kuri reikia padalyti. Paymekime N = p1 p2 . . . pt . Kadangi N yra maiausiuju t sekos p1 , p2 , . . . , pn skaiiu sandauga, tai, parink bet kuriuos kitus t skaiiu, tikrai gausime daugiau. Dabar parinkime bet koki (geriau dideli) skaiiu r, tenkinanti slyg 0 < r < N/p 1, ir sudarykime skaiiu

S = S + rp,

S < S + N p < N.

Taigi S yra maesnis u bet kuriu t skaiiu pi1 , pi2 , . . . , pit sandaug. Paslapiai atskleisti pakanka suinoti S , nes S S (mod p). Dalyvio Dj paslapties dalis sudaroma taip: Sj S (mod pj ). Taigi kiekvienas dalyvis ino paslapties dalybos i savo modulio liekan. Susirink dalyviai Di1 , Di2 , . . . , Dit gali pasinaudoti kinu liekanu teorema ir surasti S dalybos i pi1 pi2 . . . pit liekan; taiau S yra maesnis u i sandaug skaiius, tai liekana ir bus is skaiius. Galbut kilo klausimas, o kam reikia (110) slygos? Atsakymas: kad paslapties negaletu atskleisti maesne nei t dalyviu grupe!

Asmutho-Bloomo paslapties padalijimo schema su slenksiu t Paslapties dalijimas: dalytojas D parenka skaiius
p < p1 < p2 < . . . < pn , (pi , pj ) = 1, i = j, p1 p2 . . . pt > ppn pn1 . . . pnt+2 . Paslaptis  skaiius S, S < p. Dalytojas parenka r, r < N/p 1, ir apskaiiuoja S = S + rp. Dalyviui Di paskiriamas skaiius pi ir saugiu kanalu perduodama paslapties dalis Si S (mod p). Paslapties atkurimas: t dalyviu, naudodamiesi kinikja liekanu teorema isprendia lyginiu sistem x Sij (mod pij ) (j = 1, 2, . . . , t) ir randa sprendini x = S . Paslaptis S S (mod p).

23.3. Leidimu strukturos


Kaip padalyti seifui atidaryti naudojam slaptaodi, kad bet kuri darbuotoju pora galetu ji atidaryti, iskyrus du labai gerus draugus?

Nagrinetose paslapties padalijimo schemose visi dalyviai turi vienod svori", t. y. nei vieno i ju paslapties dalis nera svarbesne u kitu. Nesudetinga paslapti padalyti taip, kad, dalyvaujant svarbesniems dalyviams, pakaktu maiau dalyviu nei numatyta. Pavyzdiui, kai kuriems dalyviams galime duoti po daugiau paslapties daliu. Taiau ir toks paslapties padalijimas kartais gali buti nepatikimas.

346

KODAI IR IFRAI

Tarkime, nusprsta paslapti padalyti n dalyviams, kad j galetu atkurti ne maiau kaip trys, t. y. slenksio parametras t = 3. Taiau grupeje yra du svarbus asmenys A ir B, kuriems mes noretume suteikti daugiau galiu. Galime jiems duoti po dvi paslapties dalis. Tada paslapiai atverti pakaks A (arba B) ir dar vieno dalyvio. Taiau A ir B dviese taip pat gali atverti paslapti! O jeigu Algis ir Birute  brolis ir sesuo? Panagrinekime paslapties padalijimo metodus, labiau atsivelgianius i dalyviu tarpusavio santykius. Tegu D = {D1 , D2 , . . . , Dn } yra dalyviu aibe. Jos poaibiu sistem G vadinsime leidimu struktura, jeigu kiekvienos aibes A G viraibis B (t. y. aibe, tenkinanti slyg A B ) taip pat ieina i G. Akivaizdu, kad norint apibreti leidimu struktur G , pakanka nurodyti tik toki jos posistem G, kad su kiekviena A jos poaibiai nepriklausytu . Toki posistem vadinsime leidimu strukturos branduoliu. Pavyzdiui, visu poaibiu, kurie turi lygiai po t elementu, sistema yra leidimu strukturos branduolys.

119 apibreimas.

120 apibreimas. Sakysime, kad paslapties padalijimo schema realizuoja leidimu struktur G, jeigu paslapti i savo daliu gali atkurti tik tokie dalyviai, i kuriu sudarytas poaibis priklauso G. Nesunku isitikinti, kad norint realizuoti leidimu struktur G reikia paslapti padalyti taip, kad j galetu atkurti poaibiu i branduolio dalyviai, taiau negaletu atkurti tokie dalyviai, kurie nesudaro jokio B i viraibio. Bet koki leidimu struktur galima realizuoti! Panagrinekime labai paprast metod, kuri pasiule Benalohas ir Leichteris. Ju idej suprasime panagrinej pavyzdi. Tegu D = {D1 , D2 , D3 , D4 , D5 } yra dalyviu aibe, o
G1 = {D1 , D4 , D5 }, G2 = {D1 , D2 , D4 }, G3 = {D3 , D4 }
yra leidimu strukturos branduolys. Tegu paslaptis yra skaiius S. Pasinaudosime Shamiro paslapties padalijimo schema, kurioje paslapiai atkurti reikia visu dalyvavimo. Tegu n yra pakankamai didelis skaiius, S < n. Grupes G1 dalyviams iteikime skaiius

S11 , S14 , S15 S S11 S14 (mod n),


ia S11 , S14 yra atsitiktinai parinkti skaiiai. Sudej savo paslapiu dalis, ios grupes dalyviai visada gales atkurti paslapti. Grupes G2 dalyviams iteikime

S21 , S22 , S24 S S21 S22 (mod n),


o paskutiniosios grupes dalyviams

S33 , S34 S S33 (mod n).

23. PASLAPTIES DALIJIMO SCHEMOS

347

Paslaptis padalyta, leidimu struktura realizuota. Kiekvienas dalyvis gavo tiek paslapties daliu, keliose branduolio grupese jis dalyvauja: treiasis tik vien, o ketvirtasis tris. Taigi kuo asmuo svarbesnis", t. y. i kuo daugiau grupiu jis itrauktas, tuo didesnis jo raktu ryulys. Galima pasistengti sudaryti leidimu struktur realizuojani paslapties padalijimo schem, kurioje kiekvienas dalyvis gauna po tokio paties dydio paslapties dali, tinkani paslapiai atkurti visose grupese. Taiau tiketis, kad j bus paprasta sudaryti, neverta. Panagrinekime Brickelio paslapties padalijimo schem. Tegu dalyviu aibe yra D = {D1 , D2 , . . . , Dn }, o  leidimu strukturos, kuri reikia realizuoti, branduolys. Tegu paslaptis vel yra skaiius S. Dalytojas turi parinkti pakankamai dideli pirmini skaiiu p, naturini skaiiu d ir sukonstruoti funkcij : D Fd , tenkinani toki slyg: p

1, 0, . . . , 0 L((Di1 ), (Di2 ), . . . , (Dir ))


tada ir tik tada, kai dalyviu aibe {Di1 , Di2 , . . . , Dir } yra kokios nors aibes i branduolio viraibis. i funkcija gali buti viea. ia L(. . .) ymi tiesini odiu sistemos apvalk. ios funkcijos konstravimas yra sunkiausia schemos dalis. Bandymu kelias tikriausiai geriausias budas tokiai funkcijai sudaryti. Sudarius funkcij, paslaptis padalijama labai paprastai. Dalytojas, parinks a2 , a3 , . . . , ad Fp atsitiktinai, sudaro dar vien vektoriu

a = a1 , a2 , . . . , ad ,

a1 = S,

ir apskaiiuoja paslapties dalis Si a (Di ) (mod p). enklas ia ymi skaliarin vektoriu sandaug. Dabar, tarkime, susirinko dalyviai, kuriu sudaroma aibe G priklauso leidimu strukturos branduoliui arba yra jo viraibis. Tada, isprend tiesiniu lygiu sistem, jie gali surasti skaiius ci , kad butu

1, 0, . . . , 0 =
Di G

ci (Di ).

Jeigu padauginsime skaliarikai i lygyb i a, gausime

S, 0, . . . , 0
Di G

ci (a (Di ))
Di G

ci Si (mod p).

Taiau deinij lyginio pus dalyviai gali apskaiiuoti! Taigi jie gali atkurti ir paslapti. Shamiro paslapties padalijimo schema su slenksiu i tikruju yra atskiras ios schemos atvejis. Funkcija : D Ft apibreiama taip: p

(Di ) = 1, xi , x2 , . . . , xt1 . i i

348

KODAI IR IFRAI

24 Kriptograniai protokolai
Kriptogranes priemones  kriptosistemos, skaitmeniniai paraai, maios funkcijos ir kitos schemos  skirtos ivairiems duomenu apsaugos udaviniams sprsti. ie udaviniai kyla labai konkreiose aplinkose. Mums reikia apsaugoti ne duomenis apskritai, bet, pavyzdiui, duomenis, kurie perduodami kompiuteriniais tinklais arba iraomi i duomenu baz. Taigi kriptogranes apsaugos priemones tampa bendros informacines sistemos dalimi, kurios efektyvum lemia ne vienintelio asmens veiksmai. Todel butinos taisykles, kurios numato, kokius veiksmus ir kokia tvarka turi atlikti asmenys, kad naudojama kriptograne priemone i tikruju utikrintu toki duomenu apsaug, koki ji galetu suteikti. Ta taisykliu visuma, numatanti asmenu (arba juos atstovaujaniu kompiuteriu ar programu), naudojaniu kriptogran schem, veiksmu sek, ir vadinama kriptograniu protokolu. Su kriptograniais protokolais jau susidureme, pavyzdiui, nagrinedami nepaneigiamo parao schem.

24.1. Raktu paskirstymas


Noretume susitarti su draugu del simetrines kriptosistemos rakto, bet musu ryio kanalas kontroliuojamas. Ieitis yra!

Vieojo rakto kriptosistemoms saugaus kanalo raktams perduoti nereikia. Taiau ifravimo ir deifravimo veiksmai naudojant vieojo rakto kriptosistemas atliekami daug leiau negu simetrinese kriptosistemose. Galbut galima suderinti abieju kriptosistemu privalumus? Pavyzdiui, naudojantis vieojo rakto kriptosistema, galima perduoti simetrines sistemos raktus, o kai raktai perduoti  ifruoti ir deifruoti greiiau veikiania simetrine sistema. Pirmji bud simetrines kriptosistemos raktams perduoti nesaugiu kanalu pasiule Die ir Hellmanas. Panagrinekime ju protokol. A ir B nori sudaryti simetrines kriptosistemos rakt, taiau negali naudotis saugiu kanalu. Pirmiausia jie turi susitarti del pakankamai didelio pirminio skaiiaus p ir generuojanio elemento g Fp . Tai jie gali padaryti nesaugiais kanalais. Tada kiekvienas pasirenka po skaiiu: tarkime, A pasirinko skaiiu xA , 0 < xA < p 1, o B  skaiiu xB , 0 < xB < p 1. Dabar A skaiiuoja X g xA (mod p) ir siunia B, o B savo ruotu  skaiiuoja Y g xB (mod p) ir siunia A. Tiek A, tiek B gali surasti t pati skaiiu ir naudoti ji kaip simetrines kriptosistemos rakt:

K Y xA g xA xB (mod p),

K X xB g xA xB (mod p).

24. KRIPTOGRAFINIAI PROTOKOLAI

349

Die-Hellmano rakto nustatymo protokolas Pasirengimas: A ir B vieu kanalu susitaria del pirminio skaiiaus p ir Raktu nustatymas:
generuojanio elemento g. A pasirenka skaiiu xA , 0 < xA < p 1, o B  skaiiu xB , 0 < xB < p 1.

1. A skaiiuoja X g xA (mod p) ir siunia B; B skaiiuoja Y g xB (mod p) ir siunia A. 2. A apskaiiuoja rakt K Y xA (mod p), B apskaiiuoja rakt K X xB (mod p). i protokol galime naudoti ir didesnes grupes bendram simetrines kriptosistemos raktui nustatyti. Tegu, pavyzdiui, A, B ir C nesaugiu kanalu nori sudaryti bendr rakt. Kaip ir anksiau, pirmiausia jiems reikia susitarti del pirminio skaiiaus p ir generuojanio elemento g ir pasirinkti po skaiiu. Paymekime A, B ir C pasirinktus skaiius xA , xB ir xC . Tada jiems reikia atlikti iuos protokolo ingsnius: 1. A siunia B g xA (mod p), gauna i C g xC (mod p); B siunia C g xB (mod p), gauna i A g xA (mod p); C siunia A g xC (mod p), gauna i B g xB (mod p). 2. A siunia B g xA xC (mod p), gauna i C g xB xC (mod p); B siunia C g xA xB (mod p), gauna i A g xA xC (mod p); C siunia A g xB xC (mod p), gauna i B g xA xB (mod p). 3. kiekvienas, keldamas 2-ajame ingsnyje gaut skaiiu laipsniu savo rodikliu, apskaiiuoja bendr rakt K g xA xB cC (mod p). Trumpai protokol galima apibudinti taip: gavs skaiiu, dalyvis kelia ji laipsniu savuoju rodikliu ir siunia toliau. Pakel laipsniu paskutiniji kart, visi dalyviai gauna t pati skaiiu  rakt. ifravimas simetrine kriptosistema galimas tik baigus rakto nustatymo protokol. Hugeso raktu nustatymo protokolas suteikia galimyb A uifruoti ir nusiusti B praneim iandien, o susitarim del rakto nukelti rytdienai. Tarkime, raktas, kuri panaudojo ifravimui A, sudarytas taip: K x (mod p). Del pirminio p ir generuojanio elemento g turi buti susitarta g anksiau arba A gali iuos dydius perduoti B nesaugiu kanalu. Gavusi ifr, kurio kol kas negali iifruoti, B pradeda raktu nustatymo protokol: 1. B parenka skaiiu y, (y, p 1) = 1, ir A siunia Y g y (mod p); 2. A, gavs Y, siunia B X Y x (mod p);

350

KODAI IR IFRAI

3. B skaiiuoja z y 1 (mod p 1) ir randa rakt K X z (mod p). Jeigu raktui nustatyti naudojamas is protokolas, tai A gali nusiusti t pati ifruot praneim keliems draugams, o kai jie nores ji perskaityti, ivykdyti rakto nustatymo protokol. Jeigu grupe dalyviu D1 , D2 , . . . , Dn nori naudotis simetrine kriptosistema su atskiru kiekvienai porai raktu, jie gali susitarti del p ir g ir paskelbti savo grupes tinklalapyje skaiius

X1 g x1 (mod p), X2 g x2 (mod p), . . . , Xn g xn (mod p),


ia 0 < xi < p1 dalyvio Di pasirinktas skaiius. Tada Di , noredamas rayti x ifruot laik Dj , gali naudoti kaip rakt skaiiu Kij Xj i (mod p). Nors ie protokolai isprendia rakto nustatymo udavini, jie yra bejegiai prie vidurio atak. Vidurio atakos esme tokia: kai A siunia B skaiiu X g xA (mod p), Z gali ji perimti, isaugoti ir pasiusti B X g xZ (mod p). T pati Z gali padaryti ir su B siuniamu skaiiumi Y g xB (mod p). Kai raktu nustatymo protokolas bus ubaigtas, A tures bendr su Z rakt K1 g xA xZ (mod p), o B  bendr su Z rakt K2 g xB xZ (mod p). Tada Z gales gautus i A laikus iifruoti su K1 ir, vel uifravs su K2 , siusti B. Analogikai Z gales elgtis su B laikais. Taigi Z taps nepagaunamu ryio kontrolieriumi, jeigu tik nesukels itarimo delsdamas persiusti laiku. Kovai prie vidurio atakas reikalingos papildomos priemones ir protokolai. Galima ivengti vidurio ataku, naudojant raktu nustatymo protokoluose skaitmeninius paraus.

24.2. Irodymai, nesuteikiantys iniu


Tokius irodymus kartai pateikia informatikai profesionalai. Jeigu paklausite, kaip dirbama su kokia nors sudetinga programa, tikriausiai ivysite virtuozik grojim klaviatura, greit meniu ir langu kait... Jums bus irodyta, kokia gera i programa, taiau kain ar daug suteikta iniu...

Irodymai, nesuteikiantys iniu (Zero Knowledge Proofs (ZKP), angl.),  tai irodymai, kuriais irodinetoja I (Irena) tikrintojui T (Tomui) irodo, kad ino tam tikrus duomenis d, taiau ju neatskleidia. Dar daugiau, i tos informacijos, kuri I suteikia T, jo (o taip pat ir pasyviai stebiniu protokolo eig) inios apie d nepasikeiia. Galime suprasti, kad tai i tiesu imanoma, prisimin, kaip naudojamasi vieojo rakto kriptosistema. Tarkime, I sukure vieojo rakto kriptosistem: paskelbe vieji rakt Kv ir isaugojo savo kompiuteryje privatuji Kd . T nori isitikinti, ar kriptosistema, kuri sukure I, tikra, ar I nepaskelbe rakto Kv iaip sau... T gali uifruoti tekst M ir pasiusti I ifr C = e(M |Kv ), praydamas, kad I atsiustu M. Jeigu Irena ivykde praym, tai Tomas gali pripainti tai kaip irodym, kad Irena tikrai ino deifravimui skirt rakt.

24. KRIPTOGRAFINIAI PROTOKOLAI

351

Taigi irodymas, nesuteikiantis iniu, yra tam tikras protokolas, kuriam pasibaigus T isitikina, kad I tikrai ino tai, k teigia inanti, taiau i duomenu, naudotu vykdant protokol, jos iniu nustatyti negalima. Panagrinekime kelet pavyzdiu. Graf G galime urayti nurodydami jo viruniu aib V ir viruniu, kurios yra sujungtos briaunomis, poru aib E. ias viruniu poras vadinsime tiesiog briaunomis. Grafai G1 = V1 , E1 ir G2 = V2 , E2 vadinami izomorkais, jeigu |V1 | = |V2 | ir egzistuoja abipus vienareikme viruniu atitiktis : V1 V2 , kad v1 , v2 E1 tada ir tik tada, kai (v1 ), (v2 ) E2 . Turint graf G = V, E , sudaryti jam izomorkus grafus nesunku: parinkime koki nors viruniu perstat : V V ir apibrekime nauj briaunu aib E = { (v1 ), (v2 ) : v1 , v2 E}. Naujasis grafas H = V, E bus izomorkas G. ymesime ji H = (G). Savo ruotu G galime gauti i H keitiniu 1 , taigi G = 1 (H). Taiau, turint du grafus su tiek pat viruniu, nustatyti, ar jie yra izomorki  sudetingas udavinys. Tarkime, Irena teigia, kad grafai G1 = V, E1 ir G2 = V, E2 yra izomorki; kadangi viruniu skaiiai abiejuose grafuose tie patys, galime jas ymeti tais paiais simboliais, pavyzdiui, skaiiais. Taigi I teigia inanti abipus vienareikm atitikti : V V, isaugani briaunas. Ji gali irodyti Tomui, kad nemeluoja, neatskleisdama atitikties . Irodymo protokolas vykdomas taip

I: irodysiu, kad inau : G1 G2


1. I pasirenka atsitiktin perstat : V V ir, sudariusi nauj graf H = (G1 ), siunia ji T; 2. T atsitiktinai parenka skaiiaus i {1, 2} reikm ir siunia I; 3. jeigu i = 1, tai I atsiunia perstat = , jeigu i = 2  perstat = 1 . 4. gavs , T tikrina, ar H = (Gi );

Kadangi grafai G1 ir G2 yra izomorki, tai naujai sudarytas grafas H yra izomorkas jiems abiem. T antrajame ingsnyje pareikalauja, jog I atskleistu arba H ir G1 , arba H ir G2 izomorzm. Jeigu ji ino G1 ir G2 izomorzm, ji nesunkiai gali ivykdyti abu reikalavimus. Kokia galimybe apgauti tikrintoj, t. y. pasiekti, kad jis patiketu nesamomis iniomis?

352

KODAI IR IFRAI

1 Tikimybe, kad antrajame ingsnyje T pasirinks i = 1, lygi 2 . Tai ir yra apgavystes tikimybe, nes I atsakymui visai nereikia iniu apie G1 ir G2 izomorzm. Protokol reikia kartoti. Jeigu jis kartojamas k kartu, tai apgavystes tikimybe lygi 21 . Labai svarbu, kad I negaletu nuspeti, koki skaiiu atsius k T. Jeigu, pavyzdiui, ji tikrai ino, kad T sius skaiiu i = 2, ji protokolo pradioje gali pasiusti graf H = (G2 ) ir, gavusi i = 2, siusti tikrintojui = . Siuntineti grafus ir atlikti su jais skaiiavimus nelabai patogu. Geriau siuntineti skaiius. Panagrinekime Fiato-Shamiro protokol, kuriuo naudodamasi I irodo, kad ino lyginio

x2 a (mod n),

n = pq,

sprendini v , ia p, q yra pirminiai skaiiai, ju sandauga n paskelbiama vieai. Taigi I ino skaiiu v, v 2 a (mod p), ir nori jo neatskleisdama tai irodyti T. Protokolas vykdomas taip:

I: irodysiu, kad inau v, v 2 a (mod n)


1. I pasirenka atsitiktini skaiiu r ir siunia T b r2 (mod n); 2. T atsitiktinai pasirenka i {0, 1} ir siunia I; 3. jeigu i = 0, I siunia T skaiiu h = r, jeigu i = 1, ji siunia h = rv; 4. T tikrina, ar h2 ai b (mod n); jeigu lyginys teisingas  irodym priima.

Jeigu I laikosi protokolo, T visada priims irodym. I tikruju, jei i = 0, tai T tikrina, ar b r2 (mod n). Jeigu i = 1, tai T tikrina, ar ab (rv)2 (mod n). Apgavystes tikimybe ir ia lygi 1 . Jeigu i = 0, tai I atsakymui dydio v 2 nereikia. Taiau jeigu ji i tiesu neinotu v, bet inotu, kad T atsius skaiiu i = 2, ji irgi galetu apgauti. Prie pirmji ingsni ji galetu pasirinkti bet koki h, suskaiiuoti b h2 a1 (mod n) ir nusiusti i skaiiu pirmajame ingsnyje, o antrajame  h. Lyginys, kuri tikrins T, bus teisingas. Kad apgavystes tikimybe butu maa, protokol reikia pakartoti kelis kartus. I iu pavyzdiu matyti, kad inios, kuriu turejim irodineja I, yra sudetingo skaiiavimo udavinio sprendinys. Panagrinekime dar vien protokol, kuriuo naudodamasi I irodo, kad ino skaiiaus diskretuji logaritm. Tegu p yra didelis pirminis skaiius, g Fp yra generuojantis elementas, Fp  bet koks nenulinis elementas. Dydiai p, g, yra viei. I ino diskretuji logaritm u = logg ir nori tai irodyti T.

24. KRIPTOGRAFINIAI PROTOKOLAI Protokolo eiga tokia:

353

I: irodysiu, kad inau u, g u (mod p)


1. I pasirenka atsitiktini skaiiu 0 < r < p 1 ir, apskaiiavusi g r (mod p), siunia T; 2. T atsitiktinai pasirenka i {0, 1} ir siunia I; 3. I skaiiuoja h r + iu (mod p 1) ir siunia T; 4. T tikrina, ar g h i (mod p). Jei lyginys teisingas, T priima irodym. Apgavystes tikimybe iame protokole ta pati kaip ankstesniuose. Ir iame protokole svarbu, kad I negaletu nuspeti, kokius skaiius atsius T.

24.3. Skaitmeniniai pinigai


Palyginkime du atsiskaitymo budus. Pirmasis  atsiskaitymas parduotuveje banko kortele. Antrasis toks: jus raote laik broliui, seseriai ar tevams, praydami, kad jie i tos metalines deutes, kurioje laikote savo santaupas, paimtu tam tikr sum ir j atiduotu A, kuriam esate skolingas. Ar skiriasi ie du budai? I esmes ne!

Taigi banko korteles su skaitmeniniais pinigais neturi nieko bendro. O kas gi yra tada tie skaitmeniniai pinigai? O kas yra popieriniai pinigai? Tam tikri dokumentai, kuriuos duodame pardavejui, jis patikrina juos specialiu aparatu ir, ir nepaklauss nei musu vardo, nei pavardes, leidia pasiimti prekes. Vadinasi, skaitmeniniai pinigai turetu buti tam tikri skaitmeniniai duomenys, kuriuos mes duodame pardavejui, o jis  atitinkamai patikrins  priima ir nereikalauja mus identikuojaniu duomenu. Jeigu norime sukurti skaitmeninius pinigus, turinius pagrindines popieriniu pinigu savybes, taiau sudarytus vien tik i skaitmenu (arba bitu, jeigu norite), reikia sugalvoti, kaip galima garantuoti tokius reikalavimus:

autentikumas: niekas negali pasiimti skaitmeniniu pinigu musu vardu; vientisumas: sukurta pinigas negali buti pakeistas (prie 1 negali buti prirayta keletas nuliu; tiesioginis mokejimas: atsiskaitant skaitmeniniais pinigais, nereikia kreiptis i bank; saugumas: tie patys skaitmeniniai pinigai negali buti ileisti pakartotinai;

354

KODAI IR IFRAI

anonimikumas: atsiskaitant skaitmeniniais pinigais, neturi buti reikalinga informacija apie moketojus.
Reikalavimu daug ir jie sunkiai igyvendinami. Juk, pavyzdiui, kopijuoti skaitmeninius duomenis nereikia nei ypatingu prietaisu, nei sugebejimu! Panagrinekime vien kiek supaprastint skaitmeniniu pinigu sistem ECash, kuri sukure kompanija DigiCash. Taigi A nori gauti skaitmeniniu pinigu ir jais atsiskaityti u prekes ar paslaugas. inoma, jis turi pirmiausia udirbti tikru pinigu ir atsidaryti sskait banke B, kad galetu iuos tikruosius pinigus versti skaitmeniniais. Kad A vardu i bank, praydamas skaitmeniniu pinigu, negaletu kreiptis Z, A turi naudotis kokia nors nustatyta autentikavimo schema, pavyzdiui, skaitmeniniais paraais. Skaitmeninis paraas butinas ir bankui B, kad butu galima patvirtinti iduotu skaitmeniniu banknotu tikrum. Tarkime, kad naudojama RSA skaitmeniniu parau schema. Naudojantis ja, galima kurti aklus paraus, duodant pasirayti umaskuotus dokumentus. Protokoluose daugybos bei kelimo laipsniu veiksmai atliekami atitinkamu moduliu. Tarkime, A nori gauti 100 EU skaitmenini banknot. Idomu, kad jam ne tik nedraudiama ji susikurti, bet jis netgi privalo pats tai padaryti. 1. A parengia n (banko nustatyt kieki, pavyzdiui, n = 100) skaitmeniniu eiluiu rinkiniu Sj = (Ij1 , Ij2 , ..., Ijn ), j = 1, ..., n; kiekvienoje eiluteje Ijk urayta A identikuojanti informacija. 2. Kiekviena eilute Ijk kaip paslaptis padalijama i dvi dalis (Ljk , Rjk ). 3. A parengia n banknotu po 100 EU: Mj = (mj , (Ljk , Rjk )k=1,...,n ), ia mj yra skirtingi banknotu identikavimo numeriai, juose sutartu budu nurodyta ir banknoto verte.
e 4. A maskuoja banknotu numerius ir siunia bankui Mj = (zj mj , (Ljk , Rjk )k=1,...,n ), ia e yra banko B skaitmeninio parao schemos vieasis raktas, zj  A pasirinktas skaiius. 5. B atrenka n 1 atsiust banknot (pvz., M1 , . . . , M99 ) ir pareikalauja, kad A nurodytu iems banknotams kurti panaudotus maskuojanius daugiklius zj .

ECash schemos skaitmeniniu banknotu idavimo protokolas

6. B patikrina, ar atrinktieji banknotai sudaryti teisingai: ar visuose juose nurodytos vienodos vertes ir visi numeriai skirtingi. 7. Jeigu atskleistieji kvitai sudaryti teisingai, B pasirao likusiji ir siunia e A ((z100 m100 )d , (L100,k , R100,k )k=1,...,n ). 8. A paalina maskuojamji daugikli ir turi skaitmenini banknot (m100 , (m100 )d ) ir dar tam tikr jo pried I100 = (L100,k , R100,k )k=1,...,n .

24. KRIPTOGRAFINIAI PROTOKOLAI

355

Ivykdyto protokolo rezultatas: A turi banko parau patvirtint 100 euru vertes banknot su numeriu, kurio bankas neino. Kai bankas i numeri suinos, negales jo susieti su A. Apskritai skaitmeninio banknoto struktura turetu buti sudetingesne; I100 irgi turetu buti banko pasiraytas.

ECash mokejimo protokolas

1. A pateikia pardavejui P banknot (m100 , (m100 )d ). 2. P tikrina banko B para m100 = ((m100 )d )e . 3. P generuoja atsitiktiniu bitu sek b1 b2 . . . b100 ir perduoda A. Jeigu bi = 0, A turi atskleisti L100,i ; jei bi = 1, A turi atskleisti R100,i . 4. P siunia B (m100 , (m100 )d ) ir atskleistas I100,i dalis. 5. B taip pat patikrina para ir periuri savo duomenu baz, ar pinigas su numeriu m100 dar nebuvo ileistas. Jeigu ne  perveda i P sskait atitinkam sum, o i savo duomenu baz irao atsiust informacij. Jeigu jau ileistas  aikinasi, kas kaltas. Treiojo ingsnio vykdymas reikalauja, kad A negaletu sumeluoti atskleisdamas paslapiu dalis. Todel ir jos turetu buti patvirtintos banko parau. Kas gi atsitinka, jeigu B nustato, kad banknotas su tuo numeriu jau ileistas? Tuomet jis lygina atsiustas paslapiu dalis su iraytomis duomenu bazeje. Jeigu visos jos sutampa  pardavejas P bando banknot igryninti pakartotinai. O jeigu nesutampa, tai banknot bando pakartotinai panaudoti A. Tada i pirmu nesutampaniu paslapties daliu, tarkime, L100,k ir R100,k , bankas nustato nesiningo kliento tapatyb. Gali atsitikti, kad visos atsiustos paslapiu dalys sutaps su jau iraytomis ne del pardavejo kaltes, bet todel, kad A bando skaitmenini pinig ileisti pakartotinai. Taiau tokio atvejo tikimybe yra maa  tik 2n . i schema igyvendina visus minetus skyrelio pradioje reikalavimus skaitmeniniams pinigams. Taiau, vykdant protokolo ingsnius, tenka atlikti gana daug skaiiavimu. Daugiausiai laiko sugaitama, bankui tikrinant atsiustus banknotu variantus. Yra ir kitokiu skaitmeniniu pinigu schemu. Visos jos yra gana sudetingos. Taiau kitaip ir buti negali. Norint praktikai idiegti aptartj schem, reiktu j padaryti dar sudetingesn. Juk joje nenumatyta, pavyzdiui, gros davimo galimybe.

24.4. Elektroniniai rinkimai


Balsavimo kabina su uuolaidele  klasikinio saugaus balsavimo protokolo elementas. Kuo j galima pakeisti, jeigu noretume dalyvauti rinkimuose neatsitraukdami nuo savo kompiuterio?

356

KODAI IR IFRAI

Jeigu ketinate sukurti patikim elektroninio balsavimo sistem, teks pagalvoti, kaip igyvendinti ne maiau kaip skaitmeniniu pinigu schemose slygu. inoma, jeigu pasitikite ryio kanalais, rinkejais ir rinkimine komisija, tai galite nesukti sau galvos. Jeigu ne  tada teks sugalvoti, kokiu priemoniu reikia imtis, kad 1. tik registruoti rinkejai galetu balsuoti; 2. kiekvienas rinkejas galetu balsuoti tik kart; 3. niekas kitas negaletu suinoti, kaip rinkejas balsavo; 4. kiekvienas rinkejas galetu isitikinti, kad jo balsas iskaitytas; 5. joks rinkejas negaletu dubliuoti kito rinkejo biuletenio; 6. niekas negaletu pakeisti rinkejo biuletenio. Nors galima sukurti elektroninio balsavimo sistem, kurioje nera centrines rinkimu komisijos, t. y. patys rinkejai gali sekti, ar balsavimas vyksta korektikai, protokolai supaprastes, jeigu toki komisij (toliau CRK) isteigsime. Paprasiausias balsavimo protokolas galetu buti toks. CRK paskelbia savo vieji rakt, skirt biuleteniams ifruoti. 1. Rinkejai ifruoja savo biuletenius vieuoju CRK raktu ir isiunia juos CRK; 2. CRK deifruoja biuletenius, skaiiuoja ir skelbia rezultatus. Toks balsavimas ne k geresnis u balsavim SMS inutemis ivairiuose televizijos renginiuose. Kas nori, gali balsuoti kiek nori kartu. Igyvendinama tik paskutine slyga: niekas negali pakeisti rinkejo biuletenio (taiau CRK gali jo neiskaityti). Jeigu kiekvienam rinkejui bus suteikta galimybe naudotis skaitmeninio parao schema, galima naudoti geresni protokol. 1. Kiekvienas rinkejas pasirao biuleteni savo privaiuoju raktu. 2. Pasirayt biuleteni rinkejas ifruoja vieuoju CRK raktu ir ji isiunia CRK; 3. CRK deifruoja biuletenius, tikrina paraus, skaiiuoja ir skelbia rezultatus. Toks protokolas kur kas geresnis, taiau CRK jame turi labai daug galios: ji ino, kas ir kaip balsavo, jeigu nori  gali neiskaityti dalies balsu. Taigi vien skaitmeniniu parau neutenka. Prisiminkime, kaip skaitmeniniu pinigu sistemose naudojami aklieji paraai. Jie praveria ir elektroninio balsavimo schemose. tai dar vienas sudetingesnis balsavimo protokolas.

24. KRIPTOGRAFINIAI PROTOKOLAI

357

1. Kiekvienas rinkejas parengia n biuleteniu rinkiniu (pavyzdiui, n = 10); kiekviename rinkinyje yra visiems balsavimo variantams parengti biuleteniai; rinkinyje kiekvienas biuletenis paymetas numeriu; skirtingu rinkiniu numeriai yra skirtingi, jie renkami i dideliu skaiiu aibes. 2. Rinkejas maskuoja kiekvien biuleteniu rinkini, parengdamas aklam paraui, ir isiunia CRK. 3. CRK tikrina, ar rinkejas nebuvo atsiunts biuleteniu anksiau. Jeigu ne  atsitiktinai atrenka n 1- rinkini ir paprao atsiusti iu rinkiniu atskleidimo dydius. Rinkejas ivykdo praym, CRK patikrina, ar atskleistieji biuleteniai tinkamai sudaryti. Jeigu jie sudaryti pagal taisykles, CRK pasirao paskutini neatskleistji rinkini ir nusiunia rinkejui. 4. Rinkejas atskleidia atsiustji rinkini ir gauna CRK parau patvirtintus visu balsavimo variantu biuletenius. 5. Rinkejas i turimo rinkinio atrenka t biuleteni, kuris atitinka jo vali, ifruoja ji vieuoju CRK raktu ir isiunia. 6. CRK deifruoja biuleteni, patikrina savo para, perskaito numeri ir patikrina, ar jau priimtu biuleteniu numeriu srae tokio numerio nera, skaiiuoja ir skelbia rezultatus, nurodydama biuleteniu numerius ir kurio kandidato ar partijos naudai jie iskaityti. is protokolas igyvendina visus eis anksiau suformuluotus reikalavimus. Vis delto ir juo naudojantis gali kilti nesusipratimu. Rinkejas gali patikrinti, ar jo balsas teisingai iskaitytas. Taiau jeigu komisija suklydo arba neteisingai iskaite tyia, kaip rinkejas gali tai irodyti? Galima sudaryti sudetingesnius protokolus, kurie leidia ivengti tokiu situaciju. Galima suteikti galimyb rinkejui, nepatenkintam savo balso iskaitymu ir noriniam pakeisti savo nuomon, tai padaryti. Elektroninis balsavimas pagal toki protokol galetu padeti subalansuoti balsus ir ivengti pakartotiniu rinkimu. Taiau taip bus daroma, matyt, dar negreitai.

24.5. Pokeris telefonu


Algis ir Birute kalbasi telefonu ir niekaip negali susitarti, kas i ju turetu griti namo anksiau ir ivesti pasivaikioti namuose palikt uni. Algis sako: Metu monet, jeigu ji atvirs herbu, sugriiu a. Vienas, du, trys  atvirto skaiius` Ar tikrai Birute niekaip negali patikrinti, kaip i tikruju buvo?

Monetos metimo protokol telefonu garantuojant, kad baigtis bus paskelbta teisingai, tikrai galima surengti. Ir netgi daugeliu budu. Telefonas, inoma, ia tik del didesnio ispudio. Geriau u telefon tokiems protokolams atlikti tinka elektroninis patas. Panagrinekime kelet.

358 1. A parenka dideli pirmini skaiiu p ir pranea ji B.

KODAI IR IFRAI

2. B randa du generuojanius elementus h, t Fp ir siunia A. 3. A parenka atsitiktini skaiiu x, skaiiuoja y hx (mod p) arba y tx (mod p) ir siunia i skaiiu B. 4. B speja, ar, skaiiuojant y, buvo naudotas h, ar t. 5. A patikrinimui siunia B reikm x. Galbut geriau i protokol vadinti ispek, kurioje rankoje protokolu. Birute turi galimyb pasirinkti ir pasitikrinti, ar neapsiriko. Taiau galima jos rinkimsi interpretuoti ir kaip monetos metim. Jeigu ji ispeja  moneta atvirto skaiiumi, jeigu ne  atvirto herbu. Svarbu, kad baigties negali nei vienas i dalyviu uginyti. O tai dar vienas protokolas, kuriame naudojamasi Pohligo-Hellmano simetrine kriptosistema. Prisiminkime, kaip ji veikia. Parenkamas didelis pirminis skaiius p ir dar du skaiiai k1 = e, k2 = d, e d 1 (mod p 1). Praneimas m ifruojamas ir deifruojamas taip:

c = e(m|k1 ) mk1 (mod p),

m = d(c|k2 ) ck2 (mod p).

Monetos metimo telefonu protokolas naudojant Pohligo-Hellmano kriptosistem


1. A ir B susitaria del bendro pirminio skaiiaus p ir kiekvienas pasirenka po por kriptosistemos raktu: KA = eA , dA , KB = eB , dB . 2. A uifruoja dvi inutes: m1 =herbas, m2 =skaiius

c1 meA (mod p), 1


ir siunia B.

c2 meA (mod p) 2

3. B pasirenka i atsiustuju vien inut ci ir j ifruoja ci ceB (mod p), i tada siunia A. 4. A ci deifruoja su raktu dA c (ci )dA (mod p), isaugo c , o taip pat i i pasiunia B. 5. B iifruoja mi (c )dB (mod p) ir pranea A, kas ikrito. Kad A i galetu patikrinti, ar B nemeluoja, B siunia A savo rakt dB . Galima telefonu (arba elektroniniu patu) netgi organizuoti loim kortomis, garantuojant, kad dalyviai negales sukiauti. Tokiam loimui organizuoti reikia tokiu daliniu protokolu: kortu dalijimo, kortu atskleidimo, loimo korektikumo tikrinimo.

25. QUO VADIS?

359

Protokolui panaudosime t pai Pohligo-Hellmano simetrin kriptosistem. I pradiu A ir B turi susitarti del bendro pirminio skaiiaus p ir pasirinkti po por raktu: KA = eA , dA , KB = eB , dB .

Kortu dalijimas

Tikslas: A ir B reikia duoti po k atsitiktinai parinktu kortu. 1. A uifruoja inutes-kortu pavadinimus m1 , m2 , . . . , mn , suraytus atsitiktine tvarka, ir siunia B ifrus ci meA (mod p). i 2. B atrenka k skaiiu ci ir nusiunia A. A iifruoja ci ir ino, kokios kortos jam teko. 3. B atrenka dar k kortu, jas uifruoja: ci ceB (mod p) ir siunia A. i 4. A iifuoja gautas inutes c (ci ) dA (mod p) ir siunia atgal B. i 5. B iifruoja mi (c )dB (mod p) ir ino, kokios kortos B teko. i Protokolas pasibaige  abu loejai gavo po k kortu, kokias kortas gavo prieininkas  neino. Taiau kiekvienas ino prieininko kortu ifrus. Galima pradeti loti, t. y. vien po kitos atskleisti kortas. Kai A daro ejim (atskleidia kort), siunia partneriui por mi , ci , ci meA (mod p). Jis negali pasiusti tokios kortos, kurios negavo, nes visi i jo kortu ifrai inomi B. Taiau kol kas B negali patikrinti, ar ci tikrai yra mi ifras. Analogikai atskleisdama savo kortas elgiasi ir B. Kai loimas baigiasi, partneriai turi pasikeisti raktais, kad galetu patikrinti, ar buvo lota tomis kortomis, kurias jie turejo.

Kortos atskleidimas

Loimo korektikumo tikrinimas

25 Quo vadis?
Kokia bus XXI amiaus kriptograja? O gal jos i viso nebereikes? Veltui speliotume. Geriau pabandykime aptarti dvi duomenu apsaugos kryptis, kurios, be abejones, bus pletojamos XXI amiaus kriptograjoje. Viena i ju i tiesu labai sena, senesne u pai civilizacij. Na, o kita  vos dvieju deimiu metu amiaus.

25.1. Slepimo menas


uvys, paukiai ir verys...  amiu amius trunkanti kova u buvi imoke juos pasislepti, kad nepastebetu prieai. Informacijos srautu judejimo nepaslepsi, taiau galima jais pasinaudoti tarsi konteineriais su dvigubu dugnu ir perduoti nepastebetus duomenis.

360

KODAI IR IFRAI

Jeigu kriptoanalitikas Z yra ne iaip pasyvus kanalo stebetojas, bet turi gali ji valdyti (pavyzdiui, jeigu jusu istaigos darbuotoju elektroninis patas yra kontroliuojamas), tai ifrai nepades. Itartino turinio siuntiniai bus tiesiog nesiuniami. Tokiu atveju praneimui apie negeroves pasiusti galite pasinaudoti steganograja. Steganos graikikai reikia slepti. Kriptograniais metodais duomenys yra transformuojami, kad butu paslepta ju prasme, taiau pats duomenu siuntimas yra tikras faktas. Steganograniais metodais slapta siuniami duomenys paslepiami kituose, kurie kanalo kontrolieriams neturi kelti itarimu. Taigi steganograja  tai sritis, kuri siulo budus, kaip vienus duomenis panaudoti kaip konteineri kitiems duomenims siusti.

X c
A
M

Z
E M = f (M, X) T T T

M
E M = f (M, X)

B
q

Atakos
Slapto praneimo X steganogranio perdavimo schema.

Steganograniai metodai buvo vienaip ar kitaip naudojami visuomet. Juos galima slyginai suskirstyti i dvi grupes: lingvistinius ir techninius. Lingvistiniai metodai kaip slapto praneimo perdavimo konteineri naudoja kalb. Tekstai suteikia daug galimybiu atlikti nedidelius pakeitimus, itaip paslepiant reikalingus duomenis. Tarpu tarp odiu skaiius, kiek nelygiai idestytos raides  visa tai gali buti panaudota duomenims paslepti. F. L. Baueris savo knygoje Decrypted secrets pateikia 1976 metais tuometineje Vokietijos Demokratineje Respublikoje ileisto kombinatorines logikos vadovelio puslapio nuotrauk. Gerai isiiurej galime pastebeti, kad kai kurios raides yra iek tiek emiau negu kitos (spausdinant mechanine spausdinimo mainele tai iprastas dalykas). Suraius visas tokias raides, galima perskaityti nieder mit dem sowjetimperialismus (alin tarybini imperializm). Viktorijos laiku Anglijoje buvo galima siuntineti laikraius patu nemokamai. mones sugalvojo pasinaudoti tuo inioms perduoti: pakanka vir laikraio straipsniu raidiu adata pradurti skylutes, kad, skaitant itaip paymetas raides, susidarytu perduoti skirtas tekstas. Toks metodas buvo naudojamas netgi II pasaulinio karo metais ir po jo. Tik adatos skylutes pakeite nematomo raalo takeliai. Technines steganograjos metodai duomenims paslepti naudoja specialias technines priemones arba irankius. kotijos karalienei Marijai skirti laikai buvo perduodami alaus bokaluose. io steganogranio metodo netobulumas irgi buvo viena i prieasiu, del kuriu karaliene buvo pasmerkta nukirsdinti.

25. QUO VADIS?

361

Nematomas raalas, mikrolmai  kur kas geresnes priemones, bet ir del ju daug kas nukentejo. Musu laiku steganograja  vienu skaitmeniniu duomenu slepimo kituose metodai. Kokie duomenys kaip konteineriai geriausiai tinka steganograjai? inoma, tokie, kuriuose nedidelio skaiiaus bitu pokyiai sunkiai pastebimi  grakos, audio- ir videoduomenys. Kiekvienam nuotraukos takui (pikseliui) koduoti naudomi 24 bitai. Jei pakeisime vien ar kelis ju  akis to nepastebes, taiau tie pakeistieji gali buti panaudoti slaptam praneimui (tekstui, vaizdui, garsui) perduoti. Yra visokiu metodu ir tuos metodus realizuojaniu programu. Steganogranio metodo vert lemia trys jo savybes: aptinkamumas (detectability, angl.), atsparumas (robustness, angl.), informacine talpa (bit rate, angl.). Steganogranis metodas yra tuo patikimesnis, kuo sunkiau, turint konteineri (duomenis, kurie gali buti panaudoti kitiems paslepti), nustatyti, ar jame yra kas nors, ar jis tuias, t. y. ar jame paslepti kiti duomenys, ar ne. Pasleptus duomenis galime interpretuoti kaip triukm, padidinanti entropij. Atlikdamas konteinerio analiz, analitikas gali vertinti, ar turimu duomenu dydis yra budingas tokio tipo duomenims. Pavyzdiui, jeigu grynos spalvos 300 300 taku kvadratas, kuriam saugoti jpg formatu turi utekti 2 kilobaitu duomenu, siuniamas kaip dvigubai daugiau duomenu uimantis failas, tai naturalu itarti, kad kvadratas yra konteineris, kuriame kakas yra. Analitikas gali atlikti itariamo konteinerio atak, siekdamas ji ikratyti. Pavyzdiui, paveiksl galima pasukti, pakeisti masteli, atlikti kitas transformacijas, maai keiianias jo ivaizd. Ar paslepti duomenys nedings? Pasleptu duomenu savybe isilaikyti po tam tikru konteinerio modikaciju ir yra metodo atsparumas. Taip pat svarbu, kiek bitu imanoma paslepti, kad steganogranio metodo panaudojim dar butu sunku pastebeti. Slepiamu bitu kiekio ir konteinerio bitu kiekio santykiu galima nusakyti informacin metodo talp. Steganograjai dera priskirti ir vandens enklu (watermarks, angl.) kurimo udavini. Vandens enklas  tai liudijimas apie autoryst. Vandens enkl popieriuje galime pamatyti pavelg i ji prie vies. Skaitmeninis vandens enklas  tai tam tikra informacija, siejama su duomenimis (kuriniu), kuri netrukdo juos naudoti nustatytiems tikslams (klausyti muzikinio kurinio ar iureti lm), taiau ji gali buti registruojama naudojant specialius analizes metodus. Tai iek tiek panau i skaitmeninius paraus, taiau paraai paprastai pridedami kaip priedas (ir todel gali buti nesunkiai paalinami), o vandens enklas turi buti ilietas visame kurinyje.

25.2. Kvantai ir bitai


enklai ant popieriaus, duomenys, perduodami elektros sroves impulsais, elektromagnetinemis ar garso bangomis  visi ie kanalai turi

362

KODAI IR IFRAI
vien bendr savyb: duomenis galima nukopijuoti nepakeiiant originalu. Visai kas kita, jeigu duomenu bitus nea fotonai...

Isivaizduokime fotonus kaip nedalomas viesos daleles. Ideja, kad reikiniu strukturos pagrindas  maos daleles, sena kaip musu civilizacija. Prisiminkime, kaip pasauli aikino Demokritas... Taiau viesos daleles  fotonai  skiriasi nuo visu daleliu, kurias mones isivaizdavo, tuo, kad ju elgesi valdo visai kitokie desniai. Tu desniu svadas destomas kvantineje mechanikoje. Viena svarbiausiu fotonu savybiu yra tokia: negalima imatuoti fotonu nepakeiiant ju savybiu. Fotonas prie matavim ir po jo  nebe toks pats! Pirmsias kvantines mechanikos desniu panaudojimo kriptograjai idejas ideste S. Wiesneris madaug apie 1970 metus. Taiau tuomet tos idejos atrode, matyt, pernelyg beprotikos. S. Wiesnerio straipsnis buvo paskelbtas tik po gero deimtmeio. Ir greitai sulauke tsinio: 1984 metais Ch. Bennettas (IBM) ir G. Brassard'as (Monrealio universitetas) pasiule pirmji kvantines kriptograjos protokol (pirmoji publikacija [6]). Kriptograjoje jis vadinamas BB84 protokolu. iame skyrelyje pabandysime isiaikinti, kaip jis vykdomas. Pamatysime, kad kvantines kriptograjos rupesiai visai kitokie negu klasikines. Taiau i pradiu aptarkime, kaip bitams transportuoti galima panaudoti fotonus. inoma, teks labai supaprastinti zin realyb, taiau mums reikia tik tu jos savybiu, kurios panaudojamos kriptograjoje. Pirmiausia isivaizduokime foton kaip dalel, kuri, naudojant tam tikru ltru sistem, galima poliarizuoti, t.y. suteikti vien i dvieju savybiu. Naudosime dvi tokiu ltru sistemas, kurias vadinsime atitinkamai + baze ir baze. Fotonu poliarizacijas, kurias suteikia + baze, ymesime ir , o bazes poliarizacijas  ir . Jeigu fotonui poliarizuoti naudota + baze, sakysime, kad fotonas su poliarizacija nea 0, o fotonas nea 1. Atitinkamai bazes poliarizacijoms ir irgi priskirkime 0 ir 1.
T 0 E

1
E

0 0 1
T T E

0
T

1 1 0
 

T pati bitu sraut gali perneti abieju baziu poliarizuoti fotonai.

Tarkime, A nori perduoti bitu sraut B, pasinaudodamas poliarizuotais fotonais. Mums nesvarbi tikroji zine tu fotonu sklidimo terpe  jie

25. QUO VADIS?

363

gali sklisti erdve, gali sklisti optiniu kabeliu, svarbu, kad sklistu. Tarkime, visiems fotonams poliarizuoti A pasinaudojo + baze. Gautu fotonu poliarizacijai matuoti turi buti naudojama viena i dvieju baziu. Tarkime, B visus fotonus registruoja su ta paia + baze. Visi jo poliarizaciju matavimai bus teisingi ir B gaus t bitu sraut, kuri siunte A. Taiau toks ryio kanalas niekuo ne geresnis u iprastinius nesaugius kanalus. Kriptoanalitikas Z, inodamas, kad A ir B fotonams matuoti naudoja t pai + baz, irgi ja pasinaudos: registruos visus A siuniamus fotonus, usirays gautus bitus, o tada su ta paia + baze generuos toki pat fotonu sraut ir nusius B. Taigi Z bus nepastebimai isiterps i ryio kanal, kaip paprastai buna klasikineje kriptograjoje. Aptarkime, kokio rezultato galima laukti, jeigu A poliarizavo foton su + baze, o B registravo su baze. Tarkime, A pasiunte foton su poliarizacija , t.y. nori perduoti bit, kurio reikme 1. ia ir prasideda visas idomumas: kvantines mechanikos desniai sako, kad su vienodomis tikimybemis bus registruotas fotonas su poliarizacijomis ir . Kitaip tariant, jeigu B nepataike pasirinkti bazes, tai matavimo rezultatas bus toks pat, koks butu paprasiausiai metant simetrin monet! O dabar jau inome i esmes visk, ko reikia, kad suprastume, kaip veikia kvantines kriptograjos BB84 protokolas. Jo tikslas  perduoti tam tikr bitu kieki taip, kad siuntejas A ir gavejas B butu utikrinti, kad tie bitai nebuvo nukopijuoti Z. O tada galima i perduotu bitu sudaryt odi naudoti kaip iprastines simetrines kriptosistemos rakt. Juk geros simetrines kriptosistemos yra labai saugios, jeigu saugiai perduodami raktai!

Kvantinis bitu perdavimo protokolas BB84

1. A rengiasi perduoti B bitu sraut x1 x2 . . . xn . A atsitiktinai pasirenka baziu sek a1 a2 . . . an ir perduoda B fotonus: bit xi nea fotonas, poliarizuotas bazeje ai . 2. B atsitiktinai pasirenka baziu sek b1 b2 . . . bn ir, naudodamasis iomis bazemis, matuoja gaunamu fotonu poliarizacijas: i-asis fotonas matuojamas bazeje bi . Pagal matavimu rezultatus B sudaro bitu sek y1 y2 . . . yn . 3. B susisiekia su A nesaugiu kanalu ir nurodo, koki baziu sek b1 b2 . . . bn ji buvo pasirinkusi matavimams. 4. A nurodo, kurie pasirinkimai buvo teisingi. 5. Jeigu i1 , i2 , . . . , ik yra teisingai pasirinktu baziu numeriai, tai B sudaro i atitinkamu bitu sek y = yi1 yi2 . . . yik . 6. A ir B susitaria del tam tikro kiekio sekos y bitu, kuriuos reikia patikrinti: ar xij = yij ? Jeigu visi jie sutampa, A ir B nutaria, kad Z nebuvo isiterps i fotonu perdavimo proces, ir, sutrumpin y,

364

KODAI IR IFRAI ibraukdami tikrinant panaudotus bitus, naudojasi gautuoju odiu kaip saugiai perduotu raktu.

A siuniami bitai A bazes A siuniami fotonai B bazes B registruoti fotonai B registruoti bitai Bendros bazes Perduoti bitai Tikrinami bitai Rakto srautas

0 + + 0 + 0 0

0 +

1 +

1 +

+ 0

1 1 + 1 0 0 0

1 1

0 + 0 0

0 0

BB84 protokolo pavyzdys: A saugiai perdave B keturis bitus.

Kaip i i protokol gali isiterpti Z? Jis gali irengti savo ltrus ir matuoti fotonu poliarizacij. Taiau jis neino, kokias bazes pasirinko A. Jeigu A fotonui poliarizuoti pasirinko + baz ir Z pasirinko t pai baz, tai, imatavs foton, jis pasius lygiai taip pat poliarizuot foton, koki gavo. Taigi tokiu atveju jo isiterpimas tikrai liks nepastebetas. Dabar tarkime, kad A poliarizavo foton su + baze ir suteike jam reikm 1. Jeigu Z matavimui naudos baz, tai jis gali registruoti tiek 1, tiek 0. Registravs foton, jis lygiai toki pat pasius B. Dabar B eile pasirinkti baz. Jeigu B pasirinks baz, tai treiajame protokolo ingsnyje jam bus pasakyta, kad pasirinkimas klaidingas, ir io ingsnio bitas bus ibrauktas. Taigi Z i savo urau netures jokios naudos. Jeigu B pasirinko toki pat baz kaip A, tai B itrauks registruot bit i gautu bitu odi. Jo reikme bus tokia pati, koki jam suteike Z, taigi tikimybe, kad ta reikme sutaps su A 1 suteikta reikme, yra 2. tai del ko reikalingas dalies bitu tikrinimas. Jeigu jo nebutu, galetu susidaryti tokia padetis, kad B registruotu ne toki pat bitu rinkini, koki siunte A. inoma, jeigu tas bitu rinkinys bus naudojamas kaip simetrines kriptosistemos raktas, apgaule greitai iryketu  ifro, kuri sudare B, A negaletu iifruoti. Taiau veriau ubegti tokiai padeiai u akiu: jeigu bent vienoje tikrinamu bitu poroje jie nesutampa  Z buvo isiterps ir protokolas nedave rezultato. Jokio rezultato, inoma, nepasieke ir Z. tai toks protokolas enklina kvantines kriptograjos pradi. Jau ir dabar yra praktiniu jos taikymu. O kas bus toliau? Nekantriai laukiame tsinio...

26. PASTABOS IR NUORODOS

365

26 Pastabos ir nuorodos
Kodavimo teorijai vos penkiasdeimt metu, o tai kriptograja  tukstantmete. Isamiausi jos istorij parae D. Kahnas [42]. Daug istoriniu faktu, o taip pat klasikines (ir moderniosios) kriptograjos ir kriptoanalizes ideju destoma F. L. Bauerio knygoje [5]. Kriptograjos istorija idomiai destoma S. Singho knygoje [71]. Jeigu noretumete paskaityti apie kriptograjos istorij lietuvikai  galiu pasiulyti tik savo knygel [72]. O dabar nebe apie kriptograjos istorij, bet apie moksl. Moksliniu kriptograjos metodu pradininkai  W. Friedmanas ir C. Shannonas. Galima teigti, kad C. Shannono darbu [69] prasidejo kriptologijos matematiniu metodu raida. iuolaikines kriptologijos udavinius kelia informaciniu technologiju naudojimo praktika. Duomenu perdavimas kompiuteriniais tinklais  tai pagrindinis udaviniu altinis. Svarbus ivykis kriptograjoje  pirmojo ifravimo standarto patvirtinimas [58]. DES (Data Encryption Standard) buvo intensyviai tyrinejamas kone ketvirti amiaus, sukurta nauju svarbiu kriptoanalizes metodu (skirtumine kriptoanalize [9], tiesine kriptanalize [49] ir kt.), taiau io standarto pakeitimo nauju prieastis  ne surastos kriptosistemos spragos, bet iaugusi skaiiavimo technikos galia. Po ilgai trukusio vertinimo proceso naujasis standartas isigaliojo 2001 metais [2]. Kriptosistemos autoriai  belgu kriptografai  analizuoja ifro struktur savo knygoje [19]. Vykdomi nauji kriptosistemu vertinimo ir standartizavimo projektai, r. pvz., NESSIE (New European Schemes for Signatures, Integrity and Encryption) projekto mediag [59], taip pat srautiniu kriptosistemu tyrimo projekt eSTREAM [26]. Kriptologijos straipsniai skelbiami ivairiuose matematikos ir informatikos urnaluose. Yra keletas specialiu leidiniu: leidiamas atskiras kriptologijos istorijai, raidai ir itakai skirtas urnalas Cryptologia. Journal of Cryptology  tikriausiai pagrindinis urnalas, skirtas kriptograjos profesionalams. Nuo 2007 metu pradedamas leisti dar vienas leidinys Journal of Mathematical Cryptology, tai turetu buti aukto teorinio lygio straipsniu urnalas. Tarptautine organizacija IACR (International Association for Cryptologic Research) kasmet organizuoja kelias kriptologijai skirtas konferencijas (Crypto, Eurocrypt, Asiacrypt), ju darbai ileidiami atskirais tomais. Skelbiama daug skaitmeniniu publikaciju, pvz., portale Cryptology ePrintArchive (http://eprint.iacr.org/). Vieojo rakto kriptosistemu idejas pirmieji paskelbe W. Die, M. E. Hellmanas [22] ir nepriklausomai nuo ju R. Merkle [53]. R. Merkle ir M.E. Hellmanas sukure pirmj vieo rakto kriptosistem  kuprines kriptosistem [54]. Veliau paaikejo, kad ju schema nera saugi. Vieojo rakto sistem, kurios saugumo spragu nerasta iki iol, pirmieji paskelbe R. Rivestas, A. Shamiras, L. Adlemanas [64]. RSA kriptoanalizes rezultatai apvelgti straipsnyje [11].

366

KODAI IR IFRAI

1997 metais paskelbti faktai rodo, kad vieojo rakto kriptograjos idejos kilo anglu slaptosioms tarnyboms dirbusiems kriptografams J. Ellisui, C. Cocksui, M. Williamsonui, r. pav. [16]. Vieojo rakto kriptosistemoms tik 30 metu. Taiau tai buvo sparios raidos metai. Parayta daug isamiu knygu, skirtu iuolaikines kriptograjos raidai. Visu pirma reikia pamineti pirmji isamu naujuju laiku kriptograjai skirt B. Schneierio veikal [70], o taip pat  solidu inyn [52], kurio skaitmenines kopijos platinamos laisvai. Parayta ir vadoveliu, ir specialioms kriptograjos kryptims skirtu monograju; paminesime kelet, [18], [32], [46], [45], [79], [55], [73], [60], [74]. Praktikai diegiant kriptogranius apsaugos metodus, pravers knyga, skirta kriptograniu schemu standartams [20].

Bibliograja
[1] N. Abramson. Information Theory and Coding. New York, McGrawHill, 1963. [2] Advanced encryption standard (AES) FIPS-Pub. 197. November 26, 2001. [3] M. Agrawal, N. Kayal, N. Saxena. PRIMES is in P. Annals of Mathematics, 160 (2004), p. 781793. [4] R. B. Ash. Information theory. New York: Dover 1990. [5] F. L. Bauer. Decrypted secrets. Springer, 1997. [6] C.H. Bennett, G. Brassard. Quantum cryptography: Public-key distribution and coin tossing. Proceedings of IEEE International Conference on Computers, Systems and Signal Processing, Bangalore, India, December 1984, p. 175  179. [7] E. Berlekamp. Nonbinary BCH decoding. In: Proc. Int. Symp. on Info. Th. San Remo, Italy, 1967. [8] C. Berrou, A. Glavieux, P. Thitimajshima. Near Shannon Limit ErrorCorrecting Coding and Decoding: Turbo Codes. In: Proc. 1993 IEEE Int. Conf. on Communications, Geneva, Switzerland, 1993, p. 1064 1070. [9] E. Biham, A. Shamir. Dierential Cryptanalysis of the Data Encryption Standard. Springer Verlag, 1993. [10] J. Bierbrauer, L. Kelly. Introduction to Coding Theory. CRC Press, 2005. [11] D. Boneh. Twenty Years of Attacks on the RSA Cryptosystem. Notices of the AMS, vol. 46, 2, 1999, p. 203213. [12] R. Bose, D. Ray-Chaudhuri. On a Class of Error-Correcting Binary Codes. Inf. and Control, vol. 3, 1960, p. 6879. 367

368

BIBLIOGRAFIJA

[13] M. Burrows, D. Wheeler. A block-sorting losseless data compression algorithm. Digital Systems Research Center report 124, Palo Alto, 1994. [14] A. R. Calderbank. The art of signaling: fty years of coding theory. IEEE Trans. Information Theory, 1998, IT-44 (6), p. 25612595. [15] P. J. Cameron, J. H. van Lint. Graphs, codes and designs. Cambridge University Press, 1980. [16] C. Cocks. A Note on Non-Secret Encryption. http://www.cesg.gov.uk/site/publications/index.cfm 1973.

[17] T. Cover, J. Thomas. Elements of Information Theory. New York: Wiley-Interscience, 1991, 2006. [18] R. Crandall, C. Pomerance. Prime numbers. A computational perspective. Springer, 2001. [19] J. Daemen, S. Borg, V. Rijmen. The Design of Rijndael: AES - The Advanced Encryption Standard. Springer-Verlag, 2002. [20] A. Dent, C. Mitchell. User's Guide to Cryptography and Standards. Artech House, 2004. [21] S. X. Descamps. A computational primer on block error-correcting codes. Springer, 2003. http://www.wiris.com/cc/ [22] W. Die, M. E. Hellman. New directions in Cryptography. IEEE Transactions on Information Theory, v. IT-22, n. 6, 1976, p. 644654. [23] Duomenu spuda. Tinklalapis: http://www.data-compression.info/index.htm [24] Elektroninis urnalas Entropy". http://www.mdpi.org/entropy/ [25] P. Elias. Coding for Noisy Chanels. IRE Conv. Rep., Pt. 4, p. 3747, 1955. [26] eSTREAM. http://www.ecrypt.eu.org/stream/ [27] N. Faller. An adaptive system for data compression. Record of the 7th Asilomar Conference on Circuits, Systems and Computers, p. 593597. [28] R. Gallagher. Variations on a theme by Human. IEEE Transactions on Information Theory, 1978, IT-24 (6), November, p. 668674. [29] R. Gallagher. Claude E. Shannon: A retrospective on his life, work, and impact. IEEE Trans. Information Theory, 2001, IT-47, p. 2681 2695.

BIBLIOGRAFIJA

369

[30] M. R. Garey, D. S. Johnson. Computers and Intractability. A Guide to the Theory of NP-Completeness, W. H. Freeman and Co., 1979. [31] M. J. E. Golay. Notes on digital coding. Proceedings of the IRE, June 1949. [32] O. Goldreich. Modern Cryptography, Probabilistic Proofs and Pseudorandomness. Springer, 1999. [33] GAP - Groups, Algorithms, Programming. http://www-gap.mcs.stand.ac.uk/ [34] R. M. Gray. Entropy and Information Theory. 2002. http://wwwee.stanford.edu/% gray/it.html [35] R. W. Hamming. Error detecting and error correcting codes. The Bell System Technical Journal, 1950, No. 2, April, p. 147160. [36] R. W. Hamming. Coding and Information Theory. Prentice Hall, 1986. [37] D. Hankersson et al. Introduction to Information Theory and Data Compression. CRC Press, 1997. [38] A. Hockuenghem. Codes Correcteurs D'erreurs. Chires, vol. 2, 1959, p. 147156. [39] D. Human. A method for the construction of minimum redundancy codes. Proceedings of the IRE. 1952, 40(9), p. 10981101. [40] W. C. Human, V. S. Pless. Fundamentals of error-correcting codes. Cambridge University Press, 2003. [41] R. V. L. Hartley. Transmission of information. The Bell System Technical Journal, 7(3), 1928, p. 535563. [42] D. Kahn. The codebreakers. Scribner, 1967, 1996. [43] G. J. Klir. Uncertainty and information. Foundations of Generalized Information Theory. Wiley&sons, 2006. [44] D. E. Knuth. Dynamic Human coding. Journal of Algorithms. 1985, 6, p. 163180. [45] N. Koblitz. A course in number theory and cryptography. Springer, 1987. [46] N. Koblitz. Algebraic Aspects of Cryptography. Springer, 1998. [47] R. Lassaigne, M. Rougemont. Logika ir algoritmu sudetingumas. ara, Vilnius 1999.

370

BIBLIOGRAFIJA

[48] J. H. van Lint. Introduction to Coding Theory. Springer, 1982, 1999. [49] M. Matsui. Linear Cryptanalysis Method for DES Cipher. EUROCRYPT 1993, p. 386397. [50] R. J. McEliece. The Theory of Information and Coding. Cambridge University Press, 2002. [51] D. J. C. MacKay. Information Theory, Learning Algorithms. Cambridge University http://www.inference.phy.cam.ac.uk/mackay/ [52] A. J. Menezes, P. C. van Oorshot, S. Handbook of applied cryptography. CRC http://www.cacr.math.uwaterloo.ca/hac/ Inference and Press, 2003. A. Vanstone. Press, 1997.

[53] R. C. Merkle. Secure communication over insecure channels. Communications of the ACM, v. 21, n. 4, 1978, p. 294299. [54] R. C. Merkle, M. Hellman. Hiding information and signatures in trapdoor knapsacks. IEEE Transactions on Information Theory, v. IT-24, n. 5, 1978, p. 525530. [55] R. A. Mollin. RSA and public-key cryptography. Chapman&Hall CRC, 2003. [56] T. K. Moon. Error Correction Coding. Mathematical methods and algorithms. Wiley, 2005. [57] D. Muller. Application of Boolean Switching Algebra to Switching Circuit Design. IEEE Trans. on Computers, vol. 3, Sept. 1974, p. 6-12. [58] National Bureau of Standards, Data Encryption Standard, FIPS-Pub. 46. National Bureau of Standards, U. S. Department of Commerce, Washington D. C., January 1977. [59] NESSIE, https://www.cosic.esat.kuleuven.be/nessie/ [60] R. Oppliger. Contemporary cryptography. Artech House, 2005. [61] E. Prange. Cyclic Error-Correcting Codes in Two Symbols. Air Force Cambridge Research Center, Cambridge, MA, Tech. Rep. TN-58-156, 1958. [62] I. Reed. A Class of Multiple-Error-Correcting Codes and a Decoding Scheme. IEEE Trans. Information Theory, vol. 4, Sept. 1954, p. 3849. [63] I. Reed, G. Solomon, Polynomial Codes over Certain Finite Fields. J. Soc. Indust. Appl. Math., vol. 8, 1960, p. 300-304.

BIBLIOGRAFIJA

371

[64] R. Rivest, A. Shamir, L. Adleman. A method of obtaining digital signatures and public-key cryptosystems. Communications of the ACM, v. 21, n. 2, 1978, p. 120126. [65] S. Roman. Coding and Information Theory. Springer, 1992. [66] A. Rukhin et al. A statistical test suite for random and pseudorandom number generators for cryptographic applications. NIST Special Publication 800-22, 2001. http://csrc.nist.gov/rng/SP800-22b.pdf [67] D. Salomon. Data compression. The complete Reference. Springer, 1988, 2000, 2004. [68] C.E. Shannon. A Mathematical Theory of Communication, The Bell System Technical Journal, XXVII, 1948, N. 3. [69] C. E. Shannon. Communication theory of secrecy systems. Bell Syst. Tech. J. 28 (1949), p. 656-715. [70] B. Schneier. Applied Cryptography. Willey, New York 1994. [71] S. Singh. The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography. Anchor Books, 2000. [72] V. Stakenas. ifru istorijos. TEV, 2005. [73] W. Stallings. Cryptography and Network Security. Principles and Practices, Fourth Edition, Prentice Hall, 2005. [74] D. Stinson. Cryptography Theory and Practice. CRC Press, 1995, 2002, 2005. [75] P. Sweeney, Error Control Coding: From Theory to Practice. John Wiley and Sons, 2002. [76] H. van Tilborg. Fundamentals of cryptology. Kluwer, 2002. [77] A. J. Viterbi. Convolutional Codes and Their Performance in Communication Systems. IEEE Trans. Com. Techn., vol. 19, n. 5, 1971, p. 751771. [78] S. Verdu. Fifty years of Shannon theory. IEEE Trans. Information Theory, 1998, IT-44 (6), p. 20572078. [79] S. Wagsta. Cryptanalysis of number theoretic ciphers. Chapman&Hall CRC, 2002. [80] J. Ziv, A. Lempel. A universal algorithm for sequential data compression. IEEE Transactions on Information Theory, 1977, IT-24(5), p. 530536.

Rodykle
Ivertis Griesmerio, 168 ssuku kodo groteliu, 197 Diskretusis logaritmas, 299 Dualus poerdvis, 119

Abipuses informacijos kiekis, 19 Algoritmas Ekvivalentus kodai, 104 Euklido, 286 Elementarieji pertvarkiai, 133 kelimo laipsniu moduliu, 289 Elemento eile, 126 polinominio laiko, 278 Entropija tikimybinis, 284 atsitiktinio dydio, 11 Viterbi, 197 Bernulio altinio, 20 Ataka informacijos altinio, 15 gimtadienio , 337 kalbos, 28 isiterpimo, 207 pirmosios eiles Markovo altinio, pavieniu ifru, 209 22 adaptyvi pasirinktu teksto-ifru poru, slygine, 16 209 stacionaraus altinio, 25 pasirinktu ifru, 209 pasirinktu teksto-ifru poru, 209 Funkcija RSA bendro modulio, 312 Eulerio, 290 RSA mao privaiojo rakto, 310 maios aritmetine, 341 teksto-ifru poru, 209 maios atspari sutapimams, 336 vidurio, 351 maios i blokiniu kriptosistemu, 339 Baze maios labai atspari sutapimams, tiesinio poerdvio, 118 336 maios SHA-1, 339 Daugianario svoris, 173 vienakrypte, 335 Daugianaris minimalusis, 129 Gauso desnis, 294 neskaidus, 121 Generuojantis elementas, 127 primityvusis, 128 tiesiniu registru sistemos, 267 Hammingo atstumas, 77, 94 Diagrama entropiju sryiu, 19 Isprendiamumo udavinio kalba, 275 kanalo, 67 Idealas, 176 ssuku kodo busenu, 196 Irodymas, nesuteikiantis iniu, 351 372

RODYKLE grafu izomorkumo, 352 Ivertis GilbertoVaramovo, 101 Hammingo, 101 Singletono, 101 Jeersono ritinys, 228 Kalbos perteklikumas, 28 Kanalas be atminties, 66 dvejetainis simetrinis, 67 simetrinis, 68 trinantis, 68 Kanalo talpa, 69 Kerckhoo slygos, 229 Klaidu pliupsnis, 190 Kodu sandauga, 166 Kodas, 30, 74 aritmetinis, 51 ASCII, 34 Baudot, 34 BCH, 184 Braille, 33 Burrowso-Wheelerio, 63 ciklinis, 177 daugianariu, 173 dekoduojamas, 35 dualus, 132 Fano, 45 Fire, 191 Golay, 150 Golombo, 57 Hadamardo, 110 Hammingo, 143 Humano, 46 Humano adaptyvus, 54 klaidas randantis, 95 klaidas taisantis, 95 Lempelio-Zivo, LZ78, 60 liekanu, 167 maksimalaus atstumo, 146 maksimalus, 100 momentinis, p-kodas, 36

373 Morse, 32 optimalus, 39 Polibijaus, 32 Reedo-Mullerio, 155 Reedo-Solomono, 147 Reedo-Solomono apibendrintas, 181 ssuku, 195 savidualus, 132 Shannono, 43 simplekso, 144 su kontroliniu simboliu, 136 sumaintas, 162 sutrumpintas, 161 tiesinis, 132 tobulas, 98 Unicode, 35 Kodo dengimo spindulys, 97 koecientas, 74 medis, 31 minimalus atstumas, 95 pakavimo spindulys, 97 pletinys, 161 svoriu skirstinys, 169 tandartine lentele, 139 Konstrukcija uIu+v, 163 Kriptoanalize, 208 Kriptograja, 202 Kriptogranis protokolas, 208 Kriptologija, 202 Kriptosistema, 203 irodyto saugumo, 210 AES, 249 beslygikai saugi, 210, 236 Blumo-Goldwasserio tikimybine, 316 DES, 247 ElGamalio, 318 kuprines, 307 Massey-Omura, 313 McElliece'o, 320 Pohligo-Hellmano, 312 Rabino, 315

374

RODYKLE

RSA, 308 ifru bloku grandines, 254 saugi skaiiavimu poiuriu, 210 ifro atgalinio ryio, 255 saugi sudetingumo teorijos poiuriu, skaitiklio, 257 210 srauto atgalinio ryio, 256 saugi ad hoc, 210 Rotoriai, 232 simetrine, 203 Rutulio turis, 97 srautine, 259 Schema vieojo rakto, 204 DSA skaitmeninio parao, 331 Kroneckerio sandauga, 108 ECash skaitmeniniu pinigu, 355 Legendre'o simbolis, 293 ElGamalio skaitmeninio parao, 326 Maios funkcijos sutapimas, 336 Feistelio, 246 Matrica keitiniu-perstatu tinklo, 245 generuojanti, 132 nepaneigiamo skaitmeninio parao, Hadamardo, 106 331 kanalo tikimybiu, 66 paslapties dalijimo kontroline, 136 Asmutho-Bloomo, 345 Metodas Blakely, 345 Pollardo faktorizacijos, 296 Brickelio, 348 Pollardo logaritmo radimo, 301 pagal leidimu struktur, 347 Pollardo p 1 , 298 Shamiro, 342 Shankso, 300 Rabino skaitmeninio parao, 325 steganogranis, 362 RSA aklo parao, 324 RSA skaitmeninio parao, 323 Nelygybe Shnorro skaitmeninio parao, 328 Krafto-McMillano, 38 skaitmeniniu parau, 205, 321 Sindromas, 140 Paley konstrukcija, 109 Slaptasis kanalas parao schemoje, 334 Pasiskirstymas Statistinis testas asimptotikai tolygus, 21 autokoreliacijos, 264 Protokolas bitu poru, 263 Die-Hellmano rakto nustatymo, bloku, 264 350 pavieniu bitu, 263 diskretaus logaritmo iniu irodymo, pokerio, 263 353 altinis elektroniniu rinkimu, 357 be atminties, 13 Fiato-Shamiro, 353 Bernulio, 13 kvantinis bitu perdavimo, 364 altinis monetos metimo, 358 informacijos, 13 pokerio, 359 altinis Pseudoatsitiktine Golombo seka, 260 Markovo, 13 altinis Rakto iminimo takas, 243 Reimas Markovo m-osios eiles, 14

RODYKLE Sutapimu indeksas, 225 ifras A5/1, 272 blokinis, 245 Bluetooth E0, 273 Cezario, 215 Fleissnerio kvadratu, 213 Hillo, 216 homofonu, 216 skytales, 212 Vernamo, 231 Vigenere, 222 Taisykle dekodavimo, 75 didiausio tiketinumo, 76 entropiju grandines, 17 idealaus stebetojo, 76 kodavimo, 29 minimalaus atstumo, 77, 94 Tapatybe McWilliams, 169 Teorema Fermat, 291 kinikoji liekanu, 295 Shannono atvirktine, 88 Shannono dvinariam kanalui, 79 Testas Friedmano kappa, 224 Kassiskio, 222 Millerio-Rabino, 285 Tiesine erdve, 117 Tiesiniu registru sistema, 265 Tiesinis poerdvis, 117 Turingo maina, 276 Udavinys NP klases, 280 NP pilnasis, 281 P klases, 278 isprendiamumo, 274 kuprines, 305

375