Upload
belle
View
81
Download
0
Embed Size (px)
DESCRIPTION
Andmeturve ja krüptoloogia, V III Alternatiivseid sümmeetrilisi algoritme AESile. 18. oktoober 2011 Valdo Praust mois @ mois .ee Loengukursus IT Kolled ž is 2011. aasta sügissemestril. Krüptoalgoritmide peamised liigid. - PowerPoint PPT Presentation
Citation preview
Andmeturve ja krüptoloogia, Andmeturve ja krüptoloogia, VVIIIIII
Alternatiivseid sümmeetrilisi Alternatiivseid sümmeetrilisi algoritme AESilealgoritme AESile
Andmeturve ja krüptoloogia, Andmeturve ja krüptoloogia, VVIIIIII
Alternatiivseid sümmeetrilisi Alternatiivseid sümmeetrilisi algoritme AESilealgoritme AESile
18. oktoober 2011
Valdo Praust
Loengukursus IT Kolledžis2011. aasta sügissemestril
18. oktoober 2011
Valdo Praust
Loengukursus IT Kolledžis2011. aasta sügissemestril
Krüptoalgoritmide peamised Krüptoalgoritmide peamised liigidliigid
Krüptoalgoritmide peamised Krüptoalgoritmide peamised liigidliigid
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
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 80 bitti pikk (võimalusel tegelikult 128 bitti); 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
Salajase võtmega Salajase võtmega krüptokrüptoalgoritm: kasutusaladalgoritm: kasutusalad
Neid on kaks:
• konfidentsiaalse teabe edastamiseks üle (mitte pealtkuulamiskindlate) võrkude
• konfidentsiaalsete teabekogumite salvestamine avalikus keskkonnas sooviga teabe saajate hulka piirata
• pseudojuhusliku bitijada genereerimine turvaliseks kustutamiseks
Plokk- ja jadaPlokk- ja jadaššifridifrid
Sümmeetrilised krüptoalgoritmid jagatakse plokk- ja jadašifriteks. Plokkšifrid on palju enam levinud kui 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šifri ploki tüüpne siseehitusPlokkšifri ploki tüüpne siseehitus
• 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
Plokkšifrit iseloomustavad Plokkšifrit iseloomustavad parameetridparameetrid
KrKrüptograafia kaks põhivõtet üptograafia kaks põhivõtet raundi “raundi “ehituskividena”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
Valdav enamik plokkšifrite raundi sees tehtavaid teisendusi on nende kahe põhivõtte keerukas sümbioos
Tuntuimad esindajad, ITuntuimad esindajad, I1. AES ehk Rijndael (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
2. IDEA (128 bitine võti). Pärineb Šveitsist 1980te lõpust
3. Skipjack (80 bitine võti). Pärineb 1990te algusest NSAlt (National Security Agency), oli kaua aega (kuni 1998. aastani) salastatud
Tuntuimad esindajad, IITuntuimad esindajad, II
4. RC4 (varieeruva pikkusega võti, kuni 448 bitti). Pärineb Bruce Schneierilt 1990 ndatest
5. Blowfish (varieeruva pikkusega võti, kuni 448 bitti). Pärineb Bruce Schneierilt 1990 ndatest
6. DES (56 bitine võti). On USA standard 1977. aastast ja oli laialt maailmas kasutusel. NB! Kaasajal on juba nõrgukene
IDEA: fakteIDEA: fakte• on plokkšiffer ploki pikkusega 64 bitti (8 baiti)
• kasutab 128-bitist (16-baidist) võtit
• on koostatud Šveitsis, publitseeriti 1991
• on patenteeritud Šveitsi firma MediaCrypt poolt, patent aegub 2010-11 aastail
• 2005 publitseeriti IDEA järglane IDEA NXT (FOX), mis ei ole vana IDEA polulaarsust saavutanud
IDEA: tehniline üldkirjeldusIDEA: tehniline üldkirjeldus• On projekteeritud omal ajal vastukaaluks DESile, et
oleks võimalik kiire realiseerimine tarkvaras• 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 neli jäetakse kasutamata 7 x 8 = 56)
Seega on alamvõtmed iga kaheksa tagant omavahel seotudSeega on alamvõtmed iga kaheksa 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
• parim tulemus on 5-raundise algoritmi mõningane murdmine valitud avateksti kollisioonründega (DeMirci 2003)
Järeldus: IDEA on praktiliseks kasutamiseks turvaline algoritm (eripära: väga kaua ”turul” olnud)
Järeldus: IDEA on praktiliseks kasutamiseks turvaline algoritm (eripära: väga kaua ”turul” olnud)
IDEA: eelised ja puudusedIDEA: eelised ja puudusedEelised:• 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 PGPs)
Puudused: • on patenteeritud, kuid isiklikuks (mitteäriliseks)
kasutamiseks on vabalt pruugitav. Jaosvara (shareware) jaoks on litsensitingimused soodsad
• AES on selgelt parem
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
• plaaniti kasutada Clipperi kiibis (projekt ei realiseerunud)
• kirjeldus oli kuni 1998. 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
• võimatute erinevuste krüptoanalüüs on tehtud 1998 vähendatud raundidega variandi jaoks; (Biham, Shamir, Birjukov)
Järeldus: Skipjacki võib pidada turvaliseks algoritmiks, kuigi AESi ajastus jääb efektiivsus veidi soovida
Järeldus: Skipjacki võib pidada turvaliseks algoritmiks, kuigi AESi ajastus jääb efektiivsus veidi soovida
• Paralleelnimetused ARC4, ARCFOUR
• on jadašiffer (maailmas tuntuim jadašiffer)
• kasutab varieeruva pikkusega võtit, mis on olla pikkuses 40 kuni 128 bitti
• on koostatud Bruce Schneieri poolt 1987
• On saanud ülilaiat tuntuks WiFiga seotud protokollides WEP ja WPA
• On olemas terve RC-perekond (RC-2, RC-5, RC-6)
RC4: fakteRC4: fakte
• Kujutab (nagu kõik jadašifrit) endast pseudojuhuslikku bitijada generaatorit (samm 256 bitti)
• Siseehituses sisaldab ta kaks faasi:
A. 256 bitise pikkusega bitipermutatsiooni
S moodustamine
B. Kahe 8-bitise indeksviida moodustamine
Permutatsiooni S määrab ära võtmejaotusalgoritm algvõtmest, mis näeb välja järgmine:
RC4: siseehitusRC4: siseehitus
Leiab 256 järgmist bitiväärtust alljärgneva algoritmi ehk PRGA (pseudo-random generation algoritm) järgi:
RC4 juhuarvugeneraatori sammRC4 juhuarvugeneraatori samm
• Jadašifrite krüptoanalüütiliste võtete efektiivsust ei saa tavaliselt väljendada kujul 2N nagu plokkšifrite oma
• Flucher’i Martin’i ja Shamir’i rünne (2001): võtmejada esimesed bitid (kas 768 või 3072) pole usaldusväärsed ja seega ei tohiks neid kasutada
• Klein’i rünne: 104-bitine RC4 murtakse minutiga (128ne on väidetavalt veel murdmatu)
RC4 praktikas ja krüptoanalüüsRC4 praktikas ja krüptoanalüüs
Eeltoodu tõttu ollakse RC4 kasutamisel kaasajal tihti väga skeptilised ja kiputakse eelistama muid algoritme (nt AESi)
Eeltoodu tõttu ollakse RC4 kasutamisel kaasajal tihti väga skeptilised ja kiputakse eelistama muid algoritme (nt AESi)
• on plokkšiffer ploki pikkusega 64 bitti (8 baiti)
• kasutab varieeruva pikkusega võtit, max võtmepikkus on 448 bitti
• on koostatud Bruce Schneieri poolt 1993
• algoritmi järglane on Twofish (1990ndate lõpp, AESi üks kandidaatidest 1997-2000), mis kasutab paljusid Blowfish’i detaile
Blowfish: fakteBlowfish: fakte
Blowfish: tehniline üldkirjeldusBlowfish: tehniline üldkirjeldus
• koosneb 16 raundist, mille põhiosa on F: Feisteli struktuur (teisendus)
• kasutab 18 32-bitist alamvõtit, mis genereeritakse algvõtmest
• kasutab nelja 32-bitist S-boksi
• raundide sees jagatakse 64-bitine plokk kaheks pooleks, millest iga raundi jooksul teisendatakse ühte poolt
Blowfish: skeemBlowfish: skeem
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
• 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 raundist (round);• lõpp-permutatsioonist (final permutation)
Retrospektiivne Retrospektiivne tagasivaade tagasivaade — — DESDES
DES on, nagu teisedki plokkšifrid, iteratiivsel põhimõttel konstrueeritud algoritm, koosnedes järgmistest protseduuridest:
DESi toimimise üldskeemDESi toimimise üldskeem
DES: algpermutatsioonDES: algpermutatsioon
DES: alamvõtmete leidmineDES: 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
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
Algoritmi põhilised koostisosad on standardsed:
• substitutsioon (bitikombinatsioonide asendamine teiste kombinatsioonidega)
• permutatsioon (bittide järjekorra muutus bitijadas)
DES: alamvõtmete leidmineDES: alamvõtmete leidmine
Permuteerivad valikud (permuted choices):
DES: alamvõtmete leidmineDES: alamvõtmete leidmine
• 64-bitine plokk jagatakse kaheks 32-bitiseks pooleks
• üht 32-bitist poolt teisendatakse krüpteeriva funktsiooniga (round function), kasutades vastavat 48-bitist alamvõtit
• teise poolega ei tehta midagi
• saadud tulemus XORitakse teise poolega
• pooled vahetatakse omavahel ära
DES: raundide sisuDES: raundide sisu
• laiendatatakse 32-bitine tekst kõigepealt 48-bitiseks
• XORitakse sellele talle vastav 48-bitine osavõti • teisendatakse tulemus tagasi 32-bitiseks
48 biti pikkuse teabekogumi 32 bitisteks teisendamise tabeleid nimetatakse S-boksideks (S-box). Need moodustavad turvalisuse (matemaatilises) mõttes DES-i olulisima osa
48 biti pikkuse teabekogumi 32 bitisteks teisendamise tabeleid nimetatakse S-boksideks (S-box). Need moodustavad turvalisuse (matemaatilises) mõttes DES-i olulisima osa
DES: raundis kasutatav DES: raundis kasutatav krüpteeriv funktsioonkrüpteeriv funktsioon
Krüpteeriv funktsioon kujutab endast bititehteid, mille käigus:
DES: raundis kasutatav DES: raundis kasutatav krüpteeriv funktsioonkrüpteeriv funktsioon
DES: raundis kasutatav DES: raundis kasutatav laiendustabellaiendustabel
DES: raundis kasutatavad DES: raundis kasutatavad S-boksidS-boksid
DES: raundis kasutatavad DES: raundis kasutatavad S-boksidS-boksid
DES: raundi DES: raundi lõpp-permutatsioonlõpp-permutatsioon
On algpermutatsiooni pöördpermutatsioon (inverse initial permutation):
DES: arvutuste DES: arvutuste lõpp-permutatsioonlõpp-permutatsioon
• Keerukatest bitipermutatsioonidest tingituna on DESi tarkvararealisatsioonid tunduvalt aeglasemad kui tarkvararealisatsioonid (moodsamad algoritmid on sellest puudusest vabad)
• Kiiruste vahe riist- ja tarkvararealisatsioonide vahel on tuhandeid kordi ja enam
• Tarkvararealisatsioonid töötavad juba 10 aastakest kaasajal kettale kirjutamise/sealt lugemise kiirusega
• On tihti integreeritud (arhailisematesse) standarditesse/seadmetesse ja tehtud seeläbi “sunniviisiliseks”
DES: realisatsioonid DES: realisatsioonid
• Ammendav otsing on teostatav 256 operatsiooniga – arvestades kaasaja arvutstehnika arengut on see juba täiesti reaalne maht (suur)arvuti jaoks
• On võimalik ehitada spetsiaalne paralleelsetest kiipidest koosnev murdmismasinmasin, mis maksaks hetkel (AD 2011) alla $500 000 ja murraks ammendava otsingu teel algoritmi ca sekundiga
• Teiste hindadega murdmismasinad vastavalt kiiremad või aeglasemad
DESi ammendav otsingDESi ammendav otsing
• on teada märgatavat võitu andvaid krüptoanalüütilisi võtteid
• adaptiivselt valitud avateksti ründe korral piisab algoritmi murdmiseks erinevuste krüptoanalüüsiga 247 variandi läbivaatamisest 256
asemel (Biham, Shamir, 1991)
• lineaarne krüptoanalüüs võimaldab piirduda vaid 243 variandiga (Junod 2001)
Kurb järeldus: DES ei ole kaasajal enam turvaline praktikas kasutamiseks (juba ca 10 aastat)
Kurb järeldus: DES ei ole kaasajal enam turvaline praktikas kasutamiseks (juba ca 10 aastat)
DESi krüptoanalüüsDESi krüptoanalüüs
• Alternatiiv 1 (soovitav): pruukida teisi sümmeetrilisi krüprtoalgoritme, kus võti on pikem ja mille korral ei ole teada krüptoanalüütilisi võtteid
• Alternatiiv 2 (vaid siis, kui kammitsevad arhailised süsteemid): pruukida tavalise DESi asemel kolmekordset DESi (triple DES), kus võtmepikkus on 168 bitti ja mis on seni turvaline
DES: kuidas ja kas üldse DES: kuidas ja kas üldse praktikas rakendadapraktikas rakendada
Standardi viimane versioon FIPS PUB 46-3 (25. oktoober 1999) sätestaski vaid kolmekordse DESi kasutamise, standard tühistus ametlikult 2005
Standardi viimane versioon FIPS PUB 46-3 (25. oktoober 1999) sätestaski vaid kolmekordse DESi kasutamise, standard tühistus ametlikult 2005
Kolmekordne DESKolmekordne DES
• DESi võib erandjuhul (kolmekordsena) pruukida üksnes seal, kus algoritm on arhailise muutmatu süsteemi poolt rangelt ette antud. Kindlalt tuleks vältida tuleks DESi kasutamist koodiraamatu resiimis
• Kui arhailine seade/standard ei võimalda DESi kolmekordses resiimis pruukida, tuleb tõsiselt kaaluda sellise seadme kasutamise lõpetamist
DES: praktilisi soovitusi DES: praktilisi soovitusi
Mitmed vanemaid standardid ja tehnilised süsteemid nõuavad aga jätkuvalt DESi kasutamist
Mitmed vanemaid standardid ja tehnilised süsteemid nõuavad aga jätkuvalt DESi kasutamist
KokkuvõteKokkuvõte
Alates 2001. aastast on AES teistest mäekõrguselt üle ning lähiaastad seda vahet vast veelgi suurendavad
Alates 2001. aastast on AES teistest mäekõrguselt üle ning lähiaastad seda vahet vast veelgi suurendavad
Kõiki siintoodud algoritme (v.a. DES) võib praktikas kasutada ja nad on turvalised (Blowfishil leitud nõrgad võtmed ei muuda olukorda)
Väga palju on muid sümmeetrisi krüptoalgoritme, mis käibes ringleb ja mida on teoreetikud vahel turvaliseks pidanudNende korral tasub eelistada alati mõnda eeltoodud algoritmidest, kui seda ei piira mingi jäid tehniline standard vms
Ülejäänud algoritmid?Ülejäänud algoritmid?
Rusikareeglid teiste algoritmide jaoks:• vaja võrgutsi veenduda, et ei ole
murdmidsvõtteid• vähemalt mõned aastad peab olema
olnud avalikkusele ”uurida”
Rusikareeglid teiste algoritmide jaoks:• vaja võrgutsi veenduda, et ei ole
murdmidsvõtteid• vähemalt mõned aastad peab olema
olnud avalikkusele ”uurida”