Sümmeetrilise võtme algoritmid on krüptograafias meetodid, kus dekrüpteerimise ja krüpteerimise võtmed on täpselt sama jagatud saladus. See ühine saladus (võti) võib olla genereeritud juhuslikult, tuletatud paroolist või saadud salajase võtmevahetusprotseduuri, näiteks Diffie-Hellmani menetluse abil. Sümmeetriline krüptograafia on kiire ja tõhus suurte andmemahtude kaitsmiseks, kuid eeldab turvalist võtme edastamist ja hoidmist.

Kuidas sümmeetriline krüptograafia töötab

Põhimõtteliselt teisendatakse selgesõnaline tekst matemaatilise algoritmi abil krüptogrammiks, kasutades ühist salajast võtit. Sama võtit kasutatakse krüptogrammi tagasi selgesõnaliseks muutmiseks. Sümmeetriliste algoritmide peamised eelistused on:

  • kiirus ja ressursitõhusus suurte andmevoogude krüpteerimisel;
  • lihtsus rakenduses — sama võti mõlemal poolel;
  • avaliku võtmega krüptograafiaga hübriidsüsteemides.

Tüübid: voog- ja plokkšifrid

On kahte peamist tüüpi sümmeetrilisi algoritme:

  • Voolukodeerijad (stream ciphers) krüpteerivad andmevoo bittide või baitide kaupa ükshaaval. Nad sobivad hästi reaalaja voogude ja kanalite krüpteerimiseks. Näide historitsest voolukodeerijast on RC4, mida tänapäeval enamasti ei soovitata turvakaalutlustel.
  • Plokkšifrid (block ciphers) töötlevad andmeid fikseeritud suurusega plokkidena (näiteks 64- või 128-bitised plokid) ja krüpteerivad iga ploki eraldi või koos eelnevate plokkidega, sõltuvalt kasutatavast töörežiimist. Ajalooliselt on kasutatud 64-bitiseid plokke, kuid kaasaegsed salastajad, nagu Advanced Encryption Standard, kasutavad tavaliselt 128-bitiseid plokke.

Töörežiimid (mõned olulisemad)

Plokkšifreid kasutatakse erinevates töörežiimides, mis määravad, kuidas plokid omavahel suhestuvad ja kuidas töödeldakse erinevaid plokke:

  • ECB (Electronic Codebook) — lihtne, kuid turvalisuselt nõrk; korduvad plokid võivad jääda nähtavaks.
  • CBC (Cipher Block Chaining) — igat plokki mõjutab eelmine plokk, pakub paremat varjatust.
  • CFB, OFB — voolu-sarnased režiimid, sobivad voogude jaoks.
  • CTR (Counter) — paindlik ja paralleelne, väga levinud kaasaegsetes rakendustes.

Kasutamine koos avaliku võtme krüptograafiaga

Avaliku võtmega krüptograafia on mugav võtmevahetuseks: avalik võtme abil saab turvaliselt edastada sümmeetrilise võtme, mille abil krüpteeritakse edaspidi kogu suhtlus. Seda kombinatsiooni nimetatakse hübriidsüsteemiks ja seda kasutatakse laialdaselt HTTPS/TLS-i, e-posti krüpteerimise, VPN-ide jt jaoks, kuna avaliku võtme algoritmid on oluliselt aeglasemad kui sümmeetrilised, kuid lahendavad võtmejaotuse probleemi.

Levinud algoritmo ja näited

Populaarsete sümmeetriliste krüptode hulka kuuluvad:

  • Twofish
  • Serpent
  • AES (ehk Rijndael) — tänapäeval kõige laialdasem ja soovitatud standard, toetab võtme- pikkusi 128, 192 ja 256 bitti;
  • Blowfish
  • CAST5
  • RC4 — ajalooline voolukodeerija, mida enamasti ei kasutata turvariskide tõttu;
  • TDES (Triple DES) — pärineb DES-ist, aga aeglasem ja enamasti asendatud AES-iga;
  • IDEA

Neist mõned (näiteks AES) on tänapäeval standardiks ja laialt kasutatavad riiklikes ning tööstuslikes lahendustes.

Turvalisus, rünnakud ja krüptoanalüüs

Sümmeetriliste algoritmide turvalisus sõltub nii algoritmi tugevusest kui ka võtme pikkusest ja võtmehaldusest. Ajalooliselt kasutasid mõned krüptoanalüüsi meetodid sümmeetriat ära, mis vähendas turvalisust. Levinumad rünnakutüübid:

  • Tuntud-täheteksti rünnakud (known-plaintext) — ründajal on paarid selgesõna/krüptogramm;
  • Valitud-täheteksti rünnakud (chosen-plaintext) — ründaja saab valida selgesõnate ja näha vastavaid krüptogramme;
  • Differentsiaalne krüptoanalüüs — analüüsib, kuidas erinevused sisse- ja väljundplokkides levivad;
  • Lineaarne krüptoanalüüs — püüab leida lineaarsidemeid selgesõna, krüptogrammi ja võtme vahel.

Lisaks on praktikas tavaliseks probleemiks võtme kompromiteerumine või nõrk juhuslikkus võtme genereerimisel. Mõned varasemad algoritmid (nt vanad voolukodeerijad või lühikeste võtmetega süsteemid) on murdunud just selliste nõrkuste tõttu.

Võtmehaldus ja parimad tavad

Sümmeetrilise krüptograafia turvalisus sõltub väga palju võtmehaldusest:

  • kasuta piisava pikkusega võtmeid (tänapäeval vähemalt 128-bitine võtme tugevus AES-i puhul);
  • kasuta tuntud ja auditeeritud algoritme (nt AES) ja vältida deprekteeritud lahendusi nagu RC4 või vananenud DES;
  • tagada turvaline võtmevahetus — tavaliselt kasutatakse selleks avaliku võtme krüptograafiat või usaldusväärseid võtmehaldussüsteeme;
  • kasutada sobivaid töörežiime (näiteks CBC koos juhusliku initsialiseerimisvektoriga või CTR) ja vältida ECB-d tundlike andmete jaoks;
  • võtmete regulaarne uuendamine (key rotation) ja turvaline hävitamine pärast kasutuse lõppu;
  • kasutada krüptograafilisi liideseid ja raamistikke, mis kaitsevad võtmeid mälu- ja külgläbivusrünnakute eest.

Kokkuvõte

Sümmeetriline krüptograafia on kiire ja tõhus viis andmete konfidentsiaalsuse tagamiseks, eriti suures mahus andmete krüpteerimisel. Peamised miinused on võtmejaotuse keerukus ja vajadus hoolika võtmehalduse järele. Seetõttu kasutatakse praktilistes süsteemides sageli hübriidmeetodit: avaliku võtme krüptograafiat võtme turvaliseks vahetamiseks ja seejärel sümmeetrilist algoritmi andmete krüpteerimiseks.

Teised terminid sümmeetrilise võtmega krüpteerimise kohta on salajase võtmega, ühe võtmega, jagatud võtmega, ühe võtmega ja lõpuks eravõimalusega krüpteerimine. Viimasel terminil ei ole sama tähendus, mis terminil "privaatne võti" on avaliku võtme krüptograafias.