Kriptografija

V tej učni vsebini boste spoznali:

  • osnovne pojme kriptografije,
  • varno komunikacijo.

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 čas 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, običajna praksa je bila predvsem prestrezanje diplomatske pošte. 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, v katerih 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?

Enako metodo so v zgodnjih letih svetovnega spleta v Usenetu uporabljali za šifriranje neprimernih šal. V uporabi je bil postopek ROT-13 (zamenjava črk a → a+13 po modulu 26 - angleška abeceda). Seveda ni predstavljal nobene resne zaščite.

Ta metoda, kjer se črka vedno preslika v isto črko, je zelo preprosta za dešifriranje. Pri dešifriranju poiščemo najbolj pogoste črke in jih nadomestimo z najbolj pogostimi črkami v jeziku. Torej z uporabo statistične analize znakov, značilnih za nek jezik hitro odkrijemo čistopis.

Nadomestile so jo varnejše polialfabetske substitucije.

Princip kriptiranja je sedaj sledeč: Znake iz osnovne abecede kriptiramo z dvema ključema. Lihe po prvi zamaknjeni abecedi, sode pa po drugi zamaknjeni abecedi. Na ta način je precej zmanjšana možnost razkritja čistopisa.

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.

Naslednji način kriptiranja je transpozicija.

Njaenostavnejši primer je stolpčna traspozicija, kjer je čistopis v obliki stolpcev in kolon, nato pa se tvori tajnopis tako, da se prepišejo znaki po stolpcih. Ključ pa predstavlja zaporedje stolpcev.

Omenjeni 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.

Zaradi teh problemov so razvili asimetrične metode ali algoritmi z javnim ključem. Uporabnik si izdela 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 sporočilo spremeni, saj je šifrirni ključ javno objavljen. 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:

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 in podobno.

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.

Avtor: Branko Potisk