Sunteți pe pagina 1din 5

Ministerul Educației,Culturii și Cercetării al Republicii Moldova

I.P. Centrul de Excelență În Informatică Și Tehnologii Informaționale

Catedra Informatica I

Securitatea informationala
Lucrare de laborator: Metoda de criptare asimetrica ElGamal

Elaborat
Elevul: Dichii Vadim
Grupa: R-1742
Profesor:Cerbu Olga

Chişinău 2020
În criptografie, sistemul de criptare ElGamal este un algoritm de criptare cu cheie asimetrică
pentru criptografie cu cheie publică, care se bazează pe schimbul de chei Diffie-Hellman. A fost
descrisă de Taher Elgamal în 1985. Criptarea ElGamal este utilizată în software-ul gratuit GNU
Privacy Guard, versiunile recente ale PGP și alte criptosisteme. Algoritmul semnăturii digitale
(DSA) este o variantă a schemei de semnături ElGamal, care nu trebuie confundată cu criptarea
ElGamal.

Criptarea ElGamal poate fi definită peste orice grup ciclic {\ displaystyle G} G, ca un grup
multiplicativ de numere întregi modul n. Securitatea sa depinde de dificultatea unei anumite
probleme din {\ displaystyle G} G legată de calculul logaritmilor discreți.

Generarea cheie
Prima petrecere, Alice, generează o pereche de chei după cum urmează:

 Generați o descriere eficientă a unui grup ciclic {\ displaystyle G \,} G \, de ordine {\


displaystyle q \,} q \, cu generator {\ displaystyle g} g. Fie {\ displaystyle e} e să
reprezinte elementul unitate al lui {\ displaystyle G} G.
 Alegeți un număr întreg {\ displaystyle x} x aleatoriu din {\ displaystyle \ {1, \ ldots, q-
1 \}} \ {1, \ ldots, q-1 \}.
 Calculați {\ displaystyle h: = g ^ {x}} h: = g ^ {x}.
 Cheia publică constă din valorile {\ displaystyle (G, q, g, h)} (G, q, g, h). Alice publică
această cheie publică și păstrează {\ displaystyle x} x ca cheie privată, care trebuie
păstrată secret.
Criptare
O a doua parte, Bob, criptează un mesaj {\ displaystyle M} M către Alice sub cheia sa publică {\
displaystyle (G, q, g, h)} (G, q, g, h) după cum urmează:

Asociați mesajul {\ displaystyle M} M la un element {\ displaystyle m} m din {\ displaystyle G}


G utilizând o funcție de mapare reversibilă.
 Alegeți un număr întreg {\ displaystyle y} y aleatoriu din {\ displaystyle \ {1, \ ldots, q-
1 \}} \ {1, \ ldots, q-1 \}.

2
 Calculați {\ displaystyle s: = h ^ {y}} {\ displaystyle s: = h ^ {y}}. Aceasta se numește
secretul comun.
 Calculați {\ displaystyle c_ {1}: = g ^ {y}} {\ displaystyle c_ {1}: = g ^ {y}}.
 Calculați {\ displaystyle c_ {2}: = m \ cdot s} {\ displaystyle c_ {2}: = m \ cdot s}.
 Bob trimite textul cifrat {\ displaystyle (c_ {1}, c_ {2})} (c_ {1}, c_ {2}) către Alice.
Rețineți că, dacă se cunoaște atât textul cifrat {\ displaystyle (c_ {1}, c_ {2})} (c_ {1}, c_ {2}),
cât și textul simplu {\ displaystyle m} m se poate găsi cu ușurință secretul partajat {\ displaystyle
s} s, deoarece {\ displaystyle c_ {2} \ cdot m ^ {- 1} = s} {\ displaystyle c_ {2} \ cdot m ^ {- 1}
= s}. Prin urmare, un nou {\ displaystyle y} y și, prin urmare, un nou {\ displaystyle s} s este
generat pentru fiecare mesaj pentru a îmbunătăți securitatea. Din acest motiv, {\ displaystyle y} y
se mai numește și o cheie efemeră.

Decriptare
Alice decriptează un text cifrat {\ displaystyle (c_ {1}, c_ {2})} (c_ {1}, c_ {2}) cu cheia sa
privată {\ displaystyle x} x după cum urmează:

Calculați {\ displaystyle s: = c_ {1} ^ {x}} {\ displaystyle s: = c_ {1} ^ {x}}. Deoarece {\


displaystyle c_ {1} = g ^ {y}} {\ displaystyle c_ {1} = g ^ {y}}, {\ displaystyle c_ {1} ^ {x} = g
^ {xy} = h ^ {y}} {\ displaystyle c_ {1} ^ {x} = g ^ {xy} = h ^ {y}} și astfel este același secret
comun care a fost folosit de Bob în criptare.
Calculați {\ displaystyle s ^ {- 1}} s ^ {- 1}, inversul {\ displaystyle s} s din grupul {\
displaystyle G} G. Acest lucru poate fi calculat într-unul din mai multe moduri. Dacă {\
displaystyle G} G este un subgrup al unui grup multiplicativ de numere întregi modulo n,
inversul modular multiplicativ poate fi calculat utilizând algoritmul euclidian extins. O
alternativă este să calculați {\ displaystyle s ^ {- 1}} s ^ {- 1} ca {\ displaystyle c_ {1} ^ {q-x}}
{\ displaystyle c_ {1} ^ {q-x}}. Acesta este inversul lui {\ displaystyle s} s datorită teoremei lui
Lagrange, deoarece {\ displaystyle s \ cdot c_ {1} ^ {qx} = g ^ {xy} \ cdot g ^ {(qx) y} = (g ^
{q}) ^ {y} = e ^ {y} = e} {\ displaystyle s \ cdot c_ {1} ^ {qx} = g ^ {xy} \ cdot g ^ {(qx) y} =
( g ^ {q}) ^ {y} = e ^ {y} = e}.
Calculați {\ displaystyle m: = c_ {2} \ cdot s ^ {- 1}} {\ displaystyle m: = c_ {2} \ cdot s ^ {-
1}}. Acest calcul produce mesajul original {\ displaystyle m} m, deoarece {\ displaystyle c_ {2}
= m \ cdot s} {\ displaystyle c_ {2} = m \ cdot s}; de aceea {\ displaystyle c_ {2} \ cdot s ^ {- 1}
= (m \ cdot s) \ cdot s ^ {- 1} = m \ cdot e = m} {\ displaystyle c_ {2} \ cdot s ^ {-1} = (m \ cdot
s) \ cdot s ^ {- 1} = m \ cdot e = m}.
Harta {\ displaystyle m} m înapoi la mesajul cu text simplu {\ displaystyle M} M.

3
Mersul lucrării
Fie date valorile p=63- numar prim.
Elementul primitive al acestui numar prim α =¿7. (primitive root of 67 =7 in volfram
alpha)
Se allege un numar secret a=4.
Aplicati algorimul asimetric ElGamal pentru:
a)Criptatarea unui mesaj scurt,
b)Decriptati mesajul ales.
c)Semnați acest mesaj cu cheile generate la punctul a).
d)Verificați semnătura.

Lucrarea se efectează după urmatorul model:

Generarea cheilor:

Fie p = 63 un numar prim (pentru care problema logaritmilor discreti in Zᵨ este dificila) si αϵZp*=Zp\{0},
α =¿7 un element primitive. Se ia:

P=Zp*, A=Zp*xZp-1, K={(p,α ,a , β ¿∨β=α ᵅ ¿ )}. logαβ mod(p)=a.

Valorile p, α , β sunt publice, iar a este secret.


a = 4.
β = αᵅ ( mod p ) =74 mod 49=7 .

Criptare:

Se ia mesajul x = B –ASCII> 66.


Pentru K = (p,α ,a , β), k = 19 ϵ Zp−1 (secret) se defineste:
Criptul acelasi cu sigK(x,k) = (γ , δ), unde

γ =αᵏ mod p
δ =( x−a γ )k⁻¹(mod p - 1).

𝜸 = 719 mod 63 = 49.

δ = (62-4*49)19⁻¹ mod 63=-129*35 mod 62=-5990 mod 62= 62 - (5990 mod 62)= 25

Criptul si sigK(63,19)= (49,25) (coincid)

Descriptare: (*-operatia de inmultire)

Pentru 𝜸,δ ∈ Zpse defineste: dK(𝜸,δ) = δ * (𝜸ᵅ)ˉ¹ mod p

dK(𝜸,δ) = 25 *(494)ˉ¹ mod 63 = 62 –ASCII > B


4
Semnătura:
γ =αᵏ mod p = 719 mod 62 = 49.
δ =( x−a γ )k⁻¹(mod p - 1) = (62-4*49)*19-1(mod 62) = - 129 * 35 mod 62 = 25

Verificarea Semnăturii:

Pentru a verifica semnătura, calculăm:


verK(x,γ , δ) = T <=> βᵞγᵟ=αᵡ mod p

βᵞγᵟ mod p = 53494925 mod 62 = 29 * 37 mod 63 = 1.


αᵡ mod p = 763 mod 63 = 1. 1=1 rezulta ca
Semnătura este deci validă.

Concluzie:
ElGamal Cryptosystem (EC) este o schemă nedeterministă care produce ieșiri diferite
pentru aceeași intrare, făcând criptosistemul mai sigur. Pe de altă parte, eficiența criptosistemului
său este redusă, deoarece produce o extindere de 2: 1 în dimensiune de la text simplu la text
cifrat, rezultând o întârziere a timpului de execuție. Prin urmare, această lucrare prezintă un
criptosistem ElGamal modificat (MEC) pentru a crește eficiența prin accelerarea timpului de
execuție și reducerea ratei de extindere a dimensiunii fișierului după procesul de criptare.
O comparație între MEC propus și EC tradițional se realizează utilizând același mediu de
programare, iar implementarea este testată folosind date text de dimensiuni diferite. Rezultatele
arată că performanța MEC propusă este mai bună decât cea tradițională în ceea ce privește timpul de
execuție și rata de extindere. În timp ce, securitatea MEC propusă este analogă cu CE tradițională,
care se bazează pe dificultatea de a rezolva problema logaritmului discret.

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