 
 
 
 
 
 
 
  
 Siguiente: Esteganografía
 Subir: Criptología
 Anterior: Criptosistema de McEliece
     Índice General 
Matemáticamente podemos definir las funciones resumen (hash functions) 
como proyecciones de un conjunto, generalmente con un número elevado de 
elementos (incluso infinitos), sobre un conjunto de tamaño fijo y mucho más 
pequeño que el anterior; por ejemplo, podemos definir la siguiente función 
resumen, que va de un conjunto con un número infinito de elementos a otro
con únicamente 10:
    , , 
Sin embargo, aunque la anterior sea una función resumen en sentido estricto, 
no es especialmente interesante en aplicaciones criptográficas; para serlo, 
habría de cumplir los siguientes requisitos:
- La entrada puede ser de un tamaño indeterminado.
- La salida es de un tamaño fijo, varios órdenes de magnitud más
pequeño que el anterior.
- Para un cierto , calcular  es computacionalmente barato.
-  es de un solo sentido.
-  no presenta colisiones.
El que una función hash sea de un solo sentido (lo que se denomina One-Way hash function) no implica más que a partir del valor de 
no puedo obtener el de : no existe , o su cálculo es 
computacionalmente difícil. Las colisiones en una función resumen se
producen cuando para dos entradas diferentes  e , , y se habla 
de
funciones hash débilmente libres de colisiones (weakly collision
free) cuando es 
computacionalmente imposible encontrar dos elementos  e  tales que 
cumplan 
; si aparte de computacionalmente imposible también lo es
matemátimamente, se habla de funciones resumen fuertemente libres de 
colisiones (strongly collision-free).
Una de las aplicaciones criptográficas más importante de las funciones 
resumen es sin duda la verificación de integridad de archivos; aunque ya
hemos hablado de los verificadores de integridad tipo Tripwire en el 
capítulo dedicado a los sistemas de detección de intrusos, la idea es
sencilla: en un sistema del que tengamos constancia que está `limpio' (esto
es, que no ha sido troyanizado o modificado de cualquier forma por un pirata)
podemos generar resúmenes de todos los ficheros que consideremos clave para
el correcto funcionamiento de la máquina y guardar dichos resúmenes -
como ya indica su nombre, mucho más cortos que los archivos originales - en
un dispositivo de sólo lectura como un CD-ROM. Periódicamente, o cuando
sospechemos que la integridad de nuestro entorno ha sido violada, podemos volver
a generar los resúmenes y comparar su resultado con el almacenado previamente:
si no coinciden, podemos estar seguros (o casi seguros) de que el fichero ha
sido modificado.
Para este tipo de aplicaciones se suele utilizar la función resumen MD5, diseñada por Ronald Rivest y que viene implementada `de serie' en 
muchos clones de Unix, como Solaris o Linux (órdenes `md5' o `md5sum'):
luisa:~$ echo "Esto es una prueba" >/tmp/salida
sluisa:~$ md5sum /tmp/salida 
3f8a62a7db3b276342d4c65dba2a5adf  /tmp/salida
luisa:~$ echo "Ahora modifico el fichero" >>/tmp/salida
luisa:~$ md5sum /tmp/salida 
1f523e767e470d8f23d4378d74817825  /tmp/salida
luisa:~$
Otra aplicación importante de las funciones resumen es la firma digital de
mensajes - documentos - y su timestamping; en el primer caso, como los 
algoritmos de firma digital suelen ser lentos, o al menos
más lentos que las funciones hash, es habitual calcular la firma
digital de un resumen del fichero original, en lugar de hacer el cálculo 
sobre el propio fichero (evidentemente, de tamaño mayor que su resumen). Con
respecto al timestamping, las funciones hash son útiles porque 
permiten publicar un resumen de un documento sin publicar su contenido, lo cual
permite a una parte obtener un timestamp de un documento sin que la
autoridad de timestamp conozca el contenido del mismo, pero asegurándose
la validez del procedimiento en caso de repudio; en ambos casos, tanto en la
firma digital como en el timestamping, trabajar con el resumen es 
completamente equivalente a trabajar con el archivo original.
 
 
 
 
 
 
 
  
 Siguiente: Esteganografía
 Subir: Criptología
 Anterior: Criptosistema de McEliece
     Índice General 
2003-08-08