Identidad digital en Blockchain

En este artículo presentamos una nueva e innovadora forma de abordar algunos de los problemas de seguridad que aparecen en las redes de blockchain. Es evidente que el blockchain ofrece seguridad, nadie puede manipular los datos, pero hay “huecos” de seguridad que aparecen cuando los nodos se exponen sin consideraciones. Para lograr ese propósito es posible escribir contratos inteligentes que mantengan un estado actualizado de los nodos permitidos para conectarse y utilizar esa información, actualizando automáticamente nuestras reglas de firewall casi en tiempo real.

Vamos a ir analizando de lo particular a lo general. Empezaremos con la implementación más básica para automatizar las reglas del firewall, a través de contratos inteligentes en un nodo simple. Finalmente tendremos un enfoque general sobre cómo plantear la seguridad a nivel de administración (proveedores de la nube/en local). Este enfoque no pretende sustituir los esquemas actuales utilizados por las organizaciones para asegurar sus entornos, sino que es una contribución para mejorar la seguridad aprovechando la confianza que ofrecen las redes blockchain.

Aunque todo lo mencionado hasta aquí es un concepto casi general, ejemplificaremos la automatización de reglas de firewall a través de contratos inteligentes escritos en Ethereum y también explicaremos un componente intermedio entre la red Ethereum y las reglas de firewall.

Redes con permiso en Ethereum

Vamos a delimitar nuestro viaje centrándonos en las redes de Ethereum. Las redes con permisos añaden una capa de seguridad a nivel de aplicación, ya que permiten controlar quién puede unirse a la red.

Las implementaciones de clientes de Ethereum como Parity y Hyperledger Besu tienen dos formas de crear una red con permisos:

  1. Usando archivos en cada nodo para especificar qué otros nodos pueden comunicarse con ese nodo.
  2. Usando contratos inteligentes, una implementación que se conoce como permissioning onchain. Básicamente, en este enfoque todos los nodos que obedecen el contrato inteligente de autorización forman una red autorizada. El contrato decide a qué nodos conectarse. Vale la pena decir que este enfoque es más dinámico: tan pronto como la lista de nodos se actualiza en el contrato inteligente, los nodos comienzan a aceptar el nuevo nodo con permiso.

Puntos de dolor

El análisis de las redes actuales con permisos muestra que los nodos son accesibles a nivel de aplicación, por lo que cualquier otro nodo, aunque no esté en el contrato inteligente, puede alcanzar los puertos del nodo P2P e intentar atacarlo. Incluso cuando el nodo no acepta conexiones distintas a las registradas en el contrato inteligente, los malos actores pueden realizar ataques de spam en los puertos expuestos P2P.

Para proteger el acceso a nuestros nodos se puede optar por utilizar reglas de firewall, lo que añade una capa de seguridad para que sólo los nodos autorizados puedan llegar a nuestros nodos de Ethereum.

Las reglas del firewall se pueden aplicar en:

  • La máquina de alojamiento donde vive el nodo

  • Infraestructura en la nube/on premise

Las reglas de firewalls añaden más seguridad, pero también más complejidad a nuestra configuración, ya que tienen que ser actualizadas manualmente.

Controlar las reglas del firewall manualmente puede hacer que se pierda la sincronización en algunos protocolos de consenso, por ejemplo, IBFT2.0 requiere un número mínimo de validadores activos (>=2/3 de los validadores de la lista), para poder seguir añadiendo bloques. La comunicación entre esos validadores debe estar garantizada. En este caso, si se añaden nuevos validadores a la red y las reglas del firewall de otros validadores no se han actualizado para permitir la conexión con esos nuevos, la red podría detenerse debido a un fallo de comunicación entre ellos.

Análisis

Desde nuestro punto de vista, tener redes con permisos no es suficiente en términos de seguridad. Por otra parte, utilizar reglas de firewall manualmente tiene sus propios problemas.

Los nodos deberían tener una forma de protegerse de una variedad de ataques que podrían realizarse cuando actores maliciosos llegan a nuestros nodos a través de agujeros de seguridad. Podría ser útil tener una forma dinámica de manejar las reglas del firewall.

Reglas del firewall de onchain

Hasta ahora, hemos analizado las redes con permisos y las reglas de firewall. En esta sección vamos a mostrar cómo utilizar los contratos inteligentes permissioning para aumentar la seguridad a nivel de administrador del sistema, para garantizar el alivio del servicio de Ethereum y aumentar la protección a nuestro nodo. Para conseguir este propósito es posible automatizar las reglas del firewall a través de contratos inteligentes. En este escenario los nodos pueden utilizar el contrato inteligente como fuente de confianza a la hora de modificar las reglas. En la siguiente sección vamos a aplicar contratos inteligentes (a través de eventos emitidos), para actualizar automáticamente las reglas del firewall.

Implementación

El siguiente diagrama muestra cómo los administradores de una red con permisos pueden actualizar los nodos permitidos para unirse a una red.

  • El Node.x puede ser su nodo que se utiliza para interactuar con la red.
  • En el siguiente gráfico se puede ver un servicio daemon que está escuchando el contrato inteligente de permisos a través de su Node.x. Una vez que el daemon se da cuenta de que se ha emitido un nuevo evento, actualiza las reglas del firewall.

Hasta aquí hemos visto diagramas generales, ahora vamos a comprobar una implementación particular. En este diagrama el servicio daemon es notificado por medio de eventos emitidos por el contrato inteligente de permisos. Tan pronto como esos eventos llegan el servicio daemon actualiza las reglas del firewall en la máquina de alojamiento donde vive el Node.x. Si tienes curiosidad por saber cómo se ha implementado este caso en particular, puedes revisar el código aquí.

El diagrama anterior puede ampliarse. Por ejemplo, en lugar de actualizar únicamente las reglas del Firewall de la máquina de alojamiento local, el servicio daemon puede actualizar directamente las reglas del Firewall de la nube/en las instalaciones. De esta manera, te aseguras de que tu nodo está conectado a nodos de confianza en la red. Cualquier actor malicioso no podrá llegar a tus nodos de Ethereum, porque los nodos están protegidos a un nivel superior.

Conclusión

En este artículo hemos mostrado cómo es posible automatizar las reglas del firewall aprovechando las tecnologías blockchain y los contratos inteligentes como fuente de confianza para la seguridad.

También hemos analizado cómo podemos tener nodos asegurados y seguir pudiendo interactuar con otros nodos de confianza (otras organizaciones).

Por último, ya no es necesario preocuparse por las reglas del firewall, porque éstas pueden ser actualizadas automáticamente por la red de blockchain.

Tags

He leído y acepto la política de privacidad
Acepto recibir emails sobre actividades de recruiting NTT DATA