Kriptirni algoritmi

Kriptirni algoritmi

Kriptirni algoritmi so zaporedja procesov oz. pravil, ki se uporabljajo za šifriranje in  dešifriranje sporočil v kriptografskem sistemu. Preprosto povedano, to so procesi, ki ščitijo podatke tako, da do njih ne morejo dostopati nezaželene osebe. Šifriranje spremeni človeku berljivo besedilo (plaintext) v neberljivo psevdonaključno zaporedje kodirnih znakov (ciphertext). Omenjeno psevdonaključno preslikavo v popolnosti določata javno objavljen kriptirni algoritem in skrivni kriptirni ključ, ki poskrbi za inicializacijo kriptirnega algoritma v zelo težko uganljivo notranje stanje. Obstaja veliko različnih vrst kriptirnih algoritmov, glede na uporabo kriptirnih ključev pa jih delimo na simetrične in asimetrične.

Delitev kriptirnih algoritmov na simetrične in asimetrične

Simetrični kriptirni algoritem je znan tudi kot algoritem simetričnega ključa (symmetric-key algorithm) oz. algoritem deljenega ključa (shred-key algorithm). Njegova značilnost je, da uporablja isti ključ za kodiranje in dekodiranje podatkov. Najbolj znana simetrična kodirnika sta standarda DES (Data Encryption Standard) in AES (Advanced Encryption Standard) .

Asimetrični kriptirni algoritmi temeljijo na privatnem in javnem ključu. Javni ključ je lahko poznan vsem in služi za  šifriranje podatkov, za dešifiranje podatkov pa potrebujemo privatni ključ. Najpogostejši asimetrični kriptirni algoritem je algoritem RSA. 

Simetrični algoritmi so ponavadi veliko hitrejši od asimetričnih, zato se tudi uporabljajo za šifriranje in dešifriranje velike količine podatkov. Medtem, ko so asimetrični kodirniki v uporabi že desetletja, so simetrični kodirniki svoj razmah doživeli šele v zadnjem desetletju. Slednje velja zlasti za pretočne simetrične kodirnike, ki so dolgo časa izkazovali premajhno stopnjo varnosti in se v praksi zato niso uporabljali. Bločni simetrični kodirniki veljajo za varnejše, ker pa je njihov razvoj intenziven veljajo predlagane rešitve za relativno mlade, predvsem v očeh kriptoanalize. Da zagotovimo čim večjo varnost, moramo kodirni ključ strogo varovati in ga pogosto spreminjati. Dolžine ključev se običajno izražajo v bitih. Večina močnih šifrirnih algoritmov ima dolžino ključa med 128 in 256 bitov.

Šifrirni algoritem velja za varnega, če je odporen proti sledečim znanim napadom na kriptografske sisteme:

  • napad s kodiranim besedilom (chiper text only attack);
  • napad z znanim nekodiranim besedilom (known plain text attack);
  • napad z izbranim nekodiranim besedilom (chosen plain text attack);
  • napad s prilagodljivo izbiro nekodiranega besedila (adaptive chosen plain text attack); 
  • napad z naključno izbiro nekodiranega besedila (indifferent chosen plain text attack);
  • napad z izbranim kodiranim besedilom (chosen cipher text attack).

Bistveno je, da je algoritem javno objavljen, saj ga je le tako možno objektivno in neodvisno preizkusiti.

Tudi implementacija algoritma ima velik pomen pri varnosti. Zato je dobro, da pri implementaciji pazimo da:

  • implementiramo neokrnjen algoritem;
  • uporabimo dopolnitvene načine, ki spreminjajo ključ (CBC, CFB ali OFB);
  • temeljito pretestiramo in izločimo šibke ključe, če le ti obstajajo;
  • generiramo ključe z močnim generatorji naključnih števil;
  • uporabimo primerno dolg ključ.
David Tacer