Estoy trabajando en un proyecto interesante, relacionado con la cadena de bloques, el contrato inteligente y la seguridad en el servicio de comunicaciones por Internet / contenido web.
El objetivo principal es reducir los riesgos de ataques de HTTP en el medio, piratería de las autoridades de certificación o comportamiento malicioso y / o piratería de DNS.
La idea es almacenar todos los activos que componen el sitio web (HTML / CSS / JS) en un contrato inteligente. Por lo tanto, los datos se replican en toda la red de blockchain (digamos, ethereum o EOS, por ejemplo).
Primer paso: Como desarrollador web, construí mi sitio web, almacené todos los activos en un contrato inteligente, la aplicación blockchain me devuelve una ID única, por ejemplo, contract_1234. Este ID identifica mi sitio web, luego lo transmito a los clientes que conozco para que puedan jugar con él.
Los clientes ahora pueden pedir a cualquier nodo de la red, que les diga el valor del contrato inteligente_1234, todos deberían recibir el mismo valor.
Segundo paso: como cliente en algún lugar del mundo. Quiero cargar el sitio web para la dirección del contrato que se me ha dado: contract_1234.
En lugar de solicitar los datos a un sitio (IP / nombre de dominio), soy consciente (a través de un software para compilar) de todos los nodos que componen la red de blockchain (generalmente las direcciones IP / nombres de dominio de los nodos no cambian mucho a lo largo del tiempo). Le pido a 10 nodos (sí, significa 10 solicitudes HTTP en lugar de una) el valor almacenado en el contrato inteligente en la dirección contract_1234. Confío en un libro mayor distribuido para servir el contenido en lugar de un solo IP / nombre de dominio.
Cuando recibo las respuestas de las llamadas HTTP / HTTPS, comparo las respuestas, si 9 nodos de los 10 me enviaron la misma respuesta A, lo considero seguro y lo cargué, y eventualmente descarté el décimo nodo que obviamente es Maliciosos o no sincronizados con el blockchain. Si obtuve 3 respuestas diferentes de los 10 nodos, no cargaré el contenido porque lo considero inestable o potencialmente malicioso.
Creo que este comportamiento / programa evitaría / haría que su sitio web, como desarrollador web, esté mucho menos sujeto a:
- Hackeo de la autoridad de certificación: si uno o dos nodos tienen la CA pirateada, los clientes simplemente descartarán estos dos nodos porque ahora envían algunas respuestas diferentes que los demás.
- Hackeo de DNS: por la misma razón, tal vez sea posible hackear un nodo, pero un pirata informático tendría que controlar muchos nodos (potencialmente en diferentes continentes) al mismo tiempo para corromper los datos que se envían a los clientes.
- Ataques del hombre en el medio: para que un pirata informático pueda piratear el DNS de las solicitudes que hago, tendrá que interceptar las 10 solicitudes que apuntan a 10 ubicaciones diferentes en todo el mundo.
¿Estás de acuerdo con estas 3 suposiciones?
¿Se me han escapado algunos puntos sobre las comunicaciones de Internet / protocolos HTTP?