Prevención de ataques Sybil en una red Oracle descentralizada, sin depender de Prueba de trabajo o Prueba de estaca … ¡y no morir en el intento!
En este artículo, discutiremos el desafío de prevenir los ataques de Sybil en Witnet, la Red Oracle Descentralizada, sin depender de Prueba de Trabajo (PoW) o Prueba de Estaca (PoS). Los ataques de Sybil son un talón de Aquiles para protocolos descentralizados, por lo que nos gustaría compartir nuestro proceso y opciones de diseño para enfrentarlos.
El ataque de los "Sybils"
El término "ataque de Sybil" hace referencia al libro de 1973, Sybil, un estudio de caso de una mujer diagnosticada con un trastorno de identidad disociativo.
Los mecanismos del ataque son los siguientes: los atacantes pretenden socavar una red creando numerosas identidades falsas. Para un observador, estas identidades aparecen como usuarios separados, pero en realidad, todas están controladas por una sola entidad. Como resultado, el atacante tiene una influencia significativa en el poder de voto y podría colapsar o corromper la red.
Los ataques de Sybil a menudo se confunden con los ataques de Eclipse. Sin embargo, en este último, las identidades falsas no intentan engañar completamente a la red; en cambio, arrinconan nodos individuales en la red al monopolizar todas sus conexiones P2P. Al aislar elementos específicos, el ataque puede retratarles un estado de red falso. En resumen, los ataques Eclipse afectan a una pequeña porción de una red, mientras que los ataques Sybil violan toda la red. Puede leer más sobre los ataques de Eclipse aquí:
La Prueba de trabajo (PoW), utilizada por la red de Bitcoin, es el modelo de referencia para la resistencia de Sybil. Para ser recompensado, cada identidad en la red debe llevar a cabo una cantidad no arbitraria e igual de trabajo computacional. En otras palabras, cada identidad Sybil debe realizar tanto trabajo como cada identidad honesta, haciendo que un ataque Sybil sea prohibitivamente costoso.
En Proof of Stake (PoS), el consenso se logra dentro de una red de validadores, que han "bloqueado" o "estacado" una cantidad de capital no despreciable durante un período de tiempo determinado. Un atacante que desee llevar a cabo un ataque Sybil en una red PoS debe bloquear al menos la cantidad de juego bloqueada por validadores honestos.
Si bien el costo inicial de un ataque puede no ser inmediatamente obvio (capital de bloqueo -> realizar ataque -> recuperar juego después de un cierto período), se supone que el modelo de PoS funciona porque:
la cantidad de capital que un atacante puede apostar es limitada, ya que la suma de la apuesta del atacante más todas las otras apuestas no puede exceder la circulación total al realizar un ataque Sybil, el atacante deprecia la confianza pública (y el valor) del protocolo / activo subyacente, reduciendo o eliminando cualquier rentabilidad en el ataque
Las decisiones de consenso dentro de una Red Oracle descentralizada generalmente dan como resultado puntos de datos únicos, que luego son reutilizados a menudo por otros protocolos. Como resultado, Los beneficios de realizar un ataque Sybil pueden tomar la forma de activos distintos de los utilizados para ejecutar el ataque.. Por lo tanto, incluso con una pérdida de confianza en una red, un ataque Sybil podría ser rentable.
Por lo tanto, podemos clasificar los ataques de Sybil por dos motivos de incentivos distintos:
aquellos con el objetivo de manipular el resultado de una solicitud de datos, aquellos con el objetivo de atacar el protocolo de consenso de blockchain subyacente.
Manipulando el resultado de una solicitud de datos
Un atacante puede manipular una solicitud de datos para manipular el consenso resultante. Los atacantes podrían recibir incentivos para hacer esto si:
la participación del atacante en un resultado particular es lo suficientemente grande (por ejemplo, pagos condicionales), el atacante tiene como objetivo sabotear la reputación (y / o colateral) de otras identidades en la red.
Estos ataques a menudo toman una de dos formas:
Ataques de destello: un atacante hace girar rápidamente nuevas identidades de Sybil y, por lo tanto, tiene una influencia significativa sobre el resultado de una solicitud de datosAtaques de libro de jugadas: El atacante primero debe jugar según las reglas. El atacante crea numerosas identidades de Sybil y luego dedica un tiempo considerable y recursos fingiendo que todas son identidades honestas. Una vez que se gana suficiente confianza, se ejecuta el ataque.
Atacando el protocolo de consenso de blockchain subyacente
Si el protocolo tiene su propia cadena de bloques, un atacante puede estar dispuesto a interrumpir el algoritmo de consenso subyacente, al obtener suficiente influencia a través de las identidades de Sybil. El atacante puede elegir crear bloques inválidos o interrumpir la red. La defensa contra este tipo de ataque depende en gran medida de la fiabilidad y la resistencia del algoritmo de consenso del protocolo.
Como se describe en la publicación a continuación, el protocolo Witnet pretende ser justo, accesible y completamente parametrizable, al tiempo que mantiene la integridad de los datos.
Los ataques Sybil representan una barrera importante para lograr estos objetivos. Como resultado, las siguientes precauciones se han incorporado al diseño arquitectónico de Witnet.
Un sistema algorítmico de reputación
Witnet no utiliza un mecanismo de prueba de trabajo (PoW) o de prueba de estaca (PoS), por lo que no puede confiar en el costo inicial para evitar ataques de Sybil. En cambio, Witnet ha construido un sistema algorítmico de reputación diseñado para Incentivar a los nodos para ejecutar solicitudes de datos de manera honesta.
En resumen, el sistema funciona redistribuyendo puntos de reputación de personas atípicas y tramposas a participantes honestos y activos de la red. A las identidades se les asignan tareas de solicitud de datos (junto con los privilegios de minería y recompensa) en proporción a su puntaje de reputación general: su historial. La reputación no es negociable y se redistribuye de forma autónoma y algorítmica por el protocolo Witnet.
Por lo tanto, si un atacante quiere realizar un ataque de Sybil en la red, cada identidad de Sybil debe realizar tareas honestamente (y obtener puntajes de reputación suficientes). Este es un clásico Ataque de libro de jugadas, y no es fácil, rápido o barato de coordinar.
Comités de solicitud de datos basados en el desempeño
Como se mencionó anteriormente, es más probable que las identidades activas con puntajes de alta reputación se asignen a comités de solicitud de datos (y, por lo tanto, se recompensen). Para lograr esto, el protocolo Witnet tiene:
un conjunto de reputación activa (ARS) seguimiento de identidades activas en el sistemaun mecanismo de selección de comité; un algoritmo criptográfico para seleccionar comités de forma pseudoaleatoria en función del puntaje de reputación.
Para calcular el ARS, el sistema rastrea una métrica que puede determinar si una identidad participa activamente en las solicitudes de datos. La métrica consta de todas las identidades que se han seleccionado para los comités durante un período de tiempo (por ejemplo, durante las últimas 1000 épocas).
Para la selección del comité, cada identidad calcula su propia elegibilidad en función de una función aleatoria verificable (VRF), que tiene en cuenta el puntaje de reputación actual de la identidad. Si se considera elegible, la identidad ejecuta la solicitud de datos y transmite un compromiso para resolverla en un bloque posterior.
Seleccionar proponentes de bloque de manera justa
Cada identidad calcula su elegibilidad para extraer un bloque, en función del número de identidades en la red. La elegibilidad es aleatoria (usando un VRF), y no está relacionada con la reputación en esta etapa. Esto se alinea con el objetivo de Witnet de una baja barrera de entrada, ya que los mineros no necesitan hardware costoso, grandes cantidades de capital o un historial de reputación para participar.
Sin embargo, esto significa que el sistema es vulnerable a los ataques de denegación de servicio (DoS). Si un atacante controla suficientes identidades de Sybil, puede proponer bloques vacíos y detener la red (Nota: la red rechazaría bloques no válidos).
Para mitigar esta vulnerabilidad, el protocolo Witnet impone un mínimo de candidatos de bloque B para cada época. Este parámetro se denomina factor de respaldo. Si hay más de un proponente de bloque, el punto muerto se resuelve seleccionando el bloque propuesto por la identidad con la reputación más alta (siempre que el bloque sea válido).
Edad colateral y de monedas
Hasta ahora, hemos disminuido la probabilidad de un ataque exitoso de Sybil en la red al garantizar:
cada identidad de Sybil debe tener una alta reputación dentro de la red Las identidades de Sybil no pueden predecir cuándo serán elegidas para un comité de solicitud de datos. Un conjunto de identidades de Sybil no puede predecir cuándo tendrán suficiente reputación para realizar un ataque.
Sin embargo, si un atacante puede crear identidades de Sybil infinitas, la red es (en teoría) aún vulnerable a los ataques Flash y Playbook. Por lo tanto, Witnet tiene una combinación de:
Testigo colateral: las solicitudes de datos requieren que los nodos participantes tengan garantías colaterales, en forma de Salida de transacción no gastada (UTXO)Edad de la moneda: para ser utilizado como garantía, UTXO debe haber alcanzado una cierta edad (es decir, UTXO creado recientemente no se puede replantear).
El riesgo de ataques Flash se puede reducir drásticamente estableciendo requisitos colaterales que son difíciles de distribuir entre las identidades de Sybil. La edad de la moneda dificulta que un atacante evite la detección al crear rápidamente nuevas identidades, y hace que sea casi imposible predecir cuándo se alcanzará un puntaje de reputación suficientemente alto para cada identidad.
Reputación de vida útil
Incluso con las precauciones anteriores, el sistema de reputación sigue siendo vulnerable al acaparamiento; un atacante puede intentar acumular una porción significativa de puntos de reputación en sus identidades Sybil para realizar un ataque.
Para evitar el acaparamiento, el protocolo tiene una vida útil de reputación incorporada, por lo que los puntos de reputación caducan y se redistribuyen después de cierto tiempo. La vida útil no está determinada por el paso del tiempo humano, sino que corresponde a la velocidad de la red; mayor velocidad = mayor volumen de solicitudes de testigos por bloque.
Por lo tanto, para mantener una alta reputación, los nodos tendrán que contribuir continuamente a la red ejecutando solicitudes de datos de manera honesta. Además, dada la naturaleza estocástica de la clasificación criptográfica, la reputación debería fluir continuamente entre los nodos. No debería ser fácil predecir cuándo los nodos tendrán altos puntajes de reputación, por lo que debería ser significativamente difícil para los atacantes organizar un ataque de Playbook.
Hemos hecho todo lo posible para diseñar un sistema de reputación seguro y justo para hacer frente a los ataques de Sybil, ¡pero deben ser probados en la naturaleza!
El sistema de reputación ya está completo y puede probarse en el campo en Testnet 5, así que siéntase libre de probarlo siguiendo el siguiente enlace:
(Todavía estamos finalizando los mecanismos de garantía y antigüedad de la moneda, ¡estarán disponibles pronto!)
Si tiene algún problema, necesita ayuda o tiene alguna pregunta, no dude en comunicarse con los canales Telegram o Discord de la comunidad Witnet
Este post fue escrito en colaboración con Gorka, Claudia, Thomas y Adán. Sin embargo, dependemos de innumerables discusiones con la comunidad más amplia de Witnet y, como siempre, ¡esta publicación hubiera sido imposible sin todos ustedes! 🙂