Criptografía de Autenticación: Implementación y Tipos de Códigos MAC (HMAC, CCM, DAA)
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,21 KB
B. Códigos de Autenticación de Mensajes con Clave (Keyed MACs)
Los Códigos de Autenticación de Mensajes con Clave (MACs) son mecanismos criptográficos esenciales que gestionan la integridad y la autenticidad de los datos en tránsito o almacenados.
1. Funciones Hash MAC (Message Authentication Code)
Un MAC (Message Authentication Code) es el nombre genérico del mecanismo utilizado para proporcionar integridad y autenticidad en el intercambio de información. Combina funciones hash (generalmente criptográficas) y claves secretas simétricas. Se diferencian de las funciones hash criptográficas puras en que, al combinarse con una clave secreta, no solo ofrecen integridad, sino también autenticidad.
La MAC típica de un mensaje se calcularía a partir de los siguientes componentes:
- K: La clave secreta.
- m: El mensaje.
- h(): Una función de hash criptográfica.
HMAC (Hashed Message Authentication Code)
El algoritmo HMAC se utiliza para verificar la integridad de la información transmitida entre aplicaciones o almacenada en un lugar potencialmente vulnerable. La idea básica es generar un hash criptográfico de los datos reales combinado con una clave secreta compartida. El hash resultante puede ser utilizado para verificar el mensaje y determinar un nivel de confianza, sin necesidad de transmitir la clave secreta.
Componentes de HMAC
- M: Mensaje de entrada (incluyendo el relleno, típicamente 512 bits).
- H: Función hash utilizada (ej. MD5 de 128 bits o SHA-1 de 160 bits).
- Yi: Bloque i-ésimo de M.
- L: Número de bloques en M.
- b: Número de bits en cada bloque (512 bits).
- n: Longitud del resumen del hash ocupado en el sistema (128 o 160 bits).
- K: Clave secreta (se recomienda que sea mayor que n, típicamente 160 bits).
2. CMAC (Códigos de Autenticación de Mensajes Basados en Cifrado)
CCM (Counter with CBC-MAC)
CCM es un modo de cifrado de bloque. Solo está definido para su uso con cifrados de bloque de 128 bits, como AES. Por lo tanto, CCM no se puede utilizar con el algoritmo del Estándar de Cifrado de Datos Triple (3DES, TDES), cuyo tamaño de bloque es de 64 bits.
CCM consta de dos procesos relacionados: generación-cifrado y descifrado-verificación. Estos dos procesos combinan dos primitivas de criptografía:
- Counter Mode Encryption (Modo de Cifrado de Contador).
- Cipher Block Chaining-based Authentication (Autenticación Basada en Encadenamiento de Bloques de Cifrado).
El vector de inicialización (nonce) de CCM debe elegirse cuidadosamente para que nunca se use más de una vez para una clave determinada.
Algoritmo de Entrada CCM
La entrada a CCM incluye tres elementos:
- Una clave de cifrado K adecuada para el cifrado de bloque.
- Un valor único, llamado nonce (vector de inicialización), que se asigna a la carga útil y los datos asociados. Este valor no debe contener valores iguales.
- Datos que serán autenticados y cifrados, llamados carga útil.
Nota: El proceso completo implica cifrado, verificación y descifrado.
3. DAA (Data Authentication Algorithm)
El DAA, basado en DES, ha sido históricamente el método de autenticación de mensajes (MAC) más usado durante varios años.
Algoritmo DAA
El algoritmo utiliza el modo de encadenamiento de bloques de cifrado (CBC) de DES con un vector de inicialización cero. Los datos a autenticar se agrupan en bloques de 64 bits. Si es necesario, el último bloque se rellena con ceros ('0') para completar los 64 bits, formando la secuencia: D1, D2, ..., Dn.
Usando el algoritmo de cifrado DES (E) y una clave secreta (K), el Código de Autenticación de Datos (DAC) se calcula de la siguiente forma. El DAC consiste en el bloque On o los primeros M bits de dicho bloque, donde 16 ≤ M ≤ 64.