HMAC hash-based message athentication code

1 HMAC hash-based message athentication code ...
Author: Miguel Ángel Castellanos Serrano
0 downloads 2 Views

1 HMAC hash-based message athentication code

2 Es un conjunto especifico de información y campos para calcular un código de autenticacion de mensajes (MAC) Involucra una funcion hash y una llave de cifrado MD5 ,SHA-1 y RIPEMD-128/160 son ejemplos de dichas funciones hash y el resultado de usar una o la otra es HMAC-MD5 o HMAC-SHA1  o HMAC-RIPEMD

3 La seguridad de HMAC está relacionada con la seguridad de la función hash que se use, el tamaño de la salidad de dicha función hash y del tamaño y la robustez de la llave usada.

4 HMAC matemáticamente…Donde H: funcion hash K: llave m: es el mensaje que será autenticado Opad: encabezado exterior Ipad: encabezado interno

5 Algoritmo function hmac (key, message) if (length(key) > blocksize) then key = hash(key) // keys longer than blocksize are shortened end if if (length(key) < blocksize) then key = key ∥ [0x00 * (blocksize - length(key))] // keys shorter than blocksize are zero-padded (where ∥ is concatenation) o_key_pad = [0x5c * blocksize] ⊕ key // Where blocksize is that of the underlying hash function i_key_pad = [0x36 * blocksize] ⊕ key // Where ⊕ is exclusive or (XOR) return hash(o_key_pad ∥ hash(i_key_pad ∥ message)) end function

6 Llave Las llaves usadas necesitan ser totalmente aleatorias, o como mínimo pseudoaleatorias, también deben actualizarse constantemente Pueden ser de longitud N

7 Hash MD5 Message-Digest Algorithm 5 AlgoritmoAdicion de bits: Se agrega un bit 1 y despues 0s hasta completar un número congruente con 448,modulo 512, es decir, si se resta 448 a dicho número, el módulo 512 de dicha resta será cero.

8 Longitud del mensaje Un entero de 64 bits que represente la longitud 'b' del mensaje (longitud antes de añadir los bits) se concatena al resultado del paso anterior. En el supuesto no deseado de que 'b' sea mayor que 2^64, entonces sólo los 64 bits de menor peso de 'b' se usarán.

9 Inicializar el buffer MDSe usan 4 palabras (A,B,C y D) de 32 bits y se inicializan con valores hexadecimales de la siguiente manera: palabra A: palabra B: 89 ab cd ef palabra C: fe dc ba 98 palabra D:

10 Procesado del mensaje en bloques de 16 palabras4 funciones con 3 palabras de entradas y una de salida

11 Salida Se leen todos los bits de A,B,C y D en ese orden. Empezando por el menos significativo de A hasta llegar al más significativo de D A B 100000… …..

12 Implementaciones de HMACPython librería Lib/hmac.py hmac.new(key[, msg[, digestmod]]) HMAC.update(msg) HMAC.digest() HMAC.copy()

13 HMAC vacios HMAC_MD5("", "") = 0x74e6f7298a9c2d168935f58c001bad88HMAC_SHA1("", "") = 0xfbdb1d1b18aa6c08324b7d64b71fb e1d HMAC_SHA256("", "") = 0xb613679a0814d9ec772f95d778c35fc5ff1697c c6c c5ad

14 Ejemplos… HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 0x e7749b90c2dc24911e275 HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = 0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = 0xf7bc83f b13298e6aa6fb143ef4d59a dbc2d1a3cd8

15 Referencias https://www.ietf.org/rfc/rfc2104.txt https://docs.python.org/2/library/hmac.html