UNIVERZITET ZA POSLOVNE STUDIJE FAKULTET ZA POSLOVNE I FINANSIJSKE STUDIJE BANJA LUKA
SEMINARSKI RAD KRIPTOGRAFIJA
Elektronski biznis i internet poslovanje
Prof: Mladen Radivojević
Student: Vanja Tubak
NOVEMBAR,2009
UVOD Kriptografija je znanost koja koristi matematiku i matematičke metode za kriptiranje i dekriptiranje podataka. Kriptografija nam omogućava pohranjivanje ili transportiranje "osjetljivih informacija" preko nesigurnih komunikacijskih kanala bilo to korištenjem staromodnih pisama, radio odašiljača ili u današnje vrijeme interneta na način da nitko ne može pročitati sadržaj tajne informacije osim osobe kojoj je stvarno namijenjena. Sama enkripcija se sastoji od toga da se čisti tekst (ili bilo kakva druga informacija) sakrije tj. prikaže na nerazumljiv način svima osim osobama koje ne poznaju dekripcijski ključ. Kriptografija ima dugu i fascinantnu povijest. Postoje čak podaci da su Egipćani prije više od 4000 godina koristili kriptografske sustave za zaštitu informacija. Kriptografija se počela ubrzano razvijat tijekom 2. svjetskog rata. Jedno od poznatijih kriptografskih metoda je bila njemačka Enigma. To je bio mehanički stroj za kriptiranje koji je pomoću rotora i mehaničkih kontakata šifrirala poruke te omogućava njemcima da tajno razgovaraju sa svojim podmornicama. Početkom 60-ih sa razvojem računala došlo je do sve većih zahtjeva za zaštitom informacija a time i do razvojem kriptografije. U zadnjih 20-ak godina desila se prava eksplozije u razvoju kriptografije kod akademskim zajednicama. Dok je klasična kriptografija bila u upotrebi od običnih ljudi već duže vrijeme, kompjuterska kriptografija je bila u potpunosti u vojnoj domeni još od 2. svjetskog rata. Američka NSA (National Security Agency) i njihovi ekvivalenti u bivšem Sovjetskom savezu, Engleskoj, Izraelu, Francuskoj i drugdje potrošili su milijarde dolara na razno razne igre osiguranja svojih komunikacija i pritom želeći razbiti tuđe. Privatne osobe sa manje znanja i novaca su bile bespomoćne u zaštiti svoje privatnosti od takvih vlada. Danas je situacija bitno drugačija. Postoji puno sustava, što besplatnih koji koji omogućavaju vrlo visoki nivo kriptiranja svakome tko želi. Doduše u nekim državama i danas postoje zakoni o ograničenju korištenja kriptografskih alata, ali sve je to uzaludno kada se na internetu mogu naći gotovo sve implementacije kriptografskih metoda. Osnovni ciljevi kriptografije su: • • •
tajnost podataka: da podacima mogu pristupiti samo oni koji smiju integritet podataka: da se otkrije neovlaštena promjena podataka provjera identiteta: dokazivanje da su stranke u komunikaciji zaista one koje tvrde da jesu
2
•
neosporivost: onemogućava sudioniku komunikacije da zaniječe svoje prethodne poruke
ISTORIJA KRIPTOGRAFIJE Kroz cijelu povijest čovječanstva postojala je potreba za sigurnom razmjenom informacija. Problemom sigurne komunikacije bavili su se već Egipćani i Indijci prije više od 3000 godina i od tada do danas osnovna ideja se nije promijenila – prenijeti neku poruku s jednog mjesta na drugo što je sigurnije moguće, tj. napraviti algoritam koji bi omogućio skrivanje originalne poruke tako da bude potpuno (u idealnom slučaju) nerazumljiva osobama koje bi neovlašteno došle u njen posjed. Prve korištene metode nisu bili složeni matematički algoritmi nego se počelo korištenjem alternativnih jezika koji su bili poznati samo malom broju ljudi. Razvoj složenijih metoda sigurne komunikacije počeo je tek razvojem pisma, što je omogućilo da se bilo koja informacija prikaže određenim brojem znakova koji bi, nakon upotrebe određenog ključa, formirali ponovno početnu poruku1. S vremenom se javila i ideja prikaza slova drugim simbolima. Primjeri koji su i danas u upotrebi su: Morseov kod, Braille-ovo pismo i ASCII kod. Nikad nije točno utvrđen početak kriptografije, ali se smatra da je počela više od 2000 godina pr. Kr. jer iz tog vremena potječu prvi pronađeni tragovi šifriranja. Točnije, oko 1900. godine pr. Kr. u Egiptu nastao je natpis koji se danas smatra prvim dokumentiranim primjerom pisane kriptografije. U 6. stoljeću pr. Kr. u zapisu dijela Biblije, Knjige o Jeremiji, korištena je jednostavna šifra koja izvrće abecedu naopako. Šifra je poznata pod imenom ATBASH, a bila je jedna od hebrejskih šifri koje su u to vrijeme korištene. U 6. desetljeću pr. Kr. Julije Cezar je u državnim komunikacijama koristio jednostavnu supstituciju koja je kasnije njemu u čast dobila ime "caesar" šifriranje. Ideja je bila u pomicanju svih slova za tri mjesta naprijed. Takva šifra danas se smatra slabijom čak i od ATBASH šifre, ali je u to vrijeme bila dobra jer je mali broj ljudi znao čitati.
U srednjem vijeku kriptografija je često korištena u službi Crkve, a jedan od primjera toga je nomenclator – kombinacija malog koda i supstitucijske abecede kojeg je na zahtjev pape Clementa VII stvorio Gabrieli di Lavinde. Ova šifra ostala je u upotrebi sljedećih 450 godina, iako su u međuvremenu stvorene i sigurnije šifre. Razlog tome je najvjerojatnije bio u njenoj jednostavnosti. 1518. Johannes Trithemius je napisao prvu tiskanu knjigu o kriptografiji. Oko 1790. 1
A. Dujella, M. Maretić: Kriptografija, Element, Zagreb, 2007.
3
Thomas Jefferson je uz pomoć matematičara Dr. Roberta Pattersona izumio šifrarnik s kotačem. On je kasnije ponovno izumljen u nekoliko različitih oblika i korišten u II. svjetskom ratu od strane američke ratne mornarice. 1861. u Patentnom uredu u SAD-u prijavljen je prvi izum vezan uz kriptografiju. Do 1980. prijavljeno je 1769 takvih izuma. 20. stoljeće bilo je vrlo burno: 2 svjetska rata i mnogo raznih sukoba u kojima je kriptografija odigrala značajnu ulogu. William Frederick Friedman (kasnije poznat kao otac američke kriptoanalize) prvi je uveo pojam "kriptoanaliza". Kriptografiju su rado koristili i kriminalci, a jedan vrlo slikovit primjer je iz razdoblja prohibicije. Da bi mogli švercati alkohol koristili su vrlo komplicirane sustave šifriranja koji su u to vrijeme bili vrlo napredni. 1923. Arthur Scherbius proizvodi svoj najslavniji proizvod - široko poznatu Enigmu. Ona je prvotno trebala biti komercijalni proizvod, ali nije uspjela pa su je preuzeli njemački nacisti. Oni su je poboljšali pa je postala glavni uređaj za šifriranje u nacističkoj Njemačkoj. Prvi je njenu šifru slomio jedan poljski matematičar na osnovi ukradenog primjerka šifriranog teksta i dnevnih ključeva za tri mjeseca unaprijed. Kasnije su uspješno razbijene i druge Enigmine šifre prvenstveno pod vodstvom Alana Turinga. 30-ih godina 20. stoljeća nastaje američki «suparnik» Enigme SIGABA. Važno je spomenuti da je bila tehnički naprednija od Enigme. Nakon II. Svjetskog rata razvoj [računalo|računala]] daje novi zamah kriptografiji. Tako 1970. IBM razvija šifru pod nazivom Lucifer, koja kasnije, 1976. inspirira stvaranje DES (Data Encryption Standard) šifre. Široko je prihvaćena u svijetu zbog svoje dokazane otpornosti na napade. 1976. se također pojavila ideja javnih klučeva. Godinu kasnije grupa početnika u kriptografiji Rivest, Shamir i Adleman stvorili su algoritam koji su po prvim slovima svojih prezimena nazvali RSA algoritam2. To je bila praktična šifra sa javnim ključevima koja se mogla koristiti i za šifriranje poruka i za digitalni potpis, a bazirala se na težini faktoriziranja velikih brojeva. 1984.-1985. u softveru za čitanje novosti na USENET-u upotrebljena je rot13 šifra (rotiranje slova za 13, slično "caesar" šifri) da bi se spriječio pristup djece za njih neprikladnim sadržajima. Ovo je prvi poznati primjer uspješnog korištenja šifre sa javnim ključem. 1990. je u Švicarskoj objavljen "Prijedlog za novi Standard za šifriranje blokova podataka" tj. prijedlog za International Data Encryption Algorithm (IDEA), koji bi trebao zamijeniti DES. IDEA koristi 128-bitni ključ i koristi operacije koje je lako implementirati na računalu. 1991. Phil Zimmermann objavljuje prvu verziju svog PGP-a (Pretty Good Privacy) programa za zaštitu e-mailova i podataka općenito. Zbog toga što je bio freeware komercijalni proizvodi iste vrste su redom propali, a PGP je postao svjetski standard. U prvo vrijeme koristio je RSA algoritam koji se dugo vremena smatrao dosta sigurnim. Računala su sve brža i brža, a razvoj svega vezanog uz njih sve je teže pratiti. Budućnost kriptografije je danas povezana s budućnošću računala.
2
A. Dujella, M. Maretić: Kriptografija, Element, Zagreb, 2007.
4
METODE ŠIFRIRANJA Povijesno najduže korištena metoda šifriranja je metoda olovke i papira. Primjer ove metode je supstitucija. Također su uz ovu metodu vezane kodne knjige koje su služile za standardno šifriranje jer su u njima bile fraze i riječi i tako se olakšalo šifriranje. Primjer kodne knjige je ranije spomenuti nomenclator. Još jedna davno korištena metoda je metoda transpozicije. Ideja te metode je u pomicanju slova naprijed ili nazad za određen broj mjesta. Primjeri su caesar šifra i rot13. Općenito danas postoje dvije vrste metoda šifriranja. To su metoda simetričnog šifriranja i metoda asimetričnog šifriranja. Metoda simetričnog šifriranja je donedavno bila jedina poznata metoda. Metoda koristi jedinstveni ključ. Prednost je svakako njena jednostavnost i brzina, a od mana treba spomenuti problem sigurnosti, pogotovo u slučaju krađe ključa. Od 1976. i pojave javnog ključa možemo govoriti i o metodi asimetričnog šifriranja. Razlika je u tome što ova metoda koristi dva odvojena ključa – javni i tajni. Javni se koristi za šifriranje, a tajni za dešifriranje. Iz imena javni ključ jasno je da isti ne mora biti tajan. Prednost ove metode je svakako veća kvaliteta šifriranja koja omogućuje veću sigurnost i, što je često iznimno važno, tajnost. Mana je definitivno količina vremena koja je potrebna za svaki postupak dešifriranja. Još jedna važna metoda šifriranja je jednosmjerno šifriranje. Njegova glavna osobina je ireverzibilnost tj. ne može se dobiti originalni sadržaj. Danas se koristi za potvrde, (digitalne) potpise, softver, ... Za još sofisticiranije metode šifriranja koristi se tzv. jako šifriranje. Ta kompleksnija metoda je u nekim državama zabranjena.
SUPSTITUCIJSKE ŠIFRE Znameniti rimski vojskovođa i državnik Gaj Julije Cezar u komunikaciji sa svojim prijateljima koristio se šifrom u kojoj su se slova otvorenog teksta zamjenjivala slovima što su se nalazila tri mjesta dalje od njih u alfabetu (A D, B E, itd.). Pretpostavljamo da se alfabet ciklički nastavlja, tj. da nakon zadnjeg slova Z, ponovo dolaze A, B, C. Ako bi smo upotrijebili današnji engleski alfabet od 26 slova, onda bi poznata Cezarova izreka VENI VIDI VICI 5
bila šifrirana ovako: YHQL YLGL YLFL. Cezarovu šifru možemo pregledno zapisati na sljedeći način: otvoreni tekst šifrat
ABCDEFGHIJKLMNOPQRSTUVWXYZ
DEFGHIJKLMNOPQRSTUVWXYZABC
U daljnjim primjerima koristit ćemo se engleskim (međunarodnim) alfabetom od 26 slova. Ukoliko ćemo raditi s otvorenim tekstom na hrvatskom jeziku, onda ćemo Č i Ć zamijeniti s C, a Đ, Dž, Lj, Nj, Š, Ž redom s DJ, DZ, LJ, NJ, S, Z. Danas se Cezarovom šifrom nazivaju i šifre (tj. kriptosustavi) istog oblika s pomakom različitim od 3. Da bismo Cezarovu šifru precizno definirali u smislu Definicije 1.1, uvest ćemo prirodnu korespodenciju između slova alfabeta (A - Z) i cijelih brojeva (0 - 25)3. Skup {0,1,2,...,25} označavat ćemo sa Z26 i pretpostavljat ćemo da su na njemu definirane operacije zbrajanja, oduzimanja i množenja na isti način kao u skupu cijelih brojeva, ali tako da se rezultat (ukoliko nije iz skupa {0,1,2,...,25}) na kraju zamijeni s njegovih ostatkom pri dijeljenju s 26. Koristit ćemo oznake a +26 b ili (a + b) mod 26,, te analogno za oduzimanje i množenje. Skup Z26, uz operacije +26 i ·26 čini prsten. Postpuno analogno se definira skup Zm i operacije na njemu za proizvoljan prirodan broj m. Primijetimo da na ovom mjestu zamjena slova brojevima još nije bila nužna (mogli bismo sve definirati u terminima zamjena slova i njihovog pomicanja unutar alfabeta, te pojasniti što se događa kad "preskočimo" zadnje slovo), no uskoro će korištenje ovog matematičkog rječnika postati nužno. Dakle, Cezarovu šifru možemo definirati na sljedeći način: Neka je P = C = K = Z26. Za 0 ≤ K ≤ 25 definiramo eK(x) = x + K mod 26, dK(y) = y - K mod 26. Šifra je definirana nad Z26 budući da koristimo 26 slova, pa imamo sljedeću korespondenciju, koja za svako slovo alfabeta daje njegov "numerički ekvivalent": ABCDEFGHIJK L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
3
http://os2.zemris.fer.hr/ostalo/2002_saban/index.htm
6
U Cezarovoj šifri su osnovni elementi (simboli) otvorenog teksta slova (odnosno njihovi numerički ekvivalenti), a ključ K određuje za koliko mjesta udesno ćemo pomicati slova pri šifriranju. Očito je dK(eK(x)) = x, kao što se zahtjeva u definiciji kriptosustava. Za K = 3 dobiva se originalna Cezarova šifra. Postoje naznake da je Cezarov nećak, prvi rimski car August, koristio najjednostavniju verziju ove šifre, pomičući slova samo za jedno mjesto u alfabetu, tj. uzimajući da je K = 1. Primjer 1.1: Dekriptirati šifrat PWNUYTLWFKNOF dobiven Cezarovom šifrom. Rješenje. Budući da je prostor ključeva jako mali (ima ih 26) zadatak možemo riješiti "grubom silom", tj. tako da ispitamo sve moguće ključeve, sve dok ne dođemo do nekog smislenog teksta. Za d0, d1, d2, ... dobivamo redom:
PWNUYTLWFKNOF OVMTXSKVEJMNE NULSWRJUDILMD MTKRVQITCHKLC LSJQUPHSBGJKB KRIPTOGRAFIJA Dakle, ključ je K = 5, a otvoreni tekst je KRIPTOGRAFIJA. Da bismo dobili barem malo sigurniju šifru, možemo promatrati funkcije za šifriranje koje će uključivati više od jednog parametra4. Najjednostavnija takva funkcija je afina funkcija e(x) = ax + b. No, tu se pojavljuje jedan novi problem jer takva funkcija na skupu Z26 ne mora imati inverz (ne mora biti injekcija). Zato parametar a ne može biti proizvoljan, već mora biti relativno prost s modulom 26. Afina šifra definira se na sljedeći način:
Neka je P = C = Z26, te neka je K = { (a,b) Z26 × Z26 : (a, 26) = 1 }. Za K = (a,b) K definiramo eK(x) = ax + b mod 26, dK(y) = a-1(y - b) mod 26. Ova šifra se zove afinoma zato što su funkcije šifriranja afine. Provjerimo je li uvjet dK(eK(x)) = x zadovoljen. Zaista, dK(eK(x)) = dK(ax + b) = a-1 (ax + b - b) = x. 4
http://os2.zemris.fer.hr/ostalo/2002_saban/index.htm
7
Ovdje a-1 označava multiplikativni inverz broja a u prstenu Z26. Budući da broj 26 nije prost, nemaju svi elementi iz Z26 multiplikativni inverz, već ih imaju upravo brojevi koji su relativno prosti s 26, tj. za koje vrijedi da je najveći zajednički djelitelje od a i 26 jednak 1 (to pišemo: (a, 26) = 1). Prikažimo te brojeve zajedno s njihovim inverzima: a 1 3 5 7 9 11 15 17 19 21 23 25 a-1 1 9 21 15 3 19 7 23 11 5 17 25
Primjer 1.2: Neka je K = (7, 3). Šifrirati otvoreni tekst ZADAR. Rješenje. Koristeći ranije navedenu tablicu, slova otvorenog teksta poistovjećujemo s njihovim numeričkim ekvivalentima. Imamo: 25 · 7 + 3 ≡ 22 (mod 26), 0 · 7 + 3 ≡ 3 (mod 26), 3 · 7 + 3 ≡ 24 (mod 26), 17 · 7 + 3 ≡ 18 (mod 26), pa je šifrat WDYDS. Primjer 1.3: Dekriptirati šifrat OZWHRYEZCVWFCTPCUWRCFPYHWI dobiven afinom šifrom. Rješenje. Imamo φ(26) · 26 = 12 · 26 = 312 mogućih ključeva. To je još uvijek premalo, pa bi uz pomoć računala sigurno mogli primijeniti "grubu silu", kao u Primjeru 1.1. No, postoji i elegantniji način ukoliko znamo kojim je jezikom pisan otvoreni tekst. Recimo da nam je poznato da je u ovom slučaju otvoreni tekst pisan hrvatskim jezikom. Frekvencijom slova u hrvatskom, a i nekim drugim jezicima, detaljnije ćemo se pozabaviti malo kasnije. Za sada nam je potrebna samo činjenica da su najfrekventnija slova u hrvatskom jeziku A, I, O, E, N, i to upravo u tom redoslijedu. U našem šifratu uočavamo da su najfrekventnija slova C i W, koja se javljaju po 4 puta. Iako je naš šifrat prekratak, možemo ipak očekivati da su ova dva slova šifrati od A, I, O, E ili N. Pa pogledajmo kakve smo sreće. Imamo eK(A) = a · 0 + b = b, eK(I) = 8a + b. Pretpostavimo da je eK(A) = C i eK(I) = W. Dobivamo da je b = 2 i 8a + b 22 (mod 26), odakle je a = 9. (Općenito se linearne kongruencije rješavaju pomoću (proširenog) Euklidovog algoritma, no u slučaju malog modula, kao što je naš modul 26, dovoljno je uvrstiti sve dopustive
8
(invertibilne) a-ove, te provjeriti koji zadovoljava kongruenciju.)5 Dakle, dobili smo da je eK(x) = (9x + 2) mod 26. Tada je dK(y) = 3(y - 2) mod 26. Primijenimo li funkciju dK na naš šifrat, dobivamo otvoreni tekst (s umetnutim razmacima i "kvačicama"): KRIPTOGRAFIJA ZNAČI TAJNOPIS. Cezarova i afina šifra su specijalni slučajevi supstitucijske šifre, koja je definirana na sljedeći način: Neka je P = C = Z26. Prostor ključeva K se sastoji od svih permutacija skupa {0, 1, 2, ... , 25}. Za svaku permutaciju π K definiramo eπ(x) = π(x), dπ(y) = π1 (y), gdje je π-1 inverzna permutacija od π. Ovdje imamo čak 26! ≈ 4 · 1026 mogućih ključeva, tako da je napad ispitivanjem svih mogućih ključeva praktički nemoguć, čak i uz pomoć računala. Međutim, supstitucijsku šifru je moguće lako dekriptirati koristeći statistička svojstva jezika na kojem je pisan otvoreni tekst. Osnovna metoda je analiza frekvencije slova. Broji se pojavljivanje svakog slova u šifratu, te se distribucija slova u šifratu uspoređuje s poznatim podatcima o distribuciji slova u jeziku na kojem pretpostavljamo da je napisan otvoreni tekst. Vrlo je vjerojatno da najfrekventnija slova šifrata odgovaraju najfrekventnijim slovima jezika. Ta vjerojatnost je to veća što je dulji šifrat. Također, korisni mogu biti i podatci o najčešćim bigramima (parovima slova) i trigramima (nizovima od tri slova) u jeziku. Kod nizova od četiri ili više slova, frekvencije već uvelike ovise o sadržaju teksta, i najfrekventniji nizovi obično dolaze od jedne riječi koja se često ponavlja u tesktu (npr. osobnog imena). Začetci analize frekvencija se mogu naći u 14. stoljeću u djelu arapskog autora Ibn ad-Duraihima. Njegova zapažanja su objavljena u odjeljku posvećenom kriptologiji u velikoj enciklopediji u četrnaest svezaka čiji je autor Qalqashandi. Odjeljak ima naslov "O skrivanju tajnih poruka u pismima". Nedavno pronađeni rukopisi sugeriraju međutim da su arapski lingvisti tu metodu poznavali možda i pet stoljeća ranije. Čini se da su u europskoj kriptografiji metodu analize frekvencija u kriptoanalizi prvi počeli koristiti talijanski kriptografi u 15. stoljeću. Naime, poznato je da su svoje poruke šifrirali na način da su najfrekventnija slova zamjenjivali s više različitih simbola, pa na osnovu toga možemo zaključiti da im je bilo poznato kako analiza frekvencija slova može dovesti do razbijanja supstitucijske šifre. Za razliku od znanstvenika ad-Duraihima, oni svoja saznanja nisu javno objavljivali, već su ih nastojali što bolje unovčiti. Naime, mnoge su tadašnje talijanske kneževine imale ljude plaćene za razbijanje šifriranih poruka (jedan od najpoznatijih je venecijanski "tajnik za šifre" Giovanni Soro), i taj se 5
http://dokumentacija.linux.hr/Sigurnost-KAKO-6.html
9
posao često prenosio unutar obitelji6. Ovakvu situaciju u kojoj praktički istovremeno do otkrića značajnih za kriptografiju dođu znastvenici koji žele što prije objaviti svoje rezultate i dobiti za njih priznanje, te ljudi iz obavještajnih ili komercijalnih institucija koji ne žele ili ne smiju odmah objaviti svoje rezultate, susrećemo često u povijesti kriptografije sve do današnjih dana (npr. pitanje prvenstva kod otkrića diferencijalne kriptoanalize ili kriptosustava s javnim ključem). Navest ćemo osnovne podatke o frekvenciji slova, bigrama i trigrama za hrvatski, engleski i njemački jezik. Pritom smatramo da u tekstu nema interpunkcijskih znakova ni razmaka između riječi (u protivnom bi kriptoanaliza bila puno lakša), te da su slova Č, Ć, Đ, Dž, Lj, Nj, Š, Ž iz hrvatske abecede zamijenjena na prije opisani način slovima iz međunarodnog alfabeta. Podatci za hrvatski jezik su dobiveni analizom tekstova iz dnevnog tiska, dok su podatci za engleski i njemački jezik preuzeti iz literature [Bauer, Stinson].
FREKVENCIJA SLOVA (u promilima) HRVATSKI A I O E N S R J T U D K V L M P C Z G 6
115 98 90 84 66 56 54 51 48 43 37 36 35 33 31 29 28 23 16
ENGLESKI E T A O I N S H R D L C U M W F G Y P
127 91 82 75 70 67 63 61 60 43 40 28 28 24 23 22 20 20 19
NJEMAČKI E N I R S A T D H U L G O C M B F W K
175 98 77 75 68 65 61 48 42 42 35 31 30 27 26 19 17 15 15
http://dokumentacija.linux.hr/Sigurnost-KAKO-6.html
10
B H F
15 8 3
B V K J Q X Z
15 10 8 2 1 1 1
Z P V J Y X Q
11 10 9 3 1 0 0
Najfrekventniji bigrami u hrvatskom jeziku su: JE (2.7 %), NA (1.5 %), RA (1.5 %), ST, AN, NI, KO, OS, TI, IJ, NO, EN, PR (1.0 %). Ovdje je važno uočiti na je JE najfrekventniji bigram, iako J nije među najfrekventnijim slovima. Više od pola pojavljivanja slova J otpada na bigram JE. Druga zanimljivost je da su svi najfrekventniji bigrami oblika suglasniksamoglasnik ili samoglasnik-suglasnik, osim bigrama ST i PR. Konačno, najfrekventniji recipročni bigrami su NA i AN (1.5 % + 1.4 %), te NI i IN (1.3 % + 0.9 %). Jedino kod ovih dvaju parova su frekvencije obaju bigrama veće od 0.9 %. Daleko najfrekventniji trigram u hrvatskom jeziku je IJE (0.6 %). Slijede (s frekvencijama između 0.3 % i 0.4 %): STA, OST, JED, KOJ, OJE, JEN. U engleskom jeziku najfrekventniji bigrami su TH (3.2 %), HE (2.5 %), AN, IN, ER, RE, ON, ES, TI, AT (1.2 %), a trigrami THE (3.5 %), ING (1.1 %), AND (1.0 %), ION, TIO, ENT, ERE, HER (0.7 %). U njemačkom jeziku najfrekventniji bigrami su ER (4.1 %), EN (4.0 %), CH (2.4%), DE, EI, ND, TE, IN, IE, GE (1.5 %), a trigrami EIN (1.2 %), ICH (1.1 %), NDE (0.9 %), DIE, UND, DER, CHE, END (0.8 %). Primjer 1.4: Dekriptirati šifrat
TQCWT QCKIQ RWNOQ OBCEW OQVKB UKAPK OQOQB CQPQA JGDUQ EQORW TSJGR WEQKY
11
WGTWC JKRBI KZGVO GBQ dobiven supstitucijskom šifrom, ako je poznato da je otvoreni tekst na hrvatskom jeziku. (Zbog preglednosti se kod duljih šifrata obično stavlja razmak nakon svakog petog slova - to naravno nema nikakve veze s razmacima u otvorenom tekstu, za koje smo se dogovorili da ćemo ih zanemarivati kod šifriranja.) Rješenje. Napravit ćemo (istovremeno) analizu frekvencija slova i bigrama tako da za svako slovo u alfabetu napišemo sve njegove sljedbenike u šifratu (za zadnje slovo u šifratu stavljamo *). Dobivamo sljedeću tablicu: A | P, J B | C, U, C, I, Q C | W, K, E, Q, J D| U E | W, Q, Q F| G | D, R, T, V, B H| I | Q, K J | G, G, K K | I, B, A, O, Y, R, Z L| M| N| O O | Q, B, Q, Q, Q, R, G P | K, Q Q | C, C, R, O, V, O, B, P, A, E, O, K, * R | W, W, W, B S| J T | Q, Q, S, W U | K, Q V | K, O W | T, N, O, T, E, G, C X| Y| W Z| G Iz tablice iščitavamo da su najfrekventnija slova: Q (13), K (7), O(7), W(7), B, C, G, R, T, E, J, a najfrekventniji bigrami:
12
OQ (4), QO (3), RW (3), BC, EQ, JG, QC, TQ, WT. Logično je pretpostaviti da je e(A) = Q. Uočavamo također recipročne bigrame OQ i QO, što nas navodi na e(N) = O. Nadalje, većina pojavljivanja slova R vezana je uz bigram RW, te da je W jedno od najfrekventnijih slova. To nas vodi na pretpostavku da je e(J) = R i e(E) = W. Pokušajmo otkriti šifrat čestog bigrama ST (najčešćeg od neotkrivenih). Najozbiljniji kandidati su BC i JG. Možemo uzeti neki od njih, pa vidjeti što ćemo dobiti. Mi ćemo krenuti s BC, jer frekvencije od B i C odgovaraju očekivanim frekvencijama od S i T. Dakle, uzmimo da je e(S) = B i e(T) = C. Od najfrekventnijih slova u hrvatskom jeziku, još nismo odgonetnuli šifrate od I i O. Glavni kandidati su K i G, i to upravo tim redoslijedom. Pa uzmimo da je e(I) = K i e(O) = G. Rezimirajmo ono što smo do sada pretpostavili: 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 q w kr og bc
Ubacimo ove pretpostavke u polazni šifrat:
TQCWT QCKIQ RWNOQ OBCEW OQVKB UKAPK ate ati a je na nst e na is i i OQOQB CQPQA JGDUQ EQORW TSJGR WEQKY nanas ta a o a anje oj e ai WGTWC JKRBI KZGVO GBQ eo et ijs i o n osa Sada već imamo dovoljno elemenata otvorenog teksta da možemo postupno odgonetavati čitave riječi (npr. prva riječ: matematika, zadnja riječ: odnosa). Konačno dobivamo otvoreni tekst
Matematika je znanstvena disciplina nastala proučavanjem brojeva i geometrijskih odnosa. Alfabet šifrata izgleda ovako: qsuvwxyzkriptogafjbcdehlmn Uočavamo pojavljivanje riječi "kriptografija" unutar alfabeta šifrata. Radi se o varijanti supstitucijske šifre koja se naziva Cezarova šifra s ključnom riječi. U njoj ključ predstavlja ključna riječ (u ovom slučaju KRIPTOGRAFIJA), te broj (u ovom slučaju 8) koji označava poziciju na kojoj počinjemo pisati ključnu riječ (bez ponavljanja slova). Naravno, da smo znali da je riječ upravo o ovoj varijanti, dekriptiranje bi nam bilo još lakše, no i bez toga nismo imali puno problema. Možemo zaključiti da je usprkos velikom prostoru ključeva, supstitucijska šifra vrlo laka za kriptoanalizu. To je bilo poznato već početkom 15. stoljeća, kada je u Italiji počela uporaba homofona, tj. šifriranje najfrekventnijih slova s više različitih simbola. Tu se ne zamjenjuje slovo za slovo, već npr. slovo za dvoznamenkasti broj, tako da je moguće šifrirati najfrekventnija slova na nekoliko različitih načina,
13
dok će ona niskofrekventna i dalje imati samo jednu zamjenu. To svakako povećava sigurnost šifre, ali i dalje analiza frekvencija bigrama i trigrama može dovesti do rješenja. Također se može iskoristiti djelomično ponavljanje. Primjerice, ako kod šifriranja slova pomoću dvoznamenkastih brojeva naiđemo na nizove 12 17 37 23 57 i 12 17 42 23 57, onda je prilično izvjesno da 37 i 42 predstavljaju isto slovo otvorenog teksta, pa ih možemo "spojiti" u analizi frekvencija.
MODERNA KRIPTOGRAFIJA U modernoj kriptografiji još se uvijek koristi šifriranje simetričnim ključem. Primjer za to je IBM-ova DES šifra koju i danas koristi Unix, kao i njen prethodnik šifra Lucifer. Najčešći problem ove metode je i danas način prijenosa ključa. Postoje i varijante metode kod kojih su ključevi različiti ali se mogu jednostavno jedan iz drugoga izračinati7. Dolazimo do paradoksa da bi najsigurnije bilo poslati ključ šifrirano i počinje vrtnja u krug. DES je javno dostupna i korištena metoda šifriranja od 1976. godine, iako se danas smatra nesigurnom, često je možemo naći u upotrebi (ATM, šifriranje e-mailova, kod pristupanja sustava s udaljenosti itd.) Oba spadaju u "blok" metode i jedan od razloga popularnosti je činjenica da su oba proglašena službenim metodama šifriranja od strane vlade S.A.D. Postoje brojne varijacije tih metoda pa tako i trostruki DES koji je bitno sigurniji. Također postoje metode šifiranja koja su prilagođene šifriranju protoka podataka, kao npr. RC4. Kako nizovi podataka prolaze kroz program, mijenja se dio koji šifira podatke, a način promjene se kontrolira ključem, a ponekad i samim podacima koji se šifriraju. Jedna od čestih upotreba šifriranja u današnje doba je i kontrola pristupa (ustanovama, računalima, podatcima,...) ali i preračunavanja čitavih sadržaja u jedinstven broj (hash s izuzetno malom vjerojatnosti dvostrukih rješenja za različite sadržaje. Sličan način ali s drugom namjenom je MAC odnosno šifriranje pristupne poruke, kada tajna, ključna lozinka daje šifrirani tekst koji se uspoređuje s spremljenim za kontrolu pristupa, odnosno vjerodostojnosti.
Javni ključevi 7
14
Glavi problem u simetričnom šifriranju je rukovođenje tajnim šiframa, ključevima koji su korišteni za šifriranje i dešifriranje poruke. Zbog toga se nakon objavljivanja rada koji su napisali Whitfield Diffie i Martin Hellman 1976. godine pojavilo šifriranje s javnim ključevima. Metoda je toliko promjenila rad s ključevima da ju David Kahn opisuje kao "najveći, revolucionarni napredak u kriptografiji od renesanse". Stvaranje javnog i privatnog ključa je povezano matematičkim postupkom, nakon čega se dobiveni tekst javnog ključa može slobodno podjeliti, ali se njime skriven tekst može otključati samo privatnim ključem. 1978. godine Ronald Rivest, Adi Shamir i Len Adleman objavili su RSA algoritam. Napokon je 1997. godine obznanjeno kako je zapravo James H. Ellis u GCHQ, britanskoj obavještajnoj službi zapravo ranih 1970-ih izmislio asimetrično šifriranje javnim ključem te da su i Diffie-Hellman i RSA algoritam zapravo već izmisliliMalcolm J. Williamson, odnosno Clifford Cocks. Često korišteni primjeri su RSA algoritam, digitalni potpisi, VPN, SSL/TLS i program PGP, koji se također temelje na ovakvim metodama. Današnje metode bazirana su na problemima gdje se brzo i jednostavno pomoću računala tekst šifrira ali je rješenje "teško", u metematičnom smislu. Dok se RSA na problemu faktoriziranja prirodnih brojeva, DSA i Diffie-Hellman metode se oslanjanju na problem diskretnih logaritama. Problemi moderne kriptografije su svakako sigurnost, ali i zakonska ograničenja u mnogim zemljama. Pitanje sigurnosti je goruće pitanje zbog sve veće pojave programa za razbijanje lozinki kao što su: Crack i John the Ripper. Drugi veliki problem su zakonska ograničenja. U SAD-u se recimo kriptografija smatra oružjem. Do 1999. u Francuskoj je bila znatno ograničena upotreba kriptografije. Od ostalih država sa strogim zakonskim ograničenjima upotrebe kriptografije prednjači Kina ispred Bjelorusije, Mongolije, Rusije, Pakistana, Tunisa i drugih. Vrijeme će pokazati što nam donosi budućnost na ovom području. Iako kriptografija postoji već 4000 godina ona još nije ni blizu svom kraju. Razni događaji kroz povijest utjecali su na razvoj kriptografije (svjetski i drugi ratovi Enigma), a novu dimenziju dobila je razvojem računala. Vječni problem kriptografije svakako je pitanje sigurnosti, a zakonske odredbe nekih zemalja još uvijek ne dozvoljavaju njenu slobodnu uporabu. Unatoč tome kriptografija se sve više širi. Problem koji se u najnovije vrijeme javlja zbog širenja terorizma je i problem privatnosti. Taj problem je vrlo ozbiljan jer se zbog sigurnosnih razloga zadire u privatnost običnog čovjeka. Čak ni šifriranje ne garantira privatnost jer se razbijanje šifri jako brzo razvija.
15
PRIMJERI Vigenèreova šifra Playfairova šifra Hillova šifra Jednokratna bilježnica Transpozicijske šifre Navest cemo samo jedan primjer i to Hillove šifre. Lester Hill je 1929. godine izumio kriptosustav kod kojeg se m uzastopnih slova otvorenog teksta zamjenjuje s m slova u šifratu. Dakle, radi se o poligramskoj šifri. Ukoliko broj slova u originalnom otvorenom tekstu nije djeljiv s m, poruku trebamo nadopuniti da bimso je mogli podijeliti u blokove od po m slova. Kripotsustav je definiran na sljedeći način: Neka je m fiksan prirodan broj. Neka je P = C = (Z26)m, te K = {m × m invertibilne matrice nad Z26}. Za K K definiramo eK(x) = xK, dK(y) = yK-1, gdje su sve operacije u prstenu Z26. Hill je preporučio uporabu involutornih matrica, tj. onih kod kojih je K-1 = K. To teoretski smanjuje sigurnost, jer je prostor ključeva manji, ali olakšava postupak šifriranja i dešifriranja. Napomenimo da je matrica invertibilna u Z26 ako i samo ako joj determinanta ima inverz u Z26, tj. ako je (det A, 26)=1.
Primjer 1.1: Neka je K=
5
8
2 2
,
16
2
5
2 4
1 0
2 0
1 7
te neka je otvoreni tekst UTORAK. Njegov numerički ekvivalent je (20, 19, 14, 17, 0, 10). Računamo: 5
8
2 2
(20 19 14) 2
5
2 4
1 0
2 0
1 7
5
8
2 2
(17 0 10) 2
5
2 4
1 0
2 0
1 7
= (278 535 1134) mod 26 = (18 15 16) = SPQ,
= (185 200 170) mod 26 = (3 18 14) = DSO.
Dakle šifrat je SPQDSO. Primijetimo da ukoliko bi tekst umjesto s UTO započeo sa STO, onda bi šifrat započeo sa 5
8
2 2
(18 19 14) 2
5
2 4
1 0
2 0
1 7
= (8 25 24) = IZY.
Hillov kriptosustav s 3 × 3 matricama skriva ne samo sve informacije o frekvencijama slova, već i o frekvencijama bigrama. Stoga već za m ≥ 5 možemo Hillov kriptosustav smatrati gotovo potpuno sigurnim na napad "samo šifrat". Međutim, ovu šifru je vrlo lako razbiti pomoću napada "poznati otvoreni tekst", a pogotovo pomoću napada "odabrani otvoreni tekst". To je i razlog zašto ovaj
17
sustav gotovo uopće nije bio u praktičnoj uporabi (osim kratko vrijeme za šifriranje pozivnih signala radio-stanica). Nevezano uz Hillovu šifru, spomenimo da je često do uspješnih napada metodom "odabrani otvoreni tekst" dolazilo zbog nespretnosti diplomata koji su uručene im diplomatske note šifrirali u doslovno istom obliku u kojem su im bile uručene. Stoga se u tekst note moglo ubaciti neke dijelove po sugestiji kriptoanalitičara, tj. u njih ubaciti "odabrabi otvoreni tekst", te potom presretanjem komunikacije saznati odgovarajući šifrat. Vratimo se Hillovoj šifri. Pretpostavimo da je kriptoanalitičar odredio vrijednost m, te pretpostavimo da ima barem m različitih parova m-torki xj = ( x1j, x2j, ... , xmj), yj = ( y1j, y2j, ... , ymj), j = 1, 2, ... , m, takvih da je yj = eK(xj), j = 1, 2, ... , m. Definirajmo dvije m × m matrice X = (xij) i Y = (yij). Tako dobivamo matričnu jednadžbu Y = XK, gdje m × m matrica K predstavlja nepoznati ključ. Ukoliko je matrica X invertibilna, kriptoanalitičar može izračunati K = X-1Y i time razbiti šifru. Ako X nije invertibilna, morat će pokušati s nekim drugim skupom od m parova otvoreni tekst - šifrat. Jasno je da kod napada "odabrani otvoreni tekst" nema ovog problema, jer će kriptoanalitičar odabrati otvoreni tekst koji daje invertibilnu matricu. Primjer 1.2: Pretpostavimo da je otvoreni tekst ZAGREB šifriran Hillovom šifrom s m = 2 i da je tako dobiven šifrat THWJKB. Odredimo ključ K. Rješenje. Imamo: eK(25, 0) = (19, 7), eK(6, 17) = (22, 9), eK(4, 1) = (10, 1). Iz prva dva para dobivamo matričnu jednadžbu 2 5
0
1 6 7
K=
1 9
7
2 2
9
.
Ako je A = (aij) invertibilna 2 × 2 matrica, onda je A-1 = (det A)-1
a22 -a12 -a21 a11
.
Kod nas je det X mod 26 = 425 mod 6 = 9, pa je (det X)-1 = 3. Stoga je
X-1 = 3
1 7
0
-6
2 5
=
2 5
0
8
2 3
,
18
pa je
K=
2 5
0
1 9
8
2 3
2 9 2
7
7 =
1 9
8 3
.
Provjerimo to na trećem paru: 1 9 = (10 1). (4 1) 8 3 7
Što ako se ne zna m? Pretpostavljajući da m nije jako velik, možemo probati s m = 2, 3, ..., dok ne nađemo ključ. Ako pretpostavljena vrijednost od m nije točna, onda m × m matrica dobivena na gore opisani način neće biti u skladu s daljnjim parovima otvoreni tekst - šifra
19
ZAKLJIČAK Ljudi su od davnina željeli sigurno komunicirati, ali bili su svjesni da njihove poruke često putuju nesigurnim komunikacijskim kanalima. Iako su se kroz stoljeća načini prenošenja poruka uvelike promijenili, osnovni problem zapravo je ostao isti, a to je kako onemogućiti onoga tko može nadzirati kanal, kojim se prenosi poruka, da dozna njezin sadržaj. Načinima rješavanja ovog problema bavi se znanstvena disciplina koja se naziva kriptografija. Metode, koje su se najčešće tijekom povijesti koristile za šifriranje poruka, bile su zamjena (supstitucija) i premještanje (transpozicija) osnovnih elemenata teksta (slova, blokova slova, bitova). Kombinaciju ovih dviju metoda susrećemo i danas u najmodernijim simetričnim kriptosustavima. Asimetrični kriptosustavi ili kriptosustavi s javnim ključem pojavili su se tek 70-tih godina 20. stoljeća. Kod njih se za šifriranje koriste funkcije koje su "jednosmjerne" (one se računaju lako, ali njihov inverz vrlo teško). To znači da funkcija za šifriranje može biti javna, dok samo funkcija za dešifriranje mora biti tajna. U konstrukciji jednosmjernih funkcija koriste se "teški" matematički problemi, kao što su faktorizacija velikih prirodnih brojeva, te logaritmiranje u konačnim grupama.
20
LITERATURA
Dujella, M. Maretić: Kriptografija, Element, Zagreb, 2007. http://os2.zemris.fer.hr/ostalo/2002_saban/index.htm http://dokumentacija.linux.hr/Sigurnost-KAKO-6.html
21
SADRŽAJ
Uvod
2
Istorija kriptografije
3
Metode šifriranja
5
Supstitucijske šifre
5
Moderna kriptografija
14
Primjeri
16
Zaključak
20
Literatura
21
22