Tänapäeval on krüpteerimine põhiline viis digitaalsete andmete kaitsmiseks. Krüpteerimise abil kaitstakse telefonikõnesid pealtkuulamise eest ning meditsiiniandmeid ja ärisaladusi lekkimise eest. Muuhulgas kasutatakse krüpteerimist tasuliste telekanalite edastamisel, WiFi võrgu kaitsmisel, HTTPS protokolli kasutavate veebilehtedega suhtlemisel, digiallkirjastamisel ja e-hääletamisel. Krüpteeritud ühenduse kasutamine on üks oluline meetod turvalise internetipanga teenuse pakkumisel. Kuna krüpteerimine mõjutab meid iga päev, siis võib tekkida küsimus, kuidas ikkagi krüpteerimine toimib ning kas ründajal on võimalik krüpteeritud sõnumeid lahti murda.

Kaasaja krüptograafia haru on kvantkrüptograafia, mis kasutab kvantmehaanika omadusi krüptoprotokollide rakendamiseks. Vt ka RIA uuringud → otsida krüptograafiliste algoritmide elutsükli uuringud

Sümmeetriline krüpteerimine

Kõige lihtsam on krüpteerimist ette kujutada nii, et on olemas krüpteerimisalgoritm (eeskiri), mis saab sisendiks andmed ja krüpteerimisvõtme ning annab väljundiks krüpteeritud andmed. Nende krüpteeritud andmete taastamiseks on vaja kasutada dekrüpteerimise (lahtikrüpteerimise) võtit ning ilma vastava võtmeta pole võimalik andmeid esialgsel kujul taastada. Juhul kui krüpteerimisvõti ja dekrüpteerimisvõti on samad, siis on tegu sümmeetrilise krüpteerimisalgoritmiga. Niisuguseid algoritme kasutatakse suurte andmehulkade krüpteerimiseks, hea näide on kõvakettal või mälupulgal olevate andmete kaitsmine.

Krüpteerimine ja dekrüpteerimine

Krüpteerimine ja dekrüpteerimine

Nüüd võib tekkida küsimus, et mis on see võti, mida krüpteerimisel ja dekrüpteerimisel kasutatakse. Vastav võti on mõnes mõttes sarnane tavalise lukuvõtmega — võtit tuleb valvata, et sellest koopiat ei tehtaks, ja võtit tuleb kaitsta kadumise eest, et võõrad võtit kasutada ei saaks. Lisaks sellele tuleb võtit enda jaoks säilitada, et tagada juurdepääs võtmega suletud hoiukohtadele või ruumidele. Oluline on märkida, et ka krüpteeritud andmetele on võimalik juurde pääseda ainult vastavat võtit kasutades. Võti on kahendsüsteemis arv ehk siis ühtedest ja nullidest koosnev jada. Tänapäevaste sümmeetriliste krüpteerimissüsteemide korral on võtmed enamasti 128-bitised või 256-bitised ehk siis ühtede ja nullide jadad pikkusega 128 või 256 märki. On väga oluline, et krüpteerimisel kasutatav võti oleks juhuslikult genereeritud, sest krüpteerimise tugevus sõltub nii krüpteerimisalgoritmi kui ka võtme tugevusest.

Samas toob juhuslike bitijadade kasutamise nõue endaga kaasa kaks probleemi:

  1. Esimene probleem seisneb selles, et juhuslike võtmete genereerimine ei ole lihtne, sest arvutid ei suuda päris juhuslikke arve genereerida.
  2. Teine probleem on seotud sellega, et inimesed ei ole võimelised meelde jätma pikki nende jaoks seosetuid bitijadasid.

Seetõttu krüpteeritakse võti enamasti salasõnaga, mida on inimesel lihtsam meelde jätta, ning krüpteeritud võti salvestatakse kas eraldi failina, lisatakse krüpteeritud faili päisesse või hoitakse eraldiseisval kiibil.

Andmete krüpteerimiseks on vaja valida sobiv krüptosüsteem. Krüptosüsteem koosneb:

Krüptosüsteemi valikul tuleks lähtuda selle turvalisusest. Tänapäeval on sümmeetrilise krüpteerimise korral standardlahenduseks AESi (Advanced Encryption Standard) kasutamine. AES krüpteerib andmeid 128-bitiste plokkide kaupa, täpsemat infot AESi toimimise kohta leiate vastavalt Wikipedia lehelt.

AES-i pakutavat krüpteeringut peetakse murdmatuks. See tähendab, et isegi superarvutid ei suuda AES-i abil krüpteeritud andmeid lahti murda, sest leitud pole ühtegi olulist krüptograafilist viga ning kõikide erinevate võtmete proovimiseks kuluks miljoneid aastaid. See kehtib ainult vastava süsteemi korrektsel kasutamisel, mis tähendab seda, et võti on genereeritud juhuslikult ning see ei leki. Juhul kui AES võtme kaitsmiseks kasutatav salasõna on lühike, näiteks kaheksa sümboli pikkune, siis on võimalik kõikvõimalike lühikeste paroolide proovimise teel vastav parool üsna kiiresti üles leida ning seega andmed dekrüpteerida. Samuti on vaikimisi eelduseks, et krüpteerimistarkvara on kirjutanud spetsialistid, et see ei lekitaks infot krüpteeritavate andmete või võtmete kohta. Krüptoalgoritmide programmeerimine ei ole lihtne, sest info võib lekkida väga erinevatest kohtadest, näiteks protsessori energiatarbimise kaudu.

Sümmeetrilise krüpteerimisega seotud probleemid

Sümmeetriline krüpteerimine võimaldab andmeid kaitsta, kuid probleemiks osutub krüpteeritud andmete jagamine teiste osapooltega. Kuna sümmeetrilise krüpteerimise korral kasutatakse krüpteerimiseks ja dekrüpteerimiseks sama võtit, siis oleks krüpteeritud andmete jagamisel vaja edastada ka võti.