L'algoritmo (Diffie-Hellman Integrated Encryption Scheme - DHIES) è stato proposto da Abdalla, Bellare e Rogaway [1] come sistema di cifratura/decifratura che sfrutta il problema di Diffie-Hellman.
Generazione delle chiavi
La generazione delle chiavi è esattamente identica a quella di El Gamal: dato un gruppo ciclico G e un generatore g, si calcola un numero casuale $a \in G$. La chiave privata è costituita da a, mentre quella pubblica è data da ga.
Cifratura
Dato un messaggio m e la chiave pubblica del destinatario ga, si genera un numero casuale x e un valore gx, che è detta chiave pubblica effimera.
Si calcola
Si calcola, con una funzione di Hash concordata con il destinatario, il valore di hash H di (1)
(2)il valore di H viene suddiviso in due parti. La prima viene chiamata macKey, mentre la seconda encKey. Si cifra il messaggio m con la chiave encKey attraverso un algoritmo di crittografia simmetrico:
(3)e si calcola il mac del testo cifrato (3) attraverso la chiave macKey.
(4)Viene trasmesso al destinatario il gruppo di valori seguente: $g^{x},\:C,\:mac$
Decifratura
Sia ga la chiave pubblica e a la chiave privata del destinatario. Il destinatario riceve $g^{x},\:C,\:mac$ ed effettua le seguenti operazioni:
(5)da cui ricava macKey ed encKey. In seguito calcola il valore MAC
(7)e lo confronta con quello ricevuto. Se corrisponde, procede con la decodifica del messaggio attraverso la chiave encKey.
Sicurezza
Questo algoritmo impiega il problema di Diffie-Hellman in modo da condividere con il destinatario un valore segreto gax. Il valore segreto è generato ad ogni messaggio. Un attaccante deve ricavare gax conoscendo la chiave pubblica del destinatario ga e la chiave pubblica effimera gx, che è esattamente una istanza del problema di Diffie-Hellman.
Algoritmi
Fattorizzazione Interi | Logaritmo Discreto | Curve Ellittiche | |
---|---|---|---|
Cifratura | RSA, Rabin | ElGamal, DHIES |