Tecnología de cifrado 07-Código de autenticación de mensajes y firma digital
El código de autenticación de mensajes (MAC) es una tecnología de autenticación que puede identificar si el mensaje enviado por el objeto de comunicación ha sido manipulado. Se utiliza para verificar la integridad del mensaje y autenticar la identidad del mensaje. . Entre los algoritmos de códigos de autenticación de mensajes, el más utilizado es HMAC que utiliza la función hash. La composición de HMAC no depende de un algoritmo de función hash específico. El código de autenticación del mensaje puede autenticar el objeto de comunicación, pero no puede autenticar al tercero. Además, no protege contra la negación.
Funciones principales
Principio de implementación de HMAC
HMAC es un método que utiliza la función hash para construir un código de autenticación de mensajes (RFC2014), donde H de HMAC significa Hash. . La función hash utilizada en HMAC no se limita a un tipo. Se puede utilizar cualquier función hash de alta resistencia para HMAC. Si se diseña una nueva función hash en el futuro, también se puede utilizar.
La generación de un código de autenticación de mensaje para un mensaje se puede expresar como: hmac(mensaje, secreto, hash), secreto es la clave compartida y hash es la función hash utilizada.
(1) Relleno de clave: si la clave es más corta que la longitud del bloque de la función hash, debe rellenarse con 0 al final hasta que su longitud alcance la longitud del bloque de la función hash. Si la clave es más larga que la longitud del bloque, se usa una función hash para codificar la clave y este valor hash se usa como clave para HMAC.
(2) XOR de la clave acolchada y el ipad: Realiza la operación XOR en la clave acolchada y la secuencia de bits llamada ipad. ipad es una secuencia de bits formada repitiendo la secuencia de bits 00110110 (es decir, 36 en hexadecimal) hasta la longitud del paquete, donde i en ipad significa interno. El valor obtenido por la operación XOR es una secuencia de bits con la misma longitud de bloque que la función hash y relacionada con la clave. Aquí llamamos a esta secuencia de bits ipadkey.
(3) Combinar con el mensaje: combine la clave del ipad con el mensaje, es decir, agregue la secuencia de bits (clave del ipad) relacionada con la clave al comienzo del mensaje.
(4) Calcular el valor hash: Ingrese el resultado de (3) en la función hash y calcule el valor hash.
(5) XOR de la clave acolchada y opad: Realiza la operación XOR en la clave acolchada y la secuencia de bits llamada opad. opad es una secuencia de bits formada repitiendo la secuencia de bits 01011100 (es decir, 5C en hexadecimal) hasta alcanzar la longitud del paquete. La o en opad significa exterior. El resultado de la operación XOR también es una secuencia de bits con la misma longitud de bloque que la función hash y relacionada con la clave. Aquí llamamos a esta secuencia de bits opadkey.
Combinar (6) con valor hash: deletrea el valor hash de (4) después de opadkey.
(7) Ingrese el resultado de (6) en la función hash y calcule el valor hash. Este valor hash es el valor MAC final.
Ataques a los códigos de autenticación de mensajes
Acerca de las formas de prevenir ataques de repetición
Problemas que los códigos de autenticación de mensajes no pueden resolver
Debido a MAC The El valor puede ser generado tanto por el remitente como por el receptor, por lo que si el receptor quiere demostrarle a un verificador externo que la fuente del mensaje es el remitente, el verificador externo no puede probarlo porque el receptor también puede generar el valor MAC; verificación de terceros El autor no puede juzgar qué afirmación, el remitente o el destinatario, es correcta. En otras palabras, el código de autenticación del mensaje no puede evitar la denegación.
La firma digital es una tecnología de autenticación que puede autentificar mensajes ante un tercero y evitar que el interlocutor de la comunicación lo niegue. Los algoritmos de firma digital incluyen RSA, ELGamal, DSA, curva elíptica DSA, etc. El certificado utilizado en la infraestructura de clave pública (PKI) se compone de una clave pública más una firma digital de una autoridad certificadora. Para verificar la firma digital de la clave pública, es necesario obtener la clave pública legal de la propia autoridad de certificación a través de algún medio.
Método de firma digital
El método de firmar directamente el mensaje es más fácil de entender, pero en realidad no se utiliza el método de firmar el valor hash del mensaje; , pero en la práctica generalmente usamos este método.
Ataques a las firmas digitales
Problemas que las firmas digitales no pueden resolver
Las firmas digitales no sólo pueden identificar la manipulación y el disfraz, sino también evitar el repudio. Es decir, confirmamos simultáneamente la integridad del mensaje, realizamos la autenticación y evitamos la denegación.
Sin embargo, para utilizar correctamente las firmas digitales existe un requisito previo, es decir, la clave pública utilizada para verificar la firma debe pertenecer al remitente real. No importa cuán poderoso sea el algoritmo de firma digital, si la clave pública obtenida es falsificada, la firma digital será completamente inválida.
Para poder confirmar si la clave pública que obtuvimos es legítima, necesitamos utilizar un certificado. El llamado certificado es una clave pública que se obtiene tratando la clave pública como un mensaje y firmada por un tercero de confianza.