VMAC es un algoritmo de código de autenticación de mensajes (MAC) basado en cifrado de bloques que utiliza un hash universal propuesto por Ted Krovetz y Wei Dai en abril de 2007. El algoritmo fue diseñado para un alto rendimiento respaldado por un análisis formal. [ cita requerida ]
VMAC está diseñado para tener un rendimiento excepcional en software en arquitecturas de CPU de 64 bits y al mismo tiempo funcionar bien en arquitecturas de 32 bits. [ cita requerida ] Las velocidades medidas son tan rápidas como medio ciclo de CPU por byte (cpb) en arquitecturas de 64 bits, menos de cinco cpb en procesadores de escritorio de 32 bits y alrededor de diez cpb en arquitecturas integradas de 32 bits. [1] UMAC proporciona una variante estrechamente relacionada de VMAC que está optimizada para arquitecturas de 32 bits .
Descripción general
VMAC es un MAC al estilo de Wegman y Carter. [2] [3] Se utiliza una función hash "universal" rápida para convertir un mensaje de entrada M en una cadena corta. [ cita requerida ] Esta cadena corta luego se combina mediante la adición con una almohadilla pseudoaleatoria, lo que da como resultado la etiqueta VMAC. La seguridad depende de que el remitente y el receptor compartan una función hash secreta elegida al azar y un pad pseudoaleatorio. Esto se logra mediante el uso de la función hash con clave H y la función pseudoaleatoria F. Se genera una etiqueta al realizar el cálculo
Etiqueta = H K1 (M) + F K2 (Nonce)
donde K1 y K2 son claves aleatorias secretas compartidas por el remitente y el receptor, y Nonce es un valor que cambia con cada etiqueta generada. El receptor necesita saber qué nonce fue utilizado por el remitente, por lo que es necesario utilizar algún método de sincronización de nonces. Esto se puede hacer enviando explícitamente el nonce junto con el mensaje y la etiqueta, o acordando el uso de algún otro valor no repetitivo, como un número de secuencia. No es necesario que el nonce se mantenga en secreto, pero se debe tener cuidado para garantizar que, durante la vida útil de una clave VMAC, se utilice un nonce diferente con cada mensaje.
VMAC usa una función, llamada VHASH (también especificada en este documento), como la función hash con clave H y usa una función pseudoaleatoria F cuya implementación predeterminada usa el cifrado de bloque AES. VMAC permite longitudes de etiqueta de cualquier múltiplo de 64 bits hasta el tamaño de bloque del cifrado de bloque en uso. Cuando se usa AES, esto significa que VMAC puede producir etiquetas de 64 o 128 bits.
La teoría de Wegman-Carter MAC y el análisis de VMAC muestran que si uno "instancia" VMAC con claves y almohadillas verdaderamente aleatorias, entonces la probabilidad de que un atacante (incluso uno sin límites computacionales) produzca una etiqueta correcta para los mensajes de su elección es menor que 1/2 60 o 1/2 120 cuando las etiquetas tienen una longitud de 64 o 128 bits, respectivamente. Cuando un atacante realiza N intentos de falsificación, la probabilidad de acertar una o más etiquetas aumenta linealmente a menos de N / 2 60 o N / 2 120 . En una implementación aplicada de VMAC, utilizando AES para producir claves y pads, estas probabilidades de falsificación aumentan en una pequeña cantidad relacionada con la seguridad de AES. Mientras AES sea seguro, este pequeño término aditivo es insignificante para cualquier ataque práctico. Consulte las especificaciones para obtener más detalles. El análisis de la seguridad de VMAC ha sido realizado por los autores Wei Dai y Ted Krovetz. [ cita requerida ] [4]
Implementaciones
Referencias
- ^ T. Krovetz y W. Dai (2007). "VMAC: Código de autenticación de mensajes mediante hash universal" . Grupo de trabajo CFRG . IETF . Consultado el 12 de agosto de 2010 .
- ^ J. Carter; M. Wegman (1977). "Clases universales de funciones hash". Actas del noveno simposio anual de ACM sobre teoría de la computación . ACM: 106–112.
- ^ J. Carter; M. Wegman (1981). "Nuevas funciones hash y su uso en autenticación e igualdad de conjuntos". Revista de Ciencias de la Computación y Sistemas . 22 : 265-279. doi : 10.1016 / 0022-0000 (81) 90033-7 .
- ^ T. Krovetz (2006). "Autenticación de mensajes en arquitecturas de 64 bits" (PDF) . Lecture Notes in Computer Science, Actas de la 13ª conferencia internacional sobre áreas seleccionadas en criptografía . Springer-Verlag: 327–341. ISSN 0302-9743 .
- ^ http://www.fastcrypto.org/vmac/vmac.h
- ^ http://www.fastcrypto.org/vmac/vmac.c
- ^ "Crypto ++: archivo de origen vmac.h" . www.cryptopp.com .
- ^ "Crypto ++: archivo de origen vmac.cpp" . www.cryptopp.com .
- ^ http://www.fastcrypto.org/vmac/vmac.txt
enlaces externos
- VMAC: Código de autenticación de mensajes mediante hash universal : borrador de Internet
- Página de inicio de VMAC
- Entrada de la wiki de Cryptolounge VMAC