Upload
toki
View
61
Download
0
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
Rinktiniai informacijos saugos skyriai
8. Kriptografija ir kriptografijos protokolai:Maišos funkcijos, MAC funkcijos
2
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ų.
3
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
4
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.
5
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).
6
Maišos funkcija ir santrauka
Pranešimo vientisumui užtikrinti naudojama pranešimo santrauka (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.
7
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
8
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
9
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).
10
Santraukos naudojimas vientisumui užtikrinti: Schema
Pranešimas
Maišos funkcija
Santrauka
Algis Birutė
Pranešimas
Maišos funkcija Santrauka
Lygu? T
N
Priimti
Atmesti
Santrauka
Nesaugus kanalas
Saugus kanalas
11
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.
12
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.
13
Lavinos efektas
Pageidautina, kad kriptografinė maišos funkcija tenkintų savybę, vadinamą lavinos efektu (avalanche effect). 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
14
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.
15
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.
16
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.
17
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.
18
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).
19
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ę.
20
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.
21
MD5 vieno rato veikimo schemaA B C D
A B C D
<<<S
F
Mi
Ki
<<<s – ciklinis postūmis kairėn per s bitų, s kinta kiekvienoje iteracijoje; - suma moduliu 232; Ki – konstanta, skirtinga kiekvienai iteracijai.
22
MD5 santraukos formavimo algoritmas (4)
Pradžioje būsenos eilutė užpildoma pradinėmis reikšmėmis: A: 01 23 45 67B: 89 ab cd efC: fe dc ba 98D: 76 54 32 10Naudojamos 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.
23
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ė.
24
SHA-1 viena iteracija
25
SHA-1 sandara
26
SHA-2 viena iteracija
27
SHA-256 sandara
28
Pagrindinių maišos funkcijų palyginimasAlgoritmas Santrau
kos ilgis (bitais)
Būsenos dydis (bitais)
Žodžių ilgis (bitais)
Iteracijų skaičius
Saugumas
MD5 128 128 32 64 Rasta sutapimų
SHA-1 160 160 32 80 Teorinė ataka
SHA-2 SHA-224
SHA-256
224
256
256 32 64 Saugi
SHA-384
SHA-512
384
512
512 64 80 Saugi
SHA-3 224/256/
384/512
1600 64 120 Saugi
29
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).
30
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ą.
31
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.
32
MAC naudojimo schema
33
MAC funkcijų sudarymo būdai
MAC funkcijos gali būti sudarytos naudojant:
kriptografines maišos funkcijas: HMAC,
blokines kriptosistemas: CMAC, OMAC, CBC-MAC, PMAC.
34
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.
35
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)).
36
HMAC-SHA-1
37
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.