Documente Academic
Documente Profesional
Documente Cultură
Semnătura digitală
Aprilie 2020
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI
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
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
Semnătura digitală
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
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
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
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ă
RSA
s = md (mod n)
m = s e (mod n)
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ă
.
Functii de trunchiere Semnătura digitală RSA El Gamal DSA SO SI
Exemplu
C trimite băncii mesajul s = 123, pretinzând că este A.
Banca verifică semnătura calculând
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
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.
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
g ar +ks ≡ g m (mod p)
ar + ks ≡ m (mod p − 1).
s = k −1 (m − ar ) (mod p − 1).
α = g a (mod p).
Generarea semnăturii
Alice doreşte să semneze un document m.
Ea foloseşte o funcţie de trunchiere rezistentă la coliziuni
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.
Semnătura oarbă
m0 = mk e (mod n)
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
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
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.
(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
h(m)u g v = r , s u Av = α.
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
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)
−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).