¿Qué es un ataque de repetición?

Durante el lanzamiento de la red fronteriza, se advirtió a los usuarios que no reutilizaran las claves de la red de prueba olímpica para evitar "ataques de repetición". ¿Qué es un ataque de repetición y por qué la reutilización de una clave de la red de prueba hace que alguien sea vulnerable a uno?

Respuestas (3)

Un ataque de repetición es una transmisión de datos válida que se repite o retrasa de forma malintencionada o fraudulenta.

Extendiendo esto a las cadenas de bloques, un ataque de repetición toma una transacción en una cadena de bloques y la repite de manera maliciosa o fraudulenta en otra cadena de bloques.

Por ejemplo, un atacante toma la transacción de la red de prueba de alguien y la repite en la cadena de bloques "real" para robar fondos "reales".

Como comentó @libertylocked, se implementó la protección contra ataques de repetición simple EIP 155 .

Más información

En Bitcoin, las direcciones en testnet usan un prefijo diferente de las direcciones en mainnet: por lo tanto, las claves son diferentes.

En Ethereum, actualmente no hay "prefijos". (Probablemente hecho para simplificar la creación de nuevas direcciones). Por lo tanto, una transacción firmada por una clave, que es válida en una red/cadena de Ethereum, es válida para todas las cadenas de Ethereum.

Esto significa que si en la "prueba", los fondos se envían desde la cuenta B a la cuenta Prueba, esa misma transacción se puede reproducir (transmitir) a la cadena de bloques pública de Ethereum: un ataque de repetición. El ataque de repetición "tendrá éxito" si la cuenta B tiene fondos en la cadena de bloques pública. Para tener éxito por completo, un atacante necesitaría conocer la clave privada de accountTest para robar los fondos, pero dado que accountTest se creó para realizar pruebas, es posible que su clave privada no sea segura (tal vez sea solo un "brainwallet" con la contraseña "test" ).

Los ataques de repetición se eliminan mediante el uso de diferentes direcciones/claves entre la red fronteriza y todas las demás cadenas de Ethereum. (Un poco como usar una contraseña diferente para cosas valiosas, de sitios web menos valiosos o menos confiables). Consulte también: ¿Cómo evitar un ataque de repetición entre dos cadenas competidoras? y como se señaló en el comentario de @libertylocked, se implementó la protección contra ataques de repetición simple EIP 155 .

Y para confirmar... Al crear cuentas 'nuevas' en cada cadena, aunque estas creaciones también se pueden reproducir, hacerlo no tendría sentido porque aún controla la clave privada de dicha(s) cuenta(s). ¿Es esa comprensión correcta?
Según tengo entendido, la transmisión doble en la cadena no deseada reutiliza los datos de transacción ya firmados , por lo que no se necesita una clave privada para el ataque. Es una especie de ataque "man-in-the-middle", que compromete el flujo de datos de un canal supuestamente seguro.
@ThomasClowes Correcto, no tendría sentido porque aún controla la clave privada de dicha(s) cuenta(s).
@Sz Tienes razón sobre el caso "general". Si está respondiendo al comentario de Thomas, entonces la reproducción de una transacción que envía fondos a la clave privada de Thomas no es un "ataque", ya que Thomas aún controla los fondos. Sin duda, sería diferente si Thomas le enviara fondos en una cadena, y luego, en ese caso, ciertamente podría reproducirlo para obtener los fondos de Thomas en la otra cadena y eso sería un ataque.
EIP155 introducido CHAIN_IDcomo parte del byte de recuperación al verificar la firma de la transacción. Por lo tanto, las transacciones enviadas en una red no tendrán la firma correcta en otra ID de cadena

Significa que una transacción que era válida en la red de prueba olímpica seguía siendo válida para el próximo lanzamiento (Frontier).

Si realizó una transacción T en Olympic que envía Ether desde la dirección A a B, y luego reutiliza la clave detrás de la dirección A en el lanzamiento de Frontier, esa transacción T podría transmitirse nuevamente (reproducirse) y la transferencia de A a B ocurriría en Frontier, incluso si usted (propietario de A) no tenía la intención de hacerlo.

Por eso se pidió a la gente que no reutilizara las llaves.

Para evitar el ataque de reproducción, utilice los tipos de transacción EIP155 que están disponibles desde el bloque 2675000. Se incorporan chainIDa la firma de la transacción. Asegúrese de que el software de su billetera esté habilitado para EIP155 y estará seguro