Crittosistema ElGamal

Il sistema crittografico ElGamal , o crittografia El Gamal (o sistema El Gamal ) è un protocollo di crittografia asimmetrica inventato da Taher Elgamal nel 1984 e costruito dal problema del logaritmo discreto .

Questo protocollo è utilizzato dal software gratuito GNU Privacy Guard le cui recenti versioni implementano anche la sua versione su curve ellittiche . A differenza della crittografia RSA , non è mai stata protetta da brevetto .

L'articolo fondatore di Taher Elgamal presenta un protocollo di crittografia , ma anche una firma digitale , che nonostante le loro somiglianze (sono entrambi costruiti sul problema del logaritmo discreto ) non sono da confondere. Questo articolo tratta solo del protocollo di crittografia .

Descrizione dell'algoritmo

L'algoritmo è descritto per un gruppo ciclico finito all'interno del quale il problema decisionale Diffie-Hellman (DDH) è difficile. Informazioni più specifiche sono fornite nella sezione Resistenza agli attacchi CPA .

Possiamo notare che DDH è un'ipotesi di lavoro più forte di quella del logaritmo discreto, poiché vale se mai il problema del logaritmo discreto è difficile. Ci sono anche gruppi in cui il problema DDH è facile, ma dove non esiste un algoritmo efficiente per risolvere il logaritmo discreto .

Trattandosi di uno schema di crittografia asimmetrica , il sistema crittografico è composto da tre algoritmi ( probabilistici ): GenClefs , Encrypt e Decrypt .

Per l'illustrazione, supporremo che Bob desideri inviare un messaggio ad Alice . Ma questo messaggio contiene informazioni sensibili, quindi Bob non vuole che sia comprensibile da nessun altro oltre ad Alice. Quindi Bob crittograferà il suo messaggio.

Poiché gli schemi di crittografia asimmetrica sono generalmente più lenti dei loro analoghi simmetrici, la crittografia ElGamal viene spesso utilizzata nella pratica come parte della crittografia ibrida , come la sua specifica PGP.

Un modo per esaminare questo schema di crittografia è tracciare un parallelo con il protocollo di scambio di chiavi Diffie-Hellman . L'algoritmo di crittografia consiste quindi nell'invio di un messaggio crittografato da una maschera usa e getta sotto la chiave condivisa , che può essere calcolato da Alice dal momento che ha (vedi illustrazione a fianco).

Generazione delle chiavi

Il primo passo nello schema di crittografia è produrre una coppia di chiavi: la chiave pubblica e la chiave segreta . Il primo verrà utilizzato per crittografare i messaggi e il secondo per decrittografarli.

Algoritmo di crittografia

Quindi Bob ha accesso alla chiave pubblica di Alice . Per crittografare un messaggio codificato come elemento del gruppo , Bob inizia disegnando un numero casuale e lo utilizzerà per coprire il messaggio durante il calcolo . Per consentire Alice per decifrare il messaggio, Bob aggiungerà a questa parte delle informazioni messaggio sul pericolo: .

Infine il codice sarà composto da questi due pezzi :, e Bob manda ad Alice.

Algoritmo di decrittografia

Avendo accesso ae a , Alice può quindi calcolare:

Ed è quindi in grado di trovare il messaggio .

sicurezza

Affrontare attacchi di testo in chiaro scelti

Guardando le informazioni pubbliche ; ci rendiamo conto che vengono resi visibili solo gli elementi di e non gli esponenti (qui rispettivamente x e s ). Informalmente possiamo notare che il problema del logaritmo discreto può essere interpretato come il fatto che è difficile trovare le informazioni segrete ( ad esempio) che permetterebbero di trovare il messaggio.

Più precisamente, è il problema decisionale Diffie-Hellmann (o DDH ) che consente di garantire la sicurezza semantica dello schema.

Dimostrazione Riduzione

Supponendo di avere un avversario contro la sicurezza semantica della crittografia ElGamal che vince con una probabilità non trascurabile ε . Diventa quindi possibile costruire un avversario contro DDH, il che contraddirebbe la presunta difficoltà di questo problema. Questa riduzione che abbiamo appena descritto costituirà la prova di sicurezza del programma.

Per costruire questo avversario, che verrà di seguito denominato "  riduzione  ", si presume di ricevere un triplo DDH  : il suo scopo è quindi quello di decidere se o con una probabilità non trascurabile. Per questo ha un'interfaccia con l'avversario sopra descritto che affronta la sicurezza semantica del crittosistema ElGamal.

La riduzione invierà quindi la chiave pubblica all'avversario contro ElGamal . Quando si produce la sfida per l'avversario contro la sicurezza semantica del crittosistema, la riduzione verrà inviata come crittografata: a sua scelta. Se mai la tripletta è una tripletta DDH , cioè se , allora sarebbe formata come un cifrario valido per ElGamal per quanto riguarda la chiave pubblica . Se invece l'esponente è casuale, l'avversario contro ElGamal non potrà distinguere i due messaggi della sfida se non rispondendo a caso.

Dobbiamo solo rispondere "1" (corrispondente al fatto che lo sfidante per DDH ha inviato una tripletta DDH) se mai il nostro avversario riesce, e "0" (corrispondente al fatto che lo sfidante per DDH ha inviato una tripla casuale) altrimenti.

Analisi

Ora limiteremo il vantaggio di vincere dalla nostra riduzione dal vantaggio ε del presunto avversario contro il nostro schema.

Cominciamo col notare che abbiamo due casi: o la sfida inviata dal nostro sfidante è una vera tripletta DDH , oppure è una tripletta disegnata in modo uniforme.

Abbiamo quindi un vantaggio che rimane significativo: per ottenere la stessa sicurezza tra DDH e il nostro sistema crittografico, è sufficiente che il problema DDH rimanga protetto con un bit di sicurezza aggiuntivo.

Di fronte ad attacchi cifrati scelti

Nei modelli con un attaccante con più potenza, come sotto attacchi cifrati scelti, il sistema crittografico ElGamal non è sicuro a causa della sua malleabilità  ; infatti, dato un codice per il messaggio , possiamo costruire il codice , che sarà valido per il messaggio .

Questa malleabilità (è un omomorfismo moltiplicativo), d'altra parte, rende possibile usarlo per il voto elettronico, ad esempio.

Tuttavia, ci sono varianti che garantiscono la sicurezza contro gli attacchi cifrati scelti, come il sistema crittografico Cramer-Shoup che può essere visto come un'estensione del cifrario ElGamal.

Esempio

Per l'esempio possiamo prendere il gruppo , con il generatore g = 5 ( Attenzione : questo non è un gruppo sicuro, questi valori sono stati presi solo per produrre un semplice esempio).

Una possibile chiave pubblica potrebbe quindi essere :, e come chiave segreta .

Si noti che poiché la crittografia è un algoritmo probabilistico , sono disponibili diversi output possibili per lo stesso messaggio. Un possibile cifrario per il messaggio 42 potrebbe quindi essere (58086963, 94768547) , ma anche (83036959, 79165157) per i pericoli r pari rispettivamente a 6689644 e 83573058 .

Tuttavia, se eseguiamo il calcolo per le nostre due cifre, otterremo 42 all'output.

Note e riferimenti

(fr) Questo articolo è parzialmente o interamente tratto dall'articolo di Wikipedia in inglese intitolato Crittografia ElGamal  " ( vedere l'elenco degli autori ) .
  1. ElGamal 1984 .
  2. RFC4880 , (it) "  Formato OpenPGP Message  "
  3. Log delle modifiche di GnuPG 2.1
  4. Joux e Nguyen 2003 .
  5. Katz e Lindell 2014 , Capitolo 10.5 Lo schema di crittografia ElGamal.
  6. Belenios, (en) "  Specifiche di Belenios  "

Appendici

Bibliografia

  • [ElGamal 1984] (en) Taher ElGamal, "  A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms  " , Crypto , Springer,1984( DOI  10.1007 / 3-540-39568-7_2 )
  • [Katz e Lindell 2014] (en) Jonathan Katz e Yehuda Lindell, Introduzione alla crittografia moderna, 2a edizione , Boca Raton, Chapman e Hall ,2014, 583  p. ( ISBN  978-1-4665-7026-9 , leggi online ) , "Capitolo 10.5 The El Gamal Encryption Scheme"
  • [Menezes, van Oorschot e Vanstone 1996] (en) AJ Menezes , PC van Oorschot e SA Vanstone , Handbook of Applied Cryptography , CRC Press,1996, 810  p. ( ISBN  978-1-4398-2191-6 , leggi online [PDF] ) , "Capitolo 8.4 Crittografia a chiave pubblica ElGamal"
  • [Joux e Nguyen 2003] (en) Antoine Joux e Kim Nguyen, "  Separating Decision Diffie - Hellman from Computational Diffie - Hellman in Cryptographic Groups  " , Journal of Cryptology , vol.  16,2003, p.  239-247 ( DOI  10.1007 / s00145-003-0052-4 )
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">