viernes, 21 de febrero de 2003

Bases de datos de "hashes"

Desde hace unas semanas, está disponible una amplia base de datos de
"hashes" de ficheros, distribuciones e imágenes "ISO", para poder
comprobar su integridad y autenticidad.

Un "hash" es una función criptográfica que produce una salida de
longitud fija (típicamente 128 o 160 bits) a partir de una entrada
arbitrariamente larga. Un buen "hash" debe cumplir las siguientes
propiedades:

a) El resultado final no debe dejar traslucir ninguna información sobre
los datos originales. A todos los efectos, debe parecer aleatorio.

b) Dado un resultado determinado, no hay otro sistema aparte de
la fuerza bruta para generar datos de entrada capaces de producir
dicho resultado.

c) Dados unos datos de entrada y su "hash", no debe haber un atajo
(aparte de la fuerza bruta) para generar otros datos de entrada
distintos, con el mismo "hash".

Existen muchos algoritmos de "hash", pero los más populares son MD5 y
SHA-1.

Si obtenemos un "hash" de un archivo y lo comparamos con una base de
datos de "hashes" correctos y confiables, sabremos si nuestro fichero ha
sido modificado o está corrompido. Por las propiedades indicadas, las
probabilidades de que un atacante pueda modificar un archivo de forma
que su "hash" siga coincidiendo son muy bajas. Por el teorema del
cumpleaños sabemos, por ejemplo, que si el hash tiene 160 bits, se
requieren del orden de 2^80 pruebas (más o menos un cuatrillon, un uno
seguido de 24 ceros). Suponiendo que el atacante genere mil millones de
pruebas por segundo, tardaría unos 3.8 millones de años en hallar una
prueba válida.

Recordamos a nuestros lectores que ante la duda, la verificación de los
archivos debe realizarse reiniciando la máquina desde un kernel
"confiable" (idealmente residente en un floppy protegido contra
escritura o en un CDROM) y que el programa de cálculo de "hashes"
también debe encontrarse en un medio confiable. De esa forma se evita el
riesgo de que un atacante haya contaminado las propias herramientas de
verificación con troyanos.

Hace casi tres años ya informamos de una base de datos similar, en SUN,
para entornos Solaris, pero en esta ocasión la base de datos disponible
permite acceder a "hashes" de sistemas Solaris, FreeBSD, Linux y
MacOS-X. El gobierno norteamericano tiene una base de datos similar
que cubre también entornos como Microsoft Windows.


Jesús Cea Avión
jcea@hispasec.com


Más información:

Known-Good MD5 Database
http://slashdot.org/article.pl?sid=02/12/09/0411224

KnownGoods Database
http://www.knowngoods.org/

http://www.hispasec.com/unaaldia/560
09/05/2000 - Solaris Fingerprint Database

SECURITY INFORMATION - Solaris Fingerprint Database
http://sunsolve.sun.com/pub-cgi/fileFingerprints.pl

RDS Product Search
http://patapsco.nist.gov/itl/div897/nsrl/ps.asp