Sunteți pe pagina 1din 41

Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală

Aprilie 2020
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Functii de trunchiere (Hash functions)


În criptografie sunt importante, pentru a combina eficienţa şi
siguranţa criptării, funcţii f : x 7→ h care:
sunt uşor calculabile
micşorează spaţiul de memorie necesar stocării datelor:
lungimea lui x este mare, iar cea a lui h este semnificativ mai
scurtă (ex: x are 106 biţi, iar h mai puţin de 200 biti)
dat fiind un h, nu este posibil din punct de vedere
computaţional determinarea unui x a.i. h = f (x) (sens unic)
dat fiind x1 , nu este posibil din punct de vedere computaţional
determinarea unei valori x2 6= x1 a.i. f (x2 ) = f (x1 ) (rezistenţă
la coliziuni ı̂n sens slab)
nu este posibil din punct de vedere computaţional
determinarea unor valori x1 6= x2 a.i. f (x1 ) = f (x2 ) (rezistenţă
la coliziuni ı̂n sens tare)
Astfel de funcţii sunt folosite pentru garantarea integrităţii
mesajelor, autentificare, in scheme de semnătură digitală.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Functii de trunchiere (Hash functions)

Fie A alfabetul folosit şi A∗ mulţimea tuturor mesajelor posibile.


Definiţie
O funcţie de trunchiere (funcţie hash) este o funcţie

f : A∗ −→ An

unde n ∈ N fixat.

Exemplu
A = {0, 1}, n = 1

(εk−1 . . . ε1 ε0 )2 7→ εk−1 ⊕ . . . ⊕ ε1 ⊕ ε0 .
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Functii de trunchiere (Hash functions)

O coliziune a unei funcţii h : D → D 0 este o pereche de elemente


x1 , x2 ∈ D, x1 6= x2 , cu proprietatea h(x1 ) = h(x2 ).
Funcţiile de trunchiere au ı̂ntotdeauna coliziuni deoarece nu sunt
injective.
Definiţie
Spunem că funcţia h este rezistentă la coliziuni ı̂n sens slab dacă,
dat fiind x1 ∈ D, este imposibil, din punct de vedere
computaţional, de determinat o coliziune (x1 , x2 ) a lui h.

Definiţie
Spunem că funcţia h este rezistentă la coliziuni ı̂n sens tare dacă
este imposibil, din punct de vedere computaţional, de determinat o
coliziune (x1 , x2 ) a lui h.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Functii de trunchiere (Hash functions)

Observaţie. In criptografie sunt importante funcţiile de trunchiere


cu sens unic, rezistente la coliziuni. In continuare, sintagma
”funcţii de trunchiere” ı̂nseamnă ”funcţii de trunchiere cu sens
unic, rezistente la coliziuni”.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală

Semnătura digitală = o succesiune de biţi care asociază un


mesaj cu entitatea care l-a generat.
Algoritm de generare a semnăturii = o metodă de producere a
unei semnături digitale.
Algoritm de verificare a semnăturii = o metodă pentru a
verifica dacă o semnătură digitală este autentică.
Mecanism (schemă) de semnătură digitală (SSD) =algoritm
de generare a semnăturii + algoritm de verificare a semnăturii.
Procedură de semnare = algoritm de generare a semnăturii +
metodă de formatare a mesajului pentru a putea fi semnat.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Notaţii

P = spaţiul mesajelor
PS = spaţiul de semnare
R : P → PS = funcţie de redundanţă, injectivă
PR = ImR. In general, PR ( PS .
S = spaţiul mesajelor semnate
R = o mulţime de elemente numită indici de semnare
SA,k : PS → S = funcţie de semnare a utilizatorului A
(k ∈ R); bijectivă
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Notaţii

SSD cu apendice: algoritmul de verificare a semnăturii


foloseşte mesajul original ca input
SSD cu recuperarea mesajului: algoritmul de verificare a
semnăturii nu foloseşte mesajul original; acesta este recuperat
din semnătură

SSD aleatorie: R are cel puţin două elemente


SSD deterministică: R are un singur element
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

SSD cu apendice
Generarea cheilor. Fiecare utilizator generează o cheie privată
folosită la semnarea mesajelor, şi o cheie publică folosită la
verificarea semnăturii.
1 Utilizatorul A defineşte o mulţime de funcţii bijective
{SA,k : P → S / k ∈ R}, pe care o păstrează secretă.
2 Se consideră o funcţie
VA : P × S → {Adev , Fals}
cu proprietatea

Adev dacă SA,k (m) = s
VA (m, s) =
Fals dacă SA,k (m) 6= s
Valoarea ei trebuie să poată fi calculată fără a cunoaşte
funcţiile SA,k .
3 Cheia publică a lui A este VA ; cheia privată este mulţimea
{SA,k }.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

SSD cu apendice

Generarea semnăturii
1 A alege un element k ∈ R
2 A calculează s := SA,k (m)
3 Semnătura lui A este s. Valorile m şi s sunt disponibile oricui
doreşte să verifice semnătura.

Verificarea semnăturii
1 B obţine cheia publică de autentificare a lui A, VA .
2 B calculează u := VA (m, s).
3 B acceptă semnătura dacă u = Adev .
Pentru orice utilizator diferit de A, trebuie să fie imposibil de
determinat o pereche (m, s) astfel incât VA (m, s) = Adev .
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

SSD cu recuperarea mesajului


Generarea cheilor. Fiecare utilizator generează o cheie privată
folosită la semnarea mesajelor, şi o cheie publică folosită la
verificarea semnăturii.
1 Utilizatorul A defineşte o mulţime de funcţii bijective
{SA,k : PS → S / k ∈ R}, pe care o păstrează secretă.
2 Utilizatorul A defineşte o funcţie

VA : S → PS

astfel incât
VA ◦ SA,k = IdPS
pentru orice k ∈ R. Valoarea ei trebuie să poată fi calculată
fără a cunoaşte funcţiile SA,k .
3 Cheia publică a lui A este VA ; cheia privată este mulţimea
{SA,k }.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

SSD cu recuperarea mesajului

Generarea semnăturii
1 A alege un element k ∈ R
2 A calculează m0 := R(m) şi s := SA,k (m0 )
3 Semnătura lui A este s. Valoarea s este disponibilă oricui
doreşte să verifice semnătura şi să recupereze mesajul m.

Verificarea semnăturii
1 B obţine cheia publică de autentificare a lui A, VA .
2 B calculează m0 := VA (s).
3 B acceptă semnătura dacă m ∈ PR .
Pentru orice utilizator diferit de A, trebuie să fie imposibil de
determinat s ∈ S astfel incât VA (s) ∈ PR .
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală: criptosisteme cu cheie


publică
In criptosistemele cu cheie publică, autentificarea mesajelor este
necesară, dar acestea permit o soluţie eficientă şi elegantă.
Fie A şi B cele două părţi, cu funcţiile de cifrare (publice) fA ,
fB .
Fie SA semnătura lui A. Nu este suficient ca A să adauge SA
la mesajul in clar, şi deci să trimită fB (SA ), impreună cu
mesajul cifrat. Oricine poate face aceasta.
A trimite fB (fA−1 (SA )).
Când B descifrează mesajul primit (aplica fB−1 ), obţine un
mesaj inteligibil (mesajul in clar), plus un şir de caractere,
fA−1 (SA ).
B aplică acum funcţia publica fA acestui şir de caractere şi
obţine semnătura SA .
Numai A putea folosi fA−1 !
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală: criptosisteme cu cheie


publică + funcţii de trunchiere

Presupunem că A (cu funcţia de criptare publică fA şi semnătura


SA ) vrea să trimită mesajul P lui B (cu funcţia de criptare publică
fB ). Fie f o funcţie de trunchiere publică. Fie h = f (PSA )
(”message digest”). Atunci A trimite fB (PSA ) impreuna cu
fB (fA−1 (h)) (semnătura digitală).

La primirea mesajului, B aplică fB−1 şi obţine un mesaj PSA


impreună cu şirul de caractere fA−1 (h). Acestuia din urmă ii aplică
funcţia de criptare a lui A, fA (publică) şi obţine h. B aplică
funcţia de trunchiere f lui PSA , şi dacă rezultatul coincide cu h,
atunci mesajul provine de la A şi nu a fost modificat pe parcurs.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală: criptosisteme cu cheie


publică

Variantă simplificată: atunci când nu este necesară secretizarea


mesajului
- este o SSD cu recuperarea mesajului
A vrea să trimită (sau să facă public) mesajul m; A utilizează
un criptosistem cu cheie publică, având cheia publică Ke şi
cheia secretă Kd .
A transformă mesajul m folosind cheia secretă Kd ; informaţia
obţinută, s, este trimisă (făcută publică).
Oricine vrea să verifice semnătura transformă s folosind cheia
publică Ke .
Mesajul m este recuperat.
In plus, există certitudinea că A a generat şi a trimis s,
deoarece doar A poate utiliza cheia secretă Kd .
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală
RSA

Particularitate: utilizatorii au modul diferit, iar blocurile in clar sau


cifrate au lungimi diferite (k, respectiv l, k < l).
Fie S semnătura pe care A vrea să o trimita lui B.
Caz 1. nA < nB . Atunci A trimite fB (fA−1 (S)) :
A calculează S1 := S dA (mod nA ) ∈ ZnA ⊂ ZnB
A calculează Σ := (S1 )eB (mod nB )
Caz 2. nB < nA . Atunci A trimite fA−1 (fB (S)) :
A calculează S2 := S eB (mod nB ) ∈ ZnB ⊂ ZnA
A calculează Σ := (S2 )dA (mod nA )
A adaugă mesajului cifrat şi trimite Σ.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală: variantă simplificată


RSA

A are cheia publică (n, e) şi cheia secretă (n, d).


A semnează m ∈ {0, 1, . . . , n − 1}:

s = md (mod n)

B verifică semnătura folosind cheia publică a lui A:

m = s e (mod n)

B obţine mesajul m şi, in plus, este sigur că A a generat


semnătura s: numai A putea utiliza cheia secretă (n, d)!
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală: variantă simplificată


RSA

Exemplu
Alice alege p = 11, q = 23, e = 3 şi calculează n = 253, d = 147.
Cheia publică Ke = (253, 3)
Cheia secretă Ke = (253, 147)
Alice vrea să facă un transfer bancar de 111 $.
Pentru a semna m = 111, Alice calculează

s = 111147 (mod 253) = 89

Banca verifică semnătura, calculând

s 3 (mod 253) = 111

.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală: variantă simplificată


Atacuri posibile

Dacă adversarul C reuşeşte să inlocuiască cheia publică a lui A


cu propria sa cheie, atunci poate semna in locul lui A.
este necesar un “centru de incredere”.
Adversarul C alege un intreg s ∈ {0, 1, . . . , n − 1} şi il trimite
pretinzând că este o semnătură a lui A. Dacă B verifică
semnătura şi determină un mesaj m inteligibil, C a fost in
stare să imite o semnătură a lui A.

Exemplu
C trimite băncii mesajul s = 123, pretinzând că este A.
Banca verifică semnătura calculând

m = s d (mod n) = 1233 (mod 253) = 52

şi trage concluzia că A a solicitat un transfer de 52 $.


Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală El Gamal


Alegerea cheilor

Alice alege:
- p ∈ N număr prim
- g ∈ Z∗p generator
- a ∈ {1, 2, . . . , p − 2} aleatoriu.
Alice calculează α = g a .
Cheia publică: (p, g , α).
Cheia secretă: a.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală El Gamal


Generarea semnăturii

Alice semnează un mesaj m ∈ {1, 2, . . . , p − 2}.


Alice alege k ∈ {1, 2, . . . , p − 2}, (k, p − 1) = 1.
Alice calculează

r = g k (mod p) , s = k −1 (m − ar ) (mod p − 1).

Semnătura lui Alice: (r , s)


Alice trimite m (eventual criptat) şi semnătura (r , s)
Este o SSD cu apendice!
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală El Gamal


Verificarea semnăturii

Bob primeşte m şi perechea (r , s) şi este ı̂n posesia cheii publice a
lui Alice (p, g , α).
Bob face o primă verificare a autenticitatea cheii asigurându-se că

1 ≤ r < p − 1.

Dacă această condiţie nu este satisfăcută, Bob respinge semnătura.


Bob verifică
αr r s ≡ g m (mod p)
Dacă această congruenţă este satisfăcută, Bob acceptă semnătura.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală El Gamal


Verificarea semnăturii

Arătăm că verificarea funcţionează.


Dacă s şi r sunt generaţi ca mai sus,

s = k −1 (m − ar ) (mod p − 1)

atunci
−1 (m−ar )
αr r s ≡ g ar g kk ≡ g m (mod p).
Am folosit (din nou)
−1
kk −1 ≡ 1 (mod p − 1) =⇒ x kk ≡ x (mod p) !
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală El Gamal


Verificarea semnăturii

Reciproc, dacă verificarea funcţionează, αr r s ≡ g m (mod p), iar


g k = r , atunci, deoarece α = g a , obţinem

g ar +ks ≡ g m (mod p)

Deoarece g este un generator al lui Z∗p obţinem

ar + ks ≡ m (mod p − 1).

Dacă p − 1 şi k sunt prime intre ele, atunci

s = k −1 (m − ar ) (mod p − 1).

Aceasta este singura modalitate de a construi s, şi nu putea fi


realizată decât de Alice, căci numai Alice cunoaşte a!
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura digitală El Gamal


Un exemplu
Alice alege p = 23, g = 7, a = 6 şi calculează
α = g a (mod p) = 4.
Cheia publică : (23, 7, 4). Cheia secretă: 6.
Alice doreşte să semneze mesajul m = 7. Alege k = 5. Acesta este
inversabil in Z22 şi k −1 = 9 (mod 22).
Alice calculează
r = g k (mod p) = 17
s = k −1 (m − ar ) (mod p − 1) = 9 · (7 − 6 · 17) (mod 22) = 3
Semnătura lui Alice: (17, 3).
Bob primeşte mesajul m = 7 şi semnătura (17, 3). Calculează
αr r s (mod p) = 417 · 173 (mod 23) = 5
g m (mod p) = 77 (mod 23) = 5
şi acceptă semnătura.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

DSA (Digital Signature Algorithm)

O variantă eficace a semnăturii digitale El Gamal, standardizată de


NIST (National Institute of Standards and Technology).
Exponenţii au aprox. 160 de biţi ( in schema El Gamal: 768 biţi).
Alegerea cheilor
Alice: - alege un număr prim q, 2159 < q < 2160 (are 160 de biţi).
- alege un număr prim p astfel ı̂ncât
2511+64t < p < 2512+64t pentru un anumit t ∈ {0, 1, . . . 8}
q|(p − 1)
Lungimea lui p este un multiplu de 64, ı̂ntre 512 şi 1024, deci p
poate fi privit ca un şir de 8 − 16 cuvinte binare de lungime 64.
Condiţia q|(p − 1) asigură existenţa unor elemente y ∈ Z∗p cu
proprietatea y q = 1 (mod p).
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

DSA (Digital Signature Algorithm)

Alice alege un generator x ∈ Z∗p şi calculează

g := x (p−1)/q (mod p).

Acest g are proprietatea g q = 1 (mod p).


Alice alege a ∈ {1, 2, . . . , q − 1} şi calculează

α = g a (mod p).

Cheia publică : (p, q, g , α).


Cheia secretă: a.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

DSA (Digital Signature Algorithm)

Generarea semnăturii
Alice doreşte să semneze un document m.
Ea foloseşte o funcţie de trunchiere rezistentă la coliziuni

h : {0, 1}∗ −→ {1, 2, . . . , q − 1}.

Alice alege k ∈ {1, 2, . . . , q − 1} aleatoriu şi calculează

r := (g k (mod p)) (mod q)


s := k −1 (h(m) + ar ) (mod q)

Semnătura lui Alice: (r , s).


Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

DSA (Digital Signature Algorithm)

Verificarea semnăturii
Bob vrea să verifice semnătura (r , s) a documentului m (ı̂n posesia
căruia este deja).
Bob obţine cheia publică a lui Alice, (p, q, g , α), şi funcţia de
trunchiere h (publică).
Bob verifică mai ı̂ntâi

1≤r ≤q−1 , 1 ≤ s ≤ q − 1.

Dacă aceste condiţii nu sunt satisfăcute, Bob respinge semnătura.


Bob verifică apoi egalitatea
−1 h(m)) (mod q) rs −1 (mod q)
r = (g (s α (mod p)) (mod q)

Dacă această egalitate este adevărată, Bob acceptă semnătura.


Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura oarbă

Semnatarul ştie că semnează o informaţie, fără să ştie conţinutul


acesteia.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura oarbă: etape


Generarea cheilor. Alice generează o cheie pentru semnare şi
cheia corespunzătoare pentru verificarea semnăturii. Cheia
pentru semnare este secretă, iar cea pentru verificare este
făcută publică.
Mascarea mesajului. Bob aplică o mască mesajului pe care
urmează să-l semneze Alice.
Generarea semnăturii. Folosind cheia secretă, Alice generează
semnătura asociată mesajului mascat, şi o trimite lui Bob.
Indepărtarea măştii. Plecând de la semnătura mesajului
mascat, Bob calculează semnătura mesajului original.
Verificarea semnăturii.
(a) Pentru a verifica semnătura, Claire obţine de la Bob
mesajul original ı̂mpreună cu semnătura calculată de Bob, iar
de la Alice cheia de verificare.
(b) Folosind cheia, Claire verifică asocierea dintre mesaj şi
semnătură.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Schema (protocolul) Chaum

Generarea cheilor. Alice generează o cheie publică RSA (n, e)


şi cheia secretă corespunzătoare d.
Mascarea mesajului. Bob alege mesajul m ∈ Zn şi k ∈ Zn
aleatoriu. Calculează mesajul mascat

m0 = mk e (mod n)

pe care il trimite lui Alice.


Generarea semnăturii. Alice calculează s 0 = (m0 )d (mod n).
Indepărtarea măştii. Bob calculează s = k −1 s 0 (mod n).
Verificarea semnăturii.
(a) Claire deţine m, s, (n, e).
(b) dacă s e = m (mod n) Claire acceptă semnătura.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura incontestabilă

David Chaum şi Hans van Antwerpen au propus ı̂n 1989 o schemă
de semnătură digitală care are următoarele proprietăţi:
Algoritmul de verificare este interactiv: semnatarul participă la
verificarea semnăturii. Astfel, cel ce verifică semnătura trebuie
să aibă acceptul semnatarului.
Semnatarul, odată ce a generat o semnătură, nu poate
pretinde ca nu a făcut aceasta; dacă A contestă semnătura,
poate dovedi ca nu el a generat semnătura.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura incontestabilă: etape

O schemă de semnătură incontestabilă presupune participarea unui


semnatar (Alice) şi a unui examinator (Bob).
Generarea cheilor. Alice generează o cheie pentru semnare ks
şi cheia corespunzătoare pentru verificarea semnăturii kv .
Cheia pentru semnare este păstrată secretă.
Generarea semnăturii. Plecând de la mesajul m şi de la cheia
de semnare, Alice calculează semnătura s.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Semnătura incontestabilă: etape

Verificarea semnăturii.
(a) Bob primeşte mesajul m, semnătura s şi cheia de verificare
kv a lui Alice.
(b) Bob trimite o avertizare α lui Alice.
(c) Alice, folosind avertizarea α, mesajul m şi cheia secretă ks ,
calculează un răspuns r pe care il trimite lui Bob.
(d) Bob aplică algoritmul de verificare mesajului m, semnăturii
s, cheii kv şi răspunsului r şi ia decizia de acceptare sau de
respingere a semnăturii.
Este posibil ca Alice să conteste faptul că a generat semnătura s,
prin executarea incorectă a părţii sale de protocol şi declararea
faptului că semnătura nu a fost corect generată. Atunci semnatarul
şi examinatorul au la dispoziţie un protocol de contestare, după
care examinatorul acceptă sau nu contestaţia semnatarului.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Schema (protocolul) Chaum - van Antwerpen

Generarea cheilor
Alice alege un număr prim p, un generator g al lui Z∗p şi
a ∈ {1, 2, . . . , p − 2}, (a, p − 1) = 1.
Alice calculează A = g a (mod p).
Cheia publică (pentru verificarea semnăturii): Kv = (p, g , A).
Cheia secretă (pentru semnare): Ks = a.
Alice alege de asemenea o funcţie de trunchiere h, pe care o face
publică.
Generarea semnăturii.
s = h(m)a

Verificarea semnăturii, fără paşi adiţionali care să includă


participarea lui Alice, necesită rezolvarea problemei logaritmului
discret.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Schema (protocolul) Chaum - van Antwerpen

Verificarea semnăturii.
(a) Bob obţine m, s, (p, g , A).
(b) Avertizare: Bob alege aleatoriu u, v ∈ {1, 2, . . . , p − 2} şi
calculează
α = s u Av (mod p)
(α = (h(m)u g v )a ).
(c) Răspuns: După ce primeşte avertizarea α, Alice calculează
−1
a−1 (mod p − 1) şi răspunsul r = αa (mod p), după care trimite
r lui Bob.
(d) Verificare: Bob calculează h(m)u g v (mod p). Dacă rezultatul
obţinut coincide cu r , Bob acceptă semnătura; in caz contrar, o
respinge.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Schema (protocolul) Chaum - van Antwerpen


Se poate arăta că
oricare ar fi α ∈ Z∗p , există p − 1 perechi (u, v ) pentru care
s u Av = α
dacă s 6= h(m)a şi α ∈ Z∗p , oricare ar fi r ∈ Z∗p există exact o
pereche (u, v ) astfel ı̂ncât

h(m)u g v = r , s u Av = α.

Să presupunem că un falsificator (care nu cunoaşte numărul a şi a


trimis o semnătură s diferită de h(m)a ) primeşte avertizarea α şi i
se cere un răspuns corect r . El ştie că pentru a obţine acest α,
Bob a avut p − 1 posibilităţi pentru perechea (u, v ). De asemenea,
două astfel de perechi distincte dau răspunsuri diferite.
Necunoscând a, pentru a trimite răspunsul corect el trebuie să
nimerească (alegând aleatoriu) perechea (u, v ) potrivită. Există
deci cel mult 1/(p − 1) şanse ca un adversar să trimită o
semnătură falsă s, care să fie acceptată.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Schema (protocolul) Chaum - van Antwerpen

Contestarea semnăturii
Presupunem că avertizarea α şi răspunsul r au fost generate, dar
verificarea eşuează. Acest lucru se poate produce din două cauze:
sau s 6= h(m)a (un falsificator a trimis semnătura in locul lui
Alice);
−1
sau Alice trişează şi a trimis un răspuns eronat (r 6= αa ),
pentru a nu-şi recunoaşte semnătura.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Schema (protocolul) Chaum - van Antwerpen

Contestarea semnăturii
Să presupunem că semnatarul Alice pretinde că semnătura s este
falsă (adică s 6= h(m)a ). Ea poate dovedi aceasta astfel:
0 0
Bob generează o nouă avertizare α0 = s u Av
Alice calculează răspunsul corespunzător r 0
Bob verifică dacă
0 0
(∗) (rg −v )u = (r 0 g −v )u (mod p)

Dacă egalitatea este satisfăcută, Bob admite că semnătura nu este


valabilă. In caz contrar, Bob trage concluzia că Alice a contestat
propria semnătură. Probabilitatea ca acest lucru să fie adevărat
(deci ca Alice să trişeze) este de cel puţin 1 − 1/(p − 1).
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI

Schema (protocolul) Chaum - van Antwerpen

−1 −1
Dacă Alice are dreptate şi a calculat corect r = αa , r 0 = α0a ,
atunci egalitatea (∗) este evident satisfăcută.
Dacă insă semnătura era valabilă şi Alice a furnizat intenţionat un
−1
răspuns eronat r 6= αa , atunci r 6= h(m)u g v . La a doua
verificare, trebuie să furnizeze un răspuns r 0 astfel incât egalitatea
(∗) să fie satisfăcută cu acest r eronat.
Se poate arăta că există un singur r 0 ∈ Z∗p astfel incât
egalitatea (∗) să fie satisfăcută; pe de altă parte, orice valoare
0 0
r 0 ∈ Z∗p este de forma h(m)u g v pentru o anumită pereche (u 0 , v 0 ).
Deci Alice nu are altă posibilitate decât să aleagă aleatoriu r 0 ∈ Z∗p
şi are 1/(p − 1) şanse să-l nimerească pe unicul care verifică
egalitatea (∗).
Probabilitatea ca Bob să nu descopere ı̂nşelătoria este de 1/(p − 1).

S-ar putea să vă placă și