Schema di firma ElGamal

crittosistema di firma digitale

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

Generazione della chiave

modifica

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

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

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

  •   e  .
  •  

Correttezza

modifica

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

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

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  .
  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

Voci correlate

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