ISO / IEC 9797-1 Tecnología de la información - Técnicas de seguridad - Códigos de autenticación de mensajes (MAC) - Parte 1: Mecanismos que utilizan un cifrado de bloque [1] es un estándar internacional que define métodos para calcular un código de autenticación de mensajes (MAC) sobre datos.
En lugar de definir un algoritmo específico, el estándar define un modelo general a partir del cual se pueden construir una variedad de algoritmos específicos. El modelo se basa en un cifrado de bloque con una clave simétrica secreta .
Debido a que el estándar describe un modelo en lugar de un algoritmo específico, los usuarios del estándar deben especificar todas las opciones y parámetros particulares que se utilizarán para garantizar un cálculo MAC inequívoco.
Modelo
El modelo para la generación de MAC consta de seis pasos:
- Relleno de los datos a un múltiplo del tamaño del bloque de cifrado
- División de los datos en bloques
- Transformación inicial del primer bloque de datos
- Iteración a través de los bloques de datos restantes
- Transformación de salida del resultado de la última iteración
- Truncamiento del resultado a la longitud requerida
Para la mayoría de los pasos, el estándar proporciona varias opciones entre las que elegir y / o permite cierta configuración.
Relleno
Los datos de entrada deben rellenarse a un múltiplo del tamaño del bloque de cifrado, de modo que cada operación criptográfica posterior tenga un bloque de datos completo. Se definen tres métodos de relleno. En cada caso, n es la longitud del bloque (en bits ):
Método de relleno 1
Si es necesario, agregue bits con valor 0 al final de los datos hasta que los datos rellenados sean múltiplos de n . (Si los datos originales ya eran múltiplos de n , no se agregan bits).
Método de relleno 2
Agregue un solo bit con valor 1 al final de los datos. Luego, si es necesario, agregue bits con valor 0 al final de los datos hasta que los datos rellenados sean múltiplos de n .
Método de relleno 3
Los datos rellenados comprenden (en este orden):
- La longitud de los datos sin relleno (en bits) expresados en binario big-endian en n bits (es decir, un bloque de cifrado)
- Los datos sin relleno
- Tantos (posiblemente ninguno) bits con valor 0 como se requieran para llevar la longitud total a un múltiplo de n bits
No es necesario transmitir o almacenar los bits de relleno, porque el destinatario puede regenerarlos, conociendo la longitud de los datos no rellenados y el método de relleno utilizado.
Terrible
Los datos rellenados D se dividen en q bloques D 1 , D 2 , ... D q , cada uno de longitud n , adecuado para el cifrado de bloque.
Transformación inicial
Se realiza una operación criptográfica en el primer bloque ( D 1 ), para crear un bloque intermedio H 1 . Se definen dos transformaciones iniciales:
Transformación inicial 1
D 1 está encriptado con la clave K :
- H 1 = mi K ( D 1 )
Transformación inicial 2
D 1 se cifra con la clave K , y luego con una segunda clave K ′ ′:
- H 1 = mi K ′ ′ (mi K ( D 1 ))
Iteración
Los bloques H 2 ... H q se calculan encriptando, con la clave K , la exclusiva o bit a bit del bloque de datos correspondiente y el bloque H anterior .
- para i = 2 a q
- H yo = mi K ( D yo ⊕ H yo -1 )
Si solo hay un bloque de datos ( q = 1), este paso se omite.
Transformación de salida
Una operación criptográfica es (opcionalmente) realizado en la última iteración bloque de salida H q para producir el bloque G . Se definen tres transformaciones de salida:
Transformación de salida 1
H q se usa sin cambios:
- G = H q
Transformación de salida 2
H q se cifra con la clave K ′:
- G = mi K ′ ( H q )
Transformación de salida 3
H q se descifra con la clave K ′ y el resultado se cifra con la clave K :
- G = mi K (d K ′ ( H q ))
Truncamiento
El MAC se obtiene truncando el bloque G (manteniendo los bits más a la izquierda, descartando los bits más a la derecha), a la longitud requerida.
Algoritmos específicos
El modelo general permite nominalmente cualquier combinación de opciones para cada uno de los pasos de relleno, transformación inicial, transformación de salida y truncamiento. Sin embargo, el estándar define cuatro combinaciones particulares de transformación inicial y de salida y (cuando sea apropiado) derivación clave, y dos combinaciones adicionales basadas en cálculos paralelos duplicados. El estándar indica las combinaciones como "Algoritmo MAC 1" hasta "Algoritmo MAC 6".
Algoritmo MAC 1
Este algoritmo utiliza la transformación inicial 1 y la transformación de salida 1.
Sólo se requiere una clave, K .
(Cuando el cifrado en bloque es DES , esto es equivalente al algoritmo especificado en FIPS PUB 113 de autenticación de datos del ordenador . [2] )
El algoritmo 1 se conoce comúnmente como CBC-MAC . [3]
Algoritmo MAC 2
Este algoritmo utiliza la transformación inicial 1 y la transformación de salida 2.
Dos claves se requieren, K y K ', pero K ' se pueden derivar de K .
Algoritmo MAC 3
Este algoritmo utiliza la transformación inicial 1 y la transformación de salida 3.
Se requieren dos claves independientes, K y K ′.
El algoritmo 3 también se conoce como MAC minorista . [4]
Algoritmo MAC 4
Este algoritmo utiliza la transformación inicial 2 y la transformación de salida 2.
Se requieren dos claves independientes, K y K ′, con una tercera clave K ′ ′ derivada de K ′.
Algoritmo MAC 5
El algoritmo MAC 5 comprende dos instancias paralelas del algoritmo MAC 1. La primera instancia opera sobre los datos de entrada originales. La segunda instancia opera en dos variantes de clave generadas a partir de la clave original mediante la multiplicación en un campo de Galois . El MAC final se calcula mediante el bit a bit exclusivo o de los MAC generados por cada instancia del algoritmo 1. [5]
El algoritmo 5 también se conoce como CMAC . [6]
Algoritmo MAC 6
Este algoritmo comprende dos instancias paralelas del algoritmo MAC 4. El MAC final es el bit a bit exclusivo o de los MAC generados por cada instancia del algoritmo 4. [7]
Cada instancia del algoritmo 4 usa un par de claves diferente ( K y K ′) pero esas cuatro claves se derivan de dos claves base independientes.
Derivación de claves
Los algoritmos MAC 2 (opcionalmente), 4, 5 y 6 requieren derivar una o más claves de otra clave. El estándar no exige ningún método en particular de derivación de claves, aunque generalmente exige que las claves derivadas sean diferentes entre sí.
El estándar da algunos ejemplos de métodos de derivación de claves, como "complementar subcadenas alternativas de cuatro bits de K comenzando con los primeros cuatro bits". Esto equivale a asignar un or exclusivo bit a bit a cada byte de la clave con F0 ( hexadecimal ).
Especificación completa del cálculo MAC
Para definir de forma completa e inequívoca el cálculo de MAC, un usuario de ISO / IEC 9797-1 debe seleccionar y especificar:
- El algoritmo de cifrado de bloques e
- El método de relleno (1 a 3)
- El algoritmo MAC específico (1 a 6)
- La longitud del MAC
- El (los) método (s) de derivación de claves, si es necesario, para los algoritmos MAC 2, 4, 5 o 6
Análisis de seguridad de los algoritmos
El anexo B del estándar es un análisis de seguridad de los algoritmos MAC. En él se describen diversos ataques criptográficos en los algoritmos - incluyendo ataque clave de recuperación , recuperación de claves de la fuerza bruta y ataques de cumpleaños - y analiza la resistencia de cada algoritmo para esos ataques.
Referencias
- ^ ISO / IEC 9797-1: 2011 Tecnología de la información - Técnicas de seguridad - Códigos de autenticación de mensajes (MAC) - Parte 1: Mecanismos que utilizan un cifrado de bloque
- ^ "FIPS PUB 113 - Autenticación de datos informáticos" . Instituto Nacional de Estándares y Tecnología . Archivado desde el original el 27 de septiembre de 2011 . Consultado el 1 de octubre de 2011 .
- ^ ISO / IEC 9797-1: 2011 Tecnología de la información - Técnicas de seguridad - Códigos de autenticación de mensajes (MAC) - Parte 1: Mecanismos que utilizan un cifrado de bloque , Introducción
- ^ ISO / CEI 9797-1 Tecnología de la información - Técnicas de seguridad - Códigos de autenticación de mensajes (MAC) - Parte 1: Mecanismos que utilizan un cifrado en bloque . Organización Internacional de Normalización. 2011. p. 11.
- ^ ISO / CEI 9797-1 Tecnología de la información - Técnicas de seguridad - Códigos de autenticación de mensajes (MAC) - Parte 1: Mecanismos que utilizan un cifrado en bloque . Organización Internacional de Normalización. 2011. p. 12.
- ^ ISO / CEI 9797-1 Tecnología de la información - Técnicas de seguridad - Códigos de autenticación de mensajes (MAC) - Parte 1: Mecanismos que utilizan un cifrado en bloque . Organización Internacional de Normalización. 2011. p. 13.
- ^ ISO / IEC 9797-1: 1999 Tecnología de la información - Técnicas de seguridad - Códigos de autenticación de mensajes (MAC) - Parte 1: Mecanismos que utilizan un cifrado de bloque - Reemplazado por ISO / IEC 9797-1: 2011, que (según el Prólogo de este último ) tiene un algoritmo diferente 6.