ElGamal criptosistem sau criptare El Gamal (sau El sistemul Gamal ) este o criptografie asimetrică protocol inventat de Taher ElGamal în 1984 și a construit din logaritmului discret problema .
Acest protocol este utilizat de software-ul gratuit GNU Privacy Guard , ale cărui versiuni recente implementează chiar și versiunea sa pe curbe eliptice . Spre deosebire de criptarea RSA , nu a fost niciodată sub protecția brevetului .
Articolul fondator al lui Taher Elgamal prezintă un protocol de criptare , dar și o semnătură digitală , care, în ciuda asemănărilor lor (ambele sunt construite pe problema logaritmului discret ), nu trebuie confundate. Acest articol se referă numai cu criptare protocolul .
Algoritmul este descris pentru un grup ciclic finit în cadrul căruia problema de decizie Diffie-Hellman (DDH) este dificilă. Informații mai specifice sunt oferite în secțiunea Rezistența la atacurile CPA .
Putem observa că DDH este o ipoteză de lucru mai puternică decât cea a logaritmului discret, deoarece deține dacă vreodată problema logaritmului discret este dificilă. Există, de asemenea, grupuri în care problema DDH este ușoară, dar în care nu există un algoritm eficient pentru rezolvarea logaritmului discret .
Deoarece este o schemă de criptare asimetrică , criptosistemul este compus din trei algoritmi ( probabilistici ): GenClefs , Encrypt și Decrypt .
Pentru ilustrare, vom presupune că Bob vrea să îi trimită un mesaj lui Alice . Dar acest mesaj conține informații sensibile, așa că Bob nu dorește ca acesta să fie ușor de înțeles de către nimeni altul decât Alice. Deci Bob își va cripta mesajul.
Deoarece schemele de criptare asimetrice sunt în general mai lente decât analogii lor simetrici, criptarea ElGamal este adesea utilizată în practică ca parte a criptării hibride , cum ar fi specificația PGP.
O modalitate de a privi această schemă de criptare este de a face o paralelă cu protocolul de schimb de chei Diffie-Hellman . Algoritmul de criptare constă atunci în trimiterea unui mesaj criptat de o mască de unică folosință sub cheia partajată , care poate fi calculată de Alice din moment ce o are (vezi ilustrația de mai jos).
Primul pas în schema de criptare este de a produce o pereche de chei: cheia publică și cheia secretă . Primul va fi folosit pentru a cripta mesajele și al doilea pentru a le decripta.
Deci Bob are acces la cheia publică a lui Alice . Pentru a cripta un mesaj codificat ca element al grupului , Bob începe prin desenarea unui număr aleatoriu și îl va folosi pentru a acoperi mesajul în timp ce calculează . Pentru a permite Alice pentru a decripta mesajul, Bob se va adăuga la această parte a mesajului informațiilor referitoare la pericolul: .
În cele din urmă cifrul va fi compus din aceste două piese :, și Bob îi trimite lui Alice.
Având acces la și la , Alice poate calcula astfel:
Și, prin urmare, este capabil să găsească mesajul .
Privind informațiile publice ; ne dăm seama că numai elementele de sunt făcute vizibile și nu exponenții (aici x și respectiv s ). În mod informal putem observa că problema logaritmului discret poate fi interpretată ca fiind faptul că este dificil de găsit informațiile secrete ( de exemplu) care ar face posibilă găsirea mesajului.
Mai precis, problema de decizie Diffie-Hellmann (sau DDH ) este cea care face posibilă garantarea securității semantice a schemei.
Demonstrație ReducerePresupunând că avem un adversar împotriva securității semantice a criptării ElGamal, care câștigă cu o probabilitate deloc neglijabilă ε . Apoi devine posibil să construiești un adversar împotriva DDH, ceea ce ar contrazice presupusa dificultate a acestei probleme. Această reducere pe care tocmai am descris-o va constitui dovada de securitate a schemei.
Pentru a construi acest adversar, care va fi denumit în continuare „ reducere ”, se presupune că primește un DDH triplu : scopul său este apoi de a decide dacă sau cu o probabilitate deloc neglijabilă. Pentru aceasta are o interfață cu adversarul descris mai sus în fața securității semantice a criptosistemului ElGamal.
Prin urmare, reducerea va trimite cheia publică adversarului împotriva ElGamal . Atunci când produce provocarea pentru oponent împotriva securității semantice a criptosistemului, reducerea va fi trimisă criptat: pentru alegerea sa. Dacă vreodată tripletul este un triplet DDH , adică dacă , atunci s-ar forma ca un cifru valid pentru ElGamal în ceea ce privește cheia publică . Pe de altă parte, dacă exponentul este aleatoriu, atunci adversarul împotriva ElGamal nu va putea distinge cele două mesaje ale provocării, altfel decât răspunzând la întâmplare.
Trebuie să răspundem „1” (corespunzător faptului că contestatorul pentru DDH a trimis un triplet DDH) dacă adversarul nostru reușește și „0” (corespunzător faptului că contestatorul pentru DDH a trimis un triplu aleator) in caz contrar.
AnalizăVom acum limita avantajul de a câștiga din reducerea nostru de avantajul gruparea e al adversarului presupus împotriva schemei noastre.
Începem prin a observa că avem două cazuri: fie provocarea trimisă de provocatorul nostru este un adevărat triplet DDH , fie este un triplet desenat uniform.
Astfel avem un avantaj care rămâne semnificativ: pentru a obține aceeași securitate între DDH și criptosistemul nostru, este suficient ca problema DDH să rămână sigură cu un bit de securitate suplimentar.
La modelele cu un atacator cu mai multă putere, cum ar fi atacurile de cifrare alese, criptosistemul ElGamal nu este sigur datorită maleabilității sale ; într-adevăr, având în vedere un cifru pentru mesaj , putem construi cifrul , care va fi valid pentru mesaj .
Această maleabilitate (este un homomorfism multiplicativ), pe de altă parte, face posibilă utilizarea acestuia, de exemplu, pentru votul electronic .
Cu toate acestea, există variante care asigură securitate împotriva atacurilor de cifrare alese, cum ar fi criptosistemul Cramer-Shoup care poate fi văzut ca o extensie a cifrului ElGamal.
Pentru exemplu, putem lua grupul , cu generatorul g = 5 ( Atenție : acesta nu este un grup sigur, aceste valori au fost luate doar pentru a produce un exemplu simplu).
Prin urmare , o posibilă cheie publică ar putea fi :, și ca cheie secretă .
Rețineți că, deoarece criptarea este un algoritm probabilistic , există diferite ieșiri posibile pentru același mesaj. Prin urmare, un posibil cifru pentru mesajul 42 ar putea fi (58086963, 94768547) , dar și (83036959, 79165157) pentru riscurile r egale cu 6689644 și respectiv 83573058 .
Cu toate acestea, dacă facem calculul pentru cele două cifre ale noastre, vom obține 42 la ieșire.