Una MAC (Message Authentication Code) es el nombre genérico
del mecanismo para proveer integridad y autenticidad en el intercambio de
información, combinando funciones hash (generalmente criptográficas) y claves
secretas simétricas.
Se diferencian de las funciones hash criptográficos en que
no sólo ofrecen integridad, sino también autenticidad al combinarse con una
clave secreta, proporcionan autenticidad.
La MAC típica de un mensaje se calcularía como:
·
K es la clave secreta
·
m el mensaje
·
h() una función de hash criptográfica
MACk=h
( K + m )

Los funciones hash son algoritmos que consiguen crear a
partir de una entrada (ya sea un texto, una contraseña o un archivo) una salida
alfanumérica de longitud normalmente fija que representa un resumen de toda la
información, las propiedas de las funciones hash son:
- Unidireccionalidad: Conocido un resumen h(M), debe ser computacionalmente imposible encontrar M a partir de dicho resumen.
- Compresión: A partir de un mensaje de cualquier longitud, el resumen h(M) debe tener una longitud fija. Lo normal es que la longitud de h(M) sea menor.
- Facilidad de cálculo: Debe ser fácil calcular h(M) a partir de un mensaje M.
- Difusión: El resumen h(M) debe ser una función compleja de todos los bits del mensaje M. Si se modifica un bit del mensaje M, el hash h(M) debería cambiar aproximadamente la mitad de sus bits.
HMAC(HASHED
MESSAGE AUTHENTICATION CODE)
La RFC 2104 propuso el uso de una autenticación en entornos
seguros como SSL(Secure Sockets Layer) mediante una operación MAC en la que
intervenga una función hash: su nombre es HMAC. Con lo cual pretendían:
• Usar,
sin modificaciones, las funciones hash disponibles, concretamente las
funciones hash que se ejecutan bien en software, y para las
cuales el código es gratis y fácil de conseguir.
Permitir la sustitución fácil de la función hash empotrada
en caso de que se encuentren o se necesiten funciones hash más rápidas o
seguras.
Los objetivos del algoritmo HMAC:
·
Proporcionar autenticidad e integridad de la
informacion
·
Utilizar técnicas de hash existentes
·
Preservar el rendimiento del hash utilizado, sin
añadir excesivo carga excesiva de procesamiento.
·
Permitir reemplazar fácilmente el algoritmo hash
usado
HMAC es el mecanismo de autenticación de mensajes (proteger
la integridad de la información). HMAC utiliza la función de hash y clave
secreta para su implementación. Por lo tanto, ofrece menos vulnerabilidad que
solo encriptación o hash.
Componentes de HMAC
·
M = mensaje de entrada incluyendo el relleno(512
bits).
·
H = alguna función hash como MD5 (128 bits) o
SHA-1 (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 / 160 bits).
·
K = clave secreta (160 bits) aunque se
recomienda sea mayor que n. Si la clave K es
mayor que b, esta clave se hace pasar antes por la función hash para
reducirla a una clave de n bits.
·
K+= clave K con ceros añadidos a la izquierda
para alcanzar b bits.
·
ipad= 00110110 (36 en hexadecimal) octeto
repetido b/8 (64) veces.
·
opad= 01011010 (5C en hexadecimal)octeto
repetido b/8 (64) veces.
Estructura del algoritmo HMAC

El resultado de este último hash es el HMAC del mensaje M con la clave K, es decir HMAC K(M).
Aunque la seguridad de HMAC está directamente relacionado con el hash utilizado, el modelo presentado no es seguro. Hay otras configuraciones más desarrolladas que mejoran esta característica.
Referencias
https://networksafe.files.wordpress.com/2012/03/presentacion-hmac2.pdf
http://xo-seguridadredes.blogspot.mx/2013/04/hmac.html
No hay comentarios:
Publicar un comentario