Cómo Comprobar La Integridad de Los Ficheros
Cómo Comprobar La Integridad de Los Ficheros
Cómo Comprobar La Integridad de Los Ficheros
Instituto Nacional
OBSERVATORIO
de Tecnologías
de la Comunicación
Aun así, lo habitual, tanto para Windows como para Linux es descargar programas ya
compilados en binario de los que no se dispone del código fuente. Es posible analizarlos,
descompilarlos, desemsamblarlos, estudiarlos en entornos de prueba, etc, pero resulta
ineficiente y complejo conocer qué hace realmente un programa sin disponer del código
fuente. Además implica muchos conocimientos relativos al análisis de comportamiento.
Ante esta situación, ¿quién puede garantizar que los ficheros que son descargados no
contienen algún tipo de código no deseado? ¿Cómo se puede estar seguro de que lo que
se descarga el usuario es lo que el autor legítimo ha colgado en su web y que no ha sido
alterado por un tercero? Se repasan a continuación los conceptos básicos sobre la
integridad y origen de ficheros y métodos prácticos para comprobarlos.
I Introducción
Esta situación en la que un atacante se hace con un servidor FTP o web y tiene la
posibilidad de modificar un programa que más tarde será descargado por otros, es lo que
se conoce como una troyanización, y puede suponer un riesgo a nivel global si ocurre
sobre aplicaciones populares. Este tipo de ataque se ha dado en muchas ocasiones. Sin
las herramientas y precauciones adecuadas, nada garantiza que un programa esté libre
de malware, ni siquiera el hecho de descargarlo de una página oficial del fabricante.
OBSERVATORIO
Cómo comprobar la integridad deDE LA SEGURIDAD DE LA INFORMACIÓN
los ficheros Página 1 de 13
Observatorio de la Seguridad de la Información
http://observatorio.inteco.es
En general, los axiomas que hay tener en cuenta siempre que se implemente un control
de seguridad o se considere un aspecto de la seguridad, son los siguientes:
• Disponibilidad. El sistema y los datos tienen que ser accesibles por los usuarios
autorizados en todo momento.
Comprobar la integridad de los ficheros es la tarea que permite saber a ciencia cierta si
éstos han sido modificados desde su creación. Esto es lo que se estudiará en lo
siguientes epígrafes.
Las funciones hash son estructuras de datos muy conocidas en matemáticas y ciencias
de la computación y se encuentran ligadas muy estrechamente con la criptografía en
general y la integridad de los datos en particular.
Fuente: INTECO
• No debe existir un método (que no sea de fuerza bruta) para producir un colisión,
es decir, dos mensajes con el mismo resumen.
Aplicaciones
Con estas premisas, las aplicaciones de las funciones hash son claras:
• MD5. Ante la entrada de cualquier flujo de datos, devuelve un bloque de 128 bits.
En 2006 se publicó un método capaz de encontrar colisiones en unos minutos y
por tanto, aunque muy usado, no se considera totalmente seguro hoy día.
En criptografía asimétrica existen dos claves distintas que se complementan para cifrar y
descifrar los mensajes. Funcionalmente tienen las mismas capacidades, pero una de
ellas permanece secreta y la otra se hace pública.
Por otra parte calcula el resumen criptográfico del mensaje en claro que le ha
llegado.
Fuente: Hispasec
Método Ventajas
Hash Garantía de que el archivo no ha cambiado
Garantía de que el archivo no ha cambiado y
proviene de una firma digital concreta, aunque nada
Firma digital
garantiza que pertenezca a esa persona física
determinada.
Garantía de que el archivo no ha cambiado y
proviene de una firma concreta, garantizada su
Certificado
identidad por una tercera parte confiable (Autoridad
Certificadora)
Ofrece una idea (no definitiva) sobre si el archivo
Virustotal
contiene malware o no.
Fuente: INTECO
Hash
Una vez que se conocen las características de las funciones hash, se pueden utilizar
como método para garantizar la integridad de los archivos que se descargan. Así, por
ejemplo, un programador que hace público un archivo ejecutable de un programa, puede
calcular su hash (bien MD5, bien SHA) y publicarlo también. De esta forma, se sabe que
cualquier otro archivo que no sea exactamente ese que ha publicado el autor, tendrá un
resultado hash diferente.
También, Microsoft facilita una herramienta por línea de comandos. Está disponible
desde http://support.microsoft.com/kb/841290/en-us. Se llama fciv, (File Checksum
Integrity Verifier). Permite además del cálculo del MD5, el cálculo del hash más seguro
SHA.
Con las herramientas adecuadas, se puede comprobar la integridad de los ficheros en los
que el autor ha hecho público el hash oficial. Por ejemplo, se pueden observar diferentes
páginas en los que se hace público el hash del fichero junto con el propio archivo de
descarga.
Ilustración 3: Ejemplo de página que publica los hashes junto con el programa para
descarga
Fuente: INTECO
Ilustración 4: Ejemplo de página que publica los hashes junto con el programa para
descarga
Fuente: INTECO
c:\>md5sum trixbox-2.8.0.4.iso
5c9826aad9203221439c858c6350c625 * trixbox-2.8.0.4.iso
Como los dos hashes coinciden (el publicado en la página y el resultado de la operación
de cálculo que se ha realizado) podemos decir que el archivo mantiene su integridad.
Otra desventaja es que muchos fabricantes no publican el hash MD5 ni ningún otro
método para comprobar que el software que se descarga es fiable más que la descarga
desde una página oficial.
Las firmas suelen ser archivos con extensión SIG o ASC que resultan de firmar
criptográficamente con la clave privada del autor el hash de un fichero. Si posteriormente
se comprueba, a través de la clave pública, que el fichero firmado concuerda con la firma,
es que se está ante un fichero realmente creado por quien dice haberlo hecho, y no
modificado desde que se firmó. Una vez más, esto no garantiza en ningún modo las
intenciones del archivo, sólo su origen.
Ilustración 5: Ejemplo de página que publica las firmas PGP de los ficheros
Fuente: INTECO
Fuente: INTECO
a) La firma pública.
b) El archivo a verificar.
Como se indica en la Ilustración 6 (This key is not certified with a trusted signature!, There
is no indication that the signature belongs to the owner), nada asegura que la firma
pertenezca realmente al dueño, puesto que no está firmada por una entidad de confianza.
Aquí es donde entran en juego los certificados. Con ellos, se garantiza la integridad del
archivo (que no haya sido alterado), que ha sido creado por un usuario con una firma
concreta y además, que esa firma corresponde físicamente a él (una tercera parte
confiable lo garantiza).
Un certificado consiste en la asociación entre una entidad física y una firma, realizado por
una entidad confiable.
Es lo equivalente a un DNI en el mundo físico. Un certificado digital certifica que una firma
criptográfica pertenece a una persona, y una entidad lo ha comprobado: le ha pedido a
esa persona sus datos y pruebas fehacientes de que la firma le pertenece. En ese
momento, ha firmado a su vez el certificado, que no es más que ponerle un "sello" de
confianza: la firma pertenece a su autor.
Fuente: INTECO
Fuente: INTECO
Los detalles del certificado indican si se puede confiar en el archivo. Si la ruta de firmas
culmina en una entidad de confianza (en este caso VeriSign), entonces es más que
probable que el archivo no sólo no haya sido modificado desde que se creó, sino que
además viene de la empresa que dice venir.
Virustotal
Fuente: INTECO
http://twitter.com/ObservaINTECO
http://www.scribd.com/ObservaINTECO
http://www.inteco.es/blog/Seguridad/Observatorio/BlogSeguridad/