Código de detección de manipulaciones

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:

  • Las que requieren que la función hash sea OWHF. Por tanto es difícil encontrar un mensaje que tenga un valor hash pre-especificado.
  • Las que requieren que la función hash sea CRHF. Por tanto es difícil encontrar dos mensajes con el mismo valor hash.

Métodos de construcción[1][2]

editar

Atendiendo a en que basan su algoritmo podemos clasificar los códigos de detección de modificaciones en:

Basadas en aritmética modular

editar

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).

Basadas en cifradores de bloque

editar

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:

  • Davies-Meyer(DM):  
  • Matyas-Meyer-Oseas (MMO):  
  • Miyaguchi-Preenel:  

Donde:

  •   representa al xor
  •   representa a aplicar el cifrador de bloque E con la clave A sobre el dato B.
  •   es el bloque i del mensaje al que se le aplica la función hash en cada paso.
  •   es el valor hash obtenido en el paso previo al paso i.

Funciones hash dedicadas

editar

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

Ataques

editar

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:

Referencias

editar
  1. H. Tiwari, K. Assawa, "Cryptographic Hash Function:An Elevated View", European Journal of Scientifc Research 2010
  2. Bart Preenel,"Cryptographic Primitives for Information Authentication - State of the Art". Katholieke Universiteit Leuven