Hash

La función resumen

A las funciones resumen se les conoce como funciones hash o también en algunos sitios se les puede encontrar como funciones digest. Pero cuando nos encontramos ante un hash, ¿de qué estamos hablando? Básicamente es una función criptográfica que se traduce como un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Es decir, da igual la longitud de los datos de entrada, los datos de salida siempre tendrán la misma longitud.

Vamos a trabajarlo con un ejemplo práctico (te recomiendamos que tengas un navegador abierto):

Usemos el nombre de Adrián Ramírez, y ahora visitemos cualquier página web. Vamos a intentar sacar el hash delnombre en alguna web online. Os proponemos, por ejemplo, la siguiente URL.

Si lo has hecho verás que el resultado sale en varias funciones como, por ejemplo, la más conocida SHA-1, la MD5, etc. Para facilitar la comparación de los resultados te diremos que el nombre Adrián Ramírez en MD5 es 25f3303c9c133aa35ae656abf8a3177f.

La magia del hash es que tú habrás tenido que obtener el mismo resultado. En tal caso, podremos decir que el nombre no se ha modificado. Sin embargo, si has obtenido, por ejemplo, valores como este: 0143b69f24c4df991cd351d521de2ae8 es que sencillamente has escrito el nombre sin tildes.

Ahora te invitamos a que pruebes obtener el hash de tu nombre en SHA-512, y lo compares con el resultado de otra página web, ten en cuenta que hay muchas páginas en Internet que ofrecen este servicio. No se debe olvidar que parte de tu tarea también es verificar que dichas páginas webs hacen bien su trabajo.

Lo asombroso del hash es que podrías resumir hasta el libro más extenso en SHA-1 y seguirías obteniendo como resultado un hash de 40 caracteres. Y por otra parte, no existen dos entradas que produzcan el mismo hash de salida.

Aquí hay una foto, cortesía de Wikimedia Commons, que ilustra este concepto para aquellos que prefieren el aprendizaje visual:

Fuente: Función criptográfica hash, https://commons.wikimedia.org

Ya de por sí es un dato curioso a saber el que, independientemente del valor que se introduzca, existe un algoritmo que devolverá siempre la misma longitud de salida. En el momento en el que se varíe algún dato de la entrada, aunque sea un bit, el valor de salida seguirá siendo de la misma longitud pero no será el mismo.

¿Para qué se utilizan los valores hash?

La respuesta fácil es para mantener la cadena de custodia en la evidencia de forense digital. Fácil porque es lo que estamos acostumbrados a obtener después de clonar un disco. Sin embargo, vamos a profundizar algo más en este concepto.

Los hashes también se utilizan en el mundo de las contraseñas. Todos sabemos que sería un error guardar en una base de datos registros sensibles en texto plano. Por lo que si, por ejemplo, utilizamos MYSQL tenemos la opción de crear campos que guarden sus datos en MD5. Esto evita que en el caso de que un atacante acceda a la base de datos, le resulte fácil obtener los datos sensibles.

Así que si alguna vez estás en un servicio online y olvidas tu contraseña y solicitas “recordar mi contraseña” la plataforma en cuestión te tendrá que dar un enlace donde resetear tu contraseña, ya que si te da la contraseña en texto plano, significa que la base de datos de la plataforma no guarda las contraseñas cifradas, sino en texto plano, lo cual sería un fallo de seguridad en el sistema de almacenamiento de contraseñas de la plataforma.

El caso de Dropbox:

¿Crees que los administradores de Dropbox tienen tiempo de darse un paseo por todas las cuentas de sus usuarios?

La respuesta es obvia: No

Entonces, cómo podríamos explicar que Dropbox encontrara entre millones de archivos almacenados material protegido por derechos de autor. La respuesta es bastante sencilla, la hipótesis más lógica, posiblemente por acuerdos entre la Digital Millennium Copyright Act y Dropbox, es que crearan una lista con la función hash de quienes tenían los derechos de autor sobre varios archivos (en este caso el archivo compartido probablemente la versión digital de una canción, libro digital o de una película). Luego agregaron este hash de 40 caracteres en una especie de “lista negra” de materiales protegidos. Cuando el usuario intentó compartir el archivo, el sistema de análisis de Dropbox detectó automáticamente el hash que estaba incluido en este listado y bloqueó el intento de compartir el contenido. Si quieres ampliar más la información, te dejo aquí abajo la URL del artículo:

Sin embargo, esto no es nuevo y es una forma ingeniosa de buscar archivos en el infinito mundo de Internet. La Policía Nacional comenzó a utilizar la identificación de fotografías pedófilas por el número de hash porque da igual como se llame el archivo, siempre tendrá el mismo hash. Si no lo crees vamos a realizar la prueba. Busca una fotografía en tu ordenador cambia su nombre y obtén sus funciones hash. Puedes utilizar cualquier programa como por ejemplo Multihasher que es gratuito y lo puedes descargar del siguiente enlace: https://download.cnet.com/MultiHasher/3000-2092_4-75622401.html

Como verás los hashes no se modifican al cambiar el nombre del archivo. Esta la forma como la policía, y las empresas de almacenamiento en la nube pueden analizar millones de archivos sin tener que ver su contenido. De esta forma por ejemplo empresas como Google, en su producto Google Drive, puede bloquear un archivo que viola el copyright de un producto, desde libros, películas, incluso contenidos ilegales. Simplemente conociendo su hash, pueden lanzar búsquedas masivas.

Ahora ya sabes lo que es una función hash, como puedes ver, las funciones hash, no solo son útiles en el mundo forense.