lunes, 23 de noviembre de 2015

Algoritmo HMAC

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:

  1. Unidireccionalidad: Conocido un resumen h(M), debe ser computacionalmente imposible encontrar M a partir de dicho resumen.
  2. 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.
  3. Facilidad de cálculo: Debe ser fácil calcular h(M) a partir de un mensaje M.
  4. 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