Transcript PPT

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ų.
2
Kriptografijos uždaviniai ir priemonės
(priminimas)

Slaptumas (konfidencialumas, confidentiality)


Vientisumas (integralumas, integrity)



Kriptografinės maišos funkcijos
Skaitmeninis parašas
Autentiškumas (tapatumo nustatymas, authenticity)



Šifravimas
MAC
Skaitmeninis parašas
Neišsižadėjimas (nonrepudiation)

Skaitmeninis parašas
3
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.
4
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).
5
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.
6
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):
7765253a2cf3996d41c2a54af094a80bfcb8f9c4b4
b8d4352c3e1ab8e3c7bbfb
http://www.fileformat.info/tool/hash.htm?text=Informacijos+saugumas
7
Santraukos ilgis yra fiksuotas

Pavyzdys. Skaičiuosime duoto pranešimo MD5 maišos
funkcijos reikšmę:
Tuščias pranešimas:


A:


7fc56270e7a70fa81a5935b72eacbe29
Ilgesnis pranešimas iš kelių žodžių:


d41d8cd98f00b204e9800998ecf8427e
cd894604746deba896568cb8f2f6f197
3,5 MB dydžio failas:

9659f0218ab08598f7f53edec512479e
8
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).
9
Santraukos naudojimas vientisumui
užtikrinti: Schema
Birutė
Algis
Pranešimas
Nesaugus
kanalas
Maišos funkcija
Santrauka
Saugus
kanalas
Pranešimas
Maišos funkcija
Santrauka
Santrauka
Lygu?
T
Priimti
N
Atmesti
10
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.
11
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.
12
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
13
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.
14
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.
15
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.
16
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.
17
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).
18
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ę.
19
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.
20
MD5 vieno rato veikimo schema
A
B
C
D
B
C
D
F
Mi
Ki
<<<S
A
<<<s – ciklinis postūmis kairėn per s bitų, s kinta kiekvienoje iteracijoje;
- suma moduliu 232; Ki – konstanta, skirtinga kiekvienai iteracijai.
21
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.
22
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ė.
23
SHA-1 viena iteracija
24
SHA-1 sandara
25
SHA-2 viena iteracija
26
SHA-256 sandara
27
Pagrindinių maišos funkcijų palyginimas
Algoritmas
Santrau
kos ilgis
(bitais)
Būsenos Žodžių Iteracijų Saugumas
dydis
ilgis
skaičius
(bitais) (bitais)
MD5
128
128
32
64
Rasta
sutapimų
SHA-1
160
160
32
80
Teorinė
ataka
SHA-2
SHA-224 224
SHA-256 256
256
32
64
Saugi
SHA-384 384
SHA-512 512
512
64
80
Saugi
1600
64
120
Saugi
SHA-3
224/256/
384/512
28
Maišos funkcijos ir autentiškumas

Reikia saugaus kanalo santraukai perduoti.


Tinka tik vientisumui patikrinti, bet ne autentiškumui, nes
nėra informacijos apie tai, kas yra pranešimo siuntėjas.


Saugus kanalas yra ne visada.
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).
29
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ą.
30
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
31
iškraipyti, arba pranešimas atėjo ne iš Algio.
MAC naudojimo schema
32
MAC funkcijų sudarymo būdai
MAC funkcijos gali būti sudarytos naudojant:

kriptografines maišos funkcijas:


HMAC,
blokines kriptosistemas:




CMAC,
OMAC,
CBC-MAC,
PMAC.
33
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.
34
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)).
35
HMAC-SHA-1
36
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.
37