Način da sigurno prenesete poruku
Pre nekoliko nedelja, u jednom beogradskom kafiću, razgovarao sam sam sa prijateljem, započinjući mnoge teme... Ne sećam se tačno o čemu smo pričali, ali je taj susret dao povod za razmišljanje.
Pored nas sedeli dečko i devojka, prvobitno zabavljeni svojim razgovorom. Tek kad smo napustili to mesto i prešli u drugu kafanu (da pregrizemo nešto), pomenuo sam kako sam imao utisak da nas je onaj dečko prisluškivao. Fedor je potvrdio da je i on stekao sličan utisak, ali kako nismo imali šta da krijemo tokom razgovora, nije nam mnogo ni stalo do toga. U svakom slučaju, nije baš prijatno kad znate da vas neko prisluškuje.
Sve to me je pokrenulo da nametnem temu koja je mom sagovorniku, kako mi se tada učinilo, zvučala interesantno.
Mnogi od vas koriste razne vrste zaštite elektronskih podataka, sigurno velika većina vas ima bar jednu ili više šifri u glavi koje koristite za pristup nekim servisima, možda ne zato što želite, već što vas ti servisi primoravaju na to (kao što je, na primer, korišćenje e-maila). Veoma je važno znati da 99% vas koriste nedovoljno dobru zaštitu i da ukoliko neko želi da vas prati i prisluškuje, to mu neće biti nikakav problem. Vaši podaci, koje držite kod raznih provajdera internet usluga, raznih javnih web mail sajtova, poput gmaila, hotmaila, yahoo-a, itd, raznih social network sajtova poput facebook-a i flickra su u potpunosti dostupni davaocima tih usluga, no na to ste i sami pristali otvaranjem naloga i "potpisivanjem" tačnije štikliranjem ili klikom na dugme "I Agree" (Slažem se sa uslovima navedenim u tekstu....)". Koliko vas je pročitalo te uslove? Šta zaista znate o njima? I koliko vas je uopšte briga što neko poseduje sve što vi radite? Kako uopšte da se zaštitite? Da li je to zaista moguće? Da li je teško? Na neka od ovih pitanja probaću da odgovorim u ovom i u par narednih tekstova koje planiram da napišem za bilten, i nadam se da će vam tema biti interesantna.
Da li postoji savršen način da sakrijete poruku?
Na mnoga pitanja u vezi sa sigurnošću podataka i sigurnošću rada na računaru (zaštite od raznih virusa, malicioznih programa, upada na vaš sistem, itd.) odgovor je sličan: Možete se štititi manje ili više, ali nijedna zaštita nije savršena, uvek postoji način da je neko razbije. Međutim, odgovor na gore postavljeno pitanje je, verovali ili ne, potvrdan. Da, postoji način da kodirate poruku tako da je može pročitati samo osoba kojoj je ta poruka namenjena i niko drugi!
Kao što rekoh, način postoji, a da li je savršen? Ukoliko bi se zanemarile neke sitnice koje metod čine manje praktičnim sa sigurnošću se može reći da jeste.
Kada se govori o algoritmima u računarstvu, naročito o kriptografskim, teško da se može izbeći aritmetika, trudiću se da je što manje pominjem, ali ipak moram koristiti neke osnovne stvari kao što je, na primer, sabiranje brojeva, bijektivno preslikavanje i ostatak pri deljenju.
Sve ove tri operacije je svako od nas učio u školi, možda se ipak treba podsetiti nekih: bijektivno preslikavanje skupa A u skup B je takvo preslikavanje gde za jedan element skupa A postoji tačno jedan element iz skupa B i skup A se ceo preslikava na skup B ("1-1" i "na"). Ostatak pri deljenju kao što mu samo ime i kaže predstavlja broj koji je otpao pri deljenju nedeljivih celih brojeva (npr, ukoliko 10 delimo sa 3 rezultat će biti 3 sa ostatkom 1 tj 10=3*3+1). Ostatak pri deljenju nam pomaže da izvršimo operaciju sabiranje po modulu nekog broja (npr sabiranje po modulu 10 broja 5 i 8 je 3 tj (5+8) mod 10 =3, jer je 3 ostatak pri deljenju 13 i 10). Sabiranje je nešto teže definisati pa ću to ovog puta preskočiti podrazumevajući da ga se sećate iz škole.
U kriptografiji (disciplini koja proučava načine kodiranja poruka) imamo dva osnovna elementa: algoritam i ključ. Praksom je pokazano da se skrivanjem algoritma ne postiže mnogo, svaki algoritam se po svojoj definiciji izvršava po unapred određenim koracima, svako izvršavanje algoritma (ma koliko god on bio komplikovan) se može ispratiti i analizirati (dekodirati) što u slučaju kriptografije znači da se algoritamski zaštićeni podaci trivijalno otkrivaju. Ključ predstavlja sekvencu bitova (reč ili rečenicu) pomoću koga se algoritmom zaključava i/ili otključava poruka. Snaga svih kriptografskih metoda leži u snazi njenog ključa.
Metod o kome ću pisati je nazvan "jednokratna sveska" (eng: one-time pad). Njega su još 1917. godine patentirali Džozef Moborn i Džilber Vernam iz kompanije AT&T. Unapred moramo znati veličinu skupa simbola koje kodiramo (A). Neka se, na primer, radi o skupu od 26 slova engleske abecede i separatoru (26+1 =27). Neka je skup B skup dobijen bijektivnim preslikavanjem sa skupa A tako da je ('a'=0, 'b'=1, 'c'=2, ... 'z'=25 i ' ' =26). Tada je šifriranje poruke "neki otvoren tekst" iz skupa A ekvivalentno šifriranju niza brojeva elemenata skupa B (13, 4, 10, 8, 26, 14, 19, 21, 14, 17, 4, 13, 26, 19, 4, 10, 18, 19). Zamislite svesku, preciznije, zamislite dve istovetne sveske (ali pošto su istovetne možete zamišljati i jednu) koja ima 18 listova i neka je na svakom listu te sveske ispisan po jedan broj. Neka su na primer to sledeći brojevi (14, 21, 14, 9, 4, 12, 14, 9, 19, 0, 9, 13, 8, 10, 11, 9, 20, 2). Procedura kodiranja poruke bila bi sledeća: čitamo nadolazeće slovo poruke koju treba kodirati, odnosno odgovarajući broj iz niza elemenata skupa B, sabiramo ga (po modulu 27 – veličina skupa B) sa prvim brojem ispisanim u svesci i rezultat zapisujemo u novi niz brojeva. (13+14) mod 27 = 0, posle čega uklanjamo i uništavamo prvu stranicu iz sveske. Na taj način dobijamo: (4+21) mod 27 = 25, (10+14) mod 27 = 24, ..., (18+20) mod 27 = 11, (19+2) mod 27 = 21. i kada stignemo do kraja poruke i uništimo sve listove iz sveske dobićemo niz brojeva (0, 25, 24, 17, 3, 26, 6, 3, 6, 17, 13, 26, 7, 2, 15, 19, 11, 21) odnosno šifrat "azyrd gdgrn hcptlv" koji može protumačiti jedino osoba kojoj je poruka namenjena ukoliko, naravno, ima ključ. Ključ za dekodiranje poruke "azyrd gdgrn hcptlv" je upravo sveska koju smo uništili kodiranjem poruke, ali na početku ovog pasusa sam vam rekao da zamislite dve istovetne sveske i, ukoliko ste me poslušali, ostala nam je jedna netaknuta sveska. Obrnutim postupkom od poruke "azyrd gdgrn hcptlv" odnosno niza brojeva (0, 25, 24, 17, 3, 26, 6, 3, 6, 17, 13, 26, 7, 2, 15, 19, 11, 21) oduzimanjem nadolazećeg broja iz druge sveske (vodeći računa da, ukoliko dobijemo negativan broj, rezultat uvećamo za 27 – veličina skupa) i uništavanjem lista sveske dobijamo sledeći niz: 0-14=-14 (+27) =13, 25-21=4, ... odnosno (14, 21, 14, 9, 4, 12, 14, 9, 19, 0, 9, 13, 8, 10, 11, 9, 20, 2) koji, s obzirom na definisanu bijekciju tj. mapiranje, znači "neki otvoren tekst".
Šta je to što ovaj postupak čini neprovaljivim? To su dve stvari: ključ i procedura! Lako se primećuje da ključ ima isto toliko elemenata koliko i sama rečenica koja se kodira, naravno ključ može imati i više elemenata (ali nikako manje), dok je poštovanje procedure neophodno kako kriptoanalitičar nikako ne bi mogao da dođe do ključa. Sam algoritam je više nego jednostavan, svodi se na sabiranje, moduo i oduzimanje. Jačina metoda leži u jačini ključa. Malo je nepraktično raditi sa sveskama u kojima je na svakom listu napisan po jedan broj, kodiranje ovog teksta tražilo bi svesku od preko 9000 listova, tačnije dve istovetne sveske koje bi potom bile uništene, ali uzevši u obzir kapacitete prenosivih memorija (harddiskova, flashova, dvd-ova) takve virtualne "sveske" nije teško ispisati i duplirati, tako da, na primer, sveska može biti neki tekst koji imamo u računaru, čak i neka fotografija (jer i njen digitalni zapis odgovara nizu cifara), neka pesma ili jednostavno dugačak niz nasumično odabranih brojeva. Naravno, ovim smo verovatno oslabili sigurnost metoda, jer ako kriptoanalitičar otkrije koji je naš dokument (tekst, slika, pesma) ključ kojim kodiramo poruku mi nismo više sigurni (čak i ako se radi o nasumično izabranim brojevima, jer to nije nimalo lako). Takođe, bitno je da pošiljalac sigurnim kanalom da ključ primaocu poruke (najsigurniji kanal je lično predavanje ključa).
Uz poštovanje procedure i dobar izbor ključa ovaj metod je savršen, međutim, lako se zaključuje da je veoma nepraktičan, ali ukoliko nam je potrebna visoka sigurnost u prenosu informacija, metod je izvodljiv. U istoriji su poznati primeri korišćenja ovakvog metoda šifriranja poruka!
U komunikaciji postoje dve krajnosti, prva je slati otvoren tekst i dozvoliti svakom da vidi njegov sadržaj i druga koristiti metod sa jakim ključem (poput jednokratne sveske opisane u ovom tekstu). Realnost je kao i uvek negde između. Većina ljudi za komunikaciju koristi e-mail, svaki e-mail provajder će od korisnika zahtevati da ima šifru i samim tim ste malo odskočili od prve krajnosti, ali veoma malo, tada vašu poruku neće moći da pročita baš svako, ali će moći da je pročita skoro svako (da li smo ovim mnogo napredovali?), pa i ne baš, jer skoro svako je i dalje veliki krug čitaoca a mi želimo da poruku vidi samo ona osoba kojoj smo je poslali, međutim 99% korisnika e-maila se zadovoljava ovakvom vrstom sigurnosti.
Da bi ste bolje zaštitili vašu komunikaciju možete koristiti mnoge metode koje su nam svima dostupne, počev od korišćenja secure protokola (https) u webmail-u, preko čestog menjanja vaše lozinke, do koršćenja naprednih metoda o kojima će biti reč u nekim od narednih brojeva biltena.
Za početak promenite vašu šifru na mailu!
Igor Jeremić