Internet: Enkripcija i javni ključevi
Bok, moje ime je Mia Gil-Epner i student sam informatičkih znanosti na Berkeley-ju
i radim u Ministarstvu obrane gdje održavam informacije sigurnima. Internet je
otvoreni i javni sustav. Svi šaljemo i primamo informacije preko zajedničkih žica
i veza. No iako je to otvoreni sustav mi i dalje razmjenjujemo puno privatnih
podataka. Stvari poput brojeva kreditne kartice, bankovnih informacija i emailova.
Kako onda te privatne stvari održavamo tajnim? Bilo kakav podatak može biti tajan
pomoću procesa zvanog enkrpicija, šifriranje ili mijenjanje poruke radi sakrivanja
originalnog teksta. A dekripcija je proces dešifriranja te poruke da bi postala čitljiva.
To je jednostavna ideja i ljudi to rade već stoljećima. Jedna od prvih dobro poznatih
metoda enkripcije bila je Cezarova šifra. Nazvana po Juliju Cezaru, rimskom generalu
koji je šifrirao svoje vojne zapovjedi kako bi osigurao da ih neprijatelji, u slučaju da
ih presretnu, neće moći pročitati. Cezarova šifra je algoritam koji mijenja svako slovo
u originalnoj poruci sa slovom koje se nalazi određeni broj koraka dalje u abecedi.
Ako je taj broj nešto što samo pošiljatelj i primatelj znaju, onda se naziva Ključem.
Ključ omogućava čitatelju otključavanje tajne poruke. Na primjer, ako je vaša izvorna
poruka "HELLO" onda bi, upotrebom algoritma Cezarove šifre s ključem 5, šifrirana poruka
izgledala ovako...Za dešifriranje poruke, primatelj i jednostavno iskoristio ključ za
preokretanje procesa. Ali postoji veliki problem s Cezarovom šifrom, bilo tko može
lako provaliti šifru na način da isproba svaki mogući ključ, a engleska abeceda
ima samo 26 slova, što znači da trebaš isprobati najviše 26 ključeva da bi
dešifrirao poruku. Isprobavanje 26 ključeva nije preteško, to bi trajalo najviše jedan
ili dva sata. Dakle, učinimo to težim. Umjesto pomicanja svakog slova za isti broj,
pomičimo svako slovo za različiti broj. U ovom primjeru, ključ od 10 znamenaka pokazuje
za koliko će pozicija svako uzastopno slovo promijeniti za šifriranje duže poruke. Ovaj
bi ključ bilo jako teško pogoditi. Upotrebom enkripcije od 10 znakova bilo bi 10 milijardi
mogućih rješenja. Očigledno, to je više nego što bi ijedan čovjek mogao riješiti, trajalo bi
stoljećima. Ali današnjem bi prosječnom računalu trebalo svega nekoliko sekundi za isprobavanje svih 10 milijardi opcija
Dakle, u današnjem svijetu, gdje su loši dečki naoružani s računalima umjesto olovkama, kako
je moguće šifrirati poruke toliko sigurno da ih je preteško provaliti? Pod preteškim
mislimo na to da postoji previše opcija da bi se izračunavale u razumnoj količini vremena.
Današnje su sigurne komunikacije šifrirane upotrebom 256-bitnih ključeva. Što znači da
kompjuter zlonamjerne osobe koja presreće vašu poruku treba isprobati ovoliko mogućih opcija...
dok je otkriju ključ i dešifriraju poruku. Čak i da imate 100 000 super računala i da je svaki
od njih sposoban isprobati milijun milijardi ključeva svake sekunde trebali bi vam trilijuni
i trilijuni godina za isprobavanje svake opcije, samo kako bi provali jednu poruku zaštićenu s 256-bitnom enkripcijom.
Naravno, računalni čipovi postaju dvostruko brži i u pola manji gotovo svake godine.
Ako se taj tempo eksponencijalnog napretka nastavi, današnji nemogući problemi bit će
rješivi za svega nekoliko stotina godina u budućnosti i 256-bitni ključevi neće biti dovoljni da bi bili sigurni.
Zapravo, već smo trebali povećati standardnu duljinu ključeva da bi bili u korak s brzinom
računala. Dobra vijest je da upotreba duljeg ključa ne čini šifrirane poruke težima, već
eksponencijalno povećava broj pokušaja koji su potrebni za provaljivanje šifre. Kad
pošiljatelj i primatelj dijele isti ključ za šifriranje i dešifriranje poruke onda
se to zove Simetrična enkripcija. Sa Simetričnom enkripcijom, poput Cezarove šifre, tajni
ključ mora biti dogovoren unaprijed u privatnosti između dvije osobe. To je odlično za ljude,
ali Internet je otvoren i javan, pa je nemoguće da se 2 računala "nađu" u privatnosti
i dogovore oko tajnog ključa. Umjesto toga, računala koriste ključeve Asimetrične enkripcije,
javni ključ koji može biti razmijenjen s bilo kime i privatni ključ koji se ne dijeli.
Javni ključ se koristi za šifriranje podataka i svi ga mogu koristiti za stvaranje tajne
poruke, ali tajna može biti dešifrirana računalom koje ima pristup privatnom ključu.
Ovo radi na temelju matematike u koju nećemo sad ulaziti. Zamislite si to ovako,imate
osobni sandučić gdje svi mogu ostaviti poštu, samo im treba ključ. Možete napraviti puno
kopija tog ključa i poslati jedan vašem prijatelju ili ga učiniti javno dostupnim.
Vaš prijatelj ili čak stranac može iskoristiti javni ključ za pristup vašem sandučiću i
ostavljanje poruke u njemu. Ali samo vi možete otvoriti sandučić s privatnim ključem
i pristupiti tajnim porukama koje ste primili. Možete poslati sigurnu poruku vašem prijatelju
uporabom javnog ključa za ostavljanje poruke u njegovom sandučiću. Na taj način ljudi
mogu izmijeniti sigurne poruke bez prethodnog dogovora o privatnom ključu. Kriptografija
javnog ključa je temelj svih sigurnih poruka na otvorenom internetu. Uključujući sigurnosne protokole zvane
SSL i TLS, koji nas štite dok pretražujemo web. I vaše računalo ih danas koristi, svaki
put kad vidite mali lokot ili slova https u adresi u vašem pretraživaču. To znači
da vaše računalo koristi enkripciju javnog ključa za sigurnu razmjenu podataka s web
stranicom na kojoj se nalazite. Kako sve više i više ljudi posjećuje Internet sve se više
privatnih podataka prenosi i potreba za zaštitom podatka bit će još važnija.
I kako računala postaju sve brža i brža morat ćemo razviti nove načine da učinimo
enkripciju preteškom da bi ih računala provalila. To je ono što ja radim na svom poslu i to se uvijek mijenja.