Osnovni zadatak kriptografije je omogućavanje dvema osobama (pošiljalac i primalac) da komuniciraju preko nesigurnog komunikacionog kanala (telefonska linija, kompjuterska mreža, ...) na način da treća osoba (njihov protivnik) ne može razumeti njihove poruke. Poruku koju pošiljalac želi poslati primaocu zvat ćemo otvoreni tekst (engl. plaintext). To može biti tekst na njihovom maternjem jeziku, numerički podaci ili bilo šta drugo. Pošiljalac transformiše otvoreni tekst koristeći unapred dogovoreni ključ. Taj postupak se zove šifrovanje, a dobijeni rezultat šifrat (engl. ciphertext) ili kriptogram. Nakon toga pošiljalac pošalje šifrat preko nekog komunikacijskog kanala. Protivnik prisluškujući dozna sadržaj šifrata, ali ne može odrediti otvoreni tekst. Za razliku od njega, primalac koji zna ključ kojim je šifrovana poruka može dešifrovati šifrat i odrediti otvoreni tekst.
Za razliku od dešifrovanja, kriptoanaliza ili dekriptovanje je naučna disciplina koja se bavi proučavanjem postupaka za čitanje skrivenih poruka bez poznavanja ključa. Kriptologija je pak grana nauke koja obuhvata kriptografiju i kriptoanalizu. Kriptografski algoritam ili šifra je matematička funkcija koja se koristi za šifrovanje i dešifrovanje. Njeni argumenti su ključ i otvoreni tekst, odnosno ključ i šifrat. Skup svih mogućih vrednosti ključeva zovemo prostor ključeva. Kriptosistem se sastoji od kriptografskog algoritma, te svih mogućih otvorenih tekstova, šifrata i ključeva.
Tip operacija koje se koriste pri šifrovanju
Imamo podelu na supstitucione šifre u kojima se svaki element otvorenog teksta (bit, slovo, grupa bitova ili slova) preslikava u neki drugi element, te transpozicijske šifre u kojima se elementi otvorenog teksta permutiraju. Npr. ako riječ TAJNA šifriramo u XIWOI, načinili smo supstituciju, a ako je šifriramo u JANAT, načinili smo transpoziciju (drugim rečima stvaramo anagram). Postoje takođe i sistemi koji kombinuju ove dve metode.
Broj ključeva koji se koristi
Ovde je osnovna podela na simetrične kriptosisteme i kriptosisteme s javnim ključem. Kod simetričnih ili konvencionalnih kriptosistema, ključ za dešifrovanje se može izračunati poznavajući ključ za šifrovanje i obratno. U stvari, najčešće su ovi ključevi identični. Sigurnost ovih kriptosistema leži u tajnosti ključa. Zato se oni zovu i kriptosistemi s tajnim ključem. Kod kriptosistemi s javnim ključem ili asimetričnih kriptosistema, ključ za dešifrovanje se ne može (barem ne u nekom razumnom vremenu) izračunati iz ključa za šifrovanje. Ovdje je ključ za šifrovanje javni ključ. Naime, bilo ko može šifrovati poruku pomoću njega, ali samo osoba koja ima odgovaraju ključ za dešifrovanje (privatni ili tajni ključ) može dešifrovati tu poruku. Ideja javnog ključa javila se 1976. godine (prvi su je javno izneli Whitfield Diffie i Martin Hellman) zbog potrebe razmenjivanja ključeva za simetrične kriptosisteme putem nesigurnih komunikacijskih kanala.
SUPSTITUCIONA ŠIFRA
Rimski vojskovođa i državnik Julije Cezar u komunikaciji sa svojim prijateljima koristio se šifrom u kojoj su se slova otvorenog teksta zamenjivala slovima što su se nalazila tri mjesta dalje od njih u alfabetu (A D, B E, itd.). Ako bi smo upotrebili današnji engleski alfabet od 26 slova, onda bi poznata Cezarova izreka VENI VIDI VICI bila šifrovana ovako: YHQL YLGL YLFL.
Cezarovu šifru možemo pregledno zapisati na sledeći način:
otvoreni tekst 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
_______.šifrat 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
Supstituciona šifra ne mora izgledati kao gornji primer, odnosno, ne mora se raditi o čistom pomeranju slova alfabeta za tri-četiri mesta unapred, već se stvar može malo i zakomplikovati. Ukoliko pošiljalac koristi neki opštiji algoritam supstitucije, gde šifrovan alfabet može da bude bilo koja kombinacija slova početne azbuke, onda se stvaraju milioni mogućih ključeva, a samo primalac zna tačnu kombinaciju, odnosno pravi ključ.
Međutim supstituciona šifra se i pored toga može vrlo lako dešifrovati koristeći metodu koja se naziva Analiza učestanosti. Začeci analize učestanosti mogu se naći u XIV veku u delu arapskog autora Ibn ad-Duraihima. Ova metoda funkcioniše tako što se broje sva slova (simboli, znakovi) šifrovanog teksta, i pravi se tabela najčešće upotrebljavanih slova. Potom se uzme tabela najčesšće upotrebljavanih slova jezika kriptovanog teksta, i vrši se zamena (naravno ne treba u potpunosti slediti zamenu, jer uvek ima malih odstupanja, u zavisnosti od vrste teksta koji je šifrovan).
VIŽNEROVA ŠIFRA
Vižnerova šifra predstavlja revolucionarno otkriće u svetu kriptografije. Tvorac ove neverovatne šifre je francuski diplomata, Blez De Vižner, rođen 1523. godine.
Snaga Vižnerove šifre ogleda se u tome što ona umesto jednog ili dva, koristi onoliko šifrovanih alfabeta (abeceda, azbuka) koliko slova ima jezik na kojem se šifruje. U Engleskom jeziku koristili bi smo 26 šifrovanih alfabeta, u srpskom 30 itd.
Prvi korak u šifrovanju je crtanje tzv. Vižnerovog kvadrata koji se sastoji od početnog alfabeta i 26 šifrovanih alfabeta, od kojih je svaki pomeren za jedno slovo u odnosu na prethodni.
Korišćenje Vižnerove šifre podrazumeva da se za šifrovanje različitih slova iz poruke koriste različiti redovi Vižnerovog kvadrata. Drugim rečima, pošiljalac bi mogao da šifruje prvo slovo prema redu 5, drugo prema redu 12, treće prema redu 23 itd.
Jačina ove šifre leži u tome što je nemoguće primeniti analizu učestanosti jer su sva slova relativno podjednako zastupljena.
Pored toga što je imuna na analizu učestanosti, Vižnerova šifra ima ogroman broj ključeva. Pošiljalac i promalac se mogu dogovoriti da to bude bilo koja reč iz rečnika, kombinacija reči ili čak potpuno izmišljena reč.
Ovu šifru možemo svrstati u klasu polialfabetskih šifara jer se u istoj poruci koristi više šifrovanih alfabeta.
Zbog svoje snage i složenosti, Vižnerova šifra je nazvana Neprobojnom šifrom!
PLAYFAIROVA ŠIFRA
Jedna ideja za poboljšanje supstitucionih šifara je uvođenje polialfabetskih šifara. Jednu takvu šifru smo videli na prethodnoj strani. Druga ideja je upotreba blokova slova kao osnovnih elemenata otvorenog teksta. Prikazat ćemo najpoznatiju takvu šifru, tzv. Playfairovu šifru. Ovu šifru je izmislio britanski naučnik Charles Wheatstone 1854. godine, a ime je dobila po njegovom prijatelju baronu Playfairu od St. Andrewsa koji ju je popularizovao. To je bigramska šifra, u smislu da se šifruju parovi slova i to tako da rezultat ovisi i o jednom i o drugom slovu. Algoritam za šifrovanje se bazira na 5x5 matrici slova, koja se konstruiše koristeći ključnu reč. Na primer, ako je ključna reč PLAYFAIR, onda matrica izgleda ovako:
P L A Y F
IJ R B C D
E G H K M
N O Q S T
U V W X Z
Budući da imamo 25 slova, dogovor je da se slova I i J poistovete. U slučaju da je otvoreni tekst na srpskom jeziku, mi ćemo poistovećivati V i W. Šifrovanje se sada vrši na sledeći način. Najprije podelimo otvoreni tekst na blokove od po dva slova. Pritom pazimo da se niti jedan blok ne sastoji od dva jednaka slova, te da je dužina teksta parna. I jedno i drugo postižemo umetanjem npr. slova X ukoliko je to potrebno.
Kod šifrovanja bloka od dva slova, mogu nastupiti tri slučaja:
1. Slova se nalaze u istom retku. Tada ih zamenimo sa slovima koja se nalaze za jedno mesto udesno (ciklično). Npr. EH GK, ST TN, FP PL.
2. Slova se nalaze u istom stupcu. Tada ih zamenimo sa slovima koja se nalaze za jedno mesto ispod (ciklično). Npr. OV VL, KY SC, PI IE.
3. U protivnom, pogledamo pravougao koji određuju ta dva slova, te ih zamenimo s preostala dva vrha tog pravougla. Redosled je određen tako da najprije dođe ono slovo koje se nalazi u istom retku kao prvo slovo u polaznom bloku. Npr. OC SR, RK CG, PD FI.
Primer: Šifrujmo otvoreni tekst CRYPTOGRAPHY pomoću Playfairove šifre s ključem PLAYFAIR.
CR YP TO GR AP HY --> DB FL NQ OG YL KA
Playfairova šifra ima brojne prednosti pred supstitucionom šifrom. Spomenimo neke. Budući je šifra bigramska, gube se u šifratu jednoslovne reči (npr. "a") koje dosta utiču na učestanosti. Nadalje, bigramsko šifrovanje smanjuje na polovicu broj elemenata dostupnih analizi učestanosti. I konačno, broj bigrama je puno veći od broja individualnih slova (26 slova - 676 bigrama), dok su učestanosti najfrekventnijih bigrama puno ujednačenije od učestanosti najfrekventnijih slova.
Iz ovih razloga, Playfairova šifra je dugo vremena smatrana sigurnom. Tako je bila standardna šifra u britanskoj vojsci za vreme 1. svetskog rata, a čak je korištena i u američkoj vojsci u 2. svetskom ratu.
Ipak, kod dugih tekstova ova šifra postaje nesigurna jer se može iskoristiti analiza učestanosti bigrama. Poznato je da i kod ove šifre deo strukture jezika ostaje sačuvan. Naime, slova u šifratu nisu jednoliko raspoređena. Dok u otvorenom tekstu na engleskom jeziku najfrekventnije slovo ima relativnu učestanost 13%, u šifratu dobijenom Playfairovom šifrom to iznosi 7%, dok recimo kod Vižnerove šifre imamo 6%. Takvi podaci mogu nam pomoći i kod određivanja koja je šifra u pitanju.
KRIPTOANALIZA
Suština kriptografije je očuvanje otvorenog teksta (ili ključa, ili i jednog i drugog) tajnim i sigurnim od upada prisluškivača kanala/njuškala (koji su poznati i kao protivnici, napadači, presretači, nametljivci, uljezi, ili jednostavno – neprijatelji).
Pretpostavlja se da prisluškivači kanala imaju kompletan pristup komunikacionim kanalima između pošiljaoca i primaoca.
Kriptoanaliza je nauka koja bez ključa određuje otvoreni tekst na osnovu šifrata. Uspešnom primenom kriptoanalize moguće je rekonstruisati otvoreni tekst ili ključ. Upotrebom kriptoanalize moguće je pronaći slabosti u kriptosistemu i na kraju doći do već pomenutih rezultata. (Otkrivanje ključa nekriptoanalitičkim metodama nazivamo kompromitovanje, engl. compromise.) Pokušaj kriptoanalize naziva se napad (engl. attack). Osnovna postavka kriptoanalize, koju je prvi objavio Holanđanin A. Kerkhof (A. Kerckhoffs) u XIX veku, jeste da tajnost mora biti potpuno zasnovana na ključu. Kerkhof je pretpostavio da kriptoanalitičar zna sve pojedinosti kriptografskog algoritma i njegove primene .
Postoje četiri opšta tipa kriptoanalitičkog napada. Naravno, za sva četiri tipa pretpostavlja se da kriptoanalitičar ima sve potrebno znanje o šifrovanju koje koristi algoritam:
1. Napad “samo šifrat” (engl. ciphertext-only attack) Kriptoanalitičar ima šifrate nekoliko poruka šifrovanih istim algoritmom za šifrovanje. Zadatak kriptoanalitičara je da rekonstruiše otvoreni tekst što većeg broja poruka, ili – još bolje – da otkrije ključ (ili ključeve) korišćene za šifrovanje poruka kako bi dešifrovao druge poruke šifrovane istim ključem.
2. Napad “poznat otvoreni tekst” (engl. known-plaintext attack) Kriptoanalitičar ima pristup šifratima za nekoliko poruka, kao i otvorenim tekstovima tih poruka. Njegov je posao da izračuna ključ (ili ključeve) korišćen za šifrovanje poruka, ili algoritam, kako bi dešifrovao svaku novu poruku šifrovanu istim ključem (ili ključevima).
3. Napad “odabran otvoreni tekst” (engl. chosen-plaintext attack) Kriptoanalitičar ne samo da ima pristup šifratu i pripadajućem otvorenom tekstu nekoliko poruka, već i bira otvoreni tekst koji će biti šifrovan. Ovo je moćnije od napada “poznat otvoreni tekst”, jer kriptoanalitičar može da odabere specifične blokove otvorenog teksta za šifrovanje i tako dođe do više informacija o ključu. Njegov je posao da izračuna ključ (ili ključeve) korišćen za šifrovanje poruka, ili da odredi algoritam pomoću koga bi dešifrovao svaku novu poruku šifrovanu istim ključem (ili ključevima).
4. Napad “prilagodljiv odabrani otvoreni tekst” (engl. adaptive-chosen-plaintext attack) Ovo je poseban slučaj napada “odabran otvoreni tekst”. Ne samo da kriptoanalitičar može da odabere šifrovan otvoreni tekst, već može i da modifikuje
ono što je odabrao na osnovu rezultata prethodnih šifrovanja. Prilikom napada “odabran otvoreni tekst”, kriptoanalitičar može da odabere za šifrovanje jedan veliki blok otvorenog teksta; u napadu “prilagodljiv odabrani otvoreni tekst”, on može da odabere manji blok otvorenog teksta, a zatim još jedan na osnovu rezultata prvog, i tako dalje.
Ne zaboravite Kerkohovu hipotezu: Ako snaga vašeg kriptosistema počiva na činjenici da napadač ne zna kako vaš algoritam funkcioniše – propali ste. Ukoliko verujete da će tajnost strukture vašeg algoritma povećati sigurnost vašeg kriptosistema više nego slobodna analiza akademske zajednice, varate se. Ukoliko mislite da niko neće rastaviti vaš izvorni kôd i obrnutim procesom (reverznim inženjeringom) detaljno proučiti vaš algoritam, naivni ste.
Zapamtite, kriptografi i kriptoanalitičari među sobom diskutuju o svojim algoritmima, oslanjajući se pri tome na profesionalnu procenu kolega radi otkrivanja mogućih slabosti u radu i kako bi razlikovali dobar algoritam od lošeg.
Napomena:
Znam da će nisam dodao neke sisteme enkripcije (Hill, ADFGVX, DES, RSA i tako dalje...), ali to je zato što mislim da je za početnike ovo sasvim dovoljno, a ostale ćemo lako nadodati po potrebi!
[Ovu poruku je menjao Blaise De Vigenere dana 11.03.2011. u 18:35 GMT+1]