¿Cuánto tiempo tomaría generar un archivo para que coincida con un hash? [duplicar]

0

Un archivo individual solo tiene un solo hash de cualquier longitud de byte específica. Pero un hash individual puede representar una gran cantidad de archivos diferentes.

Dado un hash de 256 bytes, ¿cuánto tiempo tomará generar un archivo para que coincida con ese hash?

Para responder a esta pregunta de manera concreta, tendremos que tomar algunas decisiones arbitrarias sobre el hardware disponible. Las respuestas pueden asumir el uso de:

  • Una sola placa base.
  • El procesador x86 más rápido disponible en la actualidad, con hasta 16 de esos procesadores en la misma placa base, iff (si y solo si) esa placa madre existe realmente.
  • Hasta 256 GB de RAM, si se admite.
  • Las tarjetas gráficas más rápidas disponibles para el procesador, con la cantidad de tarjetas que admitirá la placa base.
  • Hasta 256 GB de RAM por tarjeta gráfica, si se admite.
  • Cualquier sistema operativo.
  • Cualquier lenguaje de programación o combinación de lenguajes de programación.

Básicamente, supongamos que una sola computadora dedicada realista y realista trabaja en la tarea, no una red distribuida.

    
pregunta RockPaperLizard 20.06.2016 - 13:28
fuente

2 respuestas

4

Digamos que podemos probar 10,000,000,000 SHA-256 hashes por segundo. Para que podamos encontrar el hash de 256 bytes, tenemos que buscar aproximadamente la mitad del espacio de búsqueda, por lo que necesitamos calcular 2 ^ 255 hashes. Esto tomará 2 ^ 255 / 10,000,000,000 segundos, o aproximadamente 183587153154040137340770841274555916814545257270485419900205 años.

Editar: Cogí el cálculo porque interpreté los bytes como bits.

Desde 256 bytes es de 2048 bits, tenemos que calcular 2 ^ 2047 hashes, y esto lleva 51238277002966462615288680696140842149359624983694006900257396986816107209011749894084857641303452346031072363206966672206556886019931064648478171591908109970558849199804978582810435296787246490988168503272557661524594461318207375954208038968918332176848119374740463348058688311043039397208828638895120474254684064861853663147965776868601866905847564743985163080412553366519257662208999737046959970928743526011452948564278693172244975824932848021949038580088291525918197749731767202126390635665479647814685664923669295305438224994217717272665406466244034334639145952931934304676113772521803887927378002 años.

    
respondido por el Sjoerd 20.06.2016 - 14:15
fuente
2

Suponiendo un hash muy bueno, usa una de las respuestas de Sjoerd. Si el hash fuera muy, muy malo, sin embargo, una colisión podría calcularse en microsegundos.

es decir, El hash de 256 bit / byte solo no significa nada a menos que se haya diseñado correctamente. Un hash ingenuo podría ser algo tan simple como un CRC, que nunca fue pensado para ser seguro.

Más tarde, incluso los hashes diseñados para fines de seguridad pueden resultar inseguros. Un buen ejemplo es el hash LanMan , utilizado en los primeros productos de Microsoft. A pesar de que proporciona una longitud de 16 bytes (128 bits), tiene varios problemas que hacen que atacarlo sea MUCHO MÁS fácil que una complejidad de 2 ^ 127. Si bien se utilizó LanMan para contraseñas, no para archivos, el principio general del diseño de hash todavía se aplica.

    
respondido por el Steve Sether 20.06.2016 - 19:47
fuente

Lea otras preguntas en las etiquetas