CRIPTOGRAFÍA HASHING DESARROLLO Módulo III: gestión de claves, autenticación y números seudoaleatorios Gestión de claves simétricas y asimétricas. Tipos de claves. Claves jerarquizadas. Generación. Almacenamiento. Distribución. Mantenimiento. Gestión de Claves en Redes de Computadoras. Autenticación de Mensajes. Identificación débil y fuerte de usuarios. Teoría general de hashing. Funciones hash y funciones MAC. Función HMAC. Cifradores de flujo y clave de Vernam. Generación de números seudoaleatorios. Generadores LFSR y ataques criptoanalíticos: algoritmo Berlekamp-Massey. Protocolos especiales. cripto I-scolnik-hecht 2 FUNCIONES HASHING Las funciones hashing (o hash) juegan un rol fundamental en la Criptografía pues sirven esencialmente para verificar la integridad de los mensajes. Más precisamente: una función de hashing h(m) transforma cadenas de bits (m) de longitudes arbitrarias pero finitas, en otras cadenas de longitud fija de n-bits. Generalmente m>>n pero esto no es imprescindible. cripto I-scolnik-hecht 3 FUNCIONES HASHING Sea A un conjunto; denotaremo s por A a la cardinalid ad del mismo. Considerem os h : D → R una función de hashing. Si D > R entonces inevitable mente existirán elementos x, y con x ≠ y tales que h ( x ) = h ( y ). Estas se denominan colisiones . Si restringim os el dominio a las cadenas de longitud t > n y si h es aleatoria, en el sentido de que todos sus outputs sean equiprobab les, entonces aproximada mente 2 t − n inputs darán el mismo output. (n es la long del hash) cripto I-scolnik-hecht 4 FUNCIONES HASHING Esto significa que si elegimos dos inputs al azar, la probabilidad de que den el mismo output es 2 −n (independiente de t ). La idea básica es que un hash de un mensaje sirve como una representación compacta del mismo, y por eso se lo llama también fingerprint, digesto de mensaje, checksum,etc. Las funciones de hashing se usan en conjunción con los algoritmos de firmas digitales, pues lo que se firma es un hashing del mensaje. Por lo tanto es necesario que h satisfaga algunas condiciones para evitar falsificaciones. cripto I-scolnik-hecht 5 TAXONOMIA DE FUNCIONES HASHING funciones HASH sin clave secreta detección de modificaciones (MDCs o MICs) OWHF otras aplicaciones CRHF resistente a preimagen resistente a 2° preimagen resistente a colisiones con clave secreta otras aplicaciones autenticación de mensajes (MACs) message authentication code manipulation detection code o msg integrity code one way weak collision resistance strong collision resistance cripto I-scolnik-hecht 6 PRINCIPALES APLICACIONES DE LAS FUNCIONES HASHING 1. 2. Control de integridad de mensajes Autenticación de mensajes Esto ha sido reemplazado por la firma digital y hoy día entra en la categoría de firma electrónica por la posibilidad de repudio que genera la existencia de una clave secreta compartida entre quien genera ewl MAC y quien lo verifique. 3. 4. 5. 6. 7. 8. 9. Confirmación de conocimiento (ACK) Obtención de claves aleatorias Generación de números seudoaleatorios Almacenamiento seguro de contraseñas Autenticación mutua en protocolos de enlace remoto Autenticación de sistemas Otras cripto I-scolnik-hecht 7 MACs Un Message Authentication Code (MAC) es una familia de funciones hk personalizadas por medio de una clave secreta k, con las siguientes propiedades: 1. 2. 3. FACILIDAD DE COMPUTO: Para una dada función hk, una clave k y una entrada x, la salida hk(x) es fácil de calcular COMPRESION: hk mapea una entrada x de longitud arbitraria en una salida hk(x) de longitud fija n-bits. RESISTENCIA AL COMPUTO: Dados cero o mas pares (TEXTO xi, MAC hk(xi)), es computacionalmente irrealizable computar un nuevo par (x’ , hk(x’)) para x’ ≠ xi Si no se cumple la tercera condición, el MAC esta sujeto a fraude. Esta condición es llamada de KEY NON RECOVERY y es condición necesaria (pero no suficiente) para bloquear fraudes. cripto I-scolnik-hecht 8 PROPIEDADES BASICAS HASHING UNA FUNCION HASH (h) POSEE COMO MINIMO ESTAS DOS PROPIEDADES: 1. 2. COMPRESION: h mapea una entrada x de tamaño arbitrario en una salida h(x) de logitud fija de n-bits FACILIDAD DE COMPUTO: dado h y una entrada x, h(x) es fácilmente computable Así expresada se ha definido una función hash sin clave. Las que poseen clave (secreta) aceptan como segunda entrada esa clave (k) de la cual dependerá unívocamente la salida hk(x) cripto I-scolnik-hecht 9 PROPIEDADES ADICIONALES HASHING SIGUIENDO CON FUNCIONES HASH SIN CLAVE, SEAN (x x’) DOS ENTRADAS e (y y’) SUS RESPECTIVAS SALIDAS: 3. 4. 5. RESISTENCIA A LA PREIMAGEN (ONE WAY HASH FUNCION): Para prácticamente cualquier entrada es computacionalmente irrealizable encontrar un x (desconocido) tal que h(x)=y (conocido) RESISTENCIA A LA 2° PREIMAGEN (OWHF: WEAK ONE WAY HASH FUNCTION): Dados x y su correspondiente y=h(x), es computacionalmente irrealizable encontrar otro x’ distinto a x tal que y’=h(x’)=y RESISTENCIA A LAS COLISIONES (CRHF: STRONG ONE WAY HASH FUNCTION): Es computacionalmente irrealizable hallar dos entradas (x , x’) distintas que posean la misma salida h(x). (Esto difiere del anterior en que hay libre elección de los dos valores x y por eso es más fuerte) cripto I-scolnik-hecht 10 OTRAS PROPIEDADES ADICIONALES DE LAS ONE WAY HASHINGS 6. 7. 8. NO CORRELACION: Los bits de entrada y los bits de salida no deben estar correlacionados. Vinculado con esto, es deseable un efecto de AVALANCHA en la cual cada bit de entrada afecta a cada bit de salida. RESISTENCIA A LA CASI COLISION: Debe ser difícil obtener dos entradas (x, x’) para las cuales sus imágenes (y, y’) difieran solamente en unos pocos bits. RESISTENCIA A LAS PREIMAGENES PARCIALES: Debe ser tan dificil recuperar una parte de la preimágen de un hash como recuperar su totalidad. (Además si se conoce una parte de la preimágen debe ser difícil obtener el resto de ella a partir del hash, o sea si se desconocen t bits de la preimágen, debe tomar en promedio 2t-1 operaciones hashing hasta descubrirlos) cripto I-scolnik-hecht 11 MODELO GENERAL DE FUNCIONES HASH ITERADAS (esquema Merkle-Damgård) VISION DE ALTO NIVEL entrada de long arbitraria función iterada de compresión salida de long fija cripto I-scolnik-hecht 12 ENTRADA ORIGINAL x función hash h preprocesamiento appendar padding bits appendar long bloque entrada formateada x=x1x2x3…xt procesamiento iterado función de compresión Hi-1 f xi Hi Ho = IV Ht g SALIDA h(x)=g(Ht) cripto I-scolnik-hecht 13 OBJETIVOS DE SEGURIDAD Y ATAQUES BASICOS Tipo HASH Objetivo de Diseño OWHF •Resistenc preimagen •Resistenc 2° preimagen CRHF •Resistenc colisión MAC •No recuperac claves •Resist computacional t:bits k n:bits hk() Fuerza Ideal Objetivo del Atacante 2n 2n •Gen preimagen •Hallar x’ h(x) 2n/2 •Gen colisión 2t •Deducir k pfail= •Gen nuevo par max(2-t,2-n) (m,MAC) cripto I-scolnik-hecht 14 CUADRO COMPARATIVO DE MDC Hash n m Preimagen Colisión (teórica) (bits bloque) (bits hash) Matyas-Meyer-Oseas n m 2n 2n/2 MDC-2 (c/DES) 64 128 283 255 MDC-4 (c/DES) 64 128 2109 256 Merkle (c/DES) 106 128 2112 256 MD4 512 128 2128 220 MD5 512 128 2128 264 RIPEMD-128 512 128 2128 264 RIPEMD128/SHA-1 512 160 2160 280 SHA512 512 512 2512 2256 cripto I-scolnik-hecht 15 MODELO BASICO DE FUNCIONES HASH Familia MD4-MD5-SHA-SHA1-RIPEMD128-RIPEMD160-SHA512 mensaje Iterar extracción de bloques … Bloque 512 bits fragmentación permutación rotación 48/64/80 ciclos por bloque compresión Bloque 128/160/512 bits hash cripto I-scolnik-hecht 16 AMENAZAS MALICIOSAS Y NO MALICIOSAS A LA INTEGRIDAD Las técnicas de protección de integridad de mensajes en canales ruidosos difiere significativamente de aquellos canales sujetos a la manipulación por adversarios. Los CHECKSUMS brindan protección contra errores no maliciosos en caso de errores de transmisión. Esta protección no es criptográfica en el sentido que no hay claves secretas ni canales asegurados. Los códigos de corrección de errores van un paso mas allá, siendo capaces de detectar y corregir una cierta tasa máxima de errores. cripto I-scolnik-hecht 17 CRCs – Cyclic Redundancy Codes Un algoritmo k-bit CRC mapea entradas de longitud arbitraria en resúmenes k-bits aritméticos. Para el caso k=16 el CRC-16 se basa en el polinomio g(x)=1+x2+x15+x16 . Una entrada de t-bits se representa como el polinomio binario d(x) grado t-1, y el valor CRC correspondiente a d(x) es el string de 16 bits representado por el resto de dividir x16.d(x) por g(x). Para todos los mensajes d(x) con t<32768 el CRC-16 puede detectar todos los errores basados en un único bit, dos bits, tres bits o cualquier número impar de bits, todo burst error de longitud ≤16, el 99.997% (=1-2-15) de 17-burst errors y el 99.998% (=1-2-16) de burst errors ≥18. (burst error=bloque de error de exactamente b-bits que comienza y termina con un uno) cripto I-scolnik-hecht 18 ATAQUES AVANZADOS A LAS FUNCIONES HASH • Ataque del cumpleaños • Ataque de seudo-colisiones y funciones de compresión • Ataques encadenados • Ataques al motor de encripción • Ataques de colisiones diferenciales (Chabaud-Joux) cripto I-scolnik-hecht 19 ATAQUE DEL CUMPLEAÑOS - 1 El ataque del cumpleaños: Vamos a determinar una condición necesaria de seguridad para las funciones de hashing que depende de la cardinalidad de los conjuntos involucrados. La misma dependerá de un sistema simple de encontrar colisiones llamado el ataque del cumpleaños. cripto I-scolnik-hecht 20 ATAQUE DEL CUMPLEAÑOS - 2 El nombre proviene de la aparente paradoja que dice que dado un grupo de al menos 23 personas, entonces la probabilidad de que dos de ellas cumplan años el mismo día es > 0.5 Sea h : X → Y una función de hashing con X , Y conjuntos finitos tales que ( X = m) ≥ (2 Y = 2n) Es fácil ver que hay al menos n colisiones, la cuestión es como encontrarlas. cripto I-scolnik-hecht 21 ATAQUE DEL CUMPLEAÑOS - 3 Una idea simple sería la de elegir k elementos al azar x1 ,..., x k ∈ X , calcular h ( x i ) = y i , y ver si hay colisiones . Veamos una cota inferior de la probabilid ad de encontrar colisiones con este método. La misma dependerá de k y n pero no de m. Como nos interesa una cota inferior haremos la suposición m de que h ( y ) ≈ ∀ y ∈ Y (si eso no se cumple, la n probabilid ad de encontrar una colisión aumenta) −1 cripto I-scolnik-hecht 22 ATAQUE DEL CUMPLEAÑOS - 4 Recordemos que n = | Y | cardinal del espacio de hash. Veamos la probabilid ad de que y1 ,..., y k ∈ Y sean distintos : la primera elección y1 es arbitraria, la 1 probabilid ad de que y 2 ≠ y1 es 1 − , la n probabilid ad de que y 3 sea diferente de y1 e y 2 es 2 1n cripto I-scolnik-hecht 23 Entonces, la probabilidad de que no haya colisiones entre k - hash resulta : k −1 1 2 k −1 i (1 − )(1 − )...(1 − ) = ∏ (1 − ) n n n n i =1 Si x es pequeño, entonces 1 − x ≅ e − x De aquí que la probabilidad de que no haya colisiones resulta : i k −1 k −1 − − i n (1 − ) ≅ ∏ e = e ∏ n i =1 i =1 colisión es 1 − e ∴ k 2 − k ≅ 2n ln k ≅ 2n ln − k ( k −1) 2n k ( k −1) 2n y la probabilidad de que exista al menos una ≅ p ⇒ e − k ( k −1) 2n ≅ 1− p ⇒ − k (k − 1) ≅ ln(1 − p ) 2n 1 ; si ignoramos - k llegamos a la estimación 1− p 1 y si elegimos p = 0.5 resulta que k ≅ 1.17 n 1− p En el caso n = 365 se obtiene k ≅ 22.3 cripto I-scolnik-hecht 24 ATAQUE DEL CUMPLEAÑOS - 6 El ataque del cumpleaños nos da una cota inferior al tamaño de los hashings. Por ejemplo un hashing de 40 bits sería inseguro puesto que puede encontrars e una colisión con una probabilid ad de 1/2 haciendo unos 2 20 hashings aleatorios . k ≅ 1.17 √240 ≅ 220 De ahí el uso de 160 bits como mínimo. k ≅ 1.17 √2160 ≅ 280 ≅ 1024 cripto I-scolnik-hecht 25 ATAQUES ENCADENADOS En este ataque no se intenta quebrar a la función h en su conjunto sino específicamente a la función de compresión f. Como esta clase de funciones son iteradas, la idea es encontrar combinaciones de bits en la entrada que generen puntos fijos en las sucesivas iteraciones encadenadas. Estos puntos fijos permiten la existencia potencial de colisiones y 2° preimágenes y abren dudas acerca del hash en su conjunto. cripto I-scolnik-hecht 26 ATAQUES AL MOTOR DE ENCRIPCION Aquí no se intenta poner en duda a la función intrínseca del hash sino (en aquellos que lo poseen) al motor de encripción (generalmente simétrico) que emplean. Algunos ataques potenciales de esta clase incluyen: acoples lineales entre entradas complementarias, búsqueda de claves débiles, búsqueda de puntos fijos en las funciones de compresión del motor, colisiones de claves del motor que se trasladen a colisiones del hash, etc. cripto I-scolnik-hecht 27 ATAQUE DE COLISIONES DIFERENCIALES (CHABAUD-JOUX) • A partir de 2004 • Método de búsqueda de colisiones y seudocolisiones de imágenes y 2° preimagen por método diferencial • Quiebre de parte de la familia MD4 (IFN= irregular Feistel Network) • MD5, SHA-0: quebrado • SHA-1: debilitado • SHA-2: probablemente debilitado cripto I-scolnik-hecht 28 SHA-1: IFN (Irregular Feistel Network) cripto I-scolnik-hecht 29 So what's the big news? Some very bright researchers in China presented a paper, Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD, at the Crypto 2004 conference in August 2004, and it's shaken up the security world considerably. This was some outstanding cryptography research. They have found ways to reliably generate collisions in four hash functions much faster than brute-force time, and in one case (MD4, which is admittedly obsolete), with a hand calculation. This has been a stunning development. These are all of the "we control both inputs" type - the first of our three kinds of collisions - and it holds the most promise in the compromise of digital signatures where the bad guy can create two contradictory documents and pull a switcheroo later. cripto I-scolnik-hecht 30 Colisión de 2° Preimagen cripto I-scolnik-hecht 31 fraude por colisión programada cripto I-scolnik-hecht 32 colisión real con MD5 cripto I-scolnik-hecht 33 HMAC Keyed-Hash Message Authentication Code In cryptography, a keyed-Hash Message Authentication Code (HMAC or KHMAC), is a type of message authentication code (MAC) calculated using a specific algorithm involving a cryptographic hash function in combination with a secret key. As with any MAC, it may be used to simultaneously verify both the data integrity and the authenticity of a message. Any iterative cryptographic hash function, such as MD5 or SHA-1, may be used in the calculation of an HMAC; the resulting MAC algorithm is termed HMAC-MD5 or HMAC-SHA-1 accordingly. The cryptographic strength of the HMAC depends upon the cryptographic strength of the underlying hash function, on the size and quality of the key and the size of the hash output length in bits. cripto I-scolnik-hecht 34 HMAC Keyed-Hash Message Authentication Code Definition: HMACK(m) = h [( K opad) || h (( K ipad ) || m)] where h is a cryptographic hash function, K is a secret key padded to the right with extra zeros to the block size of the hash function, m is the message to be denotes exclusive or (XOR), and authenticated, || denotes concatenation, the outer padding opad = 0x5c5c5c...5c5c and inner padding ipad = 0x363636...3636 are two one-block–long hexadecimal constants. cripto I-scolnik-hecht 35 cripto I-scolnik-hecht 36
Puede agregar este documento a su colección de estudio (s)
Iniciar sesión Disponible sólo para usuarios autorizadosPuede agregar este documento a su lista guardada
Iniciar sesión Disponible sólo para usuarios autorizados(Para quejas, use otra forma )