Sümmeetriline krüptograafia — toimimine, tüübid ja näited
Uurige sümmeetrilist krüptograafiat: kuidas see toimib, voog- ja plokkšifrid, populaarsemad algoritmid (AES, Twofish, Blowfish jne) ja praktilised näited turvaliseks andmekaitseks.
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.

Sümmeetrilise võtme algoritmi puhul on krüpteerimiseks kasutatav võti sama, mida kasutatakse dekrüpteerimiseks. Seetõttu tuleb see hoida salajas.
Sümmeetrilised vs. asümmeetrilised algoritmid
Erinevalt sümmeetrilistest algoritmidest kasutatakse asümmeetrilise võtme algoritmides krüpteerimiseks teistsugust võtit kui dekrüpteerimiseks. See tähendab, et kasutaja, kes teab asümmeetrilise algoritmi krüpteerimisvõtit, saab sõnumeid krüpteerida, kuid ei saa välja arvutada dekrüpteerimisvõtit ja ei saa dekrüpteerida selle võtmega krüpteeritud sõnumeid. Allpool on esitatud nende kahe algoritmiliigi lühivõrdlus:
Kiirus
Sümmeetrilise võtme algoritmid on üldiselt palju vähem arvutamismahukad kui asümmeetrilise võtme algoritmid. Praktikas on asümmeetrilise võtme algoritmid tavaliselt sadu kuni tuhandeid kordi aeglasemad kui sümmeetrilise võtme algoritmid.
Võtmehaldus
Üks sümmeetrilise võtme algoritmide puudusi on nõue, et mõlemal poolel peab olema ühine salajane võti, millest mõlemal poolel on sama koopia. Selleks, et tagada turvaline side kõigi n-liikmelise grupi liikmete vahel, on vaja kokku n(n - 1)/2 võtit, mis on võimalike sidekanalite koguarv. Et piirata krüptograafilise ründaja võimaliku avastamise mõju, tuleks neid regulaarselt vahetada ja hoida turvaliselt levitamise ja kasutamise ajal. Võtmete valimise, jaotamise ja säilitamise protsessi nimetatakse võtmehalduseks ning seda on raske saavutada usaldusväärselt ja turvaliselt.
Hübriidkrüptosüsteem
Kaasaegsetes krüptosüsteemides kasutatakse nii asümmeetrilisi (avaliku võtme) kui ka sümmeetrilisi algoritme, et kasutada ära mõlemast parimad eelised. Asümmeetrilisi algoritme kasutatakse sümmeetriliste võtmete jagamiseks sessiooni alguses. Kui sümmeetriline võti on kõigile seansi osapooltele teada, saab seda võtit kasutavaid kiiremaid sümmeetrilise võtme algoritme kasutada seansi ülejäänud osa krüpteerimiseks. See lihtsustab võtme levitamise probleemi, sest asümmeetrilisi võtmeid tuleb levitada ainult autentselt, samas kui sümmeetrilisi võtmeid tuleb levitada nii autentselt kui ka konfidentsiaalselt.
Sellist hübriidset lähenemist kasutavad süsteemid on näiteks SSL, PGP ja GPG jne.
Seotud leheküljed
- Asümmeetrilise võtme algoritmid
Küsimused ja vastused
K: Mis on sümmeetrilise võtme algoritmid?
V: Sümmeetrilise võtmega algoritmid on krüptograafia meetod, kus dekrüpteerimise ja krüpteerimise võtmed on täpselt sama jagatud saladus.
K: Kuidas saab saladuse genereerida?
V: Saladuse võib genereerida juhuslikult või paroolist või salajase võtmevahetuse protseduuriga, nagu Diffie-Hellman.
K: Miks on sümmeetrilise võtme algoritmid olulised?
V: Sümmeetrilise võtmega algoritmid on väga olulised, sest need on arvutites kiiremad kui avaliku võtmega algoritmid.
K: Mis on avaliku võtme krüptograafia (asümmeetrilise võtme krüptograafia)?
V: Avaliku võtmega krüptograafias (asümmeetrilise võtmega krüptograafia) saab krüpteerimise võtme ilma probleemideta avalikkusele anda ja igaüks saab teile salajasi sõnumeid saata. Krüpteerimise võti on "avatud", sest praktikas ei saa seda kasutada dekrüpteerimise võtme saamiseks.
Küsimus: Millised on kahte liiki sümmeetrilised krüptograafid?
V: Kahte liiki sümmeetrilisi salakirju on voogsalakirju ja plokksalakirju. Voolukodeerijad krüpteerivad sõnumi bittide voogudena ükshaaval, samas kui plokk-kodeerijad võtavad bittide plokid, krüpteerivad need ühe üksusena ja kasutavad mõnikord ka vastust hiljem.
K: Millise suurusega plokke kasutavad kaasaegsed salakirjad?
V: Kaasaegsed šifrid, nagu Advanced Encryption Standard, kasutavad 128-bitiseid plokke.
K: Milliseid rünnakuid on ajaloos kasutatud sümmeetria ärakasutamiseks?
V: Ajaloos kasutasid mõned krüptoanalüüsi meetodid sümmeetriat ära, nii et sümmeetrilised süsteemid olid vähem turvalised. Mõned rünnakud, mida on kasutatud, hõlmavad tuntud lihtteksti rünnakuid, valitud lihtteksti rünnakuid, diferentseeritud krüptoanalüüsi ja lineaarset krüptoanalüüsi.
Otsige