Los Códigos de detección de manipulaciones son también llamados Códigos de detección de modificaciones, MDC (siglas del los dos términos ingleses válidos: Modification Detection Codes y Manipulation Detection Codes), Código de integridad de mensajes y MIC (siglas del inglés Message Integrity Codes). Un código de detección de modificaciones es una función hash criptográfica sin clave secreta que puede ser usada para detectar cualquier modificación de la cadena a la cual se aplique, ya sea esta modificación accidental o malintencionada. Por tanto las MDC permiten proteger la integridad de la información.
El modo de funcionamiento consiste en calcular el valor hash de la cadena y que este sirva como evidencia para la verificación de si la cadena ha sido modificada o no.
Para cumplir su objetivo la función hash tiene que cumplir propiedades que la hagan resistente frente ataques de adversarios maliciosos cuyo objetivo es que la función no cumpla con su cometido. Según las propiedades que se exijan podemos distinguir dos tipos de códigos de detección de modificaciones:
Atendiendo a en que basan su algoritmo podemos clasificar los códigos de detección de modificaciones en:
Estos códigos de detección de modificaciones basan su construcción y por tanto su seguridad en la dificultad de problemas de la aritmética modular. Al poder cambiar fácilmente el valor de referencia con el que se calcula el módulo, es fácil variar la longitud de las cadenas de salida. Estas funciones aprovechan la facilidad de implementación de la función módulo. Suelen ser muy lentos comparados con otro tipo de construcciones.Ejemplo de este tipo de algoritmos es MASH-1 (Modular Arithmetic Secure Hash Algorithm-1).
Este tipo de códigos de detección de modificaciones basan su construcción en la reutilización de cifradores de bloque. De esta forma se minimiza el esfuerzo de diseño e implementación y además aprovechan la fiabilidad en la seguridad de esos cifradores para transformar en seguridad en la función hash. En general suelen ser lentos comparados con las llamadas funciones hash dedicadas.
Los siguientes esquemas son los más habituales:
Donde:
Son códigos de detección de modificaciones especialmente diseñadas desde el principio para este propósito teniendo en cuenta que tengan un rendimiento optimizado y sin tener que reutilizar componentes previamente construidos. Estas funciones no están basadas en problemas difíciles como factorización o logaritmos discretos. Suelen ser construidas usando la construcción de Merkle-Damgård.
Ejemplos: MD2, MD4, MD5, SHA-1, SHA-2, SHA-3, TIGER, HAVAL, RIPEMD, RIPEMD-160, HAIFA, FORK256 y WHIRLPOOL
Los código de detección de manipulaciones son sometidos a distintos tipos de ataques. Cada tipo tiene como objetivo debilitar la seguridad desde un punto de vista distintos. Los principales son los siguiente:
Un ataque preimagen exitoso es mucho más serio que un ataque de colisiones exitoso ya que la seguridad de muchas de las aplicaciones que emplean este tipo de funciones están basada en la resistencia a preimagen. Además romper la resistencia a preimagen implica muchas veces romper la resistencia a colisiones.
En el estudio de las colisiones son importantes:
Escribe un comentario o lo que quieras sobre Código de detección de manipulaciones (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)