Uporaba kriptografije v internetu
Kazalo   
 

Osnovni pojmi

Kriptologija je veda o tajnosti, šifriranju, zakrivanju sporočil (kriptografija) in o razkrivanju šifriranih podatkov (kriptoanaliza). Beseda prihaja iz grščine: kryptos logos pomeni skrita beseda. Uporabljata se še pojma enkripcija (šifriranje) in dekripcija. Osnovno sporočilo ponavadi imenujemo čistopis (cleartext, plaintext), zašifrirano pa šifropis ali tajnopis(kriptogram, ciphertext)

Sporočilo po nekem postopku (algoritmu, metodi) spremenimo v kriptirano sporočilo, pri tem uporabimo določene vrednosti za parametre v algoritmu, ki jim rečemo ključ. Sogovornika se morata torej dogovoriti o algoritmu in ključu, da si lahko pošiljata šifrirana sporočila.

Začetki uporabe kriptografije segajo v čase pred našim štetjem. Razvitih je bilo nešteto načinov za zakrivanje sporočil. Prestrezanje sporočil ni bilo v navadi samo v vojnih časih, predvsem prestrezanje diplomatske pošte je bila običajna praksa. Na dvorih so obstajale "črne sobe", kjer so poskušali razvozlati prestrežena in prepisana sporočila.

Nekaj primerov klasične kriptografije

Špartanci so uporabljali naslednji način: na valj so navili ozek trak in sporočilo napisali pravokotno na smer traku. Poslali so odvit trak, naslovnik pa je moral imeti valj enakega premera.

Julij Cezar je svojim vojskovodjem pošiljal sporočila, kjer je vsako črko zamenjal s črko, ki je bila v abecedi nekaj mest za njo. Postopek lahko opišemo kot zamenjavo črk a -> a+k po modulu n (n pomeni število črk v abecedi). "k" predstavlja ključ. Cezar je menda običajno uporabil ključ 3. Kako bi dešifrirali HAL, če vemo, da smo uporabili isti algoritem s ključem -1?

V začetnih letih svetovnega spleta je bil v uporabi postopek ROT-13 (zamenjava črk a -> a+13 po modulu 26 - angleška abeceda) v Usenetu za šifriranje neprimernih šal in podobnega. Seveda ni predstavljal nobene resne zaščite. Netscape-ov brskalnik je imel v prvih verzijah vgrajeno možnost pod View -> Unscramble ROT-13.

To sta primera za monoalfabetsko substitucijo, kjer se črka vedno preslika v isto črko, zato frekvenčna porazdelitev črk kaže podoben vzorec kot v jeziku čistopisa. Pri dešifriranju poiščemo najbolj pogoste črke in jih nadomestimo z najbolj pogostimi črkami v jeziku, potem pa iščemo še najbolj pogoste dvojčke, trojčke oziroma besede v tekstu. Prvi opis dešifriranja monoalfabetske substitucije je znan iz devetega stoletja, uporabljala pa se je še v srednjem veku. Nadomestile so jo varnejše polialfabetske substitucije, na primer Vigenèrjeva.

V prvi polovici 20. stoletja so za polialfabetsko substitucijo uporabljali šifrirne stroje. Najbolj znana je Enigma, ki so jo uporabljali Nemci med 2.svetovno vojno.


Klasični algoritmi spadajo med simetrične algoritme ali algoritme z zasebnim ključem: imamo samo en ključ, s katerim zašifriramo in dešifriramo sporočilo.

Šifriranje s simetričnimi algoritmi je običajno hitro, težko pa je varno izmenjati ključ. Problem predstavlja tudi število ključev - vsak uporabnik mora imeti za vsakega dopisovalca svojega.

Odkar uporabljamo računalnike, so se ravno zaradi teh problemov razvile asimetrične metode ali algoritmi z javnim ključem (začetki v letu 1975). Uporabnik si skreira dva med seboj povezana ključa in enega objavi. Vsi, ki mu hočejo poslati sporočilo, bodo uporabili njegov javni ključ za šifriranje sporočila. Dešifriral pa ga bo lahko le on sam, ki pozna še svoj skriti ključ. Te metode so računsko bolj zahtevne in zato počasnejše kot simetrične.

Pri pošiljanju sporočila po internetu ni dovolj, da sporočilo zašifriramo. Ko potuje po javnih vodih, preko nešteto vozlišč, lahko kdo naše zašifrirano sporočilo spremeni. Pojavi se tudi problem identifikacije lastnika javnega ključa - ali ni objavil ključa namesto mene kdo drug, ki se hoče izdajati za mene in dobivati pošto, namenjeno meni. Varnostna aplikacija mora torej zagotoviti naslednje:

  • zaupnost (confidentiality);
  • celovitost (integrity);
  • overjanje (authentication);
  • preprečevanje tajenja (nonrepudiation);
  • kontrolo dostopa (access control).

Zato se je razvilo podpisovanje sporočil (digital signatures) in overjanje javnih ključev. Potrdilo (certificate) vsebuje poleg podatkov o ključu še čas nastanka, podatke o lastniku, rok veljavnosti ipd.

V aplikacijah, ki omogočajo zaupnost pošiljanja sporočil, se uporablja obe vrsti algoritmov. Obenem vključujejo zgoščevalne funkcije, ki poljubno dolg tekst preslikajo v število fiksne dolžine (npr. 128 bitov). Najbolj znani sta MD5 in SHA. Poleg tega pred šifriranjem tekst običajno stisnemo na manj kot polovico dolžine z enim od programskih produktov za to. Vhod v kriptografske algoritme predstavlja binarni zapis.

Če hočemo zagotoviti verodostojnost svojega sporočila, mu dodamo digitalni podpis: z zgoščevalno funkcijo izračunamo fiksni "povzetek" sporočila, ki ga zašifriramo s svojim zasebnim ključem. Prejemnik bo najprej z našim javnim ključem dešifriral podpis, iz sporočila bo ponovno izračunal povzetek ter ga primerjal s tistim, ki ga je dobil v podpisu. Če se ujemata, je dobil tako sporočilo, kot smo ga podpisali.

Ker se s kriptologijo ukvarja veliko institucij z močnimi ekipami, je razumljivo, da so danes varnejši znani, javno objavljeni in preizkušeni algoritmi, pri katerih je vsa tajnost zagotovljena s ključem. Čim daljši je ključ, teže ga je razkriti. Ključi pri asimetričnih metodah so neprimerljivi s ključi pri simetričnih, saj gre za povsem različne algoritme. Ocenjujejo, da za isto stopnjo varnosti ključu simetrične metode dolžine 56 bitov ustreza javni ključ 384 bitov (in 128 bitov : 2304 bitov). V splošnem svarijo pred nakupom šifrirnih naprav, če prodajalec noče objaviti algoritma šifriranja. O tem govori dokument z zanimivim naslovom Snake Oil FAQ.

Možnih zmot pri uporabi kriptografije je veliko, Steve Burnett v svojem članku Crypto Blunders navaja naslednjih pet, vse podkrepi s konkretnimi primeri:

  1. Proglasi svoj algoritem za nezlomljiv.
  2. Uporabi one-time pad več kot enkrat.
  3. Ne uporabljaj najboljših algoritmov, ki so na voljo.
  4. Ne implemetiraj algoritma pravilno.
  5. V svoj produkt vgradi skrita vrata.

Ameriški produkti so imeli do januarja 2000 zaradi izvoznih omejitev za neameriške kupce skrajšane ključe ali pa so nudili šibkejše algoritme. Po novih predpisih lahko ameriški proizvajalec kriptografske opreme dobi dovoljenje za izvoz izdelkov z neokrnjenimi algoritmi oziroma ključi.


Pri varovanju podatkov torej uporabljamo simetrične , asimetrične in zgoščevalne algoritme. Za šifriranje podatkov vedno uporabljamo simetrične algoritme, ker so hitrejši od asimetričnih. Vendar moramo pred tem izmenjati ključ za simetrični algoritem. To lahko naredimo tako, da se priključimo na nek centralni strežnik ključev ali pa uporabimo asimetrični algoritem. V protokolih SSL, IPSEC in SET uporabimo asimetrični algoritem za izmenjavo skupnega skritega ključa.


Šifriranje lahko vključimo v katerikoli komunikacijski sloj:

Šifriranju na najnižjih slojih rečemo link-by-link šifriranje. Na ta način povsem zaščitimo pot med dvema napravama, zašifrirana je vsa informacija na višjih nivojih, tudi IP številke. Zato je treba na vseh vmesnih postajah izvesti dešifriranje. Šifriranje je on-line. Ta način je primeren za vojsko ali pa banke, kjer gre za povezave med točno določenimi postajami, ki jih opremimo s šifrirnimi napravami.

Šifriranju na višjih slojih rečemo end-to-end, ker IP številke niso zašifrirane in usmerjevalniki lahko usmerjajo pakete zašifrirane.Dešifrira se samo na končni postaji. Slaba stran tega je, da lahko nasprotnik dela analizo prometa med posameznimi vozli. Imamo pa možnost izmenjevati podatke med različnimi postajami in mrežami (tudi po internetu), če so opremljene z interoperabilno opremo za šifriranje. Če šifriranje in overjanje vključimo v omrežni sloj, je zaščiten ves promet in aplikacijam ni treba skrbeti za to. To pa ni vedno dobro, saj šifriranje upočasni prenos, poleg tega lahko komunicirajo samo naprave s kompatibilno šifrirno opremo. Zato je včasih bolje, da za šifriranje poskrbi aplikacija, kjer je tudi lažje overiti posamezne uporabnike.


Kako pa v praksi šifriramo podatke na internetu?

Protokol IPSEC je vključen v novo verzijo protokola IP (IPV6), je pa že zdaj precej v uporabi. Zašifrirano je vse razen IP številke.

Na višjih nivojih:

Za elektronsko pošto je narejenih že kar nekaj aplikacij, kjer uporabnik lahko poskrbi, da je sporočilo zašifrirano. Najbolj znana je PGP (Pretty Good Privacy), kjer je digitalni podpis narejen z uporabo RSA in MD5, sporočilo pa se zašifrira z uporabo enega od simetričnih algoritmov (prvotno se je uporablja algoritem IDEA, zdaj ima uporabnik na voljo tudi druge) in sicer s ključem seje, le-tega pa zašifriramo z RSA.

Tudi za splet obstajajo rešitve, ki avtomatično zašifrirajo podatke, preverijo avtentičnost strežnika itd.:

  • SSL (Secure Sockets Layer), ki ga je razvil Netscape,
  • PCT (Private Communication Technology) - Microsoftova verzija SSL,
  • TLS (Transport Layer Security) - protokol, ki ga je na osnovi SSL pripravil IETF (RFC 2246),
  • S-HTTP (Secure HTTP) - Terisa Systems - ni več v uporabi.


SSL oziroma njegov naslednik TLS je postal de facto standard. Uporabljamo ga za povezovanje osebnih računalnikov s strežniki bank in trgovcev - pri elektronskem bančništvu in elektronskem trgovanju. Obstaja že tudi verzija WTLS (Wireless TLS) za varno povezovanje mobilnikov s strežniki.

Za oddaljeni dostop do strežnikov in za nalaganje datotek je postal nepogrešljiv protokol SSH (Secure shell), ki nadomešča protokola telnet in ftp tako, da sta povezava in prenos podatkov med administratorjevo delovno postajo in strežnikom zašifrirana.

Tudi bančne organizacije, ki izdajajo kreditne kartice, želijo izkoristiti internet za poslovanje. Tako sta Visa in Mastercard skupaj z drugimi izdajatelji kreditnih kartic razvila protokol SET (Secure Electronic Transaction) za podporo nakupovanju s kreditnimi karticami. Vendar pa od leta 1998, ko je bil na voljo, ni prešel v množično uporabo in kaže, da nanj lahko pozabimo.

Kriptografijo uporabljamo tudi pri elektronskih volitvah.

Nikakor pa ne smemo misliti, da šifriranje podatkov avtomatično zaščiti naše podatke pred vsemi zlorabami. Na računalniku, kjer se šifrira oziroma dešifrira, so podatki nezaščiteni - če nismo poskrbeli za njegovo zaščito, nam šifriranje ne pomaga. Velik problem predstavljajo trojanski konji, ki omogočajo vlomilcu, da upravlja z našim računalnikom, ne da bi se tega zavedali.

Kriptografijo so uporabili tudi za zaščito podatkov na čipih v biometričnih potnih listih - nekaj besed tudi o tem, čeprav ne gre ravno za uporabo v internetu.

Oktober 1996, zadnjič ažurirano januarja 2007