Protocolos de Consenso – Pilar en la Seguridad Blockchain

¿Qué es un Protocolo de Consenso?

Uno de los principales problemas de una red distribuida, es llegar a un consenso único entre todas sus partes. Normalmente para lograr esto, las redes P2P usan un sencillo protocolo llamado Protocolo de Consenso. Este permite que todas las partes de la red pueden llegar a un acuerdo común sin conocer todas las variables que lleven al mismo. Este problema suena muy sencillo, pero solucionarlo conlleva una complejidad algorítmica muy grande. Tal es así, que antes de la creación del Bitcoin no existía ningún algoritmo que pudiera dar una solución satisfactoria al Problema de los Generales Bizantinos (PGB).

PGB es un ejercicio de comunicación distribuida, en el cual las partes de un ejercito, reciben, confían, confirman y redistribuyen la información suministrada por un mensajero. Explicarlo es bastante sencillo y basta con imaginar lo siguiente:

Un mensajero recibe una importante información de un general del ejercito. La tarea del mensajero es; viajar a cada una de las partes del ejercito para indicar un día y hora de ataque decisivo. Todos y cada uno de los generales de cada ejercito la reciben y confirman. Además de seguir con el proceso de enviar la información al resto de los generales. El problema acá se presenta cuando; el mensajero pudiera ser interceptado por el enemigo, y en tanto alterar el mensaje inicial. Esto haría que la comunicación de los ejércitos se rompiera y fueran derrotados por el enemigo. Todo ello debido a una alteración del mensaje.

Para evitar esta situación, los generales deben ser capaces de leer la información y gracias a un consenso (o clave) solo conocidos por ellos, reconocer si el mensaje es legitimo o fue manipulado. Realizada la comprobación del mensaje, se le da una respuesta y el mensaje es distribuido o destruido según sea el caso. Con esto se garantiza que el mensaje original llegue a todas partes y la comunicación sea efectiva.

El parecido de este problema con el de las redes P2P no es coincidencia. Es esencia el mismo. Las distintas partes de una red P2P (nodos) deben ser capaces de enviar mensaje entre si con confianza. De allí la importancia de protocolos de consenso sólidos, que permitan una comunicación segura y efectiva entre las partes.

Los primeros protocolos de consenso que existieron, no daban una solución completa al PGB. Aseguraban los mensajes, pero un ente malicioso podía interceptarlos y manipularlos. Con ello se abría la posibilidad de crear un mensaje maliciosos que fuera aceptado como genuino. De hecho, los nodos de la red P2P recibirían un “mensaje genuino” solo que con información manipulada por el tercero malicioso. A este tipo de sistemas se les conoce como Protocolos de Consenso con Falla Bizantina de Comunicación.

De esta forma podemos brindar un conciso concepto de lo que es Protocolo de Consenso:

Un protocolo de consenso, es aquel medio sintáctico, algorítmico, computacional o matemático que permite a distintas partes de una red, compartir información creando un sistema tolerante a fallos, permitiéndoles a los involucrados llegar a una misma conclusión dada una información inicial limitada.

Un poco de historia

Los protocolos de consenso en redes P2P no son nada nuevos. De hecho, el concepto de dinero digital es tan viejo que debemos remontarnos al año 1982. En ese entonces David Chaum, investigador de la Universidad de Berkeley, California invento la primitiva criptográfica de firma ciega. Poco tiempo después, Chaum diseño lo que sería la primera versión del dinero digital del mundo, DigiCash. Pese a que este proyecto era centralizado, tenía una alta tasa de privacidad y de anonimato. Para lograr esta hazaña Chaum, utilizo como protocolo de consenso su primitiva criptográfica de firma ciega. Luego la amplio con la introducción de la firma ciega grupal. Este sería el comienzo del uso de protocolos de consensos criptográficos para redes de monedas digitales.

Luego en 1997, apareció Hashcash. Creado por Adam Back como un sistema para luchar contra el spam. Este agregaba una cabecera al email en el que tenían que calcular la respuesta a una serie de complejos problemas matemáticos. La tarea hacía gastar energía a la persona que enviaba dicho email. Este fue uno de los primeros sistemas Proof of Work que nacieron en Internet.

El concepto es simple, una persona que envía un email debía resolver un problema matemático que tiene un coste en energía antes de poder enviarlo. Pero si un usuario malicioso quería hacer spam, debería calcular tantos problemas matemáticos como correos que enviar. Eso multiplicaría el gasto de electricidad, lo que aumentaría en varias veces su recibo de luz. Esto eliminaría el incentivo económico de enviar muchos email y limitaría a los spammers.

El consenso de este sistema era igual de sencillo. Un servidor simplemente se negaba a recibir un email desde el emisor, si la cabecera Hashcash en cuestión ya había sido resuelta por el mismo. Otro punto a favor de Hashcash es que su uso creaba un valor real, generando ingresos por medio del uso de tareas computacionales. Daba lugar al nacimiento de las “monedas digitales” y su uso en servicios de internet.

Un año después apareció, B-Money , un sistema poco practico pero que hacía uso de Proof of Work (PoW) como protocolo de consenso y de creación de monedas. B-Money fue un proyecto presentado por Wei Dai como un sistema anónimo y distribuido de dinero electrónico. Pero no fue hasta que llego Bit Gold en 2005, que fue presentado por Nick Szabo donde se creo un sistema completo que podría sustentar a una moneda digital. Su protocolo de consenso era conocido como Reusable Proof of Work (RpoW). Sin embargo, tanto B-Money como Bit Gold, tenían serios problemas con su visión distribuida. Ya que estaba limitada a la representación de servidores donde se almacenaba la mayor parte de la información de la “cadena de monedas”. Ello significaba que eran altamente susceptibles a ataques por terceros maliciosos.

En 2009, de la mano del anónimo Satoshi Nakamoto llego Bitcoin. El Bitcoin hacía uso de PoW usando el hash SHA-256 como medio para producir monedas digitales y para crear un consenso en la red. Todo ello bajo un sistema de firma multipartita de adhesión dinámica o DMMS (Dynamic Membership Multi-party Signature). Este método permitía que el poder de computo distribuido entre todos los participantes reforzara la red, con una serie de firmas digitales que se reforzaban asimismas. Gracias al poder de computo prestado y por el cual recibían una remuneración. Fue este enfoque el que logro resolver el Problema de los Generales Bizantinos permitiéndole al Bitcoin ser una red distribuida en su totalidad. Todo ello a la vez que alcanzaba un alto nivel de confianza y seguridad que ninguna otra podía ofrecer.

Principales Protocolos de Consenso

Proof of Work (PoW)

Un sistema de Prueba de Trabajo (Proof of Work – PoW), es un protocolo o algoritmo que obliga a los usuarios a realizar un trabajo computacionalmente costoso. Esto con el fin de recibir una medida económica que le permita hacer uso de un servicio o red, al tiempo que evita el mal uso del mismo. El concepto fue inventado por Cynthia Dwork y Moni Naor en el año de 1993. Uno de sus iniciales uso se vio en el software Hashcash y su utilización para evitar que los spammer email pudieran realizar este tipo de ataques. Este es el sistema que se usó para el diseño de Bitcoin.

Entre sus ventajas podemos decir:

  1. Es un algoritmo muy seguro.
  2. Es sencillo y muy fácil de implementar algoritmicamente.
  3. Fácilmente adaptable a las necesidades de hardware, pudiéndose diseñar resistencia a determinados equipos (ASIC, GPU, CPU).
  4. Capacidad de resistencia a ataque DoS (Denied of Service – Denegación de Servicios).
  5. Sin importar cuando dinero tengas en una wallet, mientras más poder de computo tengas , mayor será la ganancia y mayor peso de verificación tienes en la red.

Entre sus desventajas podemos mencionar:

  1. Altamente costoso a nivel computacional y energético.
  2. La mayor parte del poder computacional se pierde y no se puede usar en otra tarea.
  3. La evolución del hardware deja atrás su capacidad de resistencia.

Proof of Stake (PoS)

Proof of Stake o Prueba de Participación, es un protocolo de consenso distribuido que funciona mediante la petición de pruebas de posesión de dichas monedas. Bajo este concepto, PoS aplica que a probabilidad de encontrar un bloque de transacciones, es directamente proporcional a la cantidad de monedas que uno tiene acumuladas, evitando así que la confianza venga dada por la cantidad de trabajo invertida.

El sistema funciona bajo la suposición de que quienes poseen más monedas, son los más indicados para proteger la misma y su valor (manteniendo al mismo tiempo el valor de las monedas que poseen). Con ello el algoritmo premia a quienes tienen más monedas, con una baja dificultad para que puedan conseguir nuevos bloques y crear nuevas monedas.

Entre las ventajas del sistema se pueden mencionar:

  1. Se puede llegar a tener un grado de seguridad equivalente al obtenido con PoW.
  2. El gasto energético es menor ya que no necesita de un intensivo trabajo computacional.
  3. No hay necesidad de pool de minería.
  4. El grado de rendimiento de la red es mucho mayor que con el sistema PoW, llegando a rondar los 50.000 TPS.

Entre sus desventajas principales se tienen que:

  1. Se debe mantener el wallet online, lo que es contraproducente para la seguridad de la red.
  2. El anonimato de la red es más complejo de mantener para las delegados.
  3. Quienes tienen mayor cantidad de monedas tienen más poder en la red, lo que puede llegar al punto de mantener esquemas de 51% en la misma.

Delegated Proof of Stake (DPoS)

Delegated Proof of Stake o Prueba de Participación Delegada, es un un algoritmo de consenso muy fiable, robusto y el más eficiente dentro de las redes blockchain. Fue la invención creativa de Daniel Larimer, que es el desarrollador principal de Bitshare. Su objetivo era dar a las partes interesadas de cualquier moneda el poder de tener un voto sobre el proceso de resolución de consenso de una manera democrática.

La Prueba de Participación Delegada funciona de tal manera que los accionistas son los principales actores en cualquier red blockchain. Ello son los responsables de votar por los testigos a quienes se les asigna la tarea de verificar las transacciones y producir los bloques.

Los accionistas tienen la posibilidad de votar por estos testigos a razón de un voto por acción, por lo que los accionistas con más monedas obtienen más votos. Sin embargo, un testigo tiene que obtener el mayor número de votos de varios accionistas y solo los veinte testigos principales son elegibles para llevar a cabo las funciones declaradas. Este factor en sí mismo crea eficiencia, ya que ejerce presión sobre los testigos para que desempeñen su trabajo de manera excelente, ya que pueden ser reemplazados en cualquier momento en que se porten mal o actúen de manera fraudulenta.

En este caso, los delegados también son votados por los accionistas y tienen la tarea de hacer enmiendas y propuestas de cambio en la red. Además los accionistas revisan estas propuestas y toman las decisiones finales. Sin embargo, los delegados no son recompensados por sus servicios, sino que ayudan a racionalizar las operaciones en la red. De esta forma los desarrolladores utilizan sus hallazgos y recomendaciones para afinar la red.

El sistema de Prueba de Participación Delegada , es clave para asegurar que los testigos seleccionados no dejen de confirmar sus transacciones, ya que detecta activamente cualquier comunicación fallida en la red. Este esquema permite una gran seguridad en la red y un rendimiento excepcional, pudiendo alcanzar velocidades de hasta 100.000 TPS.

Proof of Authority (PoA)

La Prueba de Autoridad (PoA), un mecanismo de consenso alternativo donde existen ya varios nodos de autoridad preaprobados, que reciben el nombre de selladores. Es una forma modificada de Prueba de Participación (PoS). En PoA, en lugar de tener una cierta cantidad de activos retenidos como valor, se usa la identidad. En este contexto, identidad significa la correspondencia entre la identificación personal de un validador en el mundo real.

Para que la prueba sea efectiva, cualquier nuevo nodo que desee agregarse debe pasar por votación. Todo el conjunto de nodos de autoridad actualmente aprobados pueden participar. Esto brinda un control total sobre qué nodos pueden sellar bloques en su red. Esto sirve para asegurarse de que un firmante malintencionado no pueda hacer daño a la red.

Al igual que en PoS, en el consenso de PoA, la identidad también es escasa. Pero a diferencia de PoS, solo hay una identidad por persona. Con PoA significa que debes revelar voluntariamente quién eres a cambio del derecho a validar los bloques. Esto significa que los beneficios que obtienes de él son públicos y también lo son las acciones nefastas que podrías emprender. La identidad puesta en juego puede servir como un gran ecualizador, entendida y valorada por todos los actores. Las personas cuya identidad está en juego para asegurar una red están incentivadas para preservar la red.

Si bien muchos podrían estar en contra de este sistema de consenso debido a que abandona el concepto de privacidad de las criptomonedas. Ante el hecho que esto significa y la escalabilidad que otorga son muchos los proyectos que se han visto interesados por este sistema. Entre ellos Ethereum, que ya prueba este algoritmo en su red de pruebas Rinkeby.

Algunas de las preocupaciones con el modelo de PoA es que esta es una versión ligeramente más distribuida de un sistema centralizado. Pese a ello aprovecha la capacidad de este ultimo para ser eficiente. Este hecho es lo que ha sembrado cierto escepticismo en las comunidades de blockchain públicas. Además el sistema habilita la creación de sistemas bancarios en la que, los validadores (bancos) pueden vetar o restringir las actividades. Otra preocupación es que algunas personas simplemente no se preocupan por su reputación. Esto podría llevarles a actuar de mala manera si ven que pueden beneficiarse sin importarles su reputación.

Por otro lado, las ventajas de una red de consenso PoA son bastante obvias. Mayor eficiencia en los tiempos de transacción y el consenso general de la red. Esto hecho repercute positivamente en la escalabilidad de las mismas. Adicionalmente avances tecnológicos pueden ayudar a asegurar aún más esas redes. Pues los validadores son independientes entre sí y susceptibles a la intervención de terceros.

PoET – Proof of Elapsed Time

El consenso PoET o Prueba de Tiempo Transcurrido, es una forma eficiente de prueba de trabajo que elimina la necesidad del proceso intensivo. Para lograr esto reemplaza la minería con un sistema de temporizador aleatorio para los participantes de la red. Básicamente, a cada participante de la red se le da un objeto de temporizador aleatorio. Cuando el temporizador expira, este “despierta” al participante. Con ello este se convierte en el líder del bloque y produce el nuevo bloque.

Este esquema de funcionamiento, proporciona una solución aleatoria necesaria y eficiente para el “Problema de Selección Aleatoria de Líderes”. Esencialmente, este problema es cómo determinar el líder de una ronda de consenso en los sistemas tolerantes a fallos bizantinos. Fue creado para usarse en Hyperledger. Esta intrínsecamente relacionado con las tecnologías TEE (Trusted Execution Environment) y las extensiones SGX de los procesadores Intel.

Este sistema de trabajo se divide en dos etapas bien definidas:

  1. En la primera etapa, se usan las instrucciones del core SGX para producir un certificado firmado. Se procede a verificar el certificado usando el código de confianza que está en el TEE. En el proceso además, se ha producido un par de claves pública/privada. Las mismas permiten al nodo participar o no en el proceso de selección aleatoria de los líderes de la red.
  2. En la segunda fase, los participantes de la red reciben un objeto temporizador firmado con un código de confianza aleatorio. La idea de esto, es mitigar los ataques maliciosos que le permitan obtener temporizadores. Lo que evita a los maliciosos producir más bloques. Cada participante espera posteriormente a que caduque su temporizador aleatorio. El primer participante cuyo temporizador expire, propaga un certificado firmado a la red. Esto indica quienes son los líderes de bloques aleatorios para esa ronda. Con ello el mensaje se autentifica, el bloque es producido y se reinicia el proceso.

El funcionamiento del sistema es muy seguro. Sin embargo, las fallas de seguridad que pueden ocultar son difíciles de solucionar. Esto debido a su alta dependencia a las soluciones en hardware. Este caso se dio al descubrirse la vulnerabilidad Spectre y Foreshadow en los procesadores Intel. Ambas vulnerabilidad, permitían a un atacante pasar las barreras de seguridad. Aunque estas sean de hardware o software hay posibilidad de manipular información al más bajo nivel posible. Esto haría que los ataques de este tipo fueran indetectables. Ademas, la solución de estos problemas sería muy complicada. Pasan por alterar el firmware o incluso la arquitectura de los chips, lo que es difícil y costoso. Pese a ello la velocidad del sistema es inigualable. Y sus características se prestan mucho para las tareas industriales y empresariales para las que está pensada.

Protocolos de Consenso – Pilar en la Seguridad Blockchain
5 (100%) 4 votes
(Visited 74 times, 1 visits today)

Deja un comentario