**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:

* Iga protokollis osaleja peab tundma protokolli ja kogu oma tegevuste jada.
* Iga protokollis osaleja peab olema nõus protokolli järgima.
* Protokoll peab olema ühemõtteline. Iga tegevus peab olema määratletud nii, et selle täitmisel ei tekiks mingit arusaamatust.
* Protokoll peab olema täielik. Selles peavad olema tegevused iga võimaliku olukorra jaoks.

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.

Ainult šifreeritud tekstil põhinev rünnekrüptoanalüütiku käsutuses on mõnede teadete krüpteeritud tekstid, nende puhul on kasutatud ühte ja sama algoritmi. Tema ülesanne on taastada võimalikult suur osa lähtetekstidest.
Lähtetekstil põhinev rünnekrüptoanalüütiku käsutuses on mõnede teadete lähtetekstid ja ka nende šifreeritud tekstid. Tema ülesandeks on krüpteerimisel kasutatud võtme(te) leidmine selleks, et teisi selle võtmega krüpteeritud teateid dekrüpteerida.
Valitud lähtetekstil põhinev rünnekrüptoanalüütikul on lisaks mõnede teadete lähtetekstidele ja krüpteeritud tekstidele võimalus valida šifreerimiseks lähtetekst. Tema ülesandeks on teha kindlaks krüpteerimisel kasutatud võti ja/või algoritm.
Adaptiivsel lähtetekstil põhinev rünneon valitud lähtetekstil põhineva ründe erijuht. Krüptoanalüütikul on lisaks lähteteksti valimisele võimalik seda ka krüpteerimise tulemustest lähtuvalt täpsustada ja muuta.
Lisaks on teada mõned esoteerilisemad ründed:

Valitud šifreeritud tekstil põhinev rünnekrüptoanalüütik võib valida erinevaid šifreeritud tekste dešifreerimiseks, ka on tal ligipääs dešifreeritud tekstidele. Selline meetod sobib peamiselt avaliku võtmega algoritmide murdmiseks.
Valitud võtmel põhinev rünnekrüptoanalüütikul on mingit teavet erinevate võtmete vaheliste seosete kohta. Krüptoanalüütik valib seose kahe või enama võtme vahel, võtmed ise on talle teadmata. Andmed krüptitakse nende võtmetega. Edasi kombineeritakse seda rünnet kas lähtetekstil või valitud lähtetekstil põhineva ründega.
Bandiitlik krüptoanalüüsvõtme teadasaamiseks kasutab "krüptoanalüütik" ähvardusi, väljapressimist, altkäemaksu andmist või piinamist. Selline tegevus on tavaliselt oluliselt lihtsam ja odavam kui ülejäänud krüptoanalüüsi meetodid.
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.

Vaata ka
--------

* Diferentsiaalne krüptoanalüüs
* Krüptograafia ajalugu
* Krüptograafia mõisteid
* Krüpteerimistehnika
* Lineaarne krüptoanalüüs
* Krüptograafilisi algoritme:
	+ Blowfish
	+ Camellia
	+ DES
	+ DSA
	+ IDEA
	+ RSA
	+ Twofish
* Täiustatud krüpteerimisstandard
* Krüptoloogia
* Steganograafia
* Postkvantkrüptograafia
* Caesari nihe

Kirjandus
---------

* Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone Handbook of Applied Cryptography
* Bruce Schneier, "Applied Cryptography", John Wiley & Sons, Inc. 1996

Välislingid
-----------

* Helger Lipmaa koduleht
* RSA Security krüptograafia FAQ
* sci.crypt uudisegrupi FAQ ja selle uuem lühiversioon
* Mobiilikõnede muukimise šiffer jõudis otsaga internetti, Eesti Päevaleht 30. detsember 2009