jskqjskajksjaks

Download Report

Transcript jskqjskajksjaks

Andmeturve ja krüptoloogia, VII
Sümmeetrilised
krüptoalgoritmid. AES
12. oktoober 2010
Valdo Praust
[email protected]
Loengukursus IT Kolledžis
2010. aasta sügissemestril
Krüptoalgoritmide peamised
liigid
1. Sümmeetrilised ehk salajase
võtmega krüptoalgoritmid (on
traditsioonilised e ajaloolised)
2. Asümmeetrilised ehk avaliku
võtmega krüptoalgoritmid
(levinud viimase 20 aasta jooksul)
3. Krüptograafilised sõnumilühendid
jms sellesarnased funktsioonid
4. Eriotstarbega algoritmid
tõestusteks, autentimisteks,
ajatempli jaoks jm
Sü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 128 bitti pikk (hädapäraselt 80 bitti
pikk); vastasel korral on algoritmi võimalik
murda ammendava otsinguga
• ei tohi olla teada olulist efekti andvaid
krüptoanalüütilisi võtteid
Võ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
Salajase võtmega krüptoalgoritm
Salajase 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
Tuntuimad esindajad, I
1. AES (võtmepikkus varieeruv; kas 128, 192 või
256 bitti). Alates 2001 de facto rahvusvaheline
standard, hinnanguliselt 70-80%
kommertsvaldkonna sümmeetrilise
krüptoalgoritmi kasutamisest on hetkel AES
2. IDEA (128 bitine võti). Pärineb Šveitsist 1980te
lõpust
3. CAST5 ehk CAST-128 (40 kuni 128 bitine võti).
Pärineb 1996. aastast Carlisle Adams’ilt ja
Stafford Tavares’ilt.
Tuntuimad esindajad, II
4. Blowfish (varieeruva pikkusega võti,
kuni 448 bitti). Pärineb Bruce
Schreierilt 1990 ndatest
5. RC4. Jadašiffer, võtmepikkus 40 kuni
256 bitti, pärineb 1987. aastast
6. DES (56 bitine võti). On USA
standard 1977. aastast ja oli laialt
maailmas kasutusel. NB! Kaasajal on
juba nõrgukene
Plokk- ja jadašifrid
Sümmeetrilised krüptoalgoritmid jagatakse
plokk- ja jadašifriteks. Plokkšifrid on palju
enam levinud kui jadašifrid
• Plokkšifri (block cipher) korral jagatakse
avatekst teatud pikkustega plokkideks, mis
krüpteeritakse ükshaaval. Kas ja kuidas
järgmise ploki tulemus eelmisest sõltub,
määrab ära plokkšifri kasutusresiim
• Jadašifri (stream cipher) korral leitakse
salajasest võtmest teatud algoritmi alusel
võtmejada (key sequence), mis liidetakse
mooduliga (XOR) avatekstile
Plokkš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)
Koodiraamatu resiim
Avateksti plokid krüpteeritakse üksteisest
sõltumatult sama salajase võtmega:
Puudus: krüptogrammi iga plokk sõltub
ainult ühest lähteteksti plokist
Ahelresiim
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
Š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 plokkšifri plokk
kui ka avateksti ja krüpteeritud teksti
mooduliga 2 liitmine
• väljundi tagasiside korral kuulub tsüklisse
ainult plokkšifri plokk, mis on rekurrentselt
"käima lastud" mingilt algväärtuselt
Väljundi tagasiside resiim
Resiimide 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 ehk nn heleroosat bitijada (väga
vajalik nt andmete kustutamisel)
Plokkšifri siseehitus
• Plokkšifri plokk sisaldab endas tavaliselt mittut
üksteisele järgnevat avateksti standardset
teisendust, mida nimetatakse raundiks (round).
Eelmise raundi lõpptulemus on järgmise raundi
sisendiks
• Kas ja kuidas raundid kasutavad salajast võtit
või sellest tuletatud võtmeid, määrab ära
võtmejaotusalgoritm (key sequence algorithm).
Võtmejaotusalgoritm võib ka puududa, sel korral
kasutab iga raund otse algvõtit
• Kui võtmejaotusalgoritm eksisteerib, siis
nimetatakse selle arvutatud võtmeid
raundivõtmeteks (round keys)
Plokkšifri ploki tüüpne siseehitus
Plokkšifrit iseloomustavad
parameetrid
• Võtme pikkus
• Ploki pikkus (vahel võrdub võtme pikkusega,
aga ei pruugi)
• Raundide arv (ja vahel raunditüüpide arv)
• Võtmejaotusalgoritmi olemasolu
• Raundivõtmete arv (võtmejaotusalgoritmi
olemasolu korral)
• Raundivõtme(te) pikkus (võtmejaotudsalhoritmi
olemasolu korral)
• Enne raunde tehtavate eeltegevuste ja pärast
raunde tehtavate järeltegevuste olemasolu
Krüptograafia kaks põhivõtet
raundi “ehituskividena”
• substitutsioon (substitution) –
olemasolevate märkide asendamine
teiste märkidega
• transpositsioon ehk permutatsioon
(transposition, permutation) –
olemasolevate märkide järjekorra
muutmine
Valdav enamik plokkšifrite raundi sees
tehtavaid teisendusi on nende kahe
põhivõtte keerukas sümbioos
AES: saamislugu, I
• 1977. aastal võeti ametliku
krüptostandardina kõikjal USAs
kasutamiseks vastu DES. DES-i näol oli tegu
maailma esimese krüptograafiastandardiga,
mida kasutati paar aastakümmet väga
suures ulatuses
• DES oli plokkšiffer, ploki pikkusega 64 bitti
ning võtmepikkusega 56 bitti
• oli standarditud, kirjeldus oli saadaval FIPS
PUB 46-s (viimane versioon pärines aastast
1999, kehtis aastani 2005)
AES: saamislugu, II
• 1990te aastate lõpul oli DES oli oma 56
biti pikkuse võtmega juba nõrgukene,
seepärast käivitati uue standardi – AESi –
konkurss
• Uus süsteem pidi olema plokksiffer, ploki
pikkuse 128 bitti ja mitmete võtmete
pikkustega (128, 192 ja 256 bitti)
• 2. jaanuaril 1997. aastal kuulutas USA
Rahvuslik Standardibüroo NIST (National
Insitute of Standards and Technology)
välja AESi (Advanced Encryption
Standard) konkursi
AES: saamislugu, II
• 20. augustil 1998 kuulutas NIST 15
kandidaat-algoritmi edasise
uurimise vääriliseks
• 1999. aasta augustiks sõeluti välja
viis finalisti: MARS, RC6, Rijndael,
Serpent ja Twofish
26. novembril 2001 kuulutati Rijndael
ametlikuks konkursi võitjaks, misjärgselt
sai ta laialt tuntuks AESi nime all ja kogu
maailmas laia laviku osaliseks
AES: 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; ploki
pikkus võrdub võtmepikkusega
• autorid on Joan Daemen ja Vincent Rijmen
Belgiast
• võitis 26. novembril 2001 AESi konkursi,
enne võitmist kandis nime Rijndael
• algoritm on publitseeritud stsandardi FIPS
197 all
AES: tehniline üldkirjeldus
128 bitise võtme korral koosneb 10 raundist,
192 bitise võtme korral 12 raundist ja 256-bitise
võtme korral 14 raundist
Võtmejaotusalgoritm AESil puudub
Iga raund koosneb neljast erilaadsest tehtest:
• asendusbait (byte sub)
• ridade nihutus (shift row)
• tulpade segamine (mix column)
• raundivõtme lisamine (add round key)
AES: asendusbaidi faas
Teksti iga bait
asendatakse vastavalt
ühele suurele
substitutsioonile (Sboksile):
AES: ridade nihutuse faas
Teksti baidid vahetatakse omavahel ära, 128-bitise
ploki puhul skeemiga:
192-bitise ploki puhul skeemiga:
AES: ridade nihutuse faas
256-bitise ploki puhul skeemiga:
AES: tulpade segamise faas
Iga 4 baidist koosnev tulp (vt eelnev) korrutatakse
järgmise 4 x 4 maatriksiga modulo 28 = 256
Raundivõtme lisamise faas
Igale teksti bitile XORitakse vastava
osavõtme bitt
AES: toimimiskeem
AES: 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)
AES: krüptoanalüüs
• 2002 oktoobris pakuti välja uudne, algebralise
krüptoanalüüsi võte (Courtois, Piperszyk) mis võibolla võimaldab AESi murda 287 sammuga
• Seni ei ole oma keerukuse tõttu seda keegi
realiseerinud
• Senini on see jäänud teoreetiliseks konstruktsiooniks,
st AES on endiselt turvaline
• Veidi on saavutatud edu (2009) ka seotud võtmete
ründe (related key attack) korral, kus eeldatakse
mitme matemaatiliselt seotud võtme kasutamist.
Praktikat see ei puuduta
• Ka lisakanali ründe võtted (side-channel attack), kus
saadakse teatud teavet ploki sees toimuvast, on
andnud teatud teoreetilisi tulemusi, mis praktilist
turvet ei puuduta
AES: ammendava otsingu
”murdmismasin”
• ”Murdmismasin” (keerukas ammendavat
otsingut realiseeriv spetsiaalriistvaral
põhinev paralleelarvuti), mis murraks DESi
sekundiga, kulutaks AES-i lihtsama variandi
murdmisele sada tuhat miljonit aastat
• säärase masina valmistamine maksaks
hetkel (AD 2009) veidi alla miljoni euro (ca 12
miljonit krooni)
Järeldus: AES-i kõik kolm versiooni on väga
turvalised ja praktikas hetkel (AD 2009) täiesti
murdmatud
AES: realisatsioonid
• AES on koostatud nii, et teda oleks mugav (kiire)
realiseerida nii riist- kui ka tarkvaras
• Riistvararealisatsioonid on küll kümneid ja vahel
ka sadu kordi kiiremad
• Nii riist- kui tarkvaras saab AESi kaasajal
realiseetrida ”taustana”, nt kettale lugemise
ja/või kettalt kirjutamise kõrvaltegevusena
Väga laialt levinud on nii AESi
tark- kui ka riistvaraversioonid