Upload
nodin
View
60
Download
0
Embed Size (px)
DESCRIPTION
Andmeturve ja krüptoloogia, VIII Moodsaid sümmeetrilisi krüptoalgoritme. 22. oktoober 2001 Valdo Praust [email protected] Loengukursus IT Kolled ž is 2002. aasta sügissemestril. S ümmeetriline ehk s alajase võtmega krüpto algoritm. - PowerPoint PPT Presentation
Citation preview
Andmeturve ja krüptoloogia, VIIIAndmeturve ja krüptoloogia, VIII
Moodsaid sümmeetrilisi Moodsaid sümmeetrilisi krüptoalgoritmekrüptoalgoritme
Andmeturve ja krüptoloogia, VIIIAndmeturve ja krüptoloogia, VIII
Moodsaid sümmeetrilisi Moodsaid sümmeetrilisi krüptoalgoritmekrüptoalgoritme
22. oktoober 2001
Valdo Praust
Loengukursus IT Kolledžis2002. aasta sügissemestril
SSümmeetriline ehk sümmeetriline ehk salajase alajase võtmega krüptovõtmega krüptoalgoritmalgoritm
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
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
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
Salajase võtmega krüptoSalajase võtmega krüptoalgoritmalgoritm
Kasutatavamaid algoritme, IKasutatavamaid algoritme, I
1. IDEA.128 bitine võti. Pärineb Šveitsist 1980te lõpust
2. Skipjack. 80 bitine võti. Pärineb 1990te algusest NSAlt, oli kaua aega (kuni 1998. aastani) salastatud
3. Blowfish. Varieeruva pikkusega võti, võib olla pikk 78 baiti, s.o 624 bitti. Pärineb Bruce Schreierilt 1990ndatest
Kasutatavamaid algoritme, IIKasutatavamaid algoritme, II
4. AES (Rijndael). Võtme pikkus varieeruv, võib olla 128,198 või 256 bitti. On koostatud Belgias J. Daemeni ja V.Rjimeni poolt AESi konkursi jaoks 1990te lõpul, mille ta äsja võitis
5. MARS. Võtme pikkus varieeruv, võib olla 128 kuni 448 bitti, saab suurendada 32 biti kaupa. On koostatud IBMi poolt uue krüptoalgoritmi (AES) konkursile 1990te lõpul
Kasutatavamaid algoritme, IIIKasutatavamaid algoritme, III
6. RC6. Võtme pikkus varieeruv, võib olla 1 kuni 255 baiti ehk siis 2040 bitti. Autorid: R. Rivest, M. Robshaw, R. Sidney, Y.Lin. On koostatud AES konkursi jaoks 1990te lõpul
7. Serpent. Võtme pikkus varieeruv, võib olla 128, 198 või 255 bitti. Autorid: R. Anderson, E. Biham, L. Knudsen. On koostatud AES konkursi jaoks 1990te lõpul
Kasutatavamaid algoritme, IVKasutatavamaid algoritme, IV
8. Twofish. Võtme pikkus varieeruv, võib olla 128,198 või 256 bitti. Autorid: B. Schneier J. Kelsey, D. Whitning, D. Wagner, C. Hall, N. Feguson. Koostatud 1998. aastal AESi konkursi jaoks.
IDEA: fakteIDEA: 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
IDEA: tehniline üldkirjeldusIDEA: 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
IDEA: raundi kirjeldusIDEA: 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 216+1 (65537)
Nimetatud tehete kogusumma annab piisava mittelineaarse funktsiooni; üks põhjusi selleks on, et 65537 on algarv
Nimetatud tehete kogusumma annab piisava mittelineaarse funktsiooni; üks põhjusi selleks on, et 65537 on algarv
IDEA: raundi skeemIDEA: raundi skeem
IDEA: IDEA: üldskeemüldskeem
IDEA: võtmejaotusalgoritmIDEA: 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 seotudSeega on alamvõtmed iga 8 tagant omavahel seotud
IDEA: krüptoanalüüsIDEA: 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 algoritmJäreldus: IDEA on praktiliseks kasutamiseks turvaline algoritm
IDEA: eelised ja puudusedIDEA: 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
Skipjack: fakteSkipjack: 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
Skipjack: tehniline üldkirjeldusSkipjack: 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
Skipjack: raundide kirjeldusSkipjack: 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
Skipjack: funktsiooni G skeemSkipjack: funktsiooni G skeem
Skipjack: permutatsioon F Skipjack: permutatsioon F (Feisteli struktuur)(Feisteli struktuur)
Skipjack: esimesed 8 raundi Skipjack: esimesed 8 raundi (tüüp A)(tüüp A)
Skipjack: raundid 8-16 Skipjack: raundid 8-16 (tüüp B)(tüüp B)
Skipjack: rakendatavusSkipjack: 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
Järeldus: Skipjacki võib pidada turvaliseks algoritmiks ning ta on IDEAst veidi kiirem
Skipjack’i kasutatakse Clipperi kiibis ning ka paljudes muudes paikades
• 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
Blowfish: fakteBlowfish: fakte
Blowfish: tehniline üldkirjeldusBlowfish: 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
Blowfish: raundi kirjeldusBlowfish: raundi kirjeldusDivide x into two 32-bit halves: xL, xR
For i = 1 to 16:
xL = xL XOR Pi
xR = F(xL) XOR xR
Swap xL and xR
Swap xL and xR (Undo the last swap.)
xR = xR XOR P17
xL = xL XOR P18
Recombine xL and xR
Function F:
Divide xL into four eight-bit quarters: a, b, c, and d
F(xL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232
Blowfish: võtmejaotusalgoritmBlowfish: võtmejaotusalgoritm
Algoritmi põhijooned:
• väärtustatakse S massiiv, mis on võtmega samapikkune, transtsendentse arvu π (3,1415926...) tüvenumbritega 16nd-süsteemis
• XORitakse võtmeväärtus S väärtustega
• asendatakse pool arvust π saadud väärtustest XORimise lõppväärtustega ja korratakse XORimise protseduuri
• 521 iteratsiooni tulemusena leitakse 18 16-bitist alamvõtit
AES ehk Rijndael: fakteAES 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
AES ehk Rijndael: tehniline AES ehk Rijndael: tehniline üldkirjeldusü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)
Teksti iga bait asendatakse vastavalt ühele suurele S-boksile:
AES eh Rjindael: asendusbaidi AES eh Rjindael: asendusbaidi faasfaas
Teksti baidid vahetatakse omavahel ära, 128-bitise ploki puhul skeemiga:
192-bitise ploki puhul skeemiga:
AES ehk Rjindael: ridade AES ehk Rjindael: ridade nihutuse faasnihutuse faas
256-bitise ploki puhul skeemiga:
AES ehk Rjindael: ridade AES ehk Rjindael: ridade nihutuse faasnihutuse faas
Raundivõtme lisamise faasRaundivõtme lisamise 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
AES ehk Rjindael: tulpade AES ehk Rjindael: tulpade segamise faassegamise faas
AES ehk Rjindael: toimimiskeemAES ehk Rjindael: toimimiskeem
AES ehk Rjindael: AES ehk Rjindael: võtmejaotusalgoritmvõtmejaotusalgoritm
Võtmejaotusalgoritmi põhjal leitakse algsest võtmest N baidi pikkust raundi võtit ( N = raudi arv x ploki pikkus)
Raundi võtmed saadakse algsest võtmest mitmete teisenduste teel, mis sisaldavad:• bitikaupa nihutamist• XORimist võtmeosade vahel• XORimist spetsiaalsete raundikondtantidega
AES ehk Rjindael: AES ehk Rjindael: võtmejaotusalgoritmi koodijuppvõtmejaotusalgoritmi koodijupp
AES ehk Rjindael: krüptoanalüüsAES 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)
AES ehk Rjindael: AES ehk Rjindael: algebraline krüptoanalüüsalgebraline 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ähikuud ja –aastad näitavad, kas tegemist on pelgalt teoreetilise konstruktsiooniga või on sel ka praktiline väärtus, st kas AES on endiselt turvaline
Lähikuud ja –aastad näitavad, kas tegemist on pelgalt teoreetilise konstruktsiooniga või on sel ka praktiline väärtus, st kas AES on endiselt turvaline
• on plokkšiffer ploki pikkusega 128 bitti (16 baiti)
• kasutab kas 128-bitist, 192-bitist või 256-bitist võtit
• on koostanud IBM AESi konkursi jaoks
MARS: fakteMARS: fakte
MARS: tehniline üldkirjeldusMARS: tehniline üldkirjeldus
• 128 bitist plokki vaadeldakse nelja neljast baidist koosneva osana
• Kõigepealt XORitakse võtmematerjaliga kogu plokk• Seejärel rakendatakse 8 DESi sarnast raundi, mis
sisaldab S-bokse• Nende järel rakendatakse 16 Skipjacki sarnast raundi• Lõpuks rakendatakse jälle 8 algse raundiga sarnast
raundi• Sellele järgneb XOR võtmematerjaliga• Algoritmil 40 32-bitist alamvõtit, mille genereerib
võtmejaotusalgoritm (sarnane pajude teistega)
MARS: esimest tüüpi raundi MARS: esimest tüüpi raundi skeemskeem
MARS: osa esimest tüüpi raundi MARS: osa esimest tüüpi raundi S-boksistS-boksist
MARS: teist tüüpi raundi skeemMARS: teist tüüpi raundi skeem
• on plokkšiffer, kus ploki pikkus on 128 bitti
• nii võtme pikkus kui ka raundide arv on reguleeritav
• autorid: Ron Rivest (põhiidee ja –teostus), M. Robshaw, R. Sidney, Y.Lin.
• an koostatud AES konkursi jaoks 1990te lõpul
RC6: fakteRC6: fakte
RC6: tehniline üldkirjeldusRC6: tehniline üldkirjeldus
• 128 bitist plokki vaadeldakse raundides nelja 32-bitise osana
• Kasutab 44 32bitist alamvõtit, mis leitakse võtmsjaotusalgoritmiga
• Igas raundis kasutatakse kahte alamvõtit
Raundis kasutatavad tehted:• artitmeetika modulo 232
• bitikaupa nihe (lg)• ringnihe paremale/vasakule nii nii mitu
kohta, kui mingi arv näitab
RC6: raundi algoritmi näideRC6: raundi algoritmi näide
RC6: krüptoanalüüsRC6: krüptoanalüüs
On leitud mõningaid krüptoanalüütilisi võtteid, kuid suurest võtmepikkusest tingituna ei tee need algoritmi ebaturvaliseks
On leitud mõningaid krüptoanalüütilisi võtteid, kuid suurest võtmepikkusest tingituna ei tee need algoritmi ebaturvaliseks
Wenling, Dengguo, Sihan (Hiina) 2000:
• 256 bitise võtme korral on algoritm murtav 2212 katsega
• 192 bitise võtme korral on algoritm murtav 2172 katsega
on plokkšiffer ploki pikkusega 128 bitti
võtmepikkus on 256 bitti; on olemas algoritmid, mis laiendavad 128- ja 192-bitised võtmed 256-bitiseks
autorid on Eli Biham (kaasaja ühe moodsaima krüptoanalüüsi, erinevuste krüptoanalüüsi, loojaid), R. Anderson ja L. Knudsen
on koostatud AESi konkursi jaoks
Serpent: fakteSerpent: fakte
Serpent: tehniline üldkirjeldusSerpent: tehniline üldkirjeldus• koosneb 32 raundist• enne ja pärast raunde tehakse
algpermutatsioon ja selle pöördpermutatsioon• raundi sees vaadeldakse 128 bitist plokki nelja
32-bitise veeranditena• võtmejaotusalgoritm leiab 128 32-bitilist
alamvõtit olemasolevate 32bitiste osade XORimise teel
Igas raundis tehakse• XOR vastavate alamvõtmetega• teisendamine S-bokside abil• osade veerandite ringnihked• Teatud XORid osade veerandite vahel
Serpent: toimimisskeemSerpent: toimimisskeem
• on plokkšiffer ploki pikkusega 128 bitti (8 baiti)
• võtme pikkus varieeruv: 128,198 või 256 bitti.
• autorid: B. Schneier J. Kelsey, D. Whitning, D. Wagner, C. Hall, N. Feguson.
• on koostatud 1998. aastal AESi konkursi jaoks
• on Blowfishi edasiarendus
Twofish: fakteTwofish: fakte
Twofish: tehniline üldkirjeldusTwofish: tehniline üldkirjeldus
• 128 bitist plokki vaadeldakse neljast 32-bitisest osast koosnevana
• kasutab 40 32-bitist alamvõtit, mis leitakse võtmevahetusalgoritmi abil
• 32 alamvõtit kasutatakse raundides, 8 ülejäänud alamvõtmete XORimisel enne esimest ja pärast viimast raundi (whitening)
• koosneb 16 raundist, iga raund pruugib kahte alamvõtit
Kasutab oma põhielemendina 8-baidise jupi korrutamist järgmise maatriksiga, mida kasutatakse iteratiivselt teatud seaduspärasuse kohaselt:
Twofish: võtmejaotusalgoritmTwofish: võtmejaotusalgoritm
Raundis toimub:• osade ringnihked• osade korrutamine järgmise maatriksiga
• alamvõtmete lisamine• tulemustele ringnihete tegemine ja
osade omavahel vahetamine
Twofish: raundi kirjeldusTwofish: raundi kirjeldus
Twofish: üldskeemTwofish: üldskeem
Twofish: raundi skeemTwofish: raundi skeem
Twofish: S-bokside näitedTwofish: S-bokside näited
KokkuvõteKokkuvõte
Lähitulevikus muutub kasutatavaimaks arvatavasti AES (Rijndael), sest AESi konkursi eesmärgiks oli leida nõrgaks jäänud DESile asendaja
Lähitulevikus muutub kasutatavaimaks arvatavasti AES (Rijndael), sest AESi konkursi eesmärgiks oli leida nõrgaks jäänud DESile asendaja
• Kõiki siintoodud 8 algoritmi võib praktikas kasutada ja nad on turvalised (Blowfishil leitud nõrgad võtmed ei muuda olukorda)
• Praegu on neist kasutatavaim IDEA