Title: Andmeturbe olulisi elemente, II S
1Andmeturbe olulisi elemente, IISümmeetrilisi
krüptoalgoritme
Valdo Praust mois_at_mois.ee arvuti- ja
andmeturbespetsialist isikuandmete kaitse
seaduse kaasautor Infoühiskonna harrastusfilosoof
Täienduskoolitus IT Kolledzis 28. septembril
2004Â Â Â
2Krüptoalgoritmide peamised liigid
- Sümmeetrilised ehk salajase võtmega
krüptoalgoritmid (on traditsioonilised e
ajaloolised) - Asümmeetrilised ehk avaliku võtmega
krüptoalgoritmid (levinud viimase 20 aasta
jooksul) - Krüptograafilised sõnumilühendid jms
sellesarnased funktsioonid - Eriotstarbega algoritmid tõestusteks,
autentimisteks, ajatempli jaoks jm
3Sümmeetriline ehk salajase võtmega krüptoalgoritm
Salajase võtmega krüptoalgoritm (secret key
cryptoalgorithm) ehk sümmeetriline krüptoalgoritm
(symmetric cryptoalgorithm), on selline, kus nii
šifreerimisel kui ka dešifreerimisel kasutatakse
sama (salajast) võtit
- Et sümmeetriline krüptoalgoritm oleks
praktikas turvaline, peab - võti olema vähemalt 80 bitti pikk vastasel
korral on algoritmi võimalik murda ammendava
otsinguga - ei tohi olla teada olulist efekti andvaid
krüptoanalüütilisi võtteid
4Võtme osa šifreerimises ja dešifreerimises
- Krüpteerimine ehk šifreerimine (encryption,
encipherment) nõuab salajase võtme (key)
kasutamist - Vastupidine tegevus on dešifreerimine
(decryption, decipherment), mille käigus
taastatakse sama salajase võtme kaasabil algsed
andmed
Ilma ühte sama võtit teadmata on mõlemad
tegevused võimatud
5Salajase võtmega krüptoalgoritm
6Salajase võtmega krüptoalgoritm kasutusalad
- Neid on kaks
- konfidentsiaalse teabe edastamiseks üle (mitte
pealtkuulamiskindlate) võrkude - konfidentsiaalsete teabekogumite salvestamine
avalikus keskkonnas sooviga teabe saajate hulka
piirata
7Tuntuimad esindajad, I
- AES (võtmepikkus varieeruv kas 128, 192 või 256
bitti). Viimaste aastate standard, mille konkurss
lõppes 2000. aasta sügisel. Vahetas välja
nõrgukeseks jäänud DESi - IDEA (128 bitine võti). Pärineb Šveitsist 1980te
lõpust - Skipjack (80 bitine võti). Pärineb 1990te
algusest NSAlt (National Security Agency), oli
kaua aega (kuni 1998. aastani) salastatud
8Tuntuimad esindajad, II
- Blowfish (varieeruva pikkusega võti, kuni 448
bitti). Pärineb Bruce Schreierilt 1990 ndatest - DES (56 bitine võti). On USA standard 1977.
aastast ja oli laialt maailmas kasutusel. NB!
Kaasajal on juba nõrgukene
9Plokk- ja jadašifrid
Sümmeetrilised krüptoalgoritmid jagatakse plokk-
ja jadašifriteks. Eelnimetatud on kõik plokkšifrid
- Plokkšifri (block cipher) korral jagatakse
avatekst teatud pikkustega plokkideks, mis
krüpteeritakse eraldi. Kas ja kuidas järgmise
ploki tulemus eelmisest sõltub, määrab ära
kasutusresiim - Jadašifri (stream cipher) korral leitakse
salajasest võtmest teatud algoritmi alusel
võtmejada (key sequence), mis liidetakse
mooduliga (XOR) avatekstile
10Plokkšifrite tööresiimid
- koodiraamatu resiim (Electronic Codebook Mode,
ECM) - ahelresiim (Cipher Block Chaining Mode, CBC)
- Å¡ifri tagasiside resiim (k-bit Cipher Feedback
Mode, CFB) - väljundi tagasiside resiim (k-bit Output Feedback
Mode, OFB)
11Koodiraamatu resiim
Avateksti plokid krüpteeritakse üksteisest
sõltumatult sama salajase võtmega
Puudus krüptogrammi iga plokk sõltub ainult
ühest lähteteksti plokist
12Ahelresiim
Enne järgmise ploki krüpteerimist liidetakse
avatekstile XORiga eelmise ploki lõpptulemus,
s.o. krüptogramm
Eelis krüptogrammi iga plokk sõltub kogu
eelnevast avatekstist
13Šifri tagasiside ja väljundi tagasiside resiimid
Šifri ja väljundi tagasiside resiimid kujutavad
endast olukordi, kus on organiseeritud tagasiside
- Å¡ifri tagasiside korral kuuluvad tagasisidega
hõlmatavasse tsüklisse nii DES-i algoritm kui ka
lähteteksti ja krüpteeritud teksti mooduliga 2
liitmine - väljundi tagasiside korral kuulub tsüklisse
ainult DES-i algoritm, mis on rekurrentselt
"käima lastud" mingilt algväärtuselt
14Väljundi tagasiside resiim
15Resiimide kasutamine
- Mugavaim on koodiraamatu resiim, aga see on
ebaturvalisim krüptogrammi iga bitt sõltub
ainult ühest avateksti plokist - Kasutatavaim on ahelresiim, mis annab ka piisava
turvalisuse krüptogrammi iga bitt sõltub kogu
eelnevast avatekstist - Tagasiside resiimid on harvem pruugitavad. Nt
väljundi tagasiside resiim võimaldab saada
pseudojuhuslikku bitijada (tarvilik nt andmete
kustutamisel)
16Pilk ajalukku DES
- on plokkšiffer, ploki pikkusega 64 bitti ning
võtmepikkusega 56 bitti - aktsepteeriti 1977 USAs kui tsiviilstandard
- on standarditud, kirjeldus on saadaval FIPS PUB
46-s (viimane versioon pärineb aastast 1999) - kuni viimase ajani oli väga laialdaselt kasutuses
- on traditsiooniline permutatsioon-substitutsioonši
ffer - kaasajal on AES ta paljus välja vahetanud
17DESi tehniline ülevaade
DES on iteratiivsel põhimõttel konstrueeritud
algoritm, koosnedes järgmistest protseduuridest
- võtmejaotusarvutusest (key schedule calculation),
mis teisendab 56-bitise võtme 16-ks 48-bitiseks
alamvõtmeks (subkey), mis kasutatakse raundides - algpermutatsioonist (initial permutation)
- 16-st järjestikku teostatavast teisenduste
tsüklist ehk raundist (round) - lõpp-permutatsioonist (final permutation)
Dešifreerimisoperatsioon on analoogiline
krüpteerimisoperatsiooniga, ainult alamvõtmeid
kasutatakse teises järjekorras
18DES alamvõtmete leidmine
56 biti pikkusest võtmest leitakse 16 pikkust
raundi võtit (igaüks 48 bitti pikk) spetsiaalse
võtmejaotusalgoritmi alusel. Igat raundi võtit
kasutatakse täpselt ühes raundis
- Võtmejaotusalgoritmi ja ka muu algoritmi
põhilised koostisosad on -
- substitutsioon (bitikombinatsioonide asendamine
teiste kombinatsioonidega) - permutatsioon (bittide järjekorra muutus
bitijadas)
19DES realisatsioonid
- keerukatest bitipermutatsioonidest tingituna on
DESi riistvararealisatsioonid tunduvalt kiiremad
kui tarkvararealisatsioonid - kiiruste vahe riist- ja tarkvararealisatsioonide
vahel on ca 100 korda - kiireimad riistvararealisatsioonid krüpteerivad
kuni mõni Gbit/s ja maksavad mõnikümmend USD - Tarkvararealisatsioonid töötavad kaasajal kettale
kirjutamise/sealt lugemise kiirusega
20DES turvalisus ja krüptoanalüüs
- Ammendav otsing on teostatav 256 operatsiooniga
arvestades kaasaja arvutstehnika arengut on see
juba täiesti reaalne maht tüüparvuti jaoks - On võimalik ehitada spetsiaalne 5000 kiibist
koosnev murdmismasinmasin, mis maksaks hetkel ca
10 000 ja murraks ammendava otsingu teel
algoritmi ca ööpäevaga - 100 korda suurem ja 1 000 000 maksev masin
murraks algoritmi mõnekümne minutiga
21DES turvalisus ja krüptoanalüüs (järg)
- Lisaks on teada märgatavat võitu andvaid
krüptoanalüütilisi võtteid - 1990tel aastatel avaldatud Bihami ja Shamiri tööd
näitavad, et adaptiivselt valitud avateksti ründe
korral piisab algoritmi murdmiseks vahel vaid 247
variandi läbivaatamisest 256 asemel
Kurb järeldus DES ei ole kaasajal enam turvaline
praktikas kasutamiseks (juba üle 5-6 aasta)
22DES kuidas ja kas üldse praktikas rakendada
Alternatiiv 1 pruukida teisi sümmeetrilisi
krüprtoalgoritme, kus võti on pikem ja mille
korral ei ole teada krüptoanalüütilisi
võtteid Alternatiiv 2 pruukida tavalise DESi
asemel kolmekordset DESi (triple DES), kus
võtmepikkus on 168 bitti ja mis on seni turvaline
Standardi viimane versioon FIPS PUB 46-3 (25.
oktoober 1999) sätestabki vaid kolmekordse DESi
kasutamise
23Kolmekordne DES
24DES praktilisi soovitusi
- DESi tasub (kolmekordsena) pruukida vaid seal,
kus algoritm on süsteemi poolt rangelt ette
antud, et tagada ühilduvust ajalooliste
standarditega vms - Igal pool mujal võiks kasutada moodsamaid
krüpteerimisalgoritme (IDEA, AES jt), mis on
palju turvalisemad - Vältida tuleks DESi kasutamist koodiraamatu
resiimis
Väga palju vanemaid standardeid ja tehnilisi
süsteeme nõuab aga senini DESi kasutamist
25AES ehk Rijndael fakte
- on plokkšiffer ploki pikkusega 128, 192 või 256
bitti - kasutab varieeruva pikkusega võtit, mis võib olla
samuti 128, 192 või 256 bitti - autorid on Joan Daemen ja Vincent Rijmen Belgiast
- võitis 2. oktoobril 2000 AESi konkursi
26AES ehk Rijndael tehniline üldkirjeldus
- 128 bitise võtme korral koosneb 9 raundist, 192
bitise võtme korral 11 raundist ja 256-bitise
võtme korral 13 raundist - Iga raund koosneb neljast erilaadsest tehtest
- asendusbait (byte sub)
- ridade nihutus (shift row)
- tulpade segamine (mix column)
- raundivõtme lisamine (add round key)
27AES eh Rjindael asendusbaidi faas
- Teksti iga bait asendatakse vastavalt ühele
suurele S-boksile
28AES ehk Rjindael ridade nihutuse faas
- Teksti baidid vahetatakse omavahel ära,
128-bitise ploki puhul skeemiga
192-bitise ploki puhul skeemiga
29AES ehk Rjindael ridade nihutuse faas
256-bitise ploki puhul skeemiga
30Raundivõtme lisamise faas
AES ehk Rjindael tulpade segamise faas
Iga 4 baidist koosnev tulp (vt eelnev)
korrutatakse järgmise 4 x 4 maatriksiga modulo 28
256
Igale teksti bitile XORitakse vastava osavõtme
bitt
31AES ehk Rjindael toimimiskeem
32AES ehk Rjindael krüptoanalüüs
- ammendav otsing nõuab 2128 kuni 2256 variandi
läbivaatamist - algoritmi autorid ise on tõestanud seda suure
osa teadaolevate krüptoanalüütiliste võtete
korral - olulist võitu andvaid krüptoanalüütilisi võtteid
ei olnud kuni hiljutise ajani teada (seega arvati
algoritm praktikas olevat murdmatu)
33AES ehk Rjindael algebraline krüptoanalüüs
- 2002 oktoobris pakuti välja uudne, algebralise
krüptoanalüüsi võte, mis võib-olla võimaldab AESi
murda 287 sammuga - Seni ei ole oma keerukuse tõttu seda keegi
realiseerinud - Samas ei ole selle kasutamist AESi murdmisel ka
keegi ümber lükanud
Lähiaastad näitavad, kas tegemist on pelgalt
teoreetilise konstruktsiooniga või on sel ka
praktiline väärtus, st kas AES on endiselt
turvaline
34IDEA fakte
- on plokkšiffer ploki pikkusega 64 bitti (8 baiti)
- kasutab 128-bitist (16-baidist) võtit
- on koostatud Šveitsis 1980te aastate lõpul
- on patenteeritud Å veitsi firma Ascom poolt,
mitteärilistel eesmärkidel võib vabalt kasutada
35IDEA tehniline üldkirjeldus
- On projekteeritud selliselt, et oleks võimalik
kiire realiseerimine tarkvaras (vastukaaluks nt
DESile, kus pearõhk oli pandud riistvarale) - On huvitav selle poolest, et plokkšifritele
traditsiooniliste S-bokside asemel pruugib ta
pööramatuid räsifunktsioone - IDEA genereerib 128 bitilisest üldvõtmest 52
16-bitist alamvõtit - IDEA koosneb kaheksast raundist
- 64 bitise avateksti jagab IDEA neljaks
16-bitiseks osaks - Iga raund kasutab 6 alamvõtit, peale raunde
kasutatakse veel 4 võtit
36IDEA raundi kirjeldus
- Raundi vältel tehakse hulga tehteid 16-bitiste
plokkide ning alamvõtmetega - Raundis kasutatavad tehted on
- tavaline liitmine (mooduliga 216 ehk 65536)
- XOR
- korrutamine mooduliga 2161 (65537)
Nimetatud tehete kogusumma annab piisava
mittelineaarse funktsiooni üks põhjusi selleks
on, et 65537 on algarv
37IDEA üldskeem
38IDEA võtmejaotusalgoritm
- esimesed 8 alamvõtit saadakse üldvõtme
tükeldamisest 8 osaks - seejärel tehakse üldvõtme bititinihe 25 biti
ulatuses ja leitakse nii järgmised 8 alamvõtit - seda protseduuri korratakse 7 korda, kuni
leitakse 52 alamvõtit (viimased kaks jäetakse
kasutamata 7 x 8 56)
Seega on alamvõtmed iga 8 tagant omavahel seotud
39IDEA krüptoanalüüs
- ammendav otsing nõuab 2128 variandi läbivaatamist
- olulist võitu andvaid krüptoanalüütilisi võtteid
ei ole teada seega on algoritm praktikas
murdmatu - arvestades algoritmi vanust, on see
tähelepanuväärne tulemus
Järeldus IDEA on praktiliseks kasutamiseks
turvaline algoritm
40IDEA eelised ja puudused
- Eelised
- IDEAt on hea tarkvaras realiseerida, kuna ta
sisaldab tuntuid bitioperatsioone - IDEA C-keelne lähtetekst on ca paar KB suur ja
koosneb veidi rohkemast kui 100 reast - On kasutatav paljudes programmides (sh vabavarana
levitatavas PGPs) - Ainus puudus oli patenteeritud, kuid patendi
tähtaeg on saanud otsa
41Skipjack fakte
- on plokkšiffer ploki pikkusega 64 bitti (8 baiti)
- kasutab 80-bitist (10-baidist) võtit
- on koostatud USAs NSA (National Security Agency)
poolt 1990te algul - kasutatakse Clipperi kiibis
- kirjeldus oli kuni 1999. aasta juunini salastatud
42Skipjack tehniline üldkirjeldus
- on projekteeritud selliselt, et oleks võimalik
kiire realiseerimine tarkvaras (ei sisalda
erikujulisi bititehteid) - avatekst jagatakse neljaks 16-bitiseks
neljandikuks - Skipjack koosneb 32 raundist
- iga raund muudab vaid ühte neljandikku (16 bitti)
teabest) - kasutatakse kahte tüüpi raunde, A ja B kaheksale
A raundile järgneb 8 B raundi kasutamine - 80bitine võti jagatakse kümneks kaheksabitiliseks
alamvõtmeks lihtsa jagamise teel
43Skipjack raundide kirjeldus
- B tüüpi raund erineb A tüüpi raundist väikeste
tehniliste üksikasjade poolest XORimisel - Iga raund sisaldab põhimõtteliselt sama
krüpteemisfunktsiooni G ehk nn Feisteli
struktuuri, kus 16 bitise teksti teisendamiseks
kasutatakse nelja alamvõtit ja permutatsiooni F - funktsioonile G eelneb raundi järjenumbri ja
eelmise neljandiku XORimine
44Skipjack funktsiooni G skeem
45Skipjack permutatsioon F (Feisteli struktuur)
46Skipjack esimesed 8 raundi (tüüp A)
47Skipjack raundid 8-16 (tüüp B)
48Skipjack rakendatavus
- ammendav otsing nõuab 280 variandi läbivaatamist,
mis ei ole kaasaja arvutitele jõukohane - ei ole teada erilisi võitu andvaid
krüptoanalüütilisi võtteid
Järeldus Skipjacki võib pidada turvaliseks
algoritmiks ning ta on IDEAst veidi kiirem
Skipjacki kasutatakse Clipperi kiibis ning ka
paljudes muudes paikades
49Blowfish fakte
- on plokkšiffer ploki pikkusega 64 bitti (8 baiti)
- kasutab varieeruva pikkusega võtit, max
võtmepikkus on 448 bitti - on koostatud Bruce Schreieri poolt 1993
50Blowfish tehniline üldkirjeldus
- koosneb 16 raundist
- kasutab 18 32-bitist alamvõtit, mis
genereeritakse algvõtmest - kasutab nelja 32-bitist S-boksi, mida kasutatakse
võtmejaotusalgoritmi juures - sarnaselt DESiga jagatakse 64-bitine plokk kaheks
pooleks, millest iga raundi jooksul teisendatakse
ühte poolt
51Käesoleva ettekande materjalid (MS PowerPoint
2000 vormingus) on saadaval veebis
aadressil http//www.itcollege.ee/valdo/taiend/pl
okk2-2.ppt
Edasised küsimused palun aadressil mois_at_mois.ee
52Tänan tähelepanu eest!