Пређи на садржај

Enkripcija

С Википедије, слободне енциклопедије
(преусмерено са Кодирање)

Enkripcija (engl. encryption) ili šifrovanje je proces u kriptografiji kojim se vrši izmena podataka tako da se podaci, ili poruke, učine nečitljivim za osobe koje ne poseduju određeno znanje (ključ). Na taj način se dobija šifrovana informacija. Da bi ovi podaci postali razumljivi i upotrebljivi, potrebno je da se dekodiraju. Dekodiranje se vrši procesom suprotnim od enkripcije koji se naziva dekripcija.[1]

U netehničkoj upotrebi, šifra i kod predstavljaju isti termin, ali u kriptografiji ti su pojmovi različiti. U klasičnoj kriptografiji šifra je odvojena od koda. Načelno, u kodu se zamenjivanje vrši na temelju obimne knjige kodova, u kojoj se reči i fraze zamenjuju slučajnim nizom znakova. Na primer, UQJHS može biti kod za „Nastavite do sledećih koordinata”. Originalna (izvorna) informacija poznata je kao otvoreni tekst, a šifrirani oblik kao šifrirani tekst ili šifrat. Šifrovana poruka sadrži sve informacije iz otvorenog teksta, ali nije u obliku čitljivom za čoveka ili računar bez primene odgovarajućeg mehanizma za njegovo dešifrovanje - treba da predstavlja nasumične znake za sve kojima poruka nije namenjena. Operacija šifrovanja obično zavisi od dodatne informacije zvane ključ. Procedura šifriranja varira u zavisnosti od ključa, koji menja detalje algoritma. Ključ se mora izabrati pre šifriranja poruke. Bez poznavanja ključa trebalo bi da je teško, ili skoro nemoguće, dekriptovati šifrat u čitljiv otvoreni tekst.

Treba razlikovati termine dešifrovanje i dekriptovanje.[2] Dešifriranje je pretvaranje šifrata u otvoreni tekst kad je ključ poznat, i vrši ga osoba kojoj je poruka namenjena. Dekriptovanje je pokušaj pretvaranja šifrata u otvoreni tekst kad ključ nije (unapred) poznat, a vrše ga osobe kojima poruka nije namenjena. Dekriptovanje je deo kriptoanalize. Većina modernih šifri može se svrstati u kategorije na nekoliko načina: (i) po tome da li se primenjuje na blokovima znakova stalne dužine (blok šifre), ili na neprekidnom nizu znakova (poznata pod nazivima šifra niza, šifra toka ili protočna šifra, engl. stream cipher), (ii) po tome da li se koristi isti ključ za šifriranje i dešifriranje (algoritmi simetričnih ključeva), ili se koristi poseban ključ (algoritmi asimetričnih ključeva). Ako je algoritam simetričnog ključa, ključ mora biti poznat primatelju i nikome više. Kod algoritma asimetričnog ključa, ključ za šifriranje je različit od ključa za dešifriranje, ali je s njim u tesnoj vezi. Ako se jedan ključ ne može utvrditi iz drugog, algoritam asimetričnog ključa ima svojstvo javnog/tajnog ključa i jedan od ključeva može biti obelodanjen bez gubitka tajnosti informacije.

Reč šifra potiče iz francuskog jezika, fr. cifre - brojka, tajni znak, odnosno iz arapskog ar. صفر, şafira - prazno, şifr - nula, ništa.

U prošlosti, cifra je imala značenje „nula”, a kasnije je korištena za bilo koji decimalni broj, ili bilo koji broj. Ove teorije pokazuju kako je cifra postala šifra u značenju šifriranje:

  • U šifriranju su se često koristili brojevi.
  • Rimski brojni sistem je bio nezgrapan, jer ne poznaje pojam nule (ili praznog skupa). Pojam nule (koja se takođe zvala cifra), koji je danas sasvim prirodan, bio je posve stran u srednjevekovnoj Evropi. Cifra je stoga dobila značenje skrivanja jasne poruke, odnosno šifriranje. Dr Al-Kadi[3][4] smatra da se arapska reč şifr za nulu razvila u evropski tehnički termin za šifriranje.

Šifriranje i kodiranje

[уреди | уреди извор]

U netehničkoj upotrebi, „(tajni) kod” obično znači „šifra”. Međutim, u tehničkim diskusijama reči „kod” i „šifra” se odnose na dva različita pojma. Kodovi rade na nivou značenja — to jest, reči i izrazi se pretvaraju u nešto drugo i to sažimanje načelno skraćuje poruku. Nasuprot tome, šifra radi na nižem nivou: na nivou pojedinačnih slova, malih grupa slova, ili, u modernim šemama, na pojedinačnim bitovim. Neki sistemi koriste kombinaciju koda i šifre, takozvano „superšifriranje” za povećanje sigurnosti. U nekim slučajevima, termini kod i šifra se koriste kao sinonimi u zameni i pomeranju.

Istorijski, kriptografija je bila podeljena u dihotomiju koda i šifre; kod ima svoju terminologiju, analognu onoj za šifru: „kodiranje”, „kodni tekst”, „dekodiranje” itd. Međutim, kod ima dosta nedostataka, kao što su osetljivost na kriptoanalizu i teškoće u baratanju glomaznim knjigama kodova. Zbog toga je kod zapostavljen u modernoj kriptografiji, a šifra je postala dominantna tehnika.

Elementi enkripcije

[уреди | уреди извор]

Svi sistemi enkripcije imaju u svojoj osnovi sledeće zajedničke elemente:[5]

  • Algoritam: Funkcija, obično sa jakom matematičkom osnovom, koja obavlja zadatak inkripcije podataka;
  • Ključevi: Koriste se zajedno sa algoritmima enkripcije i određuju način na koji su podaci šifrovani;
  • Dužina ključa: Enkripcioni ključevi imaju određenu dužinu u zavisnosti od toga koji enkripcioni sistemi se koriste. Dužina se meri brojem bitova, i što su duži ključevi, to je teže osujetiti sistem enkripcije;
  • Otvoren tekst (engl. Plaintext): Informacije koje treba šifrovati;
  • Šifrovan tekst (engl. Ciphertext): Informacije nakon šifrovanja.

Vrste enkripcije

[уреди | уреди извор]

Postoje dve osnovne vrste enkripcije: simetrična enkripcija i asimetrična enkripcija. Kod simetrične enkripcije se i za šifrovanje i za dešifrovanje koristi ista šifra (ključ). Kod asimetrične postoji poseban ključ samo za šifrovanje i drugi koji služi samo za dešifrovanje. Ova dva ključa nazivaju se još javni i tajni ključ. Tajni ključ dodeljuje se onda kada se vrši enkripcija i na osnovu njega se generiše javni ključ, koji koristi strana koja treba da pročita podatke.[6] Standard koji se koristi pri simetričnoj enkripciji je DES (engl. Data Encryption Standard). Asimetrična enkripcija se još naziva i kriptografija javnog ključa (engl. Public-Key Cryptography). Za ovu vrstu enkripcije koristi se RSA algoritam (Rivest-Shamir-Adleman).[7]

Istorijske šifre

[уреди | уреди извор]
Nemačka Enigma koristi rotirajuće diskove (Rotore) i dodatne ploče za prespajanje (Plugboard)

Šifre s olovkom i papirom koje su korištene u prošlosti poznate su pod nazivom „klasična šifra”. One uključuju jednostavne šifre zamjene (supstitucije) i šifre pomeranja (transpozicije). Na primer, „dobar dan” može se šifrirati kao „ŽSDGĆ ŽGP”, gde se u poruci „d” zamenjuje sa „Ž”, „a” sa „G” itd. Pomeranjem bi „dobar dan” moglo da bude „RDANDOBA”. Ove jednostavne šifre i primere je vrlo lako razbiti, čak i bez pomoći parova otvorenog i šifriranog teksta.[8]

Jednostavne šifre su zamenjene šiframa „polialfabetske zamene”, koje menjaju alfabet zamene za svako slovo. Na primer, „dobar dan” se može zameniti sa „ŽĆZIA ONV”, gde se u poruci „d” zamenjuje sa „Ž” i „O”, „a” sa „I” i „N”. Čak i na malom uzorku poznatog ili pretpostavljenog otvorenog teksta, šifre polialfabetske zamene i šifre pomeranja slova (namenjene za šifriranje olovkom i papirom) se vrlo lako razbijaju.[9]

Početkom dvadesetog veka izumljene su elektromehaničke mašine za šifrovanje i dešifrovanje, a koristile su pomeranje, polialfabetsku zamenu i neku vrstu „dodatne” zamene. U „rotorskim mašinama”, nekoliko rotirajućih diskova je služilo za polialfabetsku zamenu, a dodatne ploče su služile za neku drugu zamenu. Ključevi su se lako menjali zamenom rotirajućih diskova i prespajanjem žica dodatnih ploča. Iako su ove metode šifrovanja bile kompleksnije od prethodnih i zahtevale mašine za šifrovanje i dešifrovanje, izumljene su druge mašine (kao npr. britanska „Bomba”) za dekriptiranje ovih metoda šifriranja.

Moderne metode šifrovanja mogu se podeliti po dva kriterija: po tipu korištenog ključa i tipu ulaznih podataka.

Po tipu ključa, šifre se dele na:

  • Algoritmi simetričnog ključa (kriptografija s tajnim ključem), gde se isti ključ koristi i za šifrovanje i za dešifrovanje, i
  • Algoritmi asimetričnog ključa (kriptografija s javnim ključem), gde se koriste dva različita ključa za šifrovanje i dešifrovanje.

Kod algoritma simetričnog ključa (npr. DES i AES), pošiljatelj i primatelj moraju imati isti ključ, koji je unapred pripremljen i koji mora biti tajan za sve kojima nije namenjen - pošiljatelj koristi taj ključ za šifriranje, a primatelj isti taj ključ za dešifriranje. Kod algoritma asimetričnog ključa (npr. RSA), postoje dva posebna ključa: „javni ključ” se objavljuje i omogućuje pošiljatelju da izvrši šifrovanje, dok „tajni ključ” primatelj čuva kao tajnu i koristi ga da izvrši ispravno dešifrovanje.

Po tipu ulaznih podataka, šifre se mogu svrstati u dve grupe: šifra blokova, kojom se šifrira blok podataka fiksne dužine, i šifra niza (šifra toka ili protočna šifra), kojom se šifrira kontinualni niz podataka.

Veličina ključa i ranjivost

[уреди | уреди извор]

U čisto matematičkom napadu[10] (tj. u nedostatku drugih informacija koje bi pomogle u razbijanju šifre), pre svega, bitna su tri činioca:

  • Matematičke prednosti za otkrivanje i iskorištenje slabosti šifre.
  • Dostupna snaga izračunavanja, tj. snaga računara koji se može upotrebiti za rešavanje problema. Treba napomenuti da prosečne performanse/kapacitet jednog računara nisu jedini činilac koji se uzima u obzir. Protivnik može, recimo, da koristi više spregnutih računara i tako značajno ubrza potragu za ključem (takozvani „napad grubom silom”).
  • Veličina ključa, tj. dužina ključa koji je upotrebljen za šifrovanje poruke. Kako raste veličina ključa, tako se povećava i kompleksnost pretraživanja grubom silom, sve do tačke kad direktno razbijanje šifre prestaje da bide praktično.

Pošto je željeni efekt teškoća izračunavanja, teorijski se biraju algoritam i nivo težine, a na temelju toga se bira odgovarajuća dužina ključa. Može se pokazati da recimo simetrična šifra sa 128 bitova, asimetrična šifra sa 3072 bitova i eliptična kriva sa 512 bitova imaju sličnu težinu.[11]

Klod Elvud Šenon je dokazao[12] koristeći razmatranja teorije informacija da svaka teoretski neprobojna šifra mora imati dužinu ključa najmanje koliko je dugačak otvoreni tekst i da se ključ koristi samo jednom (jednokratni blok, eng. one-time pad)

Upotreba enkripcije

[уреди | уреди извор]

Enkripcija se koristi za zaštitu informacija u računarskim, komunikacionim i bezbednosnim sistemima. Takođe, olakšava upravljanje IP adresama štiteći sadržaj od otkrivanja prilikom prenosa. Enkripcija obezbeđuje zaštitu podataka u mirovanju, npr. dokumenata na računaru ili na uređajima za skladištenje podataka (USB) i omogućava očuvanje ovih podataka ukoliko fizičke mere bezbednosti otkažu. Enkripcija se takođe koristi za zaštitu podataka u toku prenosa, npr. preko mreže (internet, e-trgovina), mobilnih telefona, bežičnih uređaja, bankomata, itd.

Kod enkripcije se javljaju dva glavna problema: tajnost i autentifikacija. Potrebno je obezbediti da je lice koje prima ključ sigurno lice koje je ovlašćeno da ga dobije (autentifikacija) i da niko drugi ne može da sazna ključ u toku prenosa (tajnost). Enkripcija, sama po sebi, može da obezbedi tajnost poruke, ali potrebne su i druge tehnike za zaštitu integriteta i autentičnosti poruke, na primer, provera identifikacionog koda poruke ili digitalni potpis.

  1. ^ Katz, Jonathan; Lindell, Yehuda (2008). Introduction to Modern Cryptography. Chapman & Haii/CRC. ISBN 978-1-58488-551-1. 
  2. ^ B . Schneier (1995). Applied Cryptography: Protocols, Algorithms, and Source Code in C (2nd изд.). Wiley. 
  3. ^ Ibrahim A. Al-Kadi, “Cryptography and Data Security: Cryptographic Properties of Arabic”, proceedings of the Third Saudi Engineering Conference. Riyadh, Saudi Arabia: Nov 24-27, Vol 2:910-921., 1991.
  4. ^ Ibrahim A. Al-Kadi, “The origins of cryptology: The Arab contributions”, Cryptologia, 16(2) (April 1992) pp. 97–126.
  5. ^ Dan Boneh; Shoup, Victor (17. 8. 2015). A Graduate Course in Applied Cryptography. 
  6. ^ „Vrste enkripcije”. Архивирано из оригинала 13. 05. 2011. г. 
  7. ^ „Enkripcija podataka”. 
  8. ^ David Kahn, The Codebreakers - The Story of Secret Writing (ISBN 978-0-684-83130-5) (1967)
  9. ^ Helen Fouché Gaines, “Cryptanalysis”, 1939, Dover. ISBN 978-0-486-20097-2.
  10. ^ Abraham Sinkov, Elementary Cryptanalysis: A Mathematical Approach, Mathematical Association of America. 1966. ISBN 978-0-88385-622-2.
  11. ^ "Dužina ključa"
  12. ^ Shannon, Claude (1949). „Communication Theory of Secrecy Systems”. Bell System Technical Journal. 28 (4): 656—715. 

Spoljašnje veze

[уреди | уреди извор]