TL; DR: con solo el 30% de la potencia de la red, un ataque mayoritario es posible y rentable. ¿Me estoy perdiendo algo?
En términos generales, las cadenas de bloques basadas en las autenticaciones de prueba de trabajo utilizan la cantidad de trabajo como el peso del voto.
Hablaré específicamente sobre bitcoin para simplificar la discusión (aunque odio leer a las personas que hablan sobre criptomonedas aquí).
Una transacción se considera confirmada generalmente después de que se hayan minado 6 bloques por encima de ella. En su mayoría, incluso 2 bloques se consideran suficientes, pero examinemos la decisión segura de 6 bloques. Ahora suponga que tengo el 30% de la potencia de la red.
La red y yo tenemos el mismo prefijo de blockchain. En este punto, estoy comenzando a trabajar y agregarle mis propios bloques, ignorando el resto de la red. Las posibilidades de que logré construir una cadena de bloques que sea al menos tan larga como la cadena más larga de la red, para cuando se "confirme" la transacción, son aproximadamente del 15% (referencia a continuación).
Eso significa que puedo revertir mis transacciones confirmadas el 15% de las veces. Ahora todo lo que necesito es ganar más dinero en un bloque revertido de lo que estoy pagando por la potencia informática total. Esto no es imposible. Si un bloque "confirmado" se llena incluso a la mitad con mis transacciones, la cantidad total de dinero puede ser fácilmente de 2 millones de dólares (referencia a continuación). Revertir a una tasa de éxito del 15% significa al menos un bloque cada dos horas (un bloque cada diez minutos).
Pero 2 horas de trabajo solo me costaron unos 140.000 usd.
O más importante: jugar limpio no parece necesariamente más rentable.
Seguir las reglas durante dos horas equivale hoy a unos ingresos de 1,2 millones de dólares (si posee el 30 % de la potencia de la red).
Parece rentable atacar el sistema de vez en cuando, incluso con el 30% de la potencia de la red.
(Obviamente, prefiero revertir muchas transacciones "pequeñas" que grandes, para que nadie sospeche y espere más confirmaciones).
¿Qué me estoy perdiendo?
Algunos puntos: - Prefiero no abordar problemas como "un atacante se puede encontrar fácilmente". Esto puede o no ser cierto. Pero no es relevante para la pregunta: ¿Es posible y rentable atacar la red con un 30 % de potencia de red? - Si está afirmando que no me equivoco y esto es cierto (lo que dudo), especifique su nivel de familiaridad con el protocolo y la seguridad del sistema.
Referencias:
Tasa de éxito con un 30 % de potencia de red (las matemáticas aquí son simples pero difíciles de escribir con rigor) https://pastebin.com/RhnGi04W
Un solo bloque lleva unos miles de bitcoins (es decir, unos pocos millones de dólares) https://blockchain.info/
Valor de Bitcoin en USD https://coinmarketcap.com/currencies/bitcoin
Beneficios y costos de toda la red bitcoin: https://digiconomist.net/bitcoin-energy-consuming
(Asumí aproximadamente una hora de mis ganancias de trabajo: total_bitcoin_mining_income/365/24*0.3 ya que poseo 0.3 de la potencia de la red)
El ataque que estás describiendo es correcto. Este es un ataque contra la propiedad "Prefijo común" de la cadena de bloques, que establece de manera aproximada que debería ser difícil para un adversario hacer que dos partes honestas adopten dos cadenas de bloques diferentes al mismo tiempo cuando han divergido por más de k
bloques, donde k
es un parámetro. En su caso, ha establecido k = 6
.
De hecho, el ataque que estás describiendo ha sido analizado en el artículo original de Satoshi . Si observa la última sección (11. Cálculos), Satoshi calcula la probabilidad de éxito del ataque que describió. Específicamente, examina la probabilidad de éxito del adversario para varios valores de la variable que llama q
, que indica el poder minero del adversario. Para su caso, q = 0.3
. Luego usa la variable z
para indicar el número de bloques que uno espera antes de aceptar una transacción como confirmada, en su caso z = 6
. En el análisis de Satoshi, esto sigue una distribución de Poisson y, aproximadamente, la probabilidad de éxito del adversario es, de hecho, p ~= 0.15
. De hecho, Satoshi calcula con precisión el caso z = 5
y q = 0.3
obtiene p = 0.1773
.
En el documento original, hay ciertas z
recomendaciones sobre cuántos bloques se deben esperar para lograr un límite de probabilidad contradictorio de p < 0.1%
. Porque q = 0.3
, lo mínimo z
que logra esto es z = 24
. Entonces, si quieres poder resistir a un adversario del 30%, debes esperar 24 confirmaciones.
El análisis de Satoshi es un poco tosco, porque solo tiene en cuenta un ataque en particular. Análisis posteriores nos han permitido cuantificar estas probabilidades frente a adversarios arbitrarios , incluso desconocidos. La referencia principal aquí es el análisis Backbone . En este documento, la propiedad Prefijo común se establece con precisión y se demuestra que es válida frente a adversarios arbitrarios.
El análisis de Backbone es una mejora con respecto al de Satoshi por varias razones. Mencionaré algunos:
Para ver la declaración Prefijo común con precisión, mire la Definición 3 (Prefijo común) en la sección 3.2 (Propiedades deseadas del protocolo). El hecho de que bitcoin tenga esta propiedad se demuestra en la Sección 4.2 (Propiedad de prefijo común) bajo el Teorema 15 (Prefijo común). Allí, se proporciona una fórmula precisa para k
, el número de bloques que debe esperar para saber que la cadena no se puede reorganizar hasta ese punto: k = ηκf
. Las variables η, κ, f
se precisan en la Sección 4 (Análisis) en la Tabla 1 (Los parámetros en nuestro análisis). Es difícil dar números concretos a estas variables, ya que dependen de la salud y el rendimiento de la red, así como de la dificultad de la minería. Para bitcoin, tenemos esoκ = 256
es la longitud en bits de la función hash (minería). Estimo que la duración de la ronda es, con optimismo, de unos 10 segundos (el tiempo que tarda una gran parte, digamos el 90%, de la red en enterarse de un encabezado de bloque recién extraído) y, dado que se encuentra un bloque en promedio cada 10 minutos, tenemos que f
se trata 0.0003
de bitcoin. No sé cómo estimar con η
precisión.
La cuestión es que se cumple el teorema del Prefijo Común para k
cuando “la ejecución es típica” (la tipicidad se establece en el Teorema 10), que depende de los parámetros ηκ
. Un requisito previo para la tipicidad es que las secuencias de rondas consecutivas examinadas tengan al menos una ηκ
longitud. La suposición de que esta cantidad es grande es necesaria para aplicar los límites de Chernoff a la distribución binomial: la tipicidad se alcanza con una probabilidad abrumadora en este número. Si este número es pequeño, la probabilidad ya no es abrumadora y la seguridad del sistema puede fallar.
Dichos análisis son típicos en los sistemas criptográficos, incluidas las firmas digitales, los esquemas de cifrado, las pruebas de conocimiento cero, etc. El adversario es capaz de tener éxito con una probabilidad que está limitada por una función con una variable libre: Esa variable libre es el parámetro de seguridad ( ηκ
en el caso de la red troncal) y la función es insignificante en ese parámetro, lo que significa que la probabilidad cae exponencialmente a medida que la aumenta el parámetro. En el caso de Bitcoin, la probabilidad de duplicar el gasto cae exponencialmente a medida que aumenta el tamaño de la cadena de bloques en la parte superior, pero no es despreciable para k = 6
, especialmente cuando el adversario es poderoso.
Para abordar su punto más concreto de que esto es económicamente factible: tiene razón en que puede transferir $ 2 millones en una sola transacción de bitcoin. Sin embargo, me parece poco probable que el destinatario de tal transacción lo considere seguro después de k = 6
; k = 25
debe utilizarse un valor cercano a . Es sensato aceptar valores más bajos de k
para cantidades más pequeñas y exigir valores más grandes dek
para cantidades mayores. Si bien la probabilidad exacta es difícil de calcular, la mayoría de los intercambios y otros servicios automatizados que aceptan pagos con criptomonedas aplican límites razonables y espero que los aumenten por montos de millones de dólares (por lo general, esto se hace al requerir la aprobación humana de una transacción). para transacciones de valor extremadamente alto, lo que definitivamente da mucho tiempo para una prueba de trabajo adecuada además). El costo económico de bifurcar la cadena para provocar el abandono de bloques se analiza brevemente en el artículo Sobre bitcoin como fuente pública de aleatoriedad. Dado ese análisis, uno puede equilibrar el costo de bifurcar la cadena de bloques con las ganancias potenciales que uno podría obtener al realizar un doble gasto exitoso, multiplicado por la probabilidad adversa de éxito calculada desde Backbone. Esto puede permitir que una parte determine con precisión su valor deseado k
para varios parámetros monetarios, dados límites adversarios precisos como q = 0.3
.
Sé que esta respuesta fue un poco técnica y no brindó muchos números concretos, pero espero que arroje algo de luz sobre por qué el ataque que está describiendo es posible, aunque todavía lo llamaríamos "insignificante". Ya que me pidió mis credenciales, soy un estudiante de doctorado en Criptografía que se enfoca en los fundamentos de los protocolos de cadena de bloques en el departamento de Ciencias de la Computación de la Universidad de Atenas. Aggelos Kiayias, quien escribió el artículo de Backbone, es mi asesor (yo no contribuí a ese artículo). Como es mi profesor, estoy bastante familiarizado con su trabajo, especialmente porque estamos usando el modelo desarrollado en backbone para trabajos posteriores. Soy investigador en IOHK, donde estamos construyendo los cimientos de una criptomoneda que llamamos Cardano y analizándola desde un punto de vista matemático. Las probabilidades de éxito de los adversarios en los intentos de realizar bifurcaciones de blockchain, así como su análisis, surgen en mi propio trabajo en el que estoy tratando de construir cadenas laterales que interactúan con múltiples blockchains. A menudo demostramos límites de insignificancia en estos entornos.
Osías Jota
dionisio