1 Introducción
1.1 Estructura
1.2 Objetivos
1.3 Motivación
2 Estado del Arte
2.1 Gobernanza y gestión de información de ruteo global
2.1.1 Historia de los RIRs
2.1.2 Historia de los IRR
2.1.3 Mecanismos actuales de seguridad en el ruteo
2.2 Uso de la tecnología blockchain para validar la información de ruteo
2.2.1 Antecedentes
II MARCO TEÓRICO
3 Recursos de internet
3.1 Sistemas Autónomos
3.2 Números IPv4 e IPv6
3.3 Administración global de los recursos
4 Conceptos de BGP
4.1 Introducción a BGP
4.2 Características de BGP
4.3 Principales tipos de mensaje BGP
4.4 Principales atributos de BGP
4.5 Criterios de selección de rutas
5 Seguridad de ruteo en Internet
5.1 Secuestro de rutas - Route Hijacking
5.1.1 Antecedentes de secuestros de rutas
5.1.1.1 2008 - Denegación de servicio, Caso Pakistan - Youtube
5.1.1.2 2014 - Secuestro de BGP para obtener beneficios de criptomonedas
5.2 Fuga de ruta - Route Leak
5.2.1 Clasificación de Fugas de Ruta
5.2.2 Propuesta para solucionar los problemas de fugas de ruta: RFC 9234
5.2.2.1 Introducción
5.2.2.2 Relaciones entre peers
5.2.2.3 Corrección de roles
5.2.2.4 Atributo BGP solo para el cliente (OTC)
5.3 RPKI
5.3.1 Introducción a RPKI
5.3.2 Validación del origen de la ruta
5.4 MANRS
5.5 BGPSEC
5.6 ASPA - Autonomous System Path Authorization
5.6.1 Procedimiento de verificación cliente-proveedor
5.6.2 Procedimiento de verificación de AS_PATH
6 Conceptos de Sistemas Distribuidos
6.1 Definición de Sistemas distribuidos
6.2 Problema de los generales bizantinos
6.3 Teorema CAP
7 Conceptos de Criptografía
7.1 Introducción
7.2 Servicios de la criptografía
7.3 Primitivas criptográficas
7.3.1 Primitivas criptográficas sin clave
7.3.1.1 Secuencias aleatorias
7.3.1.2 Funciones hash
7.3.2 Criptografía simétrica
7.3.3 Criptografía de clave asimétrica
7.4 Firma digital
7.5 Árbol de Merkle
7.6 Árbol Patricia Trie
8 Conceptos de Blockchain
8.1 Definición de blockchain
8.2 Componentes de una Blockchain
8.3 Arquitectura de una blockchain
8.4 Clasificación de una blockchain
8.4.1 Blockchain pública
8.4.2 Blockchain privadas o permisionadas
8.4.3 Blockchain público-permisionadas
8.5 Descentralización
8.6 Mecanismos de consenso
8.6.1 PBFT
8.6.2 RAFT
8.6.3 Proof of Work (PoW) ó Prueba de trabajo
8.6.4 Proof of Stake (PoS) ó Prueba de Participación
8.6.5 Committee-based PoS
8.6.6 DPoS - Delegated PoS
8.6.7 Proof of Authority ó Prueba de Autoridad
8.6.8 Tower Byzantine Fault Tolerance - Tower BFT
8.7 Escalabilidad de una blockchain
9 Plataformas blockchain consideradas
9.1 Bitcoin
9.1.1 Transacciones en la red Bitcoin
9.1.2 Red Bitcoin
9.1.3 RSK: Contratos inteligentes sobre la red Bitcoin
9.2 Ethereum
9.2.1 ¿Qué es Ethereum?
9.2.2 Características de la red Ethereum
9.2.3 Historia de la red Ethereum
9.2.4 Ecosistema de la red Ethereum
9.2.4.1 Claves y direcciones
9.2.4.2 Cuentas (Addresses)
9.2.4.3 Abstracción de cuentas ERC-4337
9.2.4.4 Contratos inteligentes
9.2.4.5 Éter criptomoneda/tokens
9.2.4.6 Transacciones y mensajes
9.2.4.7 Tarifas y gas
9.2.4.8 EVM
9.3 Escalabilidad de la Blockchain Ethereum
9.3.1 Soluciones de escalado on-chain
9.3.2 Soluciones de escalado off-chain
9.3.2.1 Sidechain o cadena lateral
9.3.2.2 Soluciones de escalado de capa 2
9.4 Arbitrum
III DESARROLLO DEL TRABAJO
10 Desarrollo de la solución propuesta
10.1 Introducción
10.2 Arquitectura de la solución propuesta
10.2.1 Aportes realizados al contrato inteligente
10.2.1.1 Soporte IPv6
10.2.1.2 Utilización de funciones para verificación de firmas realizadas offchain
10.2.1.3 Ataques de repetición de firmas (Signature replay attacks)
10.2.1.4 Heartbeat function
10.2.1.5 Migración a Solidity v0.8.18
10.2.1.6 Verificación del AS_PATH
10.3 Despliegue del contrato inteligente
10.4 Asignación y delegación de recursos de Internet mediante blockchain
10.4.1 Secuencia de pasos para dar de alta un SA
10.4.2 Secuencia de pasos para asignar el prefijo IPv6 al SA
10.4.3 Los SAs indican mediante transacciones cuales son sus SAs vecinos
10.4.4 Conclusiones del trabajo experimental con Remix
10.5 Despliegue del contrato inteligente con Hardhat
10.6 Prueba del contrato inteligente
10.7 Reporte de gas utilizado
11 Validación de la solución
11.1 Introducción
11.2 Entorno de software utilizado para la realización de pruebas
11.3 Emulación de ataque de Route Hijacking existoso
11.4 Emulación de ataque de Route Hijacking evitado mediante el uso de tecnología
blockchain
12 Conclusiones
13 Futuras líneas de investigación
13.1 Información adicional on-chain
13.2 Soporte dual stack IPv6/IPv4
13.3 Verificación del AS-PATH mediante el método ASPA
13.4 Pruebas de la solución en redes público-permisionadas
14 Anexos
14.1 Contrato inteligente IANA.sol
14.2 Archivo de configuración de Hardhat
14.3 Scripts para el deploy del contrato inteligente
14.4 Scripts para testing del contrato inteligente
14.5 Script Python para validación de paquetes UPDATE de BGP
14.6 Servidores WEB en NodeJS en SA64503
14.7 Servidores WEB en NodeJS en sistema autónomo atacante SA64504
14.8 Configuración del R1
14.9 Configuración del cliente docker C1
14.10Configuración del router R1-2
14.11Configuración del router R2
14.12Configuración del router R3
14.13Configuración del router R3-2
14.14Configuración del router R4
14.15Configuración del router R4-2