Dopolnilni načini delovanja simetričnih algoritmov

Dopolnilni načini delovanja simetričnih algoritmov

V primeru bločnih kodirnikov je zaradi varnosti priporočljivo uporabiti t.i. dopolnitvene načine kodiranja. V nasprotnem primeru se enaki vhodni bloki vedno preslikajo v enake bloke izhodnega besedila. S tem se delno razkrije dinamika spreminjanja vhodnega besedila, kar  predstavlja resno varnostno grožnjo. V preteklosti so bili razviti številni dopolnilni načini, ki omenjeno slabost odpravljajo. Najpogostejše med njimi opisujemo v nadaljevanju.

CBC – chiper block chaining

CBC uporablja verižni mehanizem, ki povzroča, da je dešifriranje šifriranega bloka odvisno od vseh prejšnjih šifriranih blokov. Tako so bloki kodiranega besedila medsebojno odvisni in v primeru napake enega bita v zakodiranem sporočilu, naslednjega bloka ne moremo več odkodirati. CBC deluje tako, da začetni blok besedila s pomočjo bitne operacije XOR sešteje z naključnim številom (inicalizacijskim vektorjem IV) in ga postavi na začetek šifriranega teksta. Nato vsak naslednji blok besedila bitno sešteje (opreacija XOR) z izhodom šifriranja predhodnega bloka


 Dopolnilni način CBC (povzeto po: http://en.wikipedia.org/wiki/File:Cbc_encryption.png)

CFB – chipertex feedback

CFB, enako kot CBC, zagotavlja nespremenjenost sporočila, saj ob izgubi ali spremembi kakšnega dela sporočila ne moremo dešifrirati nobenega naslednjega bloka. Kot CBC, tudi ta način uporablja inicializacijski vektor IV. Potek šifriranja v načinu CFB prikazuje spodnja slika. IV zašifriramo s ključem in ga preko bitne operacije XOR seštejemo s prvim blokom teksta. To je prvi šifriran blok. Nato ta blok zašifriramo s ključem in dobimo začasni ključ. K temu prištejemo drugi blok teksta itd. Vidimo, da pri tem načinu pravzaprav spreminjamo ključ.


Dopolnilni način CFB (povzeto po: http://en.wikipedia.org/wiki/File:Cfb_encryption.png)

OFB – output feedback

OFB ima nekaj podobnost z načinom CFB, ki omogoča šifriranje različnih velikosti blokov. Razlika je v tem, da se namesto šifriranega sporočila kot vhod v enkripcijo uporabi neposreden izhod enkripcijske blokovne funkcije (pred seštevanjem z vhodnim besedilom). Ta način se uporablja takrat, ko ne želimo nobenega razširjanja napak. Vhodne podatke tvorijo n bitni ključ, n bitni inicilizacijski vektor in n bitni blok izvornega sporočila. Izhod je n bitni blok šifriranega sporočila. Enkripcija poteka zelo podobno kot pri načinu CFB, le da se v naslednjem koraku za nov IV vzame vrednost, ki je nastala s kombinacijo IV in ključa prejšnjega bloka (IV in ključ se združita z operacijo XOR). Podobno kot pri CBC in CFB tudi tu sprememba IV povzroči, da se identični izvorni sporočili preslikata v različni šifrirani sporočili. Izvorno sporočilo pa ne vpliva na ključe, ki se uporabljajo v posameznih fazah enkripcije. Ena ali več napak v kateremkoli znaku šifriranega sporočila vpliva le na dešifriranje tega znaka, v točno istem bitu kot je napaka.  OFB način lahko okreva po napakah vendar pa se more sam sinhronizirati po izgubi bitov šifriranega sporočila, saj mu takšna izguba spremeni zaporedje dekripcijskih ključev.

Potek šifriranja z OFB prikazuje slika spodaj. Inicializacijski vektor zašifriramo s ključem. Ta rezultat (recimo mu R1) z operacijo XOR seštejemo s prvim blokom teksta in to je prvi šifrirani blok teksta. Potem dobimo ključ za šifriranje naslednjega bloka tako, da R1 zašifriramo s prvotnim ključem.


Dopolnilni način OFB (povzeto po: http://en.wikipedia.org/wiki/File:Ofb_encryption.png)
David Tacer