Se me ocurrió una idea cuando me enteré de la existencia de un algoritmo MD5 (Base64), que es un simple hash MD5 encriptado en Base 64.
Que pasaría si usaramos el algoritmo inventado MD5 (SHA1)3 (MD5)3 (Base64)???
Esto sería un hash MD5, encriptado por SHA-1, el hash resultante encriptado otra vez con SHA-1, otra vez por SHA-1, y despues el resultado otra vez por el algoritmo MD5 tres veces. Y por ultimo el resultado final en Base64.
Esto parece irrompible, pues bien si un hash cuesta descifrarlo horas, descifrar 8 hashes (en realidad 7 pork uno es Base64 y es muy facil) se haría infinito, sin embargo crearlo sería muy rápido.
Un ejemplo. La palabra "hola"
(MD5)4D186321C1A7F0F354B297E8914AB240=>(SHA-1)48D3F59F3BD1884C60670BBA42182F47DDAE65F1=>(SHA-1)A28A5C5D3E0F9CA34D33E03DD51E1435B6A1E6C3=>(SHA-1)8ADDEB243A7FD13745604A1F8C1285A94579DE87=>(MD5)D291ECE7EB92C06E01DE7411247D2FF8=>(MD5)D28C74A20DF979C35569143D9FC34E4B=>(MD5)F85AC2ABED667B5163604ADF0985D86D=>(Base64)Rjg1QUMyQUJFRDY2N0I1MTYzNjA0QURGMDk4NUQ4NkQ=
para descifrarlo tendrias que hacer el paso inverso, pero en vez de crear un simple hash a partir de una palabra (muy rapido) tienes que descifrar un texto hexadecimal (hash) largo en cada paso.
El hash final sería Rjg1QUMyQUJFRDY2N0I1MTYzNjA0QURGMDk4NUQ4NkQ= para el algoritmo MD5 (SHA-1)3 (MD5)3 (Base64)
Esto es invulnerable a atakes de diccionario y de fuerza bruta, puesto k el hash tiene muchas cifras.
No serían vulnerables en casi ninguna medida a tablas precalculadas (rainbowcrack), porke las tablas tendrían que tener 32 cifras para descifrar hashes de resultados que sean hash MD5, y para resultados de hash SHA-1 tendrían que tener longitud de 40 cifras. Y esto sin pensar en usar hashes que tengan SHA-2 512bit o así.
Y si mezclamos el hash final con otro hash de otra palabra ya no digamos, estilo claves WPA, que no son vulnerables a tablas rainbow porke el hash se mezcla con el ESSID.
Supongo que tendrá algun inconveniente, seguro k no se me ocurrió a mi solo esta idea.
Yo el unico inconveniente que le veo es que el cifrado/descifrado puede ser un poko mas lento y creo que al ser tantos algoritmos hay mas posibilidades de que existan colisiones.
Pero tiene que haber algo mas
¿Cual es el inconveniente de usar este tipo de "multi-algoritmos"?