Schema di firma ElGamal

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Lo schema di firma ElGamal è un crittosistema di firma digitale basato sulla presunta difficoltà computazionale del calcolo di logaritmi discreti. È stato descritto da Taher Elgamal nel 1984.[1]

L'originale algoritmo di firma di Elgamal è raramente usato nella pratica, in favore di una variante sviluppata dalla NSA nota come Digital Signature Algorithm. Esistono molte altre varianti.[2] Lo schema di firma ElGamal non dev'essere confuso con l'omonimo sistema di cifratura a chiave pubblica, anch'esso proposto da Taher Elgamal.

Parametri di sistema[modifica | modifica wikitesto]

Generazione della chiave[modifica | modifica wikitesto]

L'autore della firma compie una sola volta i seguenti passi:

  • Scegliere un numero casuale tale che .
  • Calcolare .
  • La chiave pubblica è .
  • La chiave privata .

Generazione della firma[modifica | modifica wikitesto]

Per firmare un messaggio , l'utente compie i seguenti passi:

  • Scegliere un numero casuale tale che e (ovvero, e siano coprimi).
  • Calcolare .
  • Calcolare .
  • Se ricominciare.

La coppia sarà la firma digitale di .

Verifica[modifica | modifica wikitesto]

Una firma di un messaggio è accettata se le seguenti condizioni di verifica sono soddisfatte:

  • e .

Correttezza[modifica | modifica wikitesto]

L'algoritmo è corretto nel senso che una firma correttamente generata verrà sempre accettata se verificata come sopra.

La generazione della firma implica che:

Per il piccolo teorema di Fermat:

Sicurezza[modifica | modifica wikitesto]

Un utente terzo può falsificare la firma entrando a conoscenza della chiave segreta o trovando collisioni nella funzione di hash . Entrambi i problemi sono ritenuti difficili.

Il firmatario deve stare attento a scegliere i valori di in maniera sufficientemente casuale per ogni firma e deve essere sicuro che , o qualunque informazione parziale riguardo esso, non venga rivelata. Altrimenti, potrebbe essere più semplice per un attaccante dedurre la chiave , talvolta abbastanza da permettere un attacco praticabile. In particolare, se due messaggi sono inviati usando lo stesso valore di e la stessa chiave, allora l'attaccante può direttamente calcolare .[1]

Falsificazione esistenziale[modifica | modifica wikitesto]

La pubblicazione originale[1] non prevedeva una funzione crittografica di hash come parametro di sistema. Il messaggio era usato direttamente nell'algoritmo al posto di . Questo permetteva un attacco noto come falsificazione esistenziale, come descritto nella sezione IV dell'articolo. Pointcheval e Stern hanno generalizzato questo caso descrivendo due distinti livelli di falsificazione:[3]

  1. Falsificazione ad un parametro. Sia un numero casuale. Se e , la coppia è una firma valida per il messaggio .
  2. Falsificazione a due parametri. Siano due numeri casuali e sia . Se e , la coppia è una firma valida per il messaggio .

Note[modifica | modifica wikitesto]

  1. ^ a b c Elgamal, 1985.
  2. ^ (EN) K. Nyberg, R. A. Rueppel, Message recovery for signature schemes based on the discrete logarithm problem, in Designs, Codes and Cryptography, vol. 7, n. 1-2, 1996, pp. 61–81, DOI:10.1007/BF00125076.
  3. ^ (EN) David Pointcheval e Jacques Stern, Security Arguments for Digital Signatures and Blind Signatures (PDF), in J Cryptology, vol. 13, n. 3, 2000, pp. 361–396. URL consultato il 4 ottobre 2018 (archiviato dall'url originale il 5 dicembre 2014).

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

  Portale Crittografia: accedi alle voci di Wikipedia che trattano di crittografia