Sunteți pe pagina 1din 12

Semnaturi digitale. Aplicat ii.

Emil Simion
ii
Cuprins
1 Algoritmul RSA 1
1.1 Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Exercit ii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Exercit ii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Semnatura ElGamal 5
2.1 Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Exercit ii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Exercit ii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Semnatura DSA 7
3.1 Breviar teoretic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Exercit ii rezolvate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Exercit ii propuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
iv CUPRINS
Capitolul 1
Algoritmul RSA
1.1 Breviar teoretic
Algoritmul RSA a fost inventat de catre Ron Rivest, Adi Shamir si Leonard Adleman si
a fost studiat n cadrul unor studii criptanalitice extinse. Securitatea RSA-ului se bazeaza
pe dicultatea factorizarii numerelor mari. Cheia publica si cheia privata sunt funct ie de o
pereche de numere prime mari (de 200 de cifre sau chiar mai mari). Factorizarea produsului
a doua numere prime implica recuperarea textului clar din textul cifrat, cunoscand cheia
publica.
Pentru generarea a doua chei (publica si privata) se aleg aleatoriu doua numere prime
mari p si q. Din rat ionamente de securitate p si q au acelasi ordin de marime. Se va calcula
produsul n = p q. Se va alege apoi, aleatoriu, exponentul public (de cifrare) e astfel ca e
si (p 1)(q 1) sa e relativ prime. Utilizand algoritmul extins al lui Euclid vom calcula
exponentul privat (de descifrare) d astfel ca
ed 1 mod (p 1)(q 1).
Cu alte cuvinte
d e
1
mod (p 1)(q 1).
Remarcam faptul ca d si n sunt relativ prime. Perechea (e, n) constituie cheia publica iar
(d, p, q) este cheia privat a. Cele doua numere p si q nu mai sunt necesare la cifrare/descifrare,
dar nu vor niciodata facute publice (cunoasterea lor si a exponentului de cifrare e conduce
imediat la determinarea coecientului de descifrare d, deci sistemul de criptare devine inutil).
Pentru a cifra un mesaj M l vom diviza n blocuri de lungime mai mica n (cu date binare
vom alege cea mai mare putere a lui 2 mai mica decat n). Daca p si q sunt numere prime
de 100 cifre atunci n va avea sub 200 de cifre iar ecare mesaj bloc M
i
va avea sub 200 de
cifre. Daca trebuie cifrate blocuri de lungime xa atunci vom apela la operat ia de padding
cu zero. Mesajul cifrat C se va obt ine prin concatenarea mesajelor C
i
care au aproximativ
aceeiasi lungime. Formula de cifrare va :
C
i
M
e
i
mod n.
1
2 CAPITOLUL 1. ALGORITMUL RSA
Pentru a descifra un mesaj se calculeaza:
M
i
C
d
i
mod n,
deoarece
C
d
i
(M
e
i
)
d
M
ed
i
M
k(p1)(q1)+1
i
M
i
M
k(p1)(q1)
i
M
i
mod n.
Observat ia 1.1 Pentru a evita metodele de factorizare cunoscute numerele p si q trebuie
sa e numere prime tari. Un numar prim p se numeste numar prim tare daca:
i) p 1 are un factor mare r;
ii) p + 1 are un factor mare s;
iii) r 1 are un factor mare t.
Operat ia de semnare a unui mesaj M se realizeaza prin exponent ierea amprentei H(M)
cu ajutorul cheii private: s = H(M)
d
mod n. Vericarea semnaturii se realizeaza prin
comparat ia lui H(M) cu s
e
mod n.

In cazurile practice valoarea lui e este un num ar relativ mic, deci d are o valoare mare.
Acest lucru conduce la timpi de rulare diferit i ntre operat iile private (descifrare/semnare)
si cele publice(cifrare/vericare semnatur a).
Pentru optimizarea calculelor de vericare a semnaturii se poate utiliza lema chinezeasca
a resturilor (CRT), nsa acest lucru induce vulnerabilitat i n mediul de implementare.
Astfel, daca p > q, sunt precalculate valorile:
dP = (e
1
mod n) mod (p 1),
dQ = (e
1
mod n) mod (q 1),
qInv = q
1
mod p.

In faza de calcul se executa:


m
1
= c
dP
mod p,
m
2
= c
dQ
mod q,
h = qInv(m
1
m
2
) mod p,
m = m
2
+ hq.
Cheia privata ce se stocheaza ind (p, q, dP, dQ, qInv).
1.2 Exercit ii rezolvate
Exercit iul 1.2.1 Se da numarul n = 36187829 despre care se cunoaste faptul ca este un
produs de doua numere cu valoarea (n) = 36175776. Factorizat i numarul n.
1.2. EXERCIT II REZOLVATE 3
Rezolvare: Folosim relat ile p + q = n (p 1)(q 1) + 1 si p q =

(p + q)
2
4n.
Obt inem p = 5657 si q = 6397.
Exercit iul 1.2.2 Sa se cifreze mesajul M = 3, utilizand sistemul RSA cu urmatorii para-
metrii: N = 187 (modulul de cifrare), e = 7 (exponentul de cifrare).
Rezolvare: Criptograma este: C = M
e
= 3
7
= 2187 = 130 mod 187.
Exercit iul 1.2.3 Sa se descifreze mesajul C = 130, utilizand sistemul RSA cu urmatorii
parametrii: N = 187 = 11 17 (modulul de cifrare), e = 7 (exponentul de cifrare).
Rezolvare: Deoarece se cunoaste factorizarea N = 11 17, se poate calcula (N) =
16 10 = 160, ((N)) = 64.
Exponentul de descifrare va :
d = e
((N))1
= 7
63
= (7
9
)
7
= (40353607)
7
= 7
7
= 823543 = 23 mod 160.
Descifrarea mesajului cifrat C va : C
d
= 130
23
= 3 = M mod 187.
Exercit iul 1.2.4 Se considera algoritmul de semnare RSA specicat de parametrii n =
971743, (n) = 969760, d = 74597, aplicat asupra mesajului m = 2134, obt inandu-se s =
689844. Semnatura s este valida?
Rezolvare: Utilizand algoritmul lui Euclid obt inem: e = d
1
mod (n) = 13. Calculam
c
d
mod n = 2134 = m, deci semnatura este valida.
Exercit iul 1.2.5 Sa se descifreze, utilizand CRT, mesajul cifrat c = 8363, pentru cazul n
care p = 137, q = 131, n = p q = 17947, e = 3, d = 11787.
Rezolvare:

In faza de precalcul avem:
dP = (e
1
mod n) mod (p 1) = 91,
dQ = (e
1
mod n) mod (q 1) = 87,
qInv = q
1
mod p = 114.
Calculam apoi:
m
1
= c
dP
mod p = 102,
m
2
= c
dQ
mod q = 120,
h = qInv(m
1
m
2
) mod p = 3,
m = m
2
+ hq = 513.
4 CAPITOLUL 1. ALGORITMUL RSA
1.3 Exercit ii propuse
Exercit iul 1.3.1 Fie numerele prime p = 211 si q = 167. Sa se cifreze mesajul TEST cu
ajutorul algoritmului RSA, utilizand exponentul public e = 2
8
+ 1. Elementele din mesajul
clar se codica conform codului ASCII.
Raspuns: N = 35237, (N) = 34860, d = 23873, mesajul cifrat este: 01154 05746 04357
01154.
Exercit iul 1.3.2 Sa se descifreze mesajul 01154 05746 04357 01154 cu ajutorul algoritmului
RSA (p = 211 si q = 167), utilizand exponentul public e = 2
8
+ 1. Elementele din mesajul
clar se decodica conform codului ASCII.
Raspuns: N = 35237, (N) = 34860, d = 23873, mesajul clar este TEST.
Exercit iul 1.3.3 Sa se cifreze mesajul M = 146, utilizand sistemul RSA cu urmatorii para-
metrii: n = 187 (modulul de cifrare), e = 7 (exponentul de cifrare).
Raspuns: C = 141.
Exercit iul 1.3.4 Sa se descifreze mesajul C = 141, utilizand sistemul RSA cu urmatorii
parametrii: n = 187 (modulul de cifrare), d = 23(exponentul de descifrare).
Raspuns: M = 146.
Capitolul 2
Semnatura ElGamal
2.1 Breviar teoretic
Fie p un num ar prim pentru care problema logaritmului discret n Z
p
este dicila si
Z
p

un element primitiv. Cheia publica se construieste din cheia privata a: =


a
mod p.
Semnatura mesajului x, calculata cu ajutorul valorii secrete k Z
p1
, este denita ca
ind (, ) unde:
=
k
mod p si = (H(x) a)k
1
mod (p 1),
unde H() este o funct ie hash (sau x).
Semnatura (, ) a mesajului x este vericat a daca are loc:

=
x
mod p.
2.2 Exercit ii rezolvate
Exercit iul 2.2.1 Sa se semneze mesajul x = 101 cu ajutorul algoritmului ElGamal specicat
de parametrii urmatori: p = 467, = 2, cheia privata a = 127, alegand valoarea k = 213.
Rezolvare: Se calculeaza =
a
mod p = 2
127
mod 467 = 132
Semnatura mesajului x = 101 cu k = 213 (de remarcat faptul ca (213, 466) = 1 si
213
1
mod 466 = 431) este:
=
k
mod p = 2
213
mod 467 = 29 si = (101 127 29) 431 mod 466 = 16.
2.3 Exercit ii propuse
Exercit iul 2.3.1 Sa se semneze mesajul x = 100 cu ajutorul algoritmului ElGamal specicat
de parametrii urmatori: p = 163, = 2, cheia privata a = 127, alegand valoarea k = 215.
Raspuns: Semnatura mesajului este (, ) = (52, 24).
5
6 CAPITOLUL 2. SEMN

ATURA ELGAMAL
Exercit iul 2.3.2 Sa se semneze mesajul x = 102 cu ajutorul algoritmului ElGamal specicat
de parametrii urmatori: p = 467, = 2, cheia privata a = 127, alegand valoarea k = 213.
Raspuns: Semnatura mesajului este (, ) = (29, 447).
Capitolul 3
Semnatura DSA
3.1 Breviar teoretic
Fie p un num ar prim de 512 bit i si q un factor prim de 160 bit i ai lui p 1 si Z
p

o
radacin a primitiva de ordin q a unitat ii.
Cheia publica se construieste din cheia privat a a: =
a
mod p. Semnatura mesajului
x, calculata cu ajutorul valorii secrete k Z

q
, este denita ca ind (, ) unde:
(, ) = ((
k
mod p) mod q, (x + a)k
1
mod q).
Semnatura (, ) a mesajului x este vericat a daca are loc urmatoarea egalitate, unde
e
1
= x
1
mod q si e
2
=
1
mod q:
(
e
1

e
2
mod p) mod q = .
3.2 Exercit ii rezolvate
Exercit iul 3.2.1 Sa se semneze mesajul x = 100 cu ajutorul algoritmului DSA specicat
de parametrii urmatori: p = 7879, q = 101, = 170, valoarea aleatoare utilizata k = 50,
cheia secret a ind a = 75. Vericat i rezultatul obt inut.
Rezolvare: Se calculeaza:
= (
k
mod p) mod q = (170
50
mod 7879) mod 101 = 2518 mod 101 = 94.
= (x + a)k
1
mod q = (100 + 75 94)50
1
mod 101 = 7150 50
1
mod 101 = 7150
99 mod 101 = 42.
S-a folosit 50
1
(mod101) = 2 mod 101 = 99 (indca 101 = 50 2 + 1).
Vericare:
=
a
mod p = 170
75
mod 7879 = 4567.
e
1
= x
1
mod q = 100 42
1
mod 101 = 100 89 mod 101 = 12.
e
2
=
1
mod q = 94 42
1
mod 101 = 94 89 mod 101 = 84.
Se obt ine:
(
e
1

e
2
mod p) mod q = (170
12
4567
84
mod 7879) mod 101 = 2518 mod 101 = 94 = .
7
8 CAPITOLUL 3. SEMN

ATURA DSA
3.3 Exercit ii propuse
Exercit iul 3.3.1 Sa se semneze mesajul x = 101 cu ajutorul algoritmului DSA specicat
de parametrii urmatori: p = 7879, q = 101, = 170, valoarea aleatoare utilizata k = 50,
cheia secret a ind a = 75. Vericat i rezultatul obt inut.
Raspuns: Semnatura mesajului este (, ) = (94, 40). Cheia publica este = 4567.
Exercit iul 3.3.2 Sa se semneze mesajul x = 102 cu ajutorul algoritmului DSA specicat
de parametrii urmatori: p = 7879, q = 101, = 170, valoarea aleatoare utilizata k = 50,
cheia secret a ind a = 75. Vericat i rezultatul obt inut.
Raspuns: Semnatura mesajului este (, ) = (94, 38). Cheia publica este = 4567.

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