590 likes | 828 Views
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.
E N D
Andmeturve ja krüptoloogia, VIIIAlternatiivseid sümmeetrilisi algoritme AESile 18. oktoober 2011 Valdo Praust mois@mois.ee Loengukursus IT Kolledžis 2011. aasta sügissemestril
Krü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
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 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: 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 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š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
Tuntuimad esindajad, I 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 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
Tuntuimad esindajad, II RC4 (varieeruva pikkusega võti, kuni 448 bitti). Pärineb Bruce Schneierilt 1990 ndatest Blowfish (varieeruva pikkusega võti, kuni 448 bitti). Pärineb Bruce Schneierilt 1990 ndatest DES(56 bitine võti). On USA standard 1977. aastast ja oli laialt maailmas kasutusel. NB! Kaasajal on juba nõrgukene
IDEA: 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 ü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 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
IDEA: üldskeem
IDEA: 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 seotud
IDEA: 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)
IDEA: 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 PGPs) Puudused: • on patenteeritud, kuid isiklikuks (mitteäriliseks) kasutamiseks on vabalt pruugitav. Jaosvara (shareware) jaoks on litsensitingimused soodsad • AES on selgelt parem
Skipjack: 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 ü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 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: raundid 8-16 (tüüp B)
Skipjack: 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
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: 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: siseehitus
Leiab 256 järgmist bitiväärtust alljärgneva algoritmi ehk PRGA (pseudo-random generation algoritm) järgi: RC4 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üüs 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: fakte
Blowfish: 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: 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
Retrospektiivne tagasivaade — DES DES on, nagu teisedki plokkšifrid, 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 raundist (round); • lõpp-permutatsioonist (final permutation)
DES: 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 • Algoritmi põhilised koostisosad on standardsed: • substitutsioon (bitikombinatsioonide asendamine teiste kombinatsioonidega) • permutatsioon (bittide järjekorra muutus bitijadas)
DES: alamvõtmete leidmine Permuteerivad valikud (permuted choices):
DES: raundide sisu • 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: raundis kasutatav krüpteeriv funktsioon Krüpteeriv funktsioon kujutab endast bititehteid, mille käigus: • 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
DES: raundis kasutatavad S-boksid
DES: raundis kasutatavad S-boksid
DES: raundi lõpp-permutatsioon
DES: arvutuste lõpp-permutatsioon On algpermutatsiooni pöördpermutatsioon (inverse initial permutation):
DES: realisatsioonid • 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”