¿Qué es un ataque de retención en bloque?

¿Cómo se puede realizar un ataque de retención en bloque, cuál sería su propósito y para quién es un peligro?

Editar: cuando publiqué esto, estaba pensando en retener un bloque que extrajiste en un grupo. Pero los bloqueos de retención pueden formar la base de muchos ataques diferentes. Creo que esto sigue siendo útil como una pregunta amplia. Es un concepto central en la seguridad de bitcoin.

Relacionado: bitcoin.stackexchange.com/q/1338/516 (¿duplicado?)

Respuestas (2)

Hay dos tipos de ataques de retención en bloque. Uno, conocido como Finney Attack, tiene como objetivo obtener ganancias financieras cuando se produce un gasto doble. El segundo es causar daño financiero a un operador de piscina. Un minero que resuelve un bloque puede retener un hash válido después de encontrar uno. El costo para el minero es trivial (por no recibir la participación) pero el costo para el grupo es grande ya que el grupo pierde la oportunidad de ganar el subsidio de adjudicación del bloque de 50 BTC.

A menos que el grupo sea PPS, el costo para el atacante no es trivial, ya que es uno de los participantes a los que se les otorgaría parte de la recompensa del bloque. También hay un ataque de retención de bloques con fines de lucro contra grupos mineros, al acecho.
Si estás haciendo ese ataque, ¿por qué tendrías que hacer el hashing para empezar? ¿No puede simplemente decirle al grupo que está trabajando y esperar que se le asigne el valor correcto?
Recuerda cuando 50btc era la recompensa... DAYUMMM

La forma más simple de esto se llama ataque Finney, llamado así por Hal Finney, quien lo describió por primera vez . El ataque es una variación de un ataque de doble gasto que implica aceptar transacciones de confirmación 0.

Un atacante generaría un bloque válido pero no lo transmitiría y luego transmitiría la transacción A como pago por un bien o servicio. Un comerciante verá la transacción A sin ningún conflicto con ella y aceptará la transacción de confirmación 0. Justo después de eso, el atacante transmitiría el bloque generado con la transacción B que entrará en conflicto con la transacción A, la red Bitcoin aceptará su bloque e invalidará la transacción A.

El ataque es bastante costoso porque hay un lapso de tiempo entre la generación del bloque por parte del atacante y la finalización de la transacción A, durante el cual alguien más en la red podría generar un bloque válido y transmitirlo, invalidando así el bloque válido generado por el atacante. Por lo tanto, es práctico solo si el comerciante vende el producto en línea y podría liberarse de inmediato, por ejemplo, una clave para un producto de software.

Satoshi Nakamoto describió una forma general de este ataque: White Paper, sección 11 . En teoría, un atacante podría generar previamente cualquier cantidad de bloques, por ejemplo, si un comerciante requiere 1 confirmación antes de lanzar un producto, un atacante generaría previamente 2 bloques antes de la red y solo luego transmitiría la transacción A para duplicar el gasto. Pero con cada bloque el costo aumenta exponencialmente, y la práctica de aceptar 6 confirmaciones antes de liberar la compra hace que este ataque sea posible solo en caso de que el atacante tenga cerca del 50% de la tasa de hash de la red o más.

“quién lo describió por primera vez”… ¿Y de qué trata la sección 11 del libro blanco?
@Stéphane Gimenez, el libro blanco describió la forma general de este ataque, y Hal Finney describió el caso específico para la transacción de confirmación 0, pero probablemente debería incluir el enlace al libro blanco