¿Por qué se eligieron los algoritmos hash RIPEMD-160 antes que SHA-1?

Bitcoin utiliza hashes SHA-256 y RIPEMD-160. La mayoría de las veces se usa un SHA-256 de doble ronda, pero para generar direcciones, se usa RIPEMD-160 porque genera un valor hash más corto. RIPEMD-160 tiene un valor hash de 160 o 20 bytes, mientras que SHA-256 tiene un valor de 256 o 32 bytes.

Entonces RIPEMD-160 se usa por su hash más corto. Sin embargo, SHA-1 también produce un hash de 160 bits. RIPEMD-160 es un algoritmo menos popular pero, de hecho, logra exactamente lo mismo que SHA-1.

La única diferencia real que puedo encontrar en Internet está en el siguiente fragmento de la página de Wikipedia de RIPEMD-160 :

RIPEMD-160 fue diseñado en la comunidad académica abierta, en contraste con los algoritmos SHA-1 y SHA-2 diseñados por la NSA. Por otro lado, RIPEMD-160 parece usarse con menos frecuencia que SHA-1, lo que puede haber causado que sea menos analizado que SHA. No se sabe que RIPEMD-160 esté limitado por ninguna patente.

¿Son los problemas de patentes la razón? ¿Por qué SHA-1 es un problema pero SHA-256 no? Sé que SHA-1 y SHA-2 (de los cuales SHA-256 forma parte) son iteraciones diferentes de la iniciativa SHA y, por lo tanto, probablemente tengan una implementación legal muy diferente.

¿Alguien sabe realmente por qué se eligió RIPEMD-160 antes que el SHA-1 más popular?

Respuestas (2)

Hay una multitud de razones.

  1. Como mencionó @ThePiachu, hay un ataque teórico de 2^60 bits que es posible en SHA-1 , lo que significa que el algoritmo es más débil de lo diseñado.

  2. RIPEMD-160 fue diseñado en la comunidad académica abierta, en contraste con los algoritmos SHA-1 y SHA-2 diseñados por la NSA.

    Vale la pena señalar que Satoshi podría haber usado SHA2-256 dos veces y truncado el segundo resumen a 160 bits, ya que es igualmente seguro . El hecho de que no lo hizo es una evidencia que demuestra que su decisión fue una decisión consciente de usar RIPEMD-160 sobre el conjunto de algoritmos de la NSA.

  3. Por último, creo que RIPEMD se basa en un diseño diferente a los algoritmos SHA1/SHA2 y, por lo tanto, los ataques que se aplican a uno pueden no ser transferibles al otro (lo cual es bueno).

Sólo el primero es realmente un argumento. Los otros dos pueden ser refutados por el hecho de que se usa SHA-256 en lugar de otro hash de 256 bits. SHA-256 probablemente se elija por su popularidad, entonces, ¿por qué no se elegiría SHA-1 por la misma razón?
no estoy muy de acuerdo El hecho de que uno de los algoritmos (SHA-256) esté diseñado por la NSA no significa que todavía no sea un beneficio usar un algoritmo diseñado por otra institución.
Vale la pena señalar que Satoshi podría haber usado SHA2-256 dos veces y truncado el segundo resumen a 160 bits. El hecho de que no lo hiciera, creo, es una evidencia que muestra que la decisión de Satoshi fue una decisión consciente de usar RIPEMD-160 sobre el conjunto de algoritmos de la NSA. ( crypto.stackexchange.com/questions/3153/… )
No digo que debería haber usado SHA-1 porque está diseñado por la NSA. Solo digo que es extraño que use SHA-256 para un hash de 256 bits pero RIPEMD-160 para un hash de 160 bits, mientras que la misma familia de hash en la que se encuentra SHA-256 también tiene una variante de 16 bits. (Sé que SHA-1 y SHA-2 no son del todo de la misma familia, pero comparten el mismo nombre...)

Podría deberse a un ataque teórico de 2^60 bits que es posible en SHA-1 , lo que significa que el algoritmo es más débil de lo diseñado. RIPEMD no parece tener tales debilidades.

Hmm, no sabía eso. Pero aún así, hay muchas posibilidades de que esta falla teórica se haya encontrado solo porque el algoritmo es más popular que RIPEMD-160...
Estoy investigando esto de nuevo. El uso de RIPEMD-160 en Bitcoin no es por seguridad. Encontrar una colisión solo le permitiría encontrar la clave pública de la dirección, lo que no le permitirá acceder a las monedas. La seguridad del algoritmo no es crucial para este caso, por lo que la popularidad sería el principal factor decisivo porque puede facilitar en gran medida la adopción.
@StevenRoose En realidad, si puede generar una colisión RIPEMD para una dirección con una clave privada diferente que controla, podría gastar todo el dinero de esa dirección. Tendríamos que volver al algoritmo de pago de "pago a clave pública".
Bueno, de hecho. Pero las colisiones se generan al crear una entrada específica que coincidirá con una salida deseada. Las entradas serían claves públicas. La clave pública de una clave privada es impredecible y cuando descifras una función hash para generar colisiones, apuesto a que lo harás con entradas específicas, no aleatorias.