[Prethodno poglavlje]   [Sljedeće poglavlje]   [Sadržaj]


2.4. Načini djelovanja

Iako je sam opis DES-a dosta dug, on se može vrlo efikasno implementirati, i hardverski i softverski. Spomenimo da je do 1991. godine u NBS-u registrirano 45 hardverskih implementacija DES-a. Godine 1992. proizveden je čip s 50000 tranzistora koji može šifrirati 109 bita (tj. 16 milijuna blokova) po sekundi (čip je koštao 300 dolara).

Jedna važna primjena DES-a je u bankarskim transakcijama. Tako se, između ostalog, DES koristio za šifriranje PIN-ova (personal identification numbers), te transakcija preko bankomata. DES je također do nedavno bio u širokoj uporabi u civilnim satelitskim komunikacijama.


Mi smo do sada opisali kako radi DES na jednom bloku od 64 bita. U realnim situacijama, u kojima su poruke znatno duže, poznata su 4 načina djelovanja (modes of operation) DES-a. Ti modovi pokrivaju sve moguće primjene DES-a, a također su primjenjivi na bilo koju simetričnu blokovnu šifru.

Najjednostavniji mod je ECB (Electronic Codebook) u kojem se svaki blok otvorenog teksta šifrira s istim ključem. Dakle, poruka se razbije na blokove od po 64 bita (zadnji blok se nadopuni ako je nužno), te se šifrira jedan po jedan blok koristeći uvijek jedan te isti ključ.

ecb mode

ECB mod je idealan za kratke poruke. Kod dugih poruka sigurnost ECB moda se smanjuje, budući da identični blokovi u otvorenom tekstu daju identične šifrate.

Da bi povećali sigurnost, želimo postići da identičnim blokovima u otvorenom tekstu odgovaraju različiti šifrati. Relativno jednostavan način da se to postigne je korištenje CBC (Cipher Block Chaining) moda. Na trenutni blok otvorenog teksta se primjeni operacija XOR sa šifratom prethodnog bloka, a tek potom se šifrira pomoću ključa K. Dakle, yi = eK(yi -1xi) za i ≥ 1. Na startu uzimamo da je y0 = IV, gdje je IV tzv. inicijalizirajući vektor, koji mora biti poznat i primaocu i pošiljaocu. To se može postići npr. tako da ga se pošalje ECB modom. Za dešifriranje koristimo relaciju xi = yi -1dK(yi).

cbc mode

U prethodna dva moda DES funkcionira kao blokovna šifra. No, od DES-a se može napraviti i protočna (stream) šifra. Prvi način je pomoću CFB (Cipher Feedback) moda. Kod protočnih šifri nema potrebe za proširivanjem poruke da bi se dobio cijeli broj blokova. To znači da će šifrat biti iste duljine kao otvoreni tekst. Obrađuje se odjednom j bitova (1 ≤ j ≤ 64). Najčešće je j = 1 ili j = 8. Ako je j = 8, to znači da se šifrira slovo po slovo (jednom slovu odgovara 8 bitova po ASCII standardu).

U šifriranje krećemo šifriranjem 64 bitnog inicijalizirajućeg vektora IV. Na j najlijevijih bitova izlaznog podatka primijenimo XOR sa x1 i tako dobijemo y1. Ulazni podatak za sljedeći korak šifriranja se dobije tako da se prethodni ulazni podatak pomakne za j mjesta ulijevo, a na desni kraj se stavi y1. Postupak se nastavlja sve dok se sve jedinice otvorenog teksta ne šifriraju.

cfb mode

Kod dešifriranja se koristi ista shema, osim što se na odgovarajući šifrat primjeni XOR s izlaznim podatkom funkcije šifriranja eK da bi se dobio otvoreni tekst. Uočimo da se ponovo koristi funkcija eK, a ne dK. Naime, ovdje je funkcija šifriranja zapravo XOR, a on je sam sebi inverz. Zapravo, ovaj modus možemo shvatiti kao svojevrsnu realizaciju "jednokratne bilježnice", u kojoj nam eK ne služi za šifriranje, već za generiranje "pseudoslučajnog" ključa za jednokratnu bilježnicu. Ovo pokazuje da inicijalni vektor IV mora biti "svjež", tj. ne bi se dvaput smio koristiti isti inicijalni vektor.

OFB (Output Feedback) mod je vrlo sličan kao CFB. Jedina razlika je da se ulazni podatak za funkciju eK u idućem koraku šalje odmah nakon primjene eK u prethodnom koraku (prije primjene XOR-a). Jedna od prednosti OFB moda je da se greške u transmisiji ne propagiraju. Npr. greška u y1 utječe samo na x1. Ovaj mod se često koristi u šifriranje poruka sa satelita. No, ovo svojstvo može biti i nedostatak. Stoga se modovi CBC i CFB koriste za ustanovljavanje vjerodostojnosti poruke.

ofb mode

Pored ova četiri (klasična) načina djelovanja, u posljednje je vrijeme sve popularniji CTR (Counter) mod. U njemu se koristi niz brojača (countera) c1, c2, ... . Niz blokova šifrata dobiva se po sljedećem pravilu:

yi = xieK(ci).

Brojači moraju biti u parovima različiti. Obično se to postiže tako da se brojaču c1 pridruži neka inicijalna vrijednost, a potom se ostali brojači povećavaju za 1: ci = c1 + (i - 1) (zbrajanje je modulo 2b, gdje je b duljina bloka; kod DES-a je b = 64).

Za razliku od prethodna tri "ulančana" (chaining) moda, u CTR modu se šifriranje (i dešifriranje) može lako paralelizirati. Kod ulančanih modusa je to bio problem, jer je algoritam morao završiti obradu jednog bloka, da bi prešao na naredni. To pokazuje još jednu prednost CTR modusa, a to je mogućnost dešifriranja samo jednog određenog bloka, što može biti interesanstno za neke aplikacije. Slično kao kod CFB i OFB modusa, i ovdje se u dešifiranju ponovo koristi funkcija eK (a ne dK). Ovo nije neka posebna prednost kod DES-a, ali može biti relevantno kod blokovnih kriptosustava kod kojih algoritam dešifriranja nije doslovno isti kao algoritam šifriranja (npr. AES).

ctr mode


[Prethodno poglavlje]   [Sljedeće poglavlje]   [Sadržaj]
Web stranica kolegija Kriptografija Andrej Dujella - osobna stranica