Por @Alvy — 24 de septiembre de 2022

David Buchanan en Twitter: The image in this tweet displays its own MD5 hash. You can download and hash it yourself, and it should still match - 1337e2ef42b9bee8de06a4d223a51337

A David Buchanan se le ocurrió que sería divertido generar una imagen PNG que mostrara su propio hash, lo cual no es trivial. Después de darle vuelta al problemático bucle en el que entra la cuestión (si modificas la imagen cambia el hash y si cambia el hash tienes que modificar la imagen) finalmente lo consiguió. Y con el bonus de hacer que el hash empiece y acabe por 1337 (en la cultura hacker: Leet o «Élite»).

El resultado es este curioso PNG de 444×666 píxeles y 103 KB donde puede verse el valor del hash (1337e2ef42b9bee8de06a4d223a51337) y para el que si se calcula el hash MD5 se obtiene el mismo valor. Puedes comprobarlo descargando la imagen y ejecutando

md5sum hashquine_by_retr0id.png

o desde una página que haga el mismo cálculo como MD4 File Checksum.

El asunto dista de ser trivial, como decíamos. Recordemos que la función hash transforma un fichero cualquiera en un valor de longitud fija que es único… o único en la práctica, al menos. Lo interesante de estas funciones, como la MD5, es que un cambio en un solo bit modifica totalmente el hash. En el caso del MD5 son 128 bits que es fácil ver como 32 caracteres hexadecimales. Se utiliza ampliamente en criptografía y seguridad.

La idea de Buchanan, explicada someramente, consiste en utilizar la fuerza bruta, ir cambiando algunos píxeles o colores casi inapreciables y recalcular el hash una y otra vez, hasta encontrar uno que coincida (técnicamente se dice «que produzca colisiones»). La imagen es monocroma porque parte del truco es que los píxeles que se cambian van a una «paleta inteligente» que los vuelve invisibles, algo fácil de hacer en las imágenes PNG. El proceso requirió software especial para encontrar las colisiones y más de 24 horas de una máquina a toda pastilla comprobando millones de hashes.

Esta idea no es nueva, pero siempre resulta divertido ver un nuevo resultado. Ha servido también para generar GIF animados, PDFs (casi como «truco de magia predictiva»), HTML, ZIP, ROMs y archivos en muchos más formatos que muestran que en la práctica a veces se pueden conseguir hashes de forma intencionada, aunque con ciertas limitaciones y siempre a cambio de un gran coste de computación.

Relacionado:

Compartir en Flipboard Publicar / Tuitear Publicar