Schema Elgamal este un criptosistem cu cheie publică bazat pe dificultatea de a calcula logaritmi discreti într-un câmp finit . Criptosistemul include un algoritm de criptare și un algoritm de semnătură digitală. Schema ElGamal stă la baza fostelor standarde de semnătură digitală din Statele Unite ( DSA ) și Rusia ( GOST R 34.10-94 ).
Schema a fost propusă de Taher El-Gamal în 1985 . [1] ElGamal a dezvoltat o variantă a algoritmului Diffie-Hellman . El a îmbunătățit sistemul Diffie-Hellman și a obținut doi algoritmi care au fost folosiți pentru criptare și pentru autentificare. Spre deosebire de RSA, algoritmul ElGamal nu a fost brevetat și, prin urmare, a devenit o alternativă mai ieftină, deoarece nu erau necesare taxe de licență. Se crede că algoritmul este acoperit de brevetul Diffie-Hellman.
Sistemul de criptare ElGamal este de fapt una dintre modalitățile de a genera chei publice Diffie-Hellman . Criptarea ElGamal nu trebuie confundată cu algoritmul de semnătură digitală ElGamal.
Mesajul trebuie să fie mai mic de . Mesajul este criptat după cum urmează:
Este ușor de observat că lungimea textului cifrat în schema ElGamal este de două ori mai mare decât lungimea mesajului original .
Cunoscând cheia privată , mesajul original poate fi calculat din textul cifrat folosind formula:
În același timp, este ușor de verificat
prin urmare
.Pentru calcule practice, următoarea formulă este mai potrivită:
Deoarece o variabilă aleatorie este introdusă în schema ElGamal , cifrul ElGamal poate fi numit cifr de substituție cu mai multe valori. Datorită caracterului aleatoriu al alegerii numărului, o astfel de schemă este numită și schemă de criptare probabilistică. Natura probabilistică a criptării este un avantaj pentru schema ElGamal, deoarece schemele de criptare probabilistică prezintă o putere mai mare în comparație cu schemele cu un proces de criptare specific. Dezavantajul schemei de criptare ElGamal este că textul cifrat este de două ori mai lung decât textul simplu. Pentru o schemă de criptare probabilistică, mesajul în sine și cheia nu definesc în mod unic textul cifrat. În schema ElGamal, este necesar să folosiți diferite valori ale unei variabile aleatorii pentru a cripta diferite mesaje și . Dacă utilizați același lucru , atunci pentru textele cifrate corespunzătoare și relația este îndeplinită . Din această expresie se poate calcula cu ușurință , dacă se știe .
Semnătura digitală servește pentru a permite identificarea modificărilor datelor și pentru a stabili identitatea semnatarului. Destinatarul unui mesaj semnat poate folosi o semnătură digitală pentru a dovedi unei terțe părți că semnătura a fost într-adevăr făcută de expeditor. Când lucrați în modul semnătură, se presupune că există o funcție hash fixă , ale cărei valori se află în intervalul .
Pentru a semna un mesaj , se efectuează următoarele operații:
Cunoscând cheia publică , semnătura mesajului este verificată după cum urmează:
Algoritmul considerat este corect în sensul că semnătura calculată conform regulilor de mai sus va fi acceptată în momentul verificării.
Transformând definiția , avem
Mai mult, din Mica Teoremă a lui Fermat rezultă că
Numărul trebuie să fie aleatoriu și nu trebuie să fie duplicat pentru semnături diferite obținute cu aceeași valoare a cheii secrete.
este ușor să verificați dacă perechea este semnătura digitală corectă pentru mesaj .
În prezent, criptosistemele cu cheie publică sunt considerate cele mai promițătoare. Acestea includ schema ElGamal, a cărei putere criptografică se bazează pe complexitatea de calcul a problemei logaritmului discret , unde, având în vedere p , g și y , este necesar să se calculeze x care satisface comparația:
GOST R34.10-1994 , adoptat în 1994 în Federația Rusă, care reglementa procedurile de generare și verificare a semnăturii digitale electronice, se baza pe schema ElGamal. Din 2001, noul GOST R 34.10-2001 a fost utilizat, folosind aritmetica curbelor eliptice definite pe câmpuri Galois simple . Există un număr mare de algoritmi bazați pe schema ElGamal: acestea sunt DSA , ECDSA , algoritmi KCDSA, schema Schnorr .
Comparația unor algoritmi:
Algoritm | Cheie | Scop | Rezistență criptografică, MIPS | Note |
RSA | Până la 4096 de biți | Criptare și semnare | 2.7•10 28 pentru cheie de 1300 de biți | Bazat pe dificultatea problemei de factorizare a numărului mare ; unul dintre primii algoritmi asimetrici. Inclus în multe standarde |
ElGamal | Până la 4096 de biți | Criptare și semnare | Pentru aceeași lungime a cheii, puterea criptografică este egală cu RSA, adică 2.7•10 28 pentru cheie de 1300 de biți | Bazat pe problema dificilă a calculării logaritmilor discreti într-un câmp finit; vă permite să generați rapid chei fără a compromite securitatea. Folosit în algoritmul de semnătură digitală al standardului DSA DSS |
DSA | Până la 1024 de biți | Doar semnătura | Bazat pe dificultatea problemei logaritmului discret într-un câmp finit ; acceptat ca stat standard american; utilizat pentru comunicații secrete și neclasificate; Dezvoltatorul este NSA. | |
ECDSA | Până la 4096 de biți | Criptare și semnare | Rezistența criptografică și viteza de operare sunt mai mari decât cele ale RSA | Direcția modernă. Dezvoltat de mulți matematicieni de seamă |