Kriptografija

**Kriptografija** je nauka koja se bavi metodima očuvanja tajnosti informacija. Kada se lične, finansijske, vojne ili informacije državne bezbednosti prenose sa mesta na mesto, one postaju ranjive na prisluškivačke taktike. Ovakvi problemi se mogu izbeći kriptovanjem (šifrovanjem) informacija koje ih čini nedostupnim neželjenoj strani.
Šifra i digitalni potpis su kriptografske tehnike koje se koriste da bi se implementirali bezbednosni servisi. Osnovni element koji se koristi naziva se šifarski sistem ili algoritam šifrovanja. Svaki šifarski sistem obuhvata par transformacija podataka, koje se nazivaju šifrovanje i dešifrovanje. Šifrovanje je procedura koja transformiše originalnu informaciju (otvoreni tekst) u šifrovane podatke (šifrat). Obrnut proces, dešifrovanje, rekonstruiše otvoreni tekst na osnovu šifrata.
Prilikom šifrovanja, pored otvorenog teksta, koristi se jedna nezavisna vrednost koja se naziva ključ šifrovanja. Slično, transformacija za dešifrovanje koristi ključ dešifrovanja. Broj simbola koji predstavljaju ključ (dužina ključa) zavisi od šifarskog sistema i predstavlja jedan od parametara
sigurnosti tog sistema. 
Kriptoanaliza je nauka koja se bavi razbijanjem šifri, odnosno otkrivanjem sadržaja otvorenog
teksta na osnovu šifrata, a bez poznavanja ključa. U širem smislu, kriptoanaliza obuhvata i 
proučavanje slabosti kriptografskih elemenata, kao što su, na primer, heš funkcije ili protokoli autentifikacije. Različite tehnike kriptoanalize nazivaju se napadi.

## Istorijat kriptografije

Kada je pismo postalo sredstvo komunikacije, pojavila se potreba da se neka pisma sačuvaju od tuđih pogleda. Tada je i kriptografija ugledala svetlost dana. Od samog početka, enkripcija podataka koristila se prvenstveno u vojne svrhe. Jedan od prvih velikih vojskovođa koji je koristio šifrovane poruke bio je Julije Cezar. Naime, kada je Cezar slao poruke svojim vojskovođama, on je te poruke šifrovao tako što su sav ili pojedina slova u tekstu bila pomerana za tri, četri ili više mesta u abecedi. Takvu poruku mogli su da dešifruju samo oni koji su poznavali ***pomeri za*** pravilo. Poznata Cezarova izjava prilikom prelaska Rubikona u šifriranom dopisivanju glasila bi: ***fqkf ofhzf kyz***. Pomicanjem svakog slova za šest mesta u abecedi lako se može pročitati pravi smisao poruke: ***Alea iacta est*** (kocka je bačena) .
 
Prvu poznatu raspravu o kriptografiji napisao na 25 stranica italijanski arhitekta Leone Batista Alberti 1467. godine. On je takođe tvorac takozvanog šifarskog kruga i nekih drugih rešenja dvostrukog prikrivanja teksta koja su u XIX veku prihvatili i usavršavali nemački, engleski i francuski šifrantski biroi.

Pola veka nakon toga objavljeno je u pet svezaka delo Johanesa Trithemusa prva knjiga iz područja kriptografije. U 16. značajan doprinos daju milanski doktor Girolamo Kardano, matematičar Batisto Porta i francuski diplomata Blaise de Vigener.

Sve do Drugog svetskog rata šifrovane poruke mogle su se koliko-toliko i dešifrovati. Na nemačkoj strani pojavila se mašina koja je šifrovala poruke na do tada još neviđen način. Nemci su mašinu nazvali Enigma. Međutim ma koliko je ona u to vreme bila revoluciona saveznici su uspeli da razbiju poruke šifrovane Enigmom.

Posle Drugog svetskog rata i pojavom prvih računara otvorila su se nova vrata kriptografiji. Računari su vremenom postajali sve brži i brži, radeći i po nekoliko stotina, a kasnije i miliona operacija u sekundi. Novom brzinom rada je omogućeno probijanje šifri za sve manje vremena. Uporedo s tim, radilo se i na izmišljanju novih, sigurnijih i komplikovanijih algoritama za šifrovanje.

## Šta Kriptografija mora da obezbedi
Kriptografija mora da obezbedi sledeće:

# Integritet ili verodostojnost informacija koje se šifruju (engl. **Data integrity**) se brine o tome da ne dođe do neovlašćene promene informacija, kao što su menjanje informacije, brisanje informacije i zamena informacije. Da bi se osigurala verodostojnost, mora postojati način provjere da li je informacija promenjena od strane neovlašćene osobe.
# Tajnost (engl. **Confidentiality**) informacija osigurava da je sadržaj informacije dostupan samo ovlašćenim osobama odnosno samo onim koji poseduju ključ. Postoje brojni načini zaštite tajnosti, počev od fizičke zaštite do matematičkih algoritama koji skrivaju podatke.
# Provera identiteta (engl. **Autentification**) korisnici koji počinju komunikaciju se trebaju prvo predstaviti jedan drugome pa tek onda počinju sa razmenom informacija.
# Nemogućnost izbjegavanja odgovornosti (engl: **Non-repudiation**) je vrlo važna stavka, pogotovo u novije vreme kada se veliki deo novčanih transakcija obavlja putem interneta.

## Simetrična kriptografija
Kao što smo rekli, kod simetrične enkripcije koriste se isti ključ i za šifrovanje i za dešifrovanje. Baš zbog toga je raznovrsnost, a samim tim i sigurnost algoritama ovakve enkripcije je velika. Bitan faktor je i brzina - simetrična enkripcija je veoma brza. Pored svih prednosti koje ima na polju sigurnosti i brzine algoritma, postoji i jedan veliki nedostatak. Kako preneti tajni ključ? Problem je u tome, što ako se tajni ključ presretne, poruka se može pročitati. Zato se ovaj tip enkripcije najčešće koristi prilikom zaštite podataka koje ne delimo sa drugima (šifru znate samo vi i nju nije potrebno slati drugome).

Klod Šenon (Claude Shannon) je definisao uslove savršene tajnosti, polazeći od sledećih osnovnih pretpostavki:

# Tajni ključ se koristi samo jednom.
# Kriptoanalitičar ima pristup samo kriptogramu.

Šifarski sistem ispunjava uslove savršene tajnosti ako je otvoreni tekst X statistički nezavisan od kriptograma Y, što se može matematički izraziti na sledeći način:

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

za sve moguće otvorene tekstove x=(x_1,x_2,...x_m) i sve moguće kriptograme y=(y_1,y_2,...y_n) ; drugim rečima, verovatnoća da slučajna promenljiva X ima vrednost x jednaka je sa ili bez poznavanja vrednosti slučajne promenljive Y. Zbog toga kriptoanalitičar ne može bolje proceniti vrednost X poznavajući vrednost Y od procene bez njenog poznavanja, nezavisno od raspoloživog vremena i računarskih resursa kojima raspolaže.
Koristeći pojam entropije iz teorije informacija, Šenon je odredio minimalnu veličinu ključa potrebnu da bi bili ispunjeni uslovi savršene tajnosti. dužina ključa K mora biti najmanje jednaka dužini otvorenog teksta M:

 K ≥ M

### Sekvencijalni šifarski sistemi
Kao najosnovnijim simetričnim algoritmima, dovoljno je samo reći da se oni zasnivaju na svojstvu logičke operacije -{xor}- ( – *ekskluzivno ili*) za koju vazi:

 -{(X xor Y) xor Y = X, X, Y ∈ (0,1)}-

Naime, možemo zamisliti da nam je X jedan bit originalne poruke a Y bit ključa. Tada (X -{xor}- Y)=Z prestavlja jedan bit šifrata koji putuje javnim kanalima i koji neko može prisluškivati, dok je Z -{xor}- Y originalni bit X koji se dobija -{xor}--ovanjem bita kodirane poruke sa bitom ključa. Definišimo još operaciju -{xor}- za proizvoljnu dužinu bita tj. bajtova i tada X, odnosno Y možemo smatrati bajtom, rečju odnosno porukom
U praksi se često koriste generatori pseudo slučajnih nizova(engl. **PRNG – Pseudo Random Number Generator**), koji predstavljaju determinističke algoritme za šifrovanje, ali nizovi simbola koje oni generišu imaju osobine slične slučajnim nizovima. Generatori pseudoslučajnih nizova koriste kratke ključeve radi započinjanja procesa generisanja. Ovi ključevi moraju biti prisutni na obe strane pre početka komuniciranja. Izlazni niz iz generatora se sabira po modulu 2 sa nizom otvorenog teksta i na taj način se dobija niz šifrata. Na prijemnoj strani se sabira primljeni niz šifrata sa pseudoslučajnim nizom generisanim pomoću istog ključa, počevši od istog početnog simbola kao i na predajnoj strani. Na taj način je prijemnik u stanju da rekonstruiše otvoreni tekst. Jasno je da dokle god se **slučajni** nizovi dobijaju pomoću bilo kog algoritma oni mogu biti samo **pseudoslučajni** i kao takvi postaju mamac za sve one koji se bave razbijanjem šifri. Pseudoslučajni nizovi su periodični u širem smislu (što znači da mogu imati aperiodični početak), ali ako su periodi takvih nizova mnogo veći od dužina nizova otvorenog teksta, sistem će se ponašati na sličan način kao i Vernamova šifra.
Osnovna ideja koja stoji iza sekvencijalnih šifara je da se generiše duga i nepredvidljiva sekvenca simbola iz nekog alfabeta (npr. binarnog) na osnovu kratkog ključa izabranog na slučajan način. Sekvencijalna šifra sa generatorom pseudoslučajnog niza je aproksimacija Vernamove šifre, i utoliko je bolja ukoliko je pseudoslučajni niz bliži po karakteristikama pravom slučajnom nizu.

### Blok šifra
Blok šifrom se nazivaju oni algoritmi kod kojih se originalna poruka šifruje po grupama (blokovima) od dva i više elemenata. Najpoznatiji algoritmi blok šifara su: LUCIFER, DES, FEAL, IDEA, RC5, SKIPJACK, BLOWFISH, TWOFISH, AES (RIJNDAEL) i drugi.

## Asimetrična kriptografija
Za razliku od simetrične kriptografije, asimetrična koristi dva ključa – javni i privatni. Princip je sledeći: u isto vreme se prave privatni i odgovarajući javni ključ. Javni ključ se daje osobama koje šalju šifrovane podatke. Pomoću njega te osobe šifruju poruku koju žele da pošalju. Kada primalac dobije šifrat, dešifruje ga pomoću svog privatnog ključa. Na taj način svaki primalac ima svoj privatni ključ a javni se može dati bilo kome, pošto se on koristi samo za šifrovanje, a ne i dešifrovanje.

Prednost ovog načina šifrovanja je u tome što ne mora da se brine o slučaju da neko presretne javni ključ, jer pomoću njega može samo da šifruje podatke. Takođe, programi sa ovakvim načinom šifrovanja imaju opciju da potpisuju elektronske dokumente (o tome će biti reči nešto kasnije). 
Pojam sistema sa javnim ključevima uveli su Difi i Helman 1976. godine. Prvi takav sistem koji su oni definisali bio je protokol, poznat pod imenom razmena ključeva Difi-Helman. 1977. godine objavljen je najčuveniji i najpopularniji algoritam za simetričnu kriptografiju RSA, čije ime predstavlja skraćenicu sačinjenu od prvih slova prezimena autora Rona Riversta, Adi Šamira i Leonarda Ejdlmana.

## Funkcija za sažimanje – heš funkcija
Gore navedeni algoritmi šifrovanja ne štite integritet odnosno verodostojnost poruke koja je šifrovana. Ovo je vrlo važno iz razloga jer je moguće da je ključ provaljen i da nam napadač šalje lažne poruke, ali i mogućnosti da je došlo do greške prilikom šifrovanja, tako da primljena poruka nije identična originalnom dokumentu. Iz tog razloga kreirane su funkcije za sažimanje ili ti heš (mogu se susresti i pod imenima engl. **one-way, hash function, message digest, fingerprint**) algoritmi. Najpoznatiji i najkorišćeniji heš algoritmi su SHA-1, MD5, MDC-2, RIPEMD-160 i td. Heš algoritmi se svrstavaju u kriptografske algoritme bez ključa.

## Digitalni potpisi
Svrha digitalnog potpisa je da potvrdi autentičnost sadržaja poruke (dokaz da poruka nije promenjena na putu od pošiljaoca do primaoca), kao i da obezbedi garantovanje identiteta pošiljaoca poruke. Pomoću svog potpisa korisnik ovlašćuje neku radnju i preuzima odgovornost za nju.

## Savremene tehnologije zaštite podataka
Sigurnosni protokoli bazirani na kriptografiji:
* SSL (Secure Socket Layer),
* TLS (Transport Layer Security),
* VPN (Virtual Private Network), 
* KERBEROS, 
* SESAME, 
* PGP (Pretty Good Privacy)

## Budućnost kriptografije
Kvantna i DNK kriptografija će možda u nekoj skorijoj budućnosti predstavljati osnov za zaštitu poverljivih dokumenata. Kvantna kriptografija nastala je kao posledica otkrića u oblasti kvantnog računarstva. Ona se zasniva na jednom od osnovnih principa kvantne fizike: Hajzenbergovom principu neodređenosti. 
Jedan od tvoraca RSA algoritma, Leonard Ejdlman, došao je na ideju korišćenja DNK kao računara. On je pretpostavio da se DNK može posmatrati kao računar ogromne snage sposobne za paralelno izvršavanje operacija. Time se brzina izvršavanja eksponencijalno povećava u odnosu na obične računare.

## Povezano
* Šifra
* Boris Hagelin

## Literatura
* Ilija Marinković, *Enigma do pobjede* Fokusova Biblioteka, Zagreb, 1977

## Vanjske veze

*  Stevan Džigurski, ''Bezbednost veb aplikacija'', 2003.
*  Begović Nikola, Kriptografija 
*  Miodrag Živković, Kriptografija, 2009. (prevod skripte Eda Šafera sa Univerziteta Santa Klara)
* Mr Dragan Vidaković, ''Škola kriptografije'' 
* Aleksandar Kirćanski, ''Kriptoanaliza četiri oslabljene šifre'' 
* Cryptography introduction, with several examples
* Najbazicniji pojmovi i sifre 
* International Association for Cryptologic Research
* Helger Lipmaa's cryptography pointers 
* RSA Laboratories' FAQ About today's cryptography   essentially elementary coverage
* sci.crypt mini-FAQ (more recent) 
* Savard's glossary an extensive and detailed view of cryptographic history with emphasis on crypto devices
* Open source project CrypTool - Exhaustive educational tool about cryptography and cryptanalysis, freeware.
* Cryptography World - A very basic guide to cryptography and key management.
* Handbook of Applied Cryptography (Free to download as .pdf)
* Techworld Elementary Primer: What is Encryption?
* Links for password-based cryptography
* Code Cracker  Online tool to Crack many classic encryption codes (up to the XIX century)
* Crypto Law Survey  Extensive survey of existing and proposed laws and regulations on cryptography by legal expert Dr. Bert-Jaap Koops (Tilburg University)
* NSA's CryptoKids 
* Beginners' Guide to Cryptography 
* An Overview of Cryptography
* An Introduction to the Use of Encryption