Krüpteerimine on andmete teisendamine loetamatule kujule. Kaasajal IT maailmas kasutatakse krüpteerimist kahel eesmärgil:
• salajase teabe sisu peitmiseks võõraste pilkude eest (konfidentsiaalsus)
• teabe muutumatuse tagamine koos selle võimaliku sidumisega teabe autoriga (terviklus ehk tõestusväärtus)
Kaasaja võrgupõhises maailmas on paljudes kohtades masskasutusel seepärast, et sideliine ei ole võimalik füüsiliselt turvata nii, et oleks välistatud nendes edastatava teabe pealtkuulamine ning kuritahtlik muutmine (võltsimine). Järelikult jääb üle vaid krüptograafia.
Hästi krüpteeritud teave näeb pealevaadates välja nagu ta oleks juhuslike märkide jada. Arvutieelsel ajastul võis see olla nii numbrite kujul (56784 81479 …) tähtede kujul (ADKTH LNERT …) või ka mingite erisümbolite kujul Arvutiajastul näeb krüpteeritud teave tavaliselt välja nagu juhuslik bitijada ehk binaarfail.
Krüpteerimiseks kasutatavad võtted ja algoritmid on tavaliselt avalikud, kogu salastus põhineb kasutataval salajasel võtmel.
Traditsioonilise krüpteerimise korral toimib nii teabe krüpteerimine (teisendamine loetamatule kujule) kui ka deÅ¡ifreerimine (loetamatule kujule teisendatud teabe tagasiteisendamine loetavale kujule) ühe ja sama salajase võtmega. Selliseid krüptoalgoritme nimetatakse sümmeetrilisteks ehk salajase võtmega krüptoalgoritmideks ning need võimaldavad tagada teabe salastust ehk konfidentsiaalsust.
Kaasajal loetakse sümmeetrilisi krüptoalgoritme praktikas turvaliseks alates 80 biti pikkusest võtmest. Nende tuntuim esindaja on kaasajal AES ehk Rjindael, mis lubab nii 128, 192 kui ka 256 biti pikkust võtit. Levinud on ka algoritmid IDEA (128 bitine võti), Skipjack (80 bitine võti), Blowfish, Twofish jne. Varasematel aastakümnetel levinud DES (56 biti pikkune võti) on kaasajal kasutamiseks juba ebaturvaline – seda võib pruukida ainult erijuhtudel ning kolmekordse krüpteerimise resiimis (3×56 =168 bitise võtmega).
Avaliku võtmega krüptoalgoritmide ehk asümmeetriliste krüptoalgoritmide korral on võtmeid kaks ja need esinevad paaridena – privaatvõti ja avalik võti. Nende korral saab privaatvõtmega krüpteeritud (loetamatule kujule teisendatud) teavet deÅ¡ifeerida (loetavaks tagasi teisendada) avaliku võtmega. Ning vastupidi – avaliku võtmega krüpteeritud (loetamatule kujule teisendatud) teavet saab deÅ¡ifeerida (loetavaks tagasi teisendada) sellele vastava võtmega. Avalik võti on tavaliselt avalik, kuid privaatvõti on mingi subjekti (inimese, arvuti, programm vm) ainuomanduses. Ühest võtmest teist praktikas leida ei saa.
Avaliku võtmega krüptoalgoritme kasutatakse kahel eesmärgil:
• turvaliseks võtmevahetuseks (see ei vaja pealtkuulamiskindlat kanalit)
• andmete muutumatuse (tervikluse) tagamiseks.
Kui avaliku võtmega krüptoalgoritmi kasutatakse muutumatuse (tervikluse) tagamiseks, nimetatakse arvutatavat tulemit tavaliselt signatuuriks. Signatuuri erijuhus on digitaalallkiri (digiallkiri), millel on Eesti Vabariigis õiguslik tähendus – digiallkirjaga varustatud failil on nimelt sama jõud nagu omakäelise allkirjaga varustatud paberdokumendil. Digiallkirja korral on privaatvõtme kandjaks füüsiline ese (Eestis ID kaart).
Kasutatavaim (ja ka preaktiliselt ainus) avaliku võtmega krüptoalgoritm on RSA, mida loetakse turvaliseks alates 1024 biti pikkusest võtmest.
Lisaks sümmeetrilisele ja asümmeetrilisele krüptoalgoritmile on masslevinud ka kolmandat tüüpi krüptoalgoritm – krüptograafilise sõnumilühendi ehk krüptoräsi algoritm. Krüptoräsi leiab suvalise pikkuse failist (sõnumist) teatud kindla pikkusega lühikese sõnumi nii, et lühendi põhjal ei ole sõnumit võimalik enam taastada. Seega – kui meil on olemas mingi sõnum (fail) ja tema lühend, siis me võime olla alati kindlad, et see lühend on just konkreetsest sõnumist arvutatud. Krüptoräsi algoritm “aitab” avaliku võtmega krüptoalgoritmi, võimaldades viimasele pika faili asemel “ette sööta” lühikese räsi.
Praegu levinud krüptoräsi algoritmidest võib pidada praktikas turvaliseks kahte alögoritmi – SHA-1 ja RIPEMD-160. Mõlemad neist leiavad failist 20 baidi ehk 160 biti pikkuse räsi. Varem (1990ndatel) aastatel massevinud MD-perekonna räsifunktsioonid (MD2, MD4 , MD5) ei ole kaasajal enam turvalised ning neid ei soovita kasutada.
Krüptovõtete ja -algoritmide kasutamisel tuleb silmas pidada, et nad ei ole imerelvad – nad ei lahenda kogu turvaprobleemi, vaid nihutavad turvaprobleemi teraviku ühelt küsimusele teisele. Nimelt igasuguse krüpteerimise kasutamisel tõstatub alati võtmehalduse probleem – kes võtmeb loob (genereerib) ning kuidas neid (turvaliselt) hoitakse ja edastatakse. Paljude praktilise ülesannete korral võtmehalduse edukas lahendamine keerulisemgi kui krüpteerimise enda kasutamine.
Teksti autor:
Valdo Praust, mois@mois.ee