You are on page 1of 15

Prelegerea 2

Funct ii de dispersie
2.1 Semnaturi si funct ii de dispersie
Ca o trasatur a generala a protocoalelor de semnatur a denite n prelegerea anterioara, mesajele
care puteau semnate erau toate de lungime mica. De exemplu, cu protocolul DSA se sem-
neaza un mesaj de 160 bit i si se obt ine o semnatura de 320 bit i.

In practica ns a, documentele
care trebuiesc semnate sunt mult mai lungi, putand ajunge la dimensiuni de mega-octet i. Ideea
de spargere a mesajului n blocuri si de semnare separat a ecarui bloc are numeroase inconve-
niente, legate atat de spat iu cat si de timpul foarte lung luat de autenticarea semnaturii.
Solut ia la aceasta problema este funct ia de mprastiere (dispersie) criptograca. Aceasta
funct ie care trebuie calculata rapid, transforma un mesaj de lungime arbitrara ntr-o amprenta
numerica de dimensiune xata (160 bit i n cazul DSA), care ulterior este semnata.
Daca Bob doreste sa semneze un mesaj x, el calculeaza nt ai amprenta numeric a z = h(x),
o semneaza cu y = sig
K
(z) si transmite perechea (x, y) prin canalul de comunicat ie. Oricine
poate efectua vericarea calculand amprenta z = h(x) si apoi utilizand protocolul de vericare
a semnaturii ver
K
(z, y).
2.2 Funct ii de dispersie cu coliziuni tari
Deoarece semnatura foloseste doar amprenta numerica, trebuie ca funct ia h sa satisfaca cateva
condit ii pentru a evita falsicarea.
Pentru Oscar, atacul cel mai simplu al unui mesaj (x, y) semnat de Bob
(y = sig
K
(h(x))) consta n calcularea z = h(x) si cautarea unui x

,= x cu h(x

) = h(x).
Daca Oscar reuseste, (x

, y) este un mesaj valid.


Pentru a mpiedica acest lucru, se pune condit ia ca h sa e cu coliziuni slabe.
Denit ia 2.1 O funct ie de dispersie h este cu coliziuni slabe daca, ind dat un mesaj x, este
calculabil dicil sa se obt ina un mesaj x

,= x astfel ca h(x

) = h(x).
Un alt atac posibil: Oscar cauta doua mesaje distincte x, x

cu h(x) = h(x

).

Il convinge
apoi pe Bob sa semneze mesajul x cu amprenta sa numeric a h(x) si obt ine y. Atunci
perechea (x

, y) este o semnatur a autentic a.


Acest procedeu face necesara introducerea unei alte denit ii a coliziunii.
19
20 PRELEGEREA 2. FUNCT II DE DISPERSIE
Denit ia 2.2 O funct ie de dispersie h este cu coliziuni tari daca este calculabil dicil sa se
obt in a doua mesaje distincte x

, x cu h(x

) = h(x).
Evident, o funct ie cu coliziuni tari este si cu coliziuni slabe.
Un al treilea tip de atac care poate init iat de Oscar se bazeaza pe observat ia ca este
adesea posibil sa se obt ina aleator falsicari ale amprentelor numerice. Daca Oscar obt ine
astfel o semnatur a valida a amprentei z, el poate cauta un mesaj x astfel ca z = h(x).
Pentru evitarea acestui atac este de dorit ca funct ia h sa e neinversabil a (n sensul folosit
la sistemele de criptare cu cheie publica).
Denit ia 2.3 O funct ie de dispersie h este neinversabila daca, ind data o amprenta numerica
z, este calculabil dicil sa se gaseasca un mesaj x astfel ca h(x) = z.
Teorema 2.1 Fie X, Z mult imi nite [X[ 2 [Z[ (s-a notat [A[ cardinalul mult imii A) si
h : X Z o funct ie de dispersie. Se presupune ca A este un algoritm de inversare a
lui h. Exista atunci un algoritm probabilist Las V egas care gaseste o coliziune pentru h cu
probabilitate cel put in
1
2
.
Demonstrat ie: Fie A algoritmul de inversiune pentru h, de forma unui oracol A care admite la
intrare o amprent a z Z si ntoarce un element A(z) X astfel ca h(A(z)) = z.
Sa consideram algoritmul urmator (notat cu B):
1. Fie x X ales aleator;
2. z h(x);
3. x
1
A(z)
4. if x
1
,= x then x
1
si x formeaza o coliziune pentru h (succes)
else sfarsit (esec)
B este un algoritm probabilist de tip Las V egas, deoarece ntoarce o coliziune sau nici un
raspuns. Deci, este sucient sa calculam probabilitatea de succes.
Pentru orice x, x
1
X se deneste x x
1
daca h(x) = h(x
1
).
Este usor de demonstrat ca este relat ie de echivalent a. Denim
[x] = x
1
[x
1
X, x x
1

Fiecare clasa de echivalent a [x] este formata din mesaje care produc aceeasi amprenta ca si
x. Numarul de clase de echivalent a este deci cel mult [Z[. Fie C = X/ mult imea claselor de
echivalent a.
Presupunem ca x este ales din X la pasul 1. Pentru acest mesaj pot apare la pasul 3 [[x][
valori x
1
posibile.[[x][ 1 din ele sunt diferite de x si duc la reusita algoritmului n pasul 4.
Pentru o alegere particulara a lui x, probabilitatea de succes este deci
[[x][ 1
[[x][
.
2.3. ATACUL NASTERILOR 21
Probabilitatea de succes a algoritmului este calculata ca medie peste toate alegerile posibile
ale lui x:
Pr
succes
=
1
[X[

xX
[[x][ 1
[[x][
=
1
[X[

cC

xc
[c[ 1
[c[
=
1
[X[

cC
([c[ 1)
=
1
[X[
(

cC
[c[

cC
1)
[X[ [Z[
[X[

[X[ [X[/2
[X[
=
1
2
.
Probabilitatea de succes este deci cel put in
1
2
. 2
Din aceasta teorema se deduce urmatorul rezultat:
Lema 2.1 Daca o funct ie de dispersie este cu coliziuni tari, atunci ea este neinversabila.
Rezulta ca este sucient ca o funct ie de dispersie sa e cu coliziuni tari, aceasta implicand
celelalte doua proprietat i de securitate. De aceea, n continuare ne vom margini la studiul
coliziunilor tari.
2.3 Atacul nasterilor
Vom pune aici n evident a o condit ie de securitate, necesara relativ la lungimea amprentelor
(sau, echivalent, la marimea lui Z). Ea rezulta dintr-o metoda simpla de obt inere a coliziunilor,
numit a atacul nasterilor; numele provine de la paradoxul nasterilor care - reamintim - spune ca
probabilitatea ca dintr-o mult ime aleatoare de 23 persoane sa e doua cu aceeasi zi de nastere,
este cel put in 1/2.
Fie X, Z doua mult imi nite, [X[ 2[Z[ si e h : X Z o funct ie de dispersie. Notam
m = [X[, n = [Z[. Este usor de aratat ca exista cel put in n coliziuni, dar problema este de a le
pune n evident a. O metoda simpla consta n a extrage aleator k mesaje distincte x
1
, . . . , x
k
,
de a calcula z
i
= h(x
i
), 1 i k si de a cauta daca exista o coliziune printre ele (ordonand z
i
de exemplu).
Cum x
i
sunt extrase aleator, se poate considera ca si z
i
sunt elemente aleatoare (nu neaparat
distincte) din Z. Probabilitatea ca din k extrageri, toate elementele z
i
sa e distincte, se
determina astfel:
Numerele z
i
se ordoneaza; e z
1
, . . . , z
k
aceasta ordine. Prima extragere z
1
este total
aleatoare; probabilitatea ca z
2
,= z
1
este 1 1/n, probabilitatea ca z
3
sa e distincta de z
1
si z
2
este 1 2/n, etc.
Probabilitatea ca sa nu e k coliziuni va deci:
_
1
1
n
__
1
2
n
_
. . .
_
1
k 1
n
_
=
k1

i=1
_
1
i
n
_
Daca x este un numar real sucient de mic, atunci se poate folosi aproximarea (rezultata din
dezvoltarea n serie Mac Laurin) 1 x e
x
. Vom obt ine atunci:
k1

i=1
_
1
i
n
_

k1

i=1
e
i
n
= e
k(k1)
2n
.
22 PRELEGEREA 2. FUNCT II DE DISPERSIE
Probabilitatea ca sa existe cel put in o coliziune este atunci 1 e
k(k1)
2n
. Notand aceasta pro-
babilitate cu , se obt ine ecuat ia n k : e
k(k1)
2n
1 , care conduce la k
2
k 2n ln
1
1
.
Daca se ignora termenul k, se obt ine k
_
2n ln
1
1
.
Luand acum = 0.5, se ajunge la k 1.17

n.
De remarcat ca alte valori pentru conduc la valori diferite pentru k, dar multiplicate
totdeauna cu un factor constant

n.
Exemplul 2.1 Daca X este mult imea int elor umane, Z este mult imea celor 365 zile dintr-un
an (nebisect) iar h(x) reprezinta data de nastere a persoanei x, se obt ine paradoxul nasterilor.

In aproximarea de sus, cu n = 365, avem k 22.5. Deci, printre 23 persoane alese ntamplator,
probabilitatea ca doua sa aiba aceeasi zi de nastere este 1 1/2.
Acest tip de atac impune o margine inferioara asupra lungimii amprentelor. O amprent a
de 40 bit i este vulnerabila la un atac al nasterilor folosind numai 2
20
(aproximativ un milion)
mesaje aleatoare. Se sugereaza de aceea folosirea de amprente de 128 bit i (aici atacul nasterilor
va cere 2
64
calcule). Alegerea de 160 bit i n cazul DSS (DSA) este deci judicioasa.
2.4 Funct ii de dispersie si logaritmi discret i
Funct ia de dispersie prezentat a n aceasta sect iune a fost denita n [2]. Ea nu este sucient de
rapida pentru aplicat ii practice dar constituie un exemplu foarte simplu de funct ie de dispersie
care admite o proba de securitate pe o ipoteza rezonabila. Forma sa este:
Fie p un numar prim mare astfel ca q = (p 1)/2 sa e de asemenea prim.
Fie , Z
p
doua elemente primitive.
Valoarea log

nu este publica si se presupune ca este dicil de obt inut.


Funct ia de dispersie Chaum-van Heijst-Ptzmann h : Z
q
Z
q
Z

p
este denita prin:
h(x
1
, x
2
) =
x
1

x
2
(mod p)
Teorema 2.2 Fiind data o coliziune pentru funct ia de dispersie Chaum-van Heijst-Ptzmann,
calculul lui log

este usor.
Demonstrat ie: Sa presupunem ca a aparut o coliziune
h(x
1
, x
2
) = h(x
3
, x
4
) cu (x
1
, x
2
) ,= (x
3
, x
4
).
Avem deci
x
1

x
2

x
3

x
4
(mod p), sau
x
1
x
3

x
4
x
2
(mod p).
Vom nota d = (x
4
x
2
, p1). Cum p1 = 2q cu q num ar prim, vom avea d 1, 2, q, p1.
Sa trecem n revista ecare din aceste patru posibilitat i.
d = 1 Notand y = (x
4
x
2
)
1
(mod p 1), vom avea

(x
4
x
2
)y
(mod p)
(x
1
x
3
)y
(mod p)
si se poate calcula logaritmul discret log

= (x
1
x
3
)(x
4
x
2
)
1
(mod p 1).
d = 2 Deoarece p 1 = 2q, q prim, vom avea (x
4
x
2
, q) = 1. Notam y = (x
4

x
2
)
1
(mod q), deci (x
4
x
2
)y = kq + 1 pentru un num ar ntreg k. Calculand, se obt ine
2.5. EXTENSIA UNEI FUNCT II DE DISPERSIE 23

(x
4
x
2
)y

kq+1
(mod p) (1)
k
(mod p) (mod p)
deoarece
q
1 (mod p).
Deci,
(x
1
x
3
)y

(x
4
x
2
)y
(mod p) (mod p).
De aici se deduce log

= (x
1
x
3
)(x
4
x
2
)
1
(mod p 1), sau
log

= (x
1
x
3
)(x
4
x
2
)
1
+q (mod p 1).
Se poate verica usor care din aceste doua rezultate este cel corect.
d = q Din 0 x
2
q 1, 0 x
4
q 1 rezulta (q 1) x
4
x
2
q 1.
Este deci imposibil sa avem (x
4
x
2
, p 1) = q.
d = p 1 Aceasta se poate numai daca x
4
= x
2
. Avem atunci

x
1

x
2

x
3

x
2
(mod p), deci
x
1

x
3
(mod p), de unde rezulta x
1
= x
3
.
S-a ajuns la (x
1
, x
2
) = (x
3
, x
4
), ceea ce contrazice ipoteza.

In concluzie, h este cu coliziuni tari, depinzand de calculul lui log

n Z
p
. 2
Exemplul 2.2 Sa luam p = 12347, deci q = 6173, = 2, = 8461.
Presupunem ca s-a gasit coliziunea
5692

144

212

4214
(mod 12347).
Deci x
1
= 5692, x
2
= 144, x
3
= 212, x
4
= 4214. Avem (x
4
x
2
, p 1) = 2
si se ncepe calculul:
y = (x
4
x
2
)
1
(mod q) = (4214 144)
1
(mod 6173) = 4312.
Calculam apoi y

= (x
1
x
3
)y (mod p 1) = (5692 212)4312 (mod 12346) = 11862.
Se obt ine log

, y

+q (mod p 1).

Intr-adevar,
y

(mod p) = 2
11862
(mod 12346) = 9998, deci
log

= y

+q (mod p 1) = 11862 + 6173 (mod 12346) = 5689.


Se verica imediat ca 2
5689
8461 (mod 12347).
2.5 Extensia unei funct ii de dispersie
Ideile acestui paragraf sunt bazate pe lucrarea [3].

In [7] se aa construita o idee asemanatoare.
Sa vedem cum poate extinsa o funct ie de dispersie pe un domeniu innit, pastr and propri-
etatea de a cu coliziuni tari; avantajul unei asemenea situat ii este acela ca se pot semna
mesaje de lungime arbitrara.
Fie h : Z
m
2
Z
t
2
o funct ie de dispersie cu coliziuni tari, cu m t + 1. Scopul este de a
construi o funct ie h

: X Z
t
2
, unde X =

_
i=m
Z
i
2
.
Sa consideram la nceput cazul m t + 2.
Fiecare element al lui X este codicat printr-un sir de bit i; vom nota lungimea sirului x cu
[x[, iar concatenarea a doua siruri x, y X cu x|y. Fie [x[ = n m; atunci x se poate scrie
sub forma:
x = x
1
|x
2
| . . . |x
k
unde [x
1
[ = [x
2
[ = . . . = [x
k1
[ = mt 1, [x
k
[ = mt 1 d, 0 d mt 2.

In acest fel se obt ine k =


_
n
mt 1
_
. Denim funct ia h

(x) folosind algoritmul urmator:


24 PRELEGEREA 2. FUNCT II DE DISPERSIE
1. for i := 1 to k 1 do y
i
x
i
2. y
k
x
k
|0
d
3. y
k+1
[d]
2
(reprezentarea binara a lui d pe mt 1 bit i).
4. g
1
h(0
t+1
|y
1
)
5. for i = 1 to k do g
i+1
h(g
i
|1|y
i+1
)
6. h

(x) g
k+1
Notam y(x) = y
1
|y
2
| . . . |y
k+1
. y
k
se obt ine completand x
k
la dreapta cu d zerouri, astfel ca
toate blocurile y
i
(1 i k) sa e de lungime mt 1. De asemenea, la pasul 3, y
k+1
este
completat la stanga cu zerouri pentru a obt ine lungimea mt 1.
Pentru dispersia lui x se construieste y(x) apoi se trateaza iterativ blocurile y
1
, y
2
, . . . , y
k+1
.
Din construct ia lui y
k+1
se asigura injectivitatea aplicat iei y.
Teorema 2.3 Fie h : Z
m
2
Z
t
2
(m t + 2) o funct ie de dispersie cu coliziuni tari. Funct ia
h

_
i=m
Z
i
2
Z
t
2
denita prin algoritmul de mai sus, este de asemenea cu coliziuni tari.
Demonstrat ie: Sa presupunem prin absurd ca exista x ,= x

astfel ca h

(x) = h

(x

). Vom arata
cum, plecand de la aceasta coliziune se poate construi n timp polinomial o coliziune pentru h,
lucru imposibil deoarece h este cu coliziuni tari.
Fie y(x) = y
1
|y
2
| . . . |y
k+1
si y(x

) = y

1
|y

2
| . . . |y

s+1
, unde x si x

sunt completate la pasul


2 cu d respectiv d

zerouri. S-a notat cu g


1
, . . . , g
k+1
respectiv g

1
, . . . , g

s+1
valorile calculate de
pasii 4 si 5. Apar doua cazuri:
Cazul 1. [x[ , [x

[ (mod mt 1).
Atunci d ,= d

, y
k+1
,= y

s+1
. Avem:
h(g
k
|1|y
k+1
) = g
k+1
= h

(x) = h

(x

) = g

s+1
= h(g

s
|1|y

s+1
),
care este o coliziune pentru h deoarece y
k+1
,= y

s+1
.
Cazul 2. [x[ [x

[ (mod mt 1)
Aici trebuiesc studiate doua subcazuri:
Cazul 2a. [x[ = [x

[. Atunci k = s, y
k+1
= y

s+1
. Similar primului caz,
h(g
k
|1|y
k+1
) = g
k+1
= h

(x) = h

(x

) = g

k+1
= h(g

k
|1|y

k+1
).
Daca g
k
,= g

k
, s-a aat o coliziune pentru h. Sa presupunem deci ca g
k
= g

k
. Vom avea:
h(g
k1
|1|y
k
) = g
k
= g

k
= h(g

k1
|1|y

k
).
Fie s-a gasit o coliziune pentru h, e g
k1
= g

k1
, y
k
= y

k
. Daca nu a fost coliziune, se
poate continua pana la h(0
t+1
|y
1
) = g
1
= g

1
= h(0
t+1
|y

1
).
Cum y
1
,= y

1
nseamn a coliziune pentru h, sa presupunem y
1
= y

1
. Vom avea y
i
= y

i
(1
i k + 1) deci y(x) = y(x

).
Cum aplicat ia y este injectiva, rezulta x = x

, ceea ce contrazice ipoteza.


Cazul 2b. [x[ ,= [x

[.
2.5. EXTENSIA UNEI FUNCT II DE DISPERSIE 25
Se poate presupune, fara a micsora generalitatea, ca [x[ < [x

[, deci s > k. Vom proceda


similar cu subcazul 2a. Daca nu s-au gasit coliziuni pentru h, se va obt ine sirul de egalitat i
h(0
t+1
|y
1
) = g
1
= g

sk+1
= h(g

sk
|1|y

sk+1
).
Primii t+1 bit i din 0
t+1
|y
1
cont in numai zerouri n timp ce primii t+1 bit i din g

sk
|1|y

sk+1
cont in un 1. Deci s-a gasit o coliziune pentru h.
Rezulta ca pentru toate cazurile studiate, s-a ajuns la coliziuni. 2
Algoritmul pe care s-a construit toata demonstrat ia de sus este adevarat numai daca
m t + 2. Ramane cazul m = t + 1; aici se va realiza o construct ie diferita pentru h

.
Ca anterior, e [x[ = n m.
Vom ncepe prin a codica x folosind funct ia f denita f(0) = 0, f(1) = 01.
Construct ia lui h

se face pe baza urmatorului algoritm:


1. y y
1
|y
2
| . . . |y
k
= 11|f(x
1
)|f(x
2
)| . . . |f(x
n
) (y
i
Z
2
)
2. g
1
h(0
t
|y
1
)
3. for i = 1 to k 1 do g
i+1
h(g
i
|y
i+1
)
4. h

(x) g
k
Codicarea x y = y(x) din pasul 1 veric a cateva proprietat i importante:
y este injectiva
y este libera de prex: nu exista x, x

, z astfel ca y(x) = z|y(x

)
Teorema 2.4 Fie h : Z
t+1
2
Z
t
2
o funct ie de dispersie cu coliziuni tari.
Funct ia h

_
i=t+1
Z
i
2
Z
t
2
este de asemenea cu coliziuni tari.
Demonstrat ie: Sa presupunem prin absurd ca exista x ,= x

cu h

(x) = h

(x

). Vom avea
y(x) = y
1
y
2
. . . y
k
, y(x

) = y

1
y

2
. . . y

s
.
Apar doua cazuri:
Cazul 1. k = s Similar cu demonstrat ia teoremei anterioare, se gaseste e o coliziune
pentru h, e y(x) = y(x

), ceea ce duce la x = x

, contradict ie.
Cazul 2. k ,= s Vom considera situat ia s > k. Modul de abordare a acestui caz este
similar cu cele de mai sus. Presupunand ca nu s-au gasit coliziuni pentru h, se obt ine sirul de
identit at i
y
k
= y

s
, y
k1
= y

s1
, . . . y
1
= y

sk+1
,
ceea ce contrazice faptul ca codicarea este libera de prex.
Deci h este cu coliziuni tari. 2
Sa rezumam ntr-o singura teorema rezultatele obt inute:
Teorema 2.5 Fie h : Z
m
2
Z
t
2
, (m t + 1) o funct ie de dispersie cu coliziuni tari. Exista
atunci o funct ie de dispersie cu coliziuni tari h

_
i=m
Z
i
2
Z
t
2
.
Numarul de calcule al lui h pentru efectuarea unei aplicari a lui h

este cel mult


1 +
_
n
mt 1
_
daca m t + 2, 2n + 2 daca m = t + 1,
unde [x[ = n.
26 PRELEGEREA 2. FUNCT II DE DISPERSIE
2.6 Funct ie de dispersie bazata pe criptare
Ideea acestui paragraf este luata din [9].
Pan a acum, metodele de construct ie ale funct iilor de dispersie studiate sunt prea lente
pentru o utilizare practica. O alta idee consta n folosirea unui sistem de criptare pentru a
genera o funct ie de dispersie.
Sa presupunem ca (T, (, /, c, T) este un sistem de criptare.

In acest paragraf vom lua
T = ( = / =Z
n
2
. Pentru evitarea atacului nasterilor se va lua n 128 (deci nu se poate folosi
DES).
Fie sirul de bit i x = x
1
|x
2
| . . . |x
k
, x
i
Z
n
2
1 i k. Daca numarul de bit i nu este
multiplu de n, x se va completa ca n paragraful anterior; pentru simplicare, nu vom trata
aici aceasta chestiune.
Ideea construct iei constan xarea unei valori init iale g
0
si calcularea iterativ a lui g
1
, g
2
, . . . ,
g
k
astfel ca g
i
= f(x
i
, g
i1
), unde f este o funct ie care utilizeaza regulile de criptare. Rezultatul
nal al dispersiei este amprenta h(x) = g
k
.
Au fost propuse mai multe funct ii de dispersie, unele din ele ind sparte (independent de
sistemul de criptare utilizat).

In acest moment, se pare ca urmatoarele patru cazuri asigura o
anumit a sigurant a:
g
i
= e
g
i1
(x
i
) x
i
g
i
= e
g
i1
(x
i
) x
i
g
i1
g
i
= e
g
i1
(x
i
g
i1
) x
i
g
i
= e
g
i1
(x
i
g
i1
) x
i
g
i1
2.7 Funct ia de dispersie MD4
Aceasta funct ie a fost introdusa de Rivest n 1990 ([10]), iar n 1991 a fost prezentat a o ver-
siune mai sigura, MD5. Standardul de dispersie, SHS (Secure Hash Standard), bazat pe
aceleasi idei a fost publicat n Federal Register din 31 ianuarie 1992 si adoptat ca standard la
11 mai 1993 ([8]). La 11 iulie 1994 a fost facut a o mica modicare pentru a corija o slabiciune
tehnica (ment inuta secreta). Toate aceste funct ii de dispersie au avantajul de a foarte rapide,
deci practice n semnarea de mesaje lungi.

In acest paragraf vom descrie MD4, cu modicarile aduse n MD5 si SHS.


Fiind dat un sir de bit i x, se deneste tabloul M = M
0
M
1
. . . M
N1
cu ecare M
i
(numit
cuvant) de lungime 32 si N 0 (mod 16).
M este construit folosind algoritmul urmator:
1. d (447 [x[) (mod 512)
2. s reprezentarea binara a lui [x[ (mod 2
64
), [s[ = 64
3. M = x|1|0
d
|s
Sa descriem acum calculul amprentei numerice, codicata pe 128 bit i. Algoritmul de gene-
rare este:
2.7. FUNCT IA DE DISPERSIE MD4 27
1. A 67452301 (hex) B efcdab89 (hex)
C 98badcfe (hex) D 10325476 (hex)
2. for i = 0 to N/16 1 do
3. for j = 0 to 15 do X
j
M
16i+j
4. AA A BB B CC C DD D
5. Etapa 1
6. Etapa 2
7. Etapa 3
8. A A +AA B B +BB
C C +CC D D +DD
enddo
enddo
Amprenta numeric a este n nal concatenarea celor patru cuvinte A, B, C, D (numite re-
gistre). Algoritmul mparte tabelul M n siruri de cate 16 cuvinte consecutive, carora le aplica
trei etape de transformari (ca la DES). Adunarile de la pasul 8 sunt efectuate modulo 2
32
.
Cele trei etape de transformari sunt distincte (spre deosebire de DES, unde cele 16 etape
erau identice).
Fie , doua cuvinte de lungimi egale. Etapele de transformari vor folosi urmatoarele
operat ii:
si logic bit cu bit (AND)
sau logic bit cu bit (OR)
sau exclusiv bit cu bit (XOR)
complementara bit cu bit (NOT)
+ suma modulo 2
32
s rotirea circulara cu s bit i spre stanga (1 s 31)
Aceste operat ii sunt extrem de rapide si pot implementate direct t in and cont de arhitectura
calculatorului. Sa detaliem put in acest lucru.
Fie a
1
a
2
a
3
a
4
un cuvant de patru octet i si a
i
un num ar ntreg din intervalul [0, 255].


Intr-o arhitectura big-endian (o stat ie SPARK de exemplu), un cuvant reprezint antregul
a
1
2
24
+a
2
2
16
+a
3
2
8
+a
4


Intr-o arhitectura little-endian (cum este familia Intel 80xxx), un cuvant reprezinta
ntregul a
4
2
24
+a
3
2
16
+a
2
2
8
+a
1
Construct ia standard a lui MD4 a folosit o arhitectura little-endian. Cum amprenta nu-
merica trebuie sa e independenta de arhitectura calculatorului folosit, la o implementare a lui
MD4 pe un calculator big-endian, adunarile se vor deni astfel:
1. Se inter-schimb a x
1
x
4
, x
2
x
3
, y
1
y
4
, y
2
y
3
2. Se calculeaza Z = X +Y (mod 2
32
)
28 PRELEGEREA 2. FUNCT II DE DISPERSIE
3. Se inter-schimb a z
1
z
4
, z
2
z
3
Cele trei etape de construct ie ale funct iei de dispersie MD4 folosesc trei funct ii f, g si respectiv
h, denite astfel:
f(X, Y, Z) = (X Y ) ((X) Z)
g(X, Y, Z) = (X Y ) (X Z) (Y Z)
h(X, Y, Z) = X Y Z
Descrierile celor trei etape sunt:
Etapa 1:
1. A (A +f(B, C, D) +X[0]) 3 9. A (A +f(B, C, D) +X[8]) 3
2. D (D +f(A, B, C) +X[1]) 7 10. D (D +f(A, B, C) + X[9]) 7
3. C (C +f(D, A, B) +X[2]) 11 11. C (C +f(D, A, B) + X[10]) 11
4. B (B +f(C, D, A) +X[3]) 19 12. B (B +f(C, D, A) +X[11]) 19
5. A (A +f(B, C, D) +X[4]) 3 13. A (A +f(B, C, D) +X[12]) 3
6. D (D +f(A, B, C) +X[5]) 7 14. D (D +f(A, B, C) + X[13]) 7
7. C (C +f(D, A, B) +X[6]) 11 15. C (C +f(D, A, B) + X[14]) 11
8. B (B +f(C, D, A) +X[7]) 19 16. B (B +f(C, D, A) +X[15]) 19
Etapa 2:
1. A (A +g(B, C, D) +X[0] +P) 3 9. A (A +g(B, C, D) +X[2] +P) 3
2. D (D+g(A, B, C) +X[4] +P) 5 10. D (D+g(A, B, C) +X[6] +P) 5
3. C (C +g(D, A, B) +X[8] +P) 9 11. C (C +g(D, A, B) +X[10] +P) 9
4. B (B+g(C, D, A)+X[12]+P) 13 12. B (B+g(C, D, A)+X[14]+P) 13
5. A (A+g(B, C, D) +X[1] +P) 3 13. A (A+g(B, C, D) +X[3] +P) 3
6. D (D+g(A, B, C) +X[5] +P) 5 14. D (D+g(A, B, C) +X[7] +P) 5
7. C (C +g(D, A, B) +X[9] +P) 9 15. C (C +g(D, A, B) +X[11] +P) 9
8. B (B+g(C, D, A)+X[13]+P) 13 16. B (B+g(C, D, A)+X[15]+P) 13
unde s-a notat P = 5A827999.
Etapa 3:
1. A (A +h(B, C, D) + X[0] +P) 3 9. A (A +h(B, C, D) +X[1] +P) 3
2. D (D +h(A, B, C) +X[8] +P) 9 10. D (D +h(A, B, C) +X[9] +P) 9
3. C (C+h(D, A, B) +X[4] +P) 11 11. C (C+h(D, A, B) +X[5] +P) 11
4. B (B+h(C, D, A)+X[12]+P) 15 12. B (B+h(C, D, A)+X[13]+P) 15
5. A (A +h(B, C, D) + X[2] +P) 3 13. A (A +h(B, C, D) +X[3] +P) 3
6. D (D+h(A, B, C) +X[10] +P) 9 14. D (D+h(A, B, C) +X[11] +P) 9
7. C (C+h(D, A, B) +X[6] +P) 11 15. C (C+h(D, A, B) +X[7] +P) 11
8. B (B+h(C, D, A)+X[14]+P) 15 16. B (B+h(C, D, A)+X[15+P]) 15
unde P = 6ED9EBA1.
La put in timp dupa construct ia sa, s-a observat o slabiciune atunci cand se omitea prima
sau a treia etapa. De aceea, n 1991 se propune MD5 ca o versiune mbun atat it a. MD5
foloseste patru etape n loc de trei, cu pret ul unei viteze mai lente.
SHS este mai complex si mai lent decat primele doua. Nu s-a dat niciodata o descriere
completa a sa, dar s-au indicat cateva modicari aduse fat a de sistemul MD4:
SHS este construit pentru o arhitectura big-endian;
2.8. FUNCT IA DE DISPERSIE SHA1 29
SHS utilizeaza cinci registre si produce o amprent a de 160 bit i;
SHS trateaza iterativ 16 cuvinte (ca MD4), dar dupa ce le-a extins pe 80 cuvinte; n
acest fel, ecare din cele 80 cuvinte este prelucrat o singura data.
Se utilizeaza o funct ie de expansiune denita prin procedeul urmator:
Fie X
0
, X
1
, . . . , X
15
o secventa de 16 cuvinte. La ea se adauga nca 64 cuvinte, folosind relat ia
de recurent a:
X
j
= X
j3
X
j8
X
j14
X
j16
16 j 79
Revizuirea lui SHS s-a referit la aceasta funct ie de expansiune. Relat ia precedent a s-a
nlocuit cu:
X
j
= (X
j3
X
j8
X
j14
X
j16
) 1 16 j 79
2.8 Funct ia de dispersie SHA1
Deoarece coliziunile din funct iile de compresie MD4 si MD5 au fost descoperite si facute
publice, a fost nevoie de algoritmi noi de dispersie.
SHA (Secure Hash Algoritm) este o varianta a lui MD4, propus ca standard de NIST n
1993 si adoptat sub titulatura ociala FIPS 180. SHA1 este o varianta notata FIPS 180 1
care corecteaza o mica slabiciune din SHA.
Fie x sirul care trebuie prelucrat. O condit ie preliminara este [x[ 2
64
1. Prima parte a
algoritmului este identic a cu cea de la MD4:
1. d (447 [x[) (mod 512)
2. s reprezentarea binara a lui [x[ (mod 2
64
), [s[ = 64
3. M = x|1|0
d
|s
Daca [s[ < 64, se adauga zerouri la stanga pana se ajunge la egalitate. Blocul nal M (care
intr a n algoritmul de dispersie) are o lungime divizibila cu 512; l vom scrie ca o concatenare
de n blocuri, ecare de 512 bit i.
y = M
1
|M
2
| . . . |M
n
Denim funct iile f
0
, f
1
, . . . , f
79
astfel:
f
t
(B, C, D) =
_

_
(B C) ((B) D) 0 t 19
B C D 20 t 39
(B C) (B D) (C D) 40 t 59
B C D 60 t 79
Deci ecare funct ie f
t
ia trei cuvinte la intrare si scoate un cuvant la iesire.
Se mai denesc cuvintele constante K
0
, K
1
, . . . , K
79
folosite n calculul lui SHA1(x) astfel:
K
t
=
_

_
5A827999 0 t 19
6ED9EBA1 20 t 39
8F1BBCDC 40 t 59
CA62C1D6 60 t 79
30 PRELEGEREA 2. FUNCT II DE DISPERSIE
Algoritmul de compresie SHA1(x) este:
1. H
0
67452301, H
1
EFCDAB89, H
2
98BADCFE,
H
3
10325476, H
4
C3D2E1F0.
2. for i 1 to n do
2.1 Fie M
i
= W
0
|W
1
| . . . |W
15
, W
i
cuvant.
2.2 for t 16 to 79 do
W
t
W
t3
W
t8
W
t14
W
t16
1
2.3 A H
0
, B H
1
, C H
2
, D H
3
, E H
4
2.4 for t 0 to 79 do
2.4.1 temp (A 5) +f
t
(B, C, D) + E +W
t
+K
t
2.4.2 E D, D C, C (B 30), B A
2.4.3 A temp
2.5 H
0
H
0
+A, H
1
H
1
+B, H
2
H
2
+C, H
3
H
3
+D, H
4
H
4
+E
3. Iesire: H
0
|H
1
|H
2
|H
3
|H
4
.
Algoritmul de compresie SHA1 formeaza pentru ecare bloc de 512 bit i un bloc de 160 bit i.
Algoritmul original SHA avea o slabiciune care permitea aarea coliziunilor n aproximativ
2
61
pasi. Versiunea SHA1 este mai ecient a, atacul nasterilor conducand la aarea coliziunilor
abia dupa 2
80
pasi, ceea ce n momentul actual este considerat sucient de sigur.
La 30 mai 2001 NIST propune o noua versiune SHA2; aceasta include SHA1 precum
si alte trei funct ii de dispersie SHA
256
, SHA
384
, SHA
512
. La ultimele trei funct ii, indicele
256, 384, 512 se refera la marimile mesajului comprimat.
2.9 Datare
Problema datarii a fost introdusa si studiata n [1] si [6]. Ea se refera la faptul ca, datorita
timpului lung cat poate utilizat un document, orice semnatur a poate sparta. Odata ce Oscar
descopera algoritmul de semnatura, este pusa n discut ie autenticitatea tuturor mesajelor.
Un alt scenariu nedorit este urmatorul: Bob semneaza un mesaj, apoi publica secretul
semnaturii si si-o reneaga declarand ca a fost construita de altcineva.
Toate aceste probleme pot rezolvate daca se introduce si un procedeu de datare a semnatu-
rii, care constituie o proba ca un document a fost semnat la o anumit a data.

In acest fel, daca
secretul lui Bob a fost compromis, aceasta nu afecteaza semnaturile anterioare. Principiul
cart ilor de credit este similar: o carte de credit anunt at a unei banci ca pierduta, este anulata
far a ca aceasta sa afecteze plat ile anterioare facute pe baza ei.
Vom prezenta aici cateva procedee de datare.

In primul rand, Bob poate construi el singur o
datare. Pentru aceasta, el poate ncepe prin a colecta un anumit num ar de informat ii publicate
recent (care nu ar putut prezise). De exemplu, poate da rezultatele unei etape de fotbal,
cursul dolarului la o anumit a banca, etc. Vom nota aceasta informat ie pub.
Sa presupunem acum ca Bob vrea sa dateze semnatura unui mesaj x. Daca h este o funct ie
de dispersie publica, Bob va urma algoritmul urmator:
1. Bob calculeaza z = h(x);
2. Bob calculeaza z

= h(z|pub);
3. Bob calculeaza y = sig
K
(z

);
4. Bob publica ntr-un ziar din ziua urmatoare (z, pub, y).
2.10. EXERCIT II 31
Prezent a informat iei pub arata ca Bob nu a putut calcula y nainte de data n discut ie.
Faptul ca y este publicat ntr-un cotidian de a doua zi asigura faptul ca Bob nu a putut calcula
y dupa data aparit iei ziarului. Astfel, data semnaturii lui Bob este restransa la un interval de
o zi. De remarcat ca Bob nu dezvaluie n acest fel mesajul x, deoarece a fost publicat numai z.
Daca exista un serviciu ocial de datare (un fel de notar public electronic), se poate construi
un alt procedeu. Bob calculeaza z = h(x) si y = sig
K
(z), apoi supune (z, y) serviciului de
datare. Acesta adauga o data D si semneaza tripletul (z, y, D).

In acest fel, Bob poate certica
ca a semnat nainte de o anumita data. Pentru a arata ca a semnat dupa o anumit a data, el
poate adauga n semnatur a o anumit a informat ie publica pub.
Este posibil ca Bob sa nu aiba ncredere n serviciul public de datare. Atunci el poate creste
securitatea legand secvent ial toate mesajele datate. Mai detaliat: Bob trimite serviciului de
datare un triplet (z, y, ID(BOB)), unde z este amprenta numerica a lui x, y este semnatura
sa, iar ID(BOB) este o informat ie care l identic a pe Bob. Serviciul va data secvent a de astfel
de triplete. Daca (z
n
, y
n
, ID
n
) este al n-lea triplet, e t
n
data atribuita lui. Serviciul va data
acest triplet dupa algoritmul:
1. Serviciul calculeaza L
n
= (t
n1
, ID
n1
, z
n1
, y
n1
, h(L
n1
));
2. Serviciul calculeaza C
n
= (n, t
n
, z
n
, y
n
, ID
n
, L
n
);
3. Serviciul calculeaza s
n
= sig
serviciu
(h(C
n
));
4. Serviciul napoiaza lui ID
n
(C
n
, s
n
, ID
n+1
);
Aici L
n
reprezint a informat ia de legatura ntre tripletele n si n 1 (L
0
este xat arbitrar la
init ializarea protocolului).
2.10 Exercit ii
2.1 Fie h : X Y o funct ie de dispersie. Pentru orice y Y notam h
1
(y) = x[h(x) = y
si s
y
= [h
1
(y)[. Fie
N = [x
1
, x
2
[x
1
,= x
2
, h(x
1
= h(x
2
)[
N este numarul perechilor din X care formeaza o coliziune pentru h.
Ar atat i relat ia

yY
s
y
= [X[.
Astfel, se poate deni media elementelor s
y
prin s =
|X|
|Y |
.
Ar atat i relat ia N =

yY
C
2
s
y
=
1
2

yY
s
2
y

[X[
2
.
Ar atat i relat ia

yY
(s
y
s)
2
= 2N = [X[
[X[
2
[Y [
.
32 PRELEGEREA 2. FUNCT II DE DISPERSIE
Deducet i inegalitatea N
1
2
_
[X[
2
[Y [
[X[
_
.
Ar atat i ca avem egalitate daca si numai daca s
y
=
[X[
[Y [
pentru orice y Y .
2.2 Fie p = 15083, = 154, = 2307 parametrii pentru funct ia de dispersie Chaum - van
Heijst - Ptzmann. Fiind data coliziunea
7431

5564

1459

954
(mod p), calculat i log

.
2.3 ([5]) Fie n = pq unde p, q sunt numere prime distincte (secrete) astfel ncat p = 2p
1
+
1, q = 2q
1
+ 1, p, q numere prime. Fie Z

n
un element de ordin 2p
1
q
1
(acesta este ordinul
maximal n Z
n
). Se deneste funct ia de dispersie h : 1, . . . , n
2
Z

n
prin
h(x) =
x
(mod n).
Sa presupunem n = 603241, = 11 si ca s-a gasit tripla coliziune
h(1294755) = h(80115359) = h(52738737).
Utilizat i aceasta informat ie pentru a factoriza n.
2.4 Fie h
1
: Z
2m
2
Z
m
2
o funct ie de dispersie cu coliziuni tari.
Fie h
2
: Z
4m
2
Z
m
2
denita prin regulile:
scrie x Z
4m
2
sub forma x = x
1
|x
2
, x
1
, x
2
Z
2m
2
;
deneste h
2
(x) = h
1
(h
1
(x
1
)|h
1
(x
2
)).
Ar atat i ca h
2
este cu coliziuni tari.
Pentru orice numar ntreg i 2 se deneste funct ia de dispersie h
i
: Z
2
i
m
2
Z
m
2
denita
recursiv prin regulile:
scrie x Z
2
i
m
2
sub forma x = x
1
|x
2
, x
1
, x
2
Z
2
i1
m
2
;
deneste h
i
(x) = h
1
(h
i1
(x
1
)|h
i1
(x
2
)).
Ar atat i ca h
i
este cu coliziuni tari.
2.5 Folosind funct ia de expansiune originala pentru SHS, exprimat i valorile X
16
, . . . , X
79
n
funct ie de X
0
, . . . , X
15
.
Pentru orice pereche (X
i
, X
j
), 1 i < j 15 scriet i un program care sa determine numarul

i,j
de valori X
k
(16 k 79) cu proprietatea ca X
i
si X
j
apar ambele n scrierea lui X
k
. Ce
valori poate lua
i,j
?
Bibliograe
[1] D. Bayer, S.Haber, W.Stornetta; Improving the eciency and reliability of digital time-
stamping. Sequences II, Methods in Communication, Security and Computer Science,
Springer Verlag (1993), 329-334.
[2] D. Chaum, E. van Heijst, B. Ptzmann; Cryptographically strong undeniable signatures,
unconditionally secure for the signer. Lecture Notes in Computer Science, 576 (1992),
470-484.
[3] I.B. Damgard; A design principle for hash functions. Lecture Notes in Computer Science,
435 (1990), 516-427.
[4] T. ElGamal; A public key cryptosystem and a signature scheme based on discrete algo-
rithms, IEEE Transactions on Information Theory, 31 (1985), 469-472
[5] J. Gibson; Discrete logarithm hash function that is collision free and one way. IEEE
Proceedings-E, 138 (1991), 407-410.
[6] S. Haber, W. Stornetta; How to timestamp a digital document. Journal of Cryptology,
3(1991), 99-111.
[7] R.C. Merkle; A fast software one-way functions and DES. Lecture Notes in Computer
Science, 435 (1990), 428-446
[8] Secure hash Standard. National Bureau of Standards, FIPS Publications 180, 1993
[9] B. Preneel, R. Govaerts, J. Vandewalle; Hash functions based on block ciphers: a syntetic
approach. Lecture Notes in Computer Science, 773 (1994), 368-378
[10] R.L. Rivest; The MD4 message digest algorithm. Lecture Notes in Computer Science,
537, (1991), 303-311
[11] D. Stinton; Cryptographie, theorie et pratique, International Thompson Publishing France,
1995
[12] A. Salomaa - Criptograe cu chei publice, ed. Militara, 1994
[13] H.C.Williams, Some public-key criptofunctions as intractable as factorisation, Cryptologia,
9 (1985), 224-237.
33

You might also like