domingo, 20 de diciembre de 2009

Comprobar la integridad de la información

La información tiende a dañarse, al ser trasportada, ya sea por algún dispositivo de almacenamiento en mal estado o por una errores durante la trasmisión de dicha información.

Para saber si la información ha llegado en buen estado contamos con los hash

Hash se refiere a una función o método para generar claves o llaves que representen de manera casi unívoca a un documento, registro, archivo, etc., resumir o identificar un dato a través de la probabilidad, utilizando una función hash o algoritmo hash. Un hash es el resultado de dicha función o algoritmo.

y para crearlos contamos con función de hash

Una función de hash es una función para resumir o identificar probabilística-mente un gran conjunto de información, dando como resultado un conjunto imagen finito generalmente menor (un subconjunto de los números naturales por ejemplo). Varían en los conjuntos de partida y de llegada y en cómo afectan a la salida similitudes o patrones de la entrada. Una propiedad fundamental del hashing es que si dos resultados de una misma función son diferentes, entonces las dos entradas que generaron dichos resultados también lo son.

pero no son perfecto ya que pueden ocurrir colisiones

En informática, una colisión de hash es una situación que se produce cuando dos entradas distintas a una función de hash producen la misma salida.

Es matemáticamente imposible que una función de hash carezca de colisiones, ya que el número potencial de posibles entradas es mayor que el número de salidas que puede producir un hash. Sin embargo, las colisiones se producen más frecuentemente en los malos algoritmos. En ciertas aplicaciones especializadas con un relativamente pequeño número de entradas que son conocidas de antemano es posible construir una función de hash perfecta, que se asegura que todas las entradas tengan una salida diferente. Pero en una función en la cual se puede introducir datos de longitud arbitraria y que devuelve un hash de tamaño fijo (como MD5), siempre habrá colisiones, dado que un hash dado puede pertenecer a un infinito número de entradas.

para poder crear nuestros hash contamos con con md5deep que con el cual tenemos varias opciones

md5deep - Compute MD5 message digests
sha1deep - Compute SHA-1 message digests
sha256deep - Compute SHA-256 message digests
tigerdeep - Computer Tiger message digests
whirlpooldeep - Compute Whirlpool message digests

para este ejemplo usaremos whirlpooldeep ( podemos consultar el man ) supongamos que tenemos un archivo de respaldo backup.tar.bz2

para instalar usamos este comando

sudo aptitude install md5deep

y para obtener su hash

whirlpooldeep -q backup.tar.bz2 > backup.tar.bz2.hash

Lo lo mandamos a un archivo para para usarlo cunado se necesario y para comprobarlo podríamos usar diff por ejempro tenemos backup.tar.bz2.hash generamos otro hash

whirlpooldeep -q backup.tar.bz2 > backup.tar.bz2.hash2
diff backup.tar.bz2.hash2 backup.tar.bz2.hash


y usamos diff para buscar diferencias y si nos arroja alguna es que esta dañado

0 comentarios: