370 likes | 660 Views
Rinktiniai informacijos saugos skyriai. 8. Kriptografija ir kriptografijos protokolai: Maišos funkcijos, MAC funkcijos. Paskaitos tikslai. Šioje temoje nagrinėjami klausimai: Informacijos vientisumo poreikis. Pranešimo santrauka, maišos funkcijos, jų savybės.
E N D
Rinktiniai informacijos saugos skyriai 8. Kriptografija ir kriptografijos protokolai: Maišos funkcijos, MAC funkcijos
Paskaitos tikslai Šioje temoje nagrinėjami klausimai: Informacijos vientisumo poreikis. Pranešimo santrauka, maišos funkcijos, jų savybės. Maišos funkcijų naudojimas vientisumui užtikrinti. Kriptografinės maišos funkcijos. Dažniausiai naudojamų maišos funkcijų apžvalga. MD5 veikimas. SHA-1 veikimas. SHA-2 veikimas. Autentiškumo užtikrinimas: MAC. HMAC – viena iš MAC funkcijų.
Kriptografijos uždaviniai ir priemonės (priminimas) • Slaptumas (konfidencialumas, confidentiality) • Šifravimas • Vientisumas (integralumas, integrity) • Kriptografinės maišos funkcijos • Skaitmeninis parašas • Autentiškumas (tapatumo nustatymas, authenticity) • MAC • Skaitmeninis parašas • Neišsižadėjimas (nonrepudiation) • Skaitmeninis parašas
Informacijos vientisumas (priminimas) • Vientisumas(integrity) – tai garantija, kad bus išsaugotos teisingos duomenų reikšmės. Tai užtikrinama draudžiant neautorizuotiems vartotojams kokiu nors būdu pakeisti, modifikuoti, sunaikinti, arba kurti duomenis.
Pavyzdys • Algis rašo testamentą, norėdamas paskirstyti savo turtą po mirties. • Testamentas neturi būti užšifruotas, kad bet kas galėtų su juo susipažinti. • Tačiau jo vientisumas turi būti išsaugotas (Algis nenori, kad jo testamentą pakeistų kas nors kitas).
Maišos funkcija ir santrauka • Pranešimo vientisumui užtikrinti naudojama pranešimosantrauka (message digest, kartais dar vadinama Modification Detection Code (MDC)). • Pranešimo santrauka skaičiuojama, naudojant maišos funkciją. Pranešimo santrauka vadiname maišos funkcijos reikšmę. • Maišos funkcija (hash function) vadiname funkciją, kuri bet kokio baigtinio ilgio ženklų eilutei priskiria fiksuoto ilgio eilutę. • Maišos funkcijos naudojamos ne tik informacijos vientisumo patikrinimui, bet ir dokumento santraukai gauti skaitmeninio parašo schemose, slaptažodžių saugojimui, paieškos raktų formavimui duomenų bazėse ir panašiai.
Pavyzdys • Pranešimo Informacijos saugumas įvairių maišos funkcijų reikšmės: • CRC32 (32 bitai): 9468ffc5 • MD5 (128 bitai): 5ccb2201a7ee633d2b2dc1ff527d4c79 • SHA-1 (160 bitų): 09035a1b2703a81b7a86e1abe9965b5756666591 • SHA-256 (256 bitai): 7765253a2cf3996d41c2a54af094a80bfcb8f9c4b4b8d4352c3e1ab8e3c7bbfb http://www.fileformat.info/tool/hash.htm?text=Informacijos+saugumas
Santraukos ilgis yra fiksuotas Pavyzdys. Skaičiuosime duoto pranešimo MD5 maišos funkcijos reikšmę: • Tuščias pranešimas: • d41d8cd98f00b204e9800998ecf8427e • A: • 7fc56270e7a70fa81a5935b72eacbe29 • Ilgesnis pranešimas iš kelių žodžių: • cd894604746deba896568cb8f2f6f197 • 3,5 MB dydžio failas: • 9659f0218ab08598f7f53edec512479e
Maišos funkcijų savybės • Maišos funkcijos yra determinuotosios, t. y. ne atsitiktinės: • Skaičiuojant maišos reikšmę tai pačiai įvesčiai kelis kartus, visada bus gaunamas tas pats rezultatas. • Kadangi galimų įvesčių yra daugiau, negu galimų išvesčių, tai maišos funkcijos nėra injektyvios: • Gali būti, kad skirtingoms įvestims maišos reikšmės bus vienodos. Tai vadinama sutapimu (kolizija, collision).
Algis Birutė Pranešimas Pranešimas Maišos funkcija Maišos funkcija Santrauka Lygu? Santrauka Santrauka T Priimti N Atmesti Santraukos naudojimas vientisumui užtikrinti: Schema Nesaugus kanalas Saugus kanalas
Santraukos naudojimas vientisumui užtikrinti • Kadangi maišos funkcijos yra žinomos viešai, tai bet kas gali apskaičiuoti jų reikšmes. Todėl santrauka turi būti perduodama saugiu kanalu, nes kitaip atakuojantysis galės pakeisti ir pranešimą, ir santrauką, apskaičiavęs pakeisto pranešimo maišos reikšmę. • Be to, vientisumui užtikrinti bet kokios maišos funkcijos netinka. Pavyzdžiui, tarkime, kad maišos funkcija yra tokia, kad turint pranešimą ir jo santrauką, nesunkiai galima rasti kitą pranešimą su tokia pačia santrauka. Tada atakuojantysis galės pakeisti pranešimą į kitą pranešimą, ir gavėjas to nepastebės. Vientisumui užtikrinti reikia naudoti kriptografines maišos funkcijas.
Kriptografinės maišos funkcijos Kriptografine maišos funkcija vadiname maišos funkciją, kuri yra: • vienakryptė (preimage resistant, one-way): pranešimo santrauką apskaičiuoti yra lengva, o turint santrauką rasti atitinkamą pranešimą yra skaičiavimų prasme neįmanoma (computationally infeasible), • atspari sutapimams (2-nd preimage resistant,weakly collision resistant): turint pranešimą, skaičiavimų prasme neįmanoma rasti dar vieną pranešimą su ta pačia santrauka, • labai atspari sutapimams (collision resistant, strongly collision resistant): skaičiavimų prasme neįmanoma rasti sutapimą, t. y. du pranešimus su ta pačia santrauka.
Lavinos efektas • Pageidautina, kad kriptografinė maišos funkcija tenkintų savybę, vadinamą lavinos efektu (avalancheeffect). Taip kriptografijoje vadinama pageidaujama kriptografinių algoritmų (paprastai blokinių kriptosistemų ir kriptografinių maišos funkcijų) savybė, kai nežymiai pakeitus įvestį (pavyzdžiui, pakeitus vos vieną bitą), išvestis pasikeičia žymiai (pavyzdžiui, pusė visų išvesties bitų pasikeičia). • Pavyzdys. Žodžiai Taisyklė ir taisyklė skiriasi tik vienu bitu, o jų MD5 reikšmės labai skiriasi: • T – 0x54 – 0101 0100 • t – 0x74 – 0111 0100 • Taisyklė: • MD5: f26ad7627a11f62e559a9a6516dd2392 • taisyklė: • MD5: f0517727eaba12da46385b6b9418ff30
Dažniausiai naudojamos maišos funkcijos • MD5 (Message-Digest algorithm 5). • 1992 m. sukūrė Ron Rivest. • Santraukos 128 bitų ilgio. • Naudojama tokiuose plačiai naudojamuose protokoluose ir programose, kaip TLS ir SSL, SSH, PGP, S/MIME, IPsec. • UNIX šeimos operacinėse sistemose plačiai naudojama slaptažodžių santraukoms saugoti. • Įveikta 2004 metais (surasti sutapimai). • Iki tol plačiai naudota, ir vis dar naudojama. • Neberekomenduojama naudoti.
Dažniausiai naudojamos maišos funkcijos • SHA-1 (Secure Hash Algorithm 1). • SHA 1993 m. sukūrė JAV nacionalinė saugumo agentūra (National Security Agency,NSA). 1995 m. paskelbtas naujas variantas SHA-1, kuriame ištaisyta SHA buvusi klaida. Senasis variantas dabar dažnai vadinamas SHA-0. • JAV paskelbta standartu. • Santraukos 160 bitų ilgio. • Naudojama tokiuose plačiai naudojamuose protokoluose ir programose, kaip TLS ir SSL, SSH, PGP, S/MIME, IPsec. • Naudojama DSS (Digital Signature Standard) elektroninio parašo schemoje. • Kol kas neįveikta, bet 2005 metais rasta teorinių spragų. • Atsiranda poreikis ieškoti stipresnės maišos funkcijos.
Dažniausiai naudojamos maišos funkcijos • SHA-224, SHA-256, SHA-384, SHA-512. • Visos kartu vadinamos SHA-2 maišos funkcijų šeima. • 2001 m. sukūrė JAV nacionalinė saugumo agentūra. • 2002 m. JAV paskelbta standartu. • Santraukos tokio ilgio bitais, koks nurodytas maišos funkcijos pavadinime. • Kol kas nėra labai populiarios. Pagrindinės to priežastys: SHA-1 vis dar nėra įveikta, o 2012 m. planuojama paskelbti naują maišos funkcijų standartą SHA-3. • UNIX šeimos operacinėse sistemose planuojama naudoti SHA-256 ir SHA-512 slaptažodžių santraukoms saugoti vietoj MD5. • Spragų kol kas nerasta, bet ji algoritmiškai panaši į SHA-1. • Poreikis ieškoti stiprios maišos funkcijos, nepanašios į SHA-1.
Dažniausiai naudojamos maišos funkcijos • SHA-3 – taip pavadintas naujas maišos funkcijų standartas, kuriam paskelbtas konkursas 2007 metais. Nugalėtojas išrinktas 2012 metais. • SHA-3 veikia visiškai kitokiu principu, negu SHA-2. • Santraukų ilgis - 224, 256, 384 ir 512 bitai.
MD5 santraukos formavimo algoritmas (1) • Visų pirma, pradinis tekstas pailginamas iki 512 bitų kartotinio. T.y. visada atliekama tokia procedūra: • prijungiamas vienas bitas, vienetas, • prijungiama tiek nulių, kad pradinio teksto ilgis pasidarytų 512 bitų kartotinis minus 64 bitai, • likę bitai užpildomi 64 bitų sveikuoju skaičiumi, reiškiančiu pradinio teksto ilgį bitais. • Gautas tekstas suskirstomas į blokus po 512 bitų (64 baitus).
MD5 santraukos formavimo algoritmas (2) • Pagrindinis MD5 algoritmas dirba su 128 bitų būsenos eilute, padalinta į keturis 32 bitų žodžius, pažymėtus A, B, C ir D. Šie žodžiai užpildomi pradinėmis reikšmėmis. • Po to algoritmas, naudodamas pradinio teksto 512 bitų ilgio blokus, modifikuoja būsenos eilutę.
MD5 santraukos formavimo algoritmas (3) • 512 bitų ilgio blokas suskaidomas į šešiolika 32 bitų žodžių Mi. • Kiekvieno bloko apdorojimas sudarytas iš 4 panašių etapų, kurių kiekvienas sudarytas iš 16 iteracijų (taigi, iš viso 64 iteracijos). Kiekvienoje iteracijoje naudojama: • netiesinė funkcija F, • sudėties moduliu operacija, • postūmio į kairę operacija.
A A B B C C D D F Mi Ki <<<S MD5 vieno rato veikimo schema <<<s – ciklinis postūmis kairėn per s bitų, s kinta kiekvienoje iteracijoje; - suma moduliu 232; Ki – konstanta, skirtinga kiekvienai iteracijai.
MD5 santraukos formavimo algoritmas (4) Pradžioje būsenos eilutė užpildoma pradinėmis reikšmėmis: A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10 Naudojamos keturios funkcijos F, kurių argumentai yra trys 32-bitų žodžiai, o rezultatas vienas 32-bitų žodis: Pažymėjimai: reiškia logines operacijas SUMA MODULIU 2 (griežta disjunkcija, xor), IR, ARBA ir NE.
MD5 santraukos formavimo algoritmas (5) • Kiekviename etape žodžiai Mi perbėgami vis kita eilės tvarka. • Konstantos Ki kiekvienoje iteracijoje yra skirtingos. • Atlikus šiuos veiksmus visiems blokams gautos A, B, C, D reikšmės sujungiamos. Tai ir yra maišos funkcijos reikšmė.
Maišos funkcijos ir autentiškumas • Reikia saugaus kanalo santraukai perduoti. • Saugus kanalas yra ne visada. • Tinka tik vientisumui patikrinti, bet ne autentiškumui, nes nėra informacijos apie tai, kas yra pranešimo siuntėjas. • Maišos funkcijos yra viešos, todėl pranešimo santrauką apskaičiuoti galėjo bet kas. • Ką daryti? • Naudoti raktus: • Pranešimo tapatumo nustatymo kodas (Message authentication code, MAC).
MAC • Pranešimo tapatumo nustatymo kodas (MAC) yra funkcija, kurios reikšmė priklauso nuo pranešimo ir slapto rakto. • Skirtumas tarp maišos funkcijos reikšmės (pranešimo santraukos) ir MAC reikšmės yra tas, kad MAC priklauso ir nuo slapto rakto, žinomo tik siuntėjui ir gavėjui (Algiui ir Birutei). • MAC reikšmė leidžia patikrinti ir pranešimo vientisumą, ir autentiškumą.
MAC naudojimas • Tarkime, siuntėjas (Algis) ir gavėjas (Birutė) turi bendrą slaptą raktą. • Siuntėjas (Algis), naudodamas savo slaptą raktą, suskaičiuoja pranešimo MAC reikšmę, ir siunčia pranešimą bei MAC reikšmę nepatikimu kanalu gavėjui (Birutei). • Gavėjas irgi suskaičiuoja gauto pranešimo MAC reikšmę, pasinaudojęs bendru su siuntėju slaptuoju raktu, ir palygina suskaičiuotą MAC reikšmę su gauta iš siuntėjo. • Jei sutampa, tai: • pranešimas tikrai atėjo nuo Algio, nes tik jis galėjo tokią MAC reikšmę gauti, nes tik jis turi tą patį slaptą raktą, kaip Birutė, • pranešimas siunčiant nebuvo iškraipytas ar pakeistas, nes atsiųsta MAC reikšmė atitinka atsiųstą pranešimą. Jei atakuojantysis būtų pakeitęs siunčiamą pranešimą, jis būtų turėjęs pakeisti ir siunčiamą MAC reikšmę, bet jis negali naujos MAC reikšmės apskaičiuoti, nes jis nežino slapto rakto. • Jei nesutampa, tai pranešimas arba MAC reikšmė siunčiant buvo iškraipyti, arba pranešimas atėjo ne iš Algio.
MAC funkcijų sudarymo būdai MAC funkcijos gali būti sudarytos naudojant: • kriptografines maišos funkcijas: • HMAC, • blokines kriptosistemas: • CMAC, • OMAC, • CBC-MAC, • PMAC.
HMAC • HMAC (Hash-based MAC) yra vienas iš būdų sudaryti MAC, naudojant kriptografinę maišos funkciją ir slaptą raktą. • Saugumas priklauso nuo: • naudojamos kriptografinės maišos funkcijos saugumo, • santraukos ilgio, • slapto rakto ilgio ir kokybės. • HMAC reikšmės ilgis lygus naudojamos maišos funkcijos reikšmės ilgiui. • HMAC-SHA-1 ir HMAC-MD5 naudojami IPsec ir TLS protokoluose.
HMAC sudarymas Tegu: • H(·) yra kriptografinė maišos funkcija, • K slaptas raktas, papildytas iš dešinės nuliais iki maišos funkcijos bloko ilgio, • m pranešimas, • žymi sujungimą, • žymi griežtą disjunkciją (xor), • opad yra išorinis užpildas (padding) (0x5c5c5c…5c5c, vieno bloko ilgio šešioliktainė konstanta), • ipad yra vidinis užpildas (0x363636…3636, vieno bloko ilgio šešioliktainė konstanta). Tada HMAC(K,m) yra apibrėžtas taip: • HMAC(K,m) = H((K opad) H((K ipad) m)).
Literatūra • [Gol05] D. Gollmann, Computer Security, 2nd edition, John Wiley & Sons, 2005. • [PP07] Charles Pfleeger, Shari Lawrence Pfleeger. Security in Computing, Fourth Edition. Prentice Hall, 2007. • [Sta07] V. Stakėnas. Kodai ir šifrai. TEV, Vilnius, 2007, 22 skyrius. • Wikipedia.