El Esquema de firma ElGamal es un esquema de firma digital basado en la complejidad del cálculo del logaritmo discreto. Fue descrito por Taher ElGamal en 1984. El algoritmo de firma ElGamal descrito en su artículo es raramente utilizado en la práctica. Con más frecuencia se utiliza una de sus variantes llamada Algoritmo de firma digital (DSA). El esquema de firma ElGamal no debe confundirse con el cifrado ElGamal también propuesto por Taher ElGamal. El esquema de firma ElGamal permite que un verificador pueda confirmar la autenticidad de un mensaje m enviado por un emisor sobre un canal de comunicación inseguro


PARAMETROS

Suponemos que A quiere enviar un mensaje M confidencialmente a B a través de un medio de Los parámetros utilizados por el esquema ElGamal son:

1.-Una función de hash H resistente a colisiones.
2.-Un número primo p muy grande tal que el cómputo de logaritmos discretos módulo p sea difícil.
3.-Un generador pseudoaleatorio g para el grupo multiplicativo Z*p
4.-Los parámetros utilizados pueden ser compartidos entre usuarios.


Firma digital (dss)

Desarrollado por la Agencia de Seguridad Nacional de EE. UU., El Estándar de Firma Digital (DSS) es una colección de procedimientos y estándares para generar una firma digital que se utiliza para autenticar documentos electrónicos. Especificado como Estándar Federal 186 de Procesamiento de Información por el Instituto Nacional de Estándares y Tecnología (NIST) en 1994, el Estándar de Firma Digital se ha convertido en el estándar del gobierno de los Estados Unidos para autenticar documentos electrónicos.

El algoritmo utilizado detrás del estándar de firma digital se conoce como algoritmo de firma digital.
* Utiliza dos números grandes que se calculan en base a un algoritmo único que también considera parámetros que determinan la autenticidad de la firma.
* Esto indirectamente también ayuda a verificar la integridad de los datos adjuntos a la firma.
* Las firmas digitales pueden ser generadas solo por la persona autorizada utilizando sus claves privadas y los usuarios o el público pueden verificar la firma con la ayuda de las claves públicas que se les proporcionan.


Seguridad

Un tercero puede falsificar firmas si encuentra la clave secreta x del firmante o si encuentra colisiones en la función de Hash; Se considera que ambos problemas son suficientemente difíciles. El firmante debe tener cuidado y escoger una k diferente de forma uniformemente aleatoria para cada firma. Así asegura que k o aún información parcial sobre k no es deducible. Malas selecciones de k pueden representar fugas de información que facilitan el que un atacante deduzca la clave secreta x. En particular, si dos mensajes son enviados con el mismo valor de k entonces es factible deducir el valor de la clave secreta x.