1 / 58

Andmeturve ja krüptoloogia, VIII Moodsaid sümmeetrilisi krüptoalgoritme

Andmeturve ja krüptoloogia, VIII Moodsaid sümmeetrilisi krüptoalgoritme. 22. oktoober 2001 Valdo Praust vpraust@delfi.ee Loengukursus IT Kolled ž is 2002. aasta sügissemestril. S ümmeetriline ehk s alajase võtmega krüpto algoritm.

nodin
Download Presentation

Andmeturve ja krüptoloogia, VIII Moodsaid sümmeetrilisi krüptoalgoritme

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Andmeturve ja krüptoloogia, VIIIMoodsaid sümmeetrilisi krüptoalgoritme 22. oktoober 2001 Valdo Praust vpraust@delfi.ee Loengukursus IT Kolledžis 2002. aasta sügissemestril

  2. 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 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

  3. Salajase võtmega krüptoalgoritm

  4. Kasutatavamaid algoritme, I • IDEA.128 bitine võti. Pärineb Šveitsist 1980te lõpust • Skipjack. 80 bitine võti. Pärineb 1990te algusest NSAlt, oli kaua aega (kuni 1998. aastani) salastatud • Blowfish. Varieeruva pikkusega võti, võib olla pikk 78 baiti, s.o 624 bitti. Pärineb Bruce Schreierilt 1990ndatest

  5. Kasutatavamaid algoritme, II • 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 • 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

  6. Kasutatavamaid algoritme, III • 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 • 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

  7. Kasutatavamaid algoritme, IV • 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.

  8. IDEA: 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

  9. IDEA: 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

  10. 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

  11. IDEA: raundi skeem

  12. IDEA: üldskeem

  13. 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 kaks jäetakse kasutamata 7 x 8 = 56) Seega on alamvõtmed iga 8 tagant omavahel seotud

  14. 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 • arvestades algoritmi vanust, on see tähelepanuväärne tulemus Järeldus: IDEA on praktiliseks kasutamiseks turvaline algoritm

  15. 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 vabavarana levitatavas PGPs) Ainus puudus: oli patenteeritud, kuid patendi tähtaeg on saanud otsa

  16. 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 • kasutatakse Clipperi kiibis • kirjeldus oli kuni 1999. aasta juunini salastatud

  17. 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

  18. 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

  19. Skipjack: funktsiooni G skeem

  20. Skipjack: permutatsioon F (Feisteli struktuur)

  21. Skipjack: esimesed 8 raundi (tüüp A)

  22. Skipjack: raundid 8-16 (tüüp B)

  23. 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 Järeldus: Skipjacki võib pidada turvaliseks algoritmiks ning ta on IDEAst veidi kiirem Skipjack’i kasutatakse Clipperi kiibis ning ka paljudes muudes paikades

  24. Blowfish: 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

  25. Blowfish: 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

  26. Blowfish: raundi kirjeldus Divide 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

  27. 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

  28. AES 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

  29. AES 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)

  30. AES eh Rjindael: asendusbaidi faas Teksti iga bait asendatakse vastavalt ühele suurele S-boksile:

  31. AES ehk Rjindael: ridade nihutuse faas Teksti baidid vahetatakse omavahel ära, 128-bitise ploki puhul skeemiga: 192-bitise ploki puhul skeemiga:

  32. AES ehk Rjindael: ridade nihutuse faas 256-bitise ploki puhul skeemiga:

  33. AES ehk Rjindael: tulpade segamise faas Raundivõ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

  34. AES ehk Rjindael: toimimiskeem

  35. AES ehk Rjindael: võ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

  36. AES ehk Rjindael: võtmejaotusalgoritmi koodijupp

  37. AES 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)

  38. AES 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ä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

  39. MARS: fakte 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

  40. 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: tehniline üldkirjeldus

  41. MARS: esimest tüüpi raundi skeem

  42. MARS: osa esimest tüüpi raundi S-boksist

  43. MARS: teist tüüpi raundi skeem

  44. RC6: fakte 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

  45. RC6: 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

  46. RC6: raundi algoritmi näide

  47. RC6: krüptoanalüüs 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 murtav2172 katsega

  48. Serpent: fakte 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

  49. Serpent: 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

  50. Serpent: toimimisskeem

More Related