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.