Savršeno siguran kriptografski algoritam

CC BY-NC-SA delgrossodotcom

Ne vjerujte Nevjernim Tomama kada vam kažu da ne postoji kriptografski algoritam koji se ne bi mogao probiti. Postoji, a njegovo ime je “One time pad” (ne znam postoji li odgovarajuće ime na hrvatskom pa neću prevoditi ime). Podatke pravilno kriptirane koristeći one time pad nije moguće nikako razotkriti, čak niti brute forceom.

One time pad ima samo jednu manu – ključ mora biti jednako velik kao i sam podatak i smije se iskoristiti samo jednom. Primjerice ako nekome želite poslati arhivu dokumenata od 20 MB i zaštiti je ovim postupkom, morate sa primateljem maila dogovoriti zajednički tajni ključ veličine 20 MB, koji možete iskoristiti samo za tu arhivu, a za daljnju komunikaciju dogovoriti nove ključeve.

U praksi je ovo poprilično velik problem koji čini one time pad metodu neupotrebljivom. Ostali simetrični (oni za koje isti ključ zaključava i otključava podatke) kriptografski algoritmi se zapravo svode na generiranje one time pada iz vrlo malog ključa (npr. lozinke koju utipkate) i podatka koji treba kriptirati.

No, činjenica da je one time pad algoritam siguran ne znači da bi u praksi, čak i da ga koristite, bili sigurni, ukoliko postoji pogreška u implementaciji (programu) ili se ključevi odaberu na loš način. Trivijalan primjer – ako odaberete loš ključ (npr. 20 MB slova “AAAAAAAAAA…..”), zlom napadaču neće biti nikakav problem provaliti “zaštitu” (varijanta ovakvog lošeg kriptiranja se zapravo i koristi u stvarnom svijetu i zove se rot13, a primarno služi za sakrivanje spoilera u blog postovima :). Ili, ako slučajno isti ključ iskoristite dvaput i zli napadač dobije oba kriptirana dokumenta, vrlo jednostavnim postupkom može saznati i ključ i original oba dokumenta.

Sve ostale algoritme pak, moguće je probiti. Simetrični algoritmi iz malog ključa generiraju veliki koji koriste kao one-time pad, što znači da entropija (“slučajnost”) nije maksimalna, što znači da je iz ključa+teksta teoretski moguće izvući dovoljno informacija za probijanje. Algoritmi javnog ključa baziraju se na jednostavnoj matematici što znači da je uz dovoljno jako računalo ili mrežu računala teoretski moguće izračunati tajni ključ. Algoritmi za računanje sažetka poruke i digitalnog potpisa računaju mali potpis (npr. 20 byteova) za beskonačno veliki broj dokumenata bilo koje veličine (npr. 2 GB) pa očito je da neki dokumenti moraju u izračunu imati isti potpis.

Znači li to da su svi ti algoritmi nesigurni? Ne. Kad matematičari kažu da je neki takav algoritam probijen, to samo znači da su našli postupak koji traje kraće od brute force (pretraživanje svih mogućnosti) algoritma. To ne znači da je taj postupak brz ili praktičan, nego bi vam verojatno trebale tisuće računala i godine rada na probijanju. A kad se posumnja da bi neki algoritam uskoro možda mogao biti praktično probijen, stručnjaci za kriptografiju na vrijeme izmisle još bolje, veće, moćnije i teže algoritme. Tako je pri kraju korisnosti DESa napravljen natječaj za AES, a davno prije nego što je MD5 probijen standardizirani su SHA-* algoritmi. Sa kriptografijom javnog ključa stvar je jednostavna – što veći ključ, to je teže probiti, pa prema razini paranoje možete odlučiti koliki vam ključ treba.

Puno veći sigurnosni rizik od probijenih algoritama su bugovi u softveru (karikirani primjer: spremanje korisnikove lozinke u privremenu datoteku koju je kasnije moguće vratiti undelete programima), pogrešno korištenje (npr. korisnik Pero kao lozinku koristi “pero123″) i razni drugi primjeri ljudskih grešaka (npr. korisnik Pero dragovoljno da lozinku napadaču u zamjenu za čokoladicu (nije karikiran primjer)).

Tako da, kad čujete panične izjave da je kraj svijeta jer je neki algoritam probijen razmislite i raspitajte se koliko je stvar realna i koliki rizik predstavlja u odnosu na druge sigurnosne rizike koje imate. Dobar stručni pregled stanja u računalnoj sigurnosti, postupaka, protokola i algoritama na hrvatskom jeziku možete pronaći na web stranicama FER-a posvećenim računalnoj sigurnosti.

Jer, u ovom životu ionako ništa nije sigurno (osim smrti, plaćanja poreza i gubitka podataka), pitanje je samo koliko su rizici realni.

Komentiranje zatvoreno.