Diferentes programas, un mismo Hash MD5

Es interesante como las colisiones en algoritmos seguros cambian la visión de seguridad que se pueda tener, ya había visto hash idénticos claro para diferentes archivos incluso para intentar romper contraseñas vía colisión, lo que en teoría resulta mas “fácil? que 2 programas binarios con código arbitrario con un mismo hash y sin embargo estos programas compilados se pueden hacer, sin mucho esfuerzo, esperaba un super cluster para tal proeza, no fue necesario.

Se puede obtener más información de la siguiente URL

http://www.mscs.dal.ca/~selinger/md5collision/

2 programas diferentes un mismo hash

Descarga de archivo con programas y codigo fuente

En la imagen programa1 y programa2 son programas que fueron separados de las extrañanas de programa0, programa cero es el resultado de compilar el siguiente codigo


/* Copyright (C) 2006 Peter Selinger. This file is distributed under
the terms of the GNU General Public License. See the file COPYING
for details. */

#include

#define CRIB "b166892819484778de58f421f1dce377" \
"e5fa2b5cbb9c194eb9568939b0b8de62" \
"aa7dc6987a0483f6e8e7b6c2229a147f" \
"b5c4cf5c182f974654d2d034d912ef27" \
"5724a172127f667e72dbfa7bfab11b26" \
"ab922e1073418d940f6c5458ad6baf4"

int main_good(int ac, char *av[])
{
printf ("Programa 1,Last Dragon, Prueba de MD5\n");
return 0;
}

int main_evil(int ac, char *av[])
{
printf ("Programa 2, Last Dragon, prueba de MD5\n");
return 0;
}

static char *str1 = CRIB "0";
static char *str2 = CRIB "1";

int main(int ac, char *av[]) {
if (memcmp(str1, str2, 191) == 0) {
return main_good(ac, av);
} else {
return main_evil(ac, av);
}
}

5 Comments

Add a Comment

Comment spam protected by SpamBam