Krüptograafia

Krüptograafia (kreeka keelest "kryptós" – peidetud, "gráphein" – kirjutama) on informatsiooni muutmine loetamatuks ilma eriteadmiste ja -vahenditeta.
Minevikus aitas krüptograafia tagada kommunikatsiooni salastatust. Alates elektronarvutite leiutamisega eelmise sajandi keskel on krüptograafia ainevald laienenud, hõlmates tänapäeval lisaks turvalisele sidele ka informatsiooni terviklikkuse kontrolli, isikute tuvastamist ja muud säärast.
Krüptograafia vältimist uurib krüptoanalüüs. Vahel seotakse krüptograafia ja krüptoanalüüs krüptoloogia ühise nimetaja alla. Krüptograafiaga on seotud ka steganograafia, mis tegeleb mitte sõnumi sisu, vaid sõnumi enda peitmisega.
Krüptograafia on interdistsiplinaarne ala. Kui oma algusaegadel oli see seotud peamiselt lingvistikaga, siis tänapäeval on põhirõhk matemaatikal, täpsemalt arvuteoorial, informatsiooniteoorial, algoritmiteoorial ja diskreetsel matemaatikal. Samuti on krüptograafia seotud inseneritegevusega (nn "security engineering").
Krüptograafia teemad.
Protokollid.
Krüptograafia on mõeldud teatud probleemide, nagu näiteks info salastatus ja selle autentsuse ning terviklikkuse kontroll, lahendamiseks. Selleks on vaja krüptograafia meetodeid ja algoritme teatud viisil kasutada.
Protokolliks nimetatakse teatud probleemi lahendamiseks mõeldud tegevuste jada, mida vähemalt kaks osapoolt ellu rakendavad. "Tegevuste jada" märgib seda, et protokolli moodustavad tegevused täidetakse kindlas järjekorras algusest lõpuni. Protokolli täitmiseks on vaja vähemalt kaks inimest, üksinda protokolli täita ei ole võimalik.
Lisaks on protokollidel järgmised omadused:
Krüptograafiliseks protokolliks nimetatakse protokolli, milles kasutatakse mingit krüptograafilist algoritmi. Protokollid ei ole reeglina mõeldud mitte ainult salastatuse tagamiseks, krüptograafia kasutamise mõte on pigem pealtkuulamise ja pettuse avastamine ning ärahoidmine.
Algoritmid.
Krüptograafiline algoritm ehk šiffer kujutab endast matemaatilist funktsiooni, mida kasutatakse info krüpteerimiseks ja dekrüpteerimiseks. Tavaliselt on need kaks omavahel seotud funktsiooni, üks krüptimiseks ja teine dekrüptimiseks.
Piiratud algoritmiks nimetatakse sellist algoritmi, mille pakutav kaitse põhineb selle algoritmi salastatusel. Selliste algoritmide põhipuuduseks on see, et suurem kasutajate grupp ei saa sellist algoritmi kasutada, kuna iga kord, kui keegi grupist lahkub, tuleb algoritmi vahetada. Samuti tuleb algoritmi vahetada siis, kui keegi kõrvaline sellele jälile saab. Ka ei võimalda sellised algoritmid efektiivset kontrolli ja standardiseerimist.
Tänapäeva krüptograafia lahendab selle probleemi võtme abil. Võti võib omada suvalisi väärtusi teatud väärtuste hulgast. Võimalike väärtuste hulka nimetatakse võtmete ruumiks. Võtit kasutatakse mõlema operatsiooni – krüpteerimise ja dekrüpteerimise puhul, need operatsioonid sõltuvad otseselt võtmest.
Taolist algoritmide tugevus sõltub ainult võtme(te)st, mitte aga algoritmidest enestest. Seega võib algoritmi avaldada ja seda saab ka analüüsida.
Algoritmide tüübid.
Võtme kasutamisest lähtuvalt võib algoritme jagada kaheks: sümmeetrilised algoritmid ja avaliku võtmega algoritmid.
Sümmeetriliseks algoritmiks nimetatakse sellist algoritmi, mille puhul on teate dekrüpteerimiseks kasutatav võti krüpteerimiseks kasutatud võtmest väljaarvutatav, ja ka vastupidi. Enamusel sellistel algoritmidel kasutatakse krüpteerimiseks ja dekrüpteerimiseks sama võtit. Sümmeetrilise algoritmi pakutav kaitse sõltub otseselt võtmest, võtme avastamine tähendab seda, et suvaline isik võib teadet krüpteerida ja dekrüpteerida. Niikaua, kui krüptitav info peab jääma saladuseks, peab saladuseks jääma ka kasutatud võti. Seetõttu nimetatakse selliseid algoritme ka salajase võtmega algoritmideks.
Avaliku võtmega algoritmid ehk asümmeetrilised algoritmid on ehitatud nii, et šifreerimisel ja dešifreerimisel kasutatakse erinevaid võtmeid. Need võtmed on teineteisest sõltumatud, ühest võtmest ei saa tuletada teist. Selliseid algoritme nimetatakse ka avaliku võtmega algoritmideks, kuna šifreerimiseks kasutatav võti võib olla avalik. Seda võtit võib teate krüpteerimiseks kasutada suvaline inimene, kuid teadet dekrüpteerida suuda ainult konkreetne inimene, kes teab selleks kasutatavat võtit. Sellistes süsteemideks nimetatakse krüpteerimiseks kasutatavat võtit tihti avalikuks võtmeks, dekrüpteerimiseks kasutatavat võtit aga salajaseks võtmeks.
Digitaalse allkirja skeemides kasutatakse tihti vastupidist mehhanismi: teade krüpteeritakse mitteavaliku võtmega, dekrüpteeritakse aga avalikuga.
Algoritme võib jagada ka andmete töötlemise meetodi järgi. Jadaalgoritmid ehk jadašifrid töötlevad informatsiooni järjestikku, biti- või baidikaupa. Plokkalgoritmid ehk plokkšifrid töötlevad informatsiooni plokikaupa. Plokkšifreid saab kasutada erinevates šifreerimisrežiimides.
Krüptoanalüüs.
Krüptoanalüüsiks nimetatakse tegevust, mille eesmärgiks on taastada lähtetekst ilma võtmele ligipääsu omamata. Edukas krüptoanalüüs võimaldab taastada kas lähteteksti või võtme, ka võimaldab krüptoanalüüs avastada nõrku kohti süsteemis.
Krüptoanalüüsi katset nimetatakse ründeks, ründeid võib jagada passiivseteks ja aktiivseteks. Passiivse ründe korral jälgib ründaja kommunikatsioonikanalit. Rünne ohustab ainult andmete konfidentsiaalsust. Aktiivse ründe korral üritab ründaja andmeid kustutada või muuta. Samuti võib ründaja mingil muul moel mõjutada andmeid ja kommunikatsioonikanalit. Aktiivne rünne ohustab lisaks andmete konfidentsiaalsusele ka nende terviklikkust ja autentsust.
Teada on neli põhilist krüptoanalüüsi meetodit, neist iga puhul eeldatakse, et krüptoanalüütik tunneb põhjalikult algoritmi.
Lisaks on teada mõned esoteerilisemad ründed:
Krüptoanalüüsi puhul tuleb silmas pidada seda, et kõik algoritmid, välja arvatud Vernami šiffer ehk "one-time pad", on põhimõtteliselt toore jõuga murtavad. Seega on krüptoanalüüs edukas siis, kui saladuse teadasaamiseks kulus vähem operatsioone, kui neid algoritmi toore jõuga murdmiseks vaja.