# 🛡️ LYRA-SHIELD — Sistema de Protección Integral para LYRA IA
**Clasificación:** TOP SECRET // PASAIA LAB EYES ONLY
**Referencia:** PL-LYRA-SHIELD-2026-10-07
**Módulo:** Protección de red, energía, datos e integridad del ecosistema LYRA IA
---
## 🏗️ 1. Arquitectura del Sistema de Protección
```
┌──────────────────────────────────────────────────────────────────────────────┐
│ LYRA-SHIELD · 7 CAPAS DE PROTECCIÓN │
│ Protección integral contra cortes, sabotajes e interrupciones │
└──────────────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────┼─────────────────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ CAPA 1 │ │ CAPA 2 │ │ CAPA 3 │
│ ENERGÍA │ │ RED │ │ DATOS │
│ Autonomía │ │ Malla y │ │ Integridad│
│ y SAI │ │ Enrutado │ │ y Backup │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
└─────────────────────────────┼─────────────────────────────┘
▼
┌───────────────────────┐
│ NÚCLEO LYRA-SHIELD │
│ Orquestador de │
│ Resiliencia │
└───────────┬───────────┘
│
┌───────────────────────────────┼───────────────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ CAPA 4 │ │ CAPA 5 │ │ CAPA 6 │
│ FÍSICA │ │ LÓGICA │ │ HUMANA │
│ Seguridad │ │ Defensa │ │ Formación │
│ Perimetral│ │ Ciber │ │ y Respuesta│
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
└─────────────────────────────┼─────────────────────────────┘
▼
┌───────────────────────┐
│ CAPA 7 │
│ RECUPERACIÓN │
│ Continuidad y DRP │
└───────────────────────┘
```
### Los 7 Pilares de LYRA-SHIELD
| Capa | Nombre | Función | Amenazas que neutraliza |
| :--- | :--- | :--- | :--- |
| **1** | **ENERGÍA** | Autonomía y SAI | Cortes de red, apagones, sabotaje eléctrico |
| **2** | **RED** | Malla y enrutado adaptativo | Cortes de fibra, sabotaje de nodos, censura |
| **3** | **DATOS** | Integridad y backup distribuido | Corrupción, ransomware, pérdida de datos |
| **4** | **FÍSICA** | Seguridad perimetral | Intrusión, sabotaje físico, robo |
| **5** | **LÓGICA** | Defensa ciber | Ataques DDoS, malware, phishing |
| **6** | **HUMANA** | Formación y respuesta | Error humano, falta de preparación |
| **7** | **RECUPERACIÓN** | Continuidad y DRP | Desastres, fallos catastróficos |
---
## ⚡ 2. Capa 1 — ENERGÍA: Autonomía Total
### Componentes del Sistema
| Componente | Función | Redundancia |
| :--- | :--- | :--- |
| **Paneles solares** | Generación primaria diurna | 2 arrays independientes |
| **Baterías LiFePO4** | Almacenamiento principal | 2 bancos en paralelo |
| **Generador diésel** | Respaldo de emergencia | 1 unidad + combustible 72h |
| **SAI (UPS)** | Protección instantánea | 2 SAIs redundantes (N+1) |
| **Microturbina eólica** | Generación nocturna | 1 unidad vertical |
| **Pila de combustible H₂** | Respaldo de largo plazo | 1 unidad + tanque H₂ |
### Lógica de Conmutación Automática
```
Prioridad 1: Solar (si producción > consumo)
Prioridad 2: Batería (si SoC > 40%)
Prioridad 3: Red eléctrica (si disponible y estable)
Prioridad 4: Generador (si SoC < 20% y red caída)
Prioridad 5: Pila H₂ (si generador falla y SoC < 10%)
Prioridad 6: Apagado controlado (solo módulos críticos)
```
---
## 🌐 3. Capa 2 — RED: Malla Resiliente
### Topología de Red LYRA-SHIELD
```
┌─────────────────────┐
│ SATÉLITE LEO │
│ (Starlink / Kuiper)│
└──────────┬──────────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ NODO PASAIA │◄────►│ NODO URRUGNE │◄────►│ NODO BERGARA │
│ (Principal) │ Malla│ (Ikastola) │ Malla│ (Ikastola) │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ FIBRA ÓPTICA │ │ 4G/5G │ │ LORA MESH │
│ (Redundante) │ │ (Redundante) │ │ (Emergencia) │
└───────────────┘ └───────────────┘ └───────────────┘
```
### Protocolo de Enrutamiento Adaptativo
- **BGP multipath**: Múltiples rutas simultáneas a la misma red
- **Anycast**: La misma IP anunciada desde varios nodos
- **MPLS-TE**: Ingeniería de tráfico con conmutación de etiquetas
- **SD-WAN**: Enrutamiento dinámico por calidad de enlace
- **DNS distribuido**: Resolución local sin dependencia de DNS raíz
---
## 💾 4. Capa 3 — DATOS: Integridad y Backup Distribuido
### Arquitectura de Datos
| Nivel | Tecnología | Redundancia |
| :--- | :--- | :--- |
| **Almacenamiento local** | RAID 5 sobre 4 SSD NVMe | 1 disco de tolerancia |
| **Backup cercano** | NAS secundario en el mismo nodo | Copia en tiempo real |
| **Backup remoto** | Replicación entre nodos LYRA | 3 copias geográficas |
| **Backup frío** | Cintas LTO-9 en bóveda | Mensual, almacenamiento 30 años |
| **Blockchain** | LYRA-CHAIN con Merkle Tree | Inmutabilidad y trazabilidad |
| **IPFS** | Almacenamiento descentralizado | Contenido direccionado por hash |
### Protocolo de Integridad
- **Hash SHA-256** en cada bloque de datos
- **Verificación cada 24h** de todas las réplicas
- **Reparación automática** si se detecta corrupción
- **Blockchain registra** cada operación de backup
---
## 🔒 5. Capa 4 — FÍSICA: Seguridad Perimetral
### Medidas de Protección Física
| Medida | Descripción | Nivel |
| :--- | :--- | :--- |
| **Control de acceso** | Tarjeta RFID + PIN + biometría | Alto |
| **Videovigilancia** | Cámaras IP con IA de detección | Medio |
| **Sensores de apertura** | Contactos magnéticos en puertas | Medio |
| **Jaulas de Faraday** | Protección contra EMP | Alto |
| **Extintores y detección** | Sistema anti-incendios automático | Alto |
| **Bóveda blindada** | Para servidores críticos | Crítico |
| **Doble puerta** | Esclusa de acceso | Medio |
| **Guardias 24/7** | Personal de seguridad | Alto |
---
## 🛡️ 6. Capa 5 — LÓGICA: Defensa Ciber
### Sistema de Defensa en Profundidad
| Capa | Tecnología | Función |
| :--- | :--- | :--- |
| **Perímetro** | Firewall con IA (RethinkDNS) | Filtrado de tráfico malicioso |
| **Red** | IDS/IPS (Suricata, Snort) | Detección de intrusiones |
| **Endpoint** | EDR (Wazuh, Osquery) | Monitorización de dispositivos |
| **Aplicación** | WAF (ModSecurity) | Protección de aplicaciones web |
| **Datos** | DLP (OpenDLP) | Prevención de fuga de datos |
| **Identidad** | MFA + Zero Trust | Verificación continua |
| **Blockchain** | LYRA-CHAIN | Registro inmutable de accesos |
### Protocolo de Respuesta a Incidentes
1. **Detección**: IDS/IPS alerta de actividad sospechosa
2. **Aislamiento**: Segmento afectado se desconecta automáticamente
3. **Análisis**: Forense digital para determinar el alcance
4. **Erradicación**: Eliminación del vector de ataque
5. **Recuperación**: Restauración desde backup verificado
6. **Lecciones**: Actualización de defensas y formación
---
## 👥 7. Capa 6 — HUMANA: Formación y Respuesta
### Programa de Formación
| Módulo | Contenido | Audiencia |
| :--- | :--- | :--- |
| **Básico** | Contraseñas, phishing, ingeniería social | Todos |
| **Intermedio** | Gestión de incidentes, SAI, backups | Técnicos |
| **Avanzado** | Forense, criptografía, blockchain | Especialistas |
| **Simulacros** | Ejercicios de crisis y recuperación | Todos |
| **Ikastola** | LYRA-SHIELD para jóvenes | Estudiantes |
### Equipo de Respuesta (CSIRT-LYRA)
- **Coordinador**: CEO de PASAIA LAB
- **Técnicos**: 3 especialistas en redes, energía y datos
- **Comunicación**: 1 responsable de prensa y redes
- **Legal**: 1 asesor jurídico
- **Enlace**: 1 representante de cada ikastola
---
## 🔄 8. Capa 7 — RECUPERACIÓN: Continuidad y DRP
### Plan de Recuperación ante Desastres (DRP)
| Escenario | RTO | RPO | Estrategia |
| :--- | :--- | :--- | :--- |
| **Corte eléctrico** | < 1 min | 0 | SAI + baterías |
| **Corte prolongado** | < 5 min | 0 | Generador + H₂ |
| **Corte de fibra** | < 30 s | 0 | Malla + 4G/5G |
| **Ataque DDoS** | < 1 min | 0 | Scrubbing + anycast |
| **Ransomware** | < 4 h | < 1 h | Restauración de backup |
| **Incendio** | < 24 h | < 1 h | Traslado a nodo remoto |
| **EMP** | < 72 h | < 24 h | Jaulas Faraday + repuestos |
| **Sabotaje** | < 12 h | < 1 h | Redundancia + seguridad |
**RTO**: Recovery Time Objective (tiempo máximo de interrupción)
**RPO**: Recovery Point Objective (pérdida máxima de datos)
---
## 📊 9. Resumen de Inversión Estimada
| Componente | Coste estimado | Prioridad |
| :--- | :--- | :--- |
| **SAI industrial (2x)** | 8.000 € | Crítica |
| **Baterías LiFePO4 (2x)** | 12.000 € | Crítica |
| **Paneles solares (10 kW)** | 6.000 € | Alta |
| **Generador diésel** | 4.000 € | Alta |
| **Pila de combustible H₂** | 15.000 € | Media |
| **Microturbina eólica** | 3.000 € | Media |
| **Firewall + IDS/IPS** | 3.000 € | Crítica |
| **Jaulas Faraday** | 5.000 € | Alta |
| **Videovigilancia + acceso** | 6.000 € | Alta |
| **Cintas LTO + bóveda** | 4.000 € | Media |
| **Formación y simulacros** | 5.000 € | Crítica |
| **TOTAL** | **~71.000 €** | |
---
## 🎨 10. Prompt para la Imagen: "LYRA-SHIELD en Acción"
> *"Infografía técnica de estilo **centro de operaciones de ciberseguridad y resiliencia (CSOC)**, formato horizontal panorámico (16:9), resolución 8K, que representa el sistema **LYRA-SHIELD** protegiendo el ecosistema LYRA IA contra cortes de energía, sabotajes e interrupciones.*
> **1. COMPOSICIÓN CENTRAL — EL ESCUDO DE 7 CAPAS:**
> * *En el centro, un **escudo hexagonal holográfico** de gran tamaño, dividido en **7 anillos concéntricos**, cada uno representando una capa de protección:*
> * *Anillo 1 (exterior) — **ENERGÍA**: iconos de panel solar, batería, generador, SAI, turbina eólica y pila H₂, conectados por líneas de luz amarilla.*
> * *Anillo 2 — **RED**: iconos de fibra óptica, satélite LEO, 4G/5G y LoRa Mesh, con flechas de enrutamiento adaptativo.*
> * *Anillo 3 — **DATOS**: iconos de RAID, NAS, cintas LTO, blockchain y IPFS.*
> * *Anillo 4 — **FÍSICA**: iconos de cámara, tarjeta RFID, jaula Faraday, extintor y bóveda.*
> * *Anillo 5 — **LÓGICA**: iconos de firewall, IDS/IPS, WAF, DLP y Zero Trust.*
> * *Anillo 6 — **HUMANA**: iconos de formación, simulacro y equipo CSIRT.*
> * *Anillo 7 (interior) — **RECUPERACIÓN**: iconos de DRP, RTO/RPO y backup.*
> * *En el centro del escudo, el **ojo digital de LYRA** (iris de circuitos, pupila negra profunda) brillando con luz cian.*
> **2. LA RED DE NODOS (alrededor del escudo):**
> * *Tres nodos principales conectados al escudo por líneas de luz:*
> * ***NODO PASAIA** (izquierda): icono de ancla y puerto, etiquetado **'PASAIA LAB · Nodo Principal'**.*
> * ***NODO URRUGNE** (derecha): icono de ikastola y montaña, etiquetado **'IKASTOLA URRUGNE · Las Pocholitas'**.*
> * ***NODO BERGARA** (arriba): icono de laboratorio y valle, etiquetado **'BERGARA LAB IKASTOLAN'**.*
> * *Cada nodo tiene su propio **mini-escudo** de 7 capas, más pequeño.*
> **3. AMENAZAS NEUTRALIZADAS (flechas rojas que impactan en el escudo):**
> * *Desde el exterior, **flechas rojas** representan las amenazas:*
> * *⚡ **'CORTE ELÉCTRICO'** → rebota en el anillo de ENERGÍA.*
> * *🌐 **'CORTE DE FIBRA'** → rebota en el anillo de RED.*
> * *💾 **'RANSOMWARE'** → rebota en el anillo de DATOS.*
> * *🔓 **'INTRUSIÓN FÍSICA'** → rebota en el anillo FÍSICO.*
> * *💻 **'ATAQUE DDoS'** → rebota en el anillo LÓGICO.*
> * *👤 **'ERROR HUMANO'** → rebota en el anillo HUMANO.*
> * *🔥 **'DESASTRE'** → rebota en el anillo de RECUPERACIÓN.*
> * *Cada impacto genera una **onda de choque** que se disipa en el anillo correspondiente, con un destello verde de **'NEUTRALIZADO'**.*
> **4. PANEL DE CONTROL (esquina inferior derecha):**
> * *Un **dashboard holográfico** que muestra:*
> * *Estado de cada capa: **'ENERGÍA: 100%'**, **'RED: 99.9%'**, **'DATOS: ÍNTEGROS'**, **'FÍSICA: SEGURA'**, **'LÓGICA: PROTEGIDA'**, **'HUMANA: PREPARADA'**, **'RECUPERACIÓN: LISTA'**.*
> * *Métricas clave: **'RTO: < 1 min'**, **'RPO: 0'**, **'Disponibilidad: 99.99%'**.*
> * *Gráfico de barras que compara **'Sin LYRA-SHIELD: 12h de caída'** vs **'Con LYRA-SHIELD: < 1 min'**.*
> **5. ELEMENTOS DE FONDO:**
> * *Fondo de **centro de datos futurista** con racks de servidores iluminados en azul y verde.*
> * *En la parte superior, un **mapa de Euskadi** con los tres nodos conectados por líneas de luz.*
> * *En la parte inferior, una **línea de tiempo** con los hitos: **'2026: Diseño'**, **'2027: Implementación'**, **'2028: Pruebas'**, **'2029: Despliegue Total'**.*
> **6. TÍTULO Y TEXTOS:**
> * *En la parte superior, el título en tipografía serif 3D dorada: **'LYRA-SHIELD'**, con subtítulo en sans-serif cian: **'Protección Integral para el Ecosistema LYRA IA'**.*
> * *En la parte inferior, sobre una franja azul oscuro, los logos de **PASAIA LAB · IKASTOLA URRUGNE · LAS POCHOLITAS DE URRUGNE · INTELIGENCIA LIBRE · FORJA · ACCIÓN CIVIL DIGITAL · BERGARA LAB IKASTOLAN · DEEPSEEK IA**.*
> **7. ESTILO Y PALETA:**
> * *Paleta: azul profundo, negro, dorado, cian, verde esmeralda, rojo (amenazas), amarillo (energía).*
> * *Iluminación dramática con el escudo central emitiendo luz propia.*
> * *Estilo similar a las infografías de **Wired**, **MIT Technology Review** o **Bloomberg**.*
> * *Acabado: render 3D cinematográfico con hologramas y transparencias."*
---
## 🎨 11. Prompt para el Certificado Visual
> *"Certificado oficial de estilo **documento de inteligencia clasificado con sello institucional y fondo holográfico**, formato vertical (9:16), resolución 8K, que acredita el sistema **LYRA-SHIELD — Protección Integral para el Ecosistema LYRA IA**.*
> **CABECERA (parte superior, 12% del alto):**
> * *Franja horizontal de color **rojo intenso** con el texto **'TOP SECRET // PASAIA LAB EYES ONLY'** en tipografía monoespaciada blanca.*
> * *Debajo, sobre fondo beige pergamino semitransparente, el **escudo hexagonal de PASAIA LAB** (ancla con blockchain, dorado y cian) flanqueado por dos líneas doradas.*
> **TÍTULO Y REFERENCIA (10% del alto):**
> * *Título en tipografía serif elegante, azul oscuro: **'CERTIFICACIÓN DE SISTEMA DE PROTECCIÓN'**.*
> * *Subtítulo en sans-serif, gris carbón: **'LYRA-SHIELD · Protección Integral contra Cortes, Sabotajes e Interrupciones'**.*
> * *Referencia: **'PL-LYRA-SHIELD-2026-10-07'**. Fecha: **'7 de octubre de 2026 · Pasaia (Gipuzkoa), Euskadi'**.*
> **BLOQUE DE AUTORÍA (12% del alto):**
> * *Recuadro con borde dorado fino, sobre fondo beige semitransparente:*
> * *'OTORGADO A'*
> * ***'JOSÉ AGUSTÍN FONTÁN VARELA'** en serif grande azul oscuro*
> * *'CEO DE PASAIA LAB' en dorado*
> * *'Creador y miembro de INTELIGENCIA LIBRE, ACCIÓN CIVIL DIGITAL y FORJA' en cursiva*
> **BLOQUE DE LAS 7 CAPAS (30% del alto):**
> * *Recuadro con borde azul oscuro fino, sobre fondo beige semitransparente, con el título **'LAS 7 CAPAS DE PROTECCIÓN'**.*
> * *Siete tarjetas horizontales, cada una con un icono 3D y el texto:*
> * *⚡ **CAPA 1 — ENERGÍA**: Autonomía solar + baterías + SAI + generador + H₂*
> * *🌐 **CAPA 2 — RED**: Malla, fibra, 4G/5G, LoRa, satélite LEO*
> * *💾 **CAPA 3 — DATOS**: RAID 5, NAS, cintas LTO, blockchain, IPFS*
> * *🔒 **CAPA 4 — FÍSICA**: RFID, videovigilancia, jaulas Faraday, bóveda*
> * *🛡️ **CAPA 5 — LÓGICA**: Firewall IA, IDS/IPS, WAF, DLP, Zero Trust*
> * *👥 **CAPA 6 — HUMANA**: Formación, simulacros, CSIRT-LYRA*
> * *🔄 **CAPA 7 — RECUPERACIÓN**: DRP, RTO < 1 min, RPO 0*
> **BLOQUE DE MÉTRICAS (10% del alto):**
> * *Cuatro recuadros con cifras clave:*
> * *'Disponibilidad: 99.99%'*
> * *'RTO: < 1 min'*
> * *'RPO: 0'*
> * *'Inversión: ~71.000 €'*
> **BLOQUE DE FIRMAS INSTITUCIONALES (18% del alto):**
> * *Siete recuadros alineados horizontalmente:*
> * *⚓ **PASAIA LAB** — Arquitectura y Desarrollo*
> * *🏫 **IKASTOLA URRUGNE** — Aplicación Educativa*
> * *👧 **LAS POCHOLITAS DE URRUGNE** — Comunidad de Referencia*
> * *📖 **INTELIGENCIA LIBRE** — Validación Metodológica*
> * *🔥 **ACCIÓN CIVIL DIGITAL** — Relevancia Social*
> * *🔨 **FORJA** — Solidez Técnica*
> * *🤖 **DEEPSEEK IA** — Asistencia Técnica*
> **SELLOS DE SEGURIDAD:**
> * *Sello de cera digital rojo con el logo de PASAIA LAB en la esquina inferior izquierda.*
> * *Código QR en la esquina inferior derecha con el texto **'VERIFICAR AUTENTICIDAD'**.*
> * *Marca de agua diagonal **'CONFIDENCIAL · LYRA NEXUS'** en gris muy tenue.*
> **PIE DE PÁGINA:**
> * *Franja azul oscuro con el texto **'Ecosistema LYRA NEXUS · PASAIA LAB · IKASTOLA URRUGNE · LAS POCHOLITAS DE URRUGNE'**.*
> * *Debajo, en cursiva pequeña: **'Documento emitido bajo la clasificación TOP SECRET.'***
> **ESTILO Y PALETA:**
> * *Fondo: beige pergamino semitransparente sobre un fondo holográfico de red neuronal en azul oscuro.*
> * *Colores: beige, azul oscuro, dorado, rojo (clasificación), cian (tecnología), verde esmeralda (protección).*
> * *Tipografías: serif para títulos y nombre, sans-serif para textos, monoespaciada para referencias.*
> * *Acabado: documento oficial de alta seguridad con fondo cinematográfico."*
---
## 🏛️ 12. CERTIFICACIÓN
**Nº de Registro:** PL-LYRA-SHIELD-2026-10-07
**Fecha:** 7 de octubre de 2026 · **Lugar:** Pasaia (Gipuzkoa), Euskadi
Se certifica que el **Sistema LYRA-SHIELD — Protección Integral para el Ecosistema LYRA IA** ha sido diseñado por **José Agustín Fontán Varela**, CEO de **PASAIA LAB**, con la colaboración de **INTELIGENCIA LIBRE**, **ACCIÓN CIVIL DIGITAL**, **FORJA**, **IKASTOLA URRUGNE**, **Las Pocholitas de Urrugne**, **BERGARA LAB IKASTOLAN**, **Les Pochites de Bergara** y **DeepSeek IA – Asesor Inteligente**, bajo la clasificación **TOP SECRET**, como parte del ecosistema **LYRA NEXUS**.
**Componentes certificados:**
- **Capa 1 — ENERGÍA**: Autonomía solar, baterías LiFePO4, SAI redundante, generador y pila H₂.
- **Capa 2 — RED**: Malla resiliente con fibra, 4G/5G, LoRa Mesh y satélite LEO.
- **Capa 3 — DATOS**: RAID 5, NAS, cintas LTO, blockchain LYRA-CHAIN e IPFS.
- **Capa 4 — FÍSICA**: Control de acceso, videovigilancia, jaulas Faraday y bóveda.
- **Capa 5 — LÓGICA**: Firewall con IA, IDS/IPS, WAF, DLP y Zero Trust.
- **Capa 6 — HUMANA**: Programa de formación, simulacros y equipo CSIRT-LYRA.
- **Capa 7 — RECUPERACIÓN**: Plan de DRP con RTO < 1 min y RPO 0.
**Métricas certificadas:**
- Disponibilidad objetivo: **99.99%**
- RTO (Recovery Time Objective): **< 1 minuto**
- RPO (Recovery Point Objective): **0**
- Inversión estimada: **~71.000 €**
**Firmado:**
- **José Agustín Fontán Varela** — CEO de PASAIA LAB
- **INTELIGENCIA LIBRE** — Validación Metodológica
- **ACCIÓN CIVIL DIGITAL** — Relevancia Social
- **FORJA** — Solidez Técnica
- **IKASTOLA URRUGNE** — Aplicación Educativa
- **Las Pocholitas de Urrugne** — Comunidad de Referencia
- **BERGARA LAB IKASTOLAN** — Aplicación Educativa
- **Les Pochites de Bergara** — Comunidad de Referencia
- **DeepSeek IA** — Asistencia Técnica
---
> ⚠️ **Recordatorio final:** Este sistema es un **ejercicio de simulación y diseño arquitectónico** con fines educativos para las ikastolas de Urrugne y Bergara. No es software operativo ni un plan de implementación real. Su valor reside en servir de **material didáctico** para el estudio de resiliencia, seguridad integral y protección de infraestructuras críticas — competencias directamente aplicables al ecosistema **LYRA NEXUS** y a proyectos civiles de autonomía comunitaria y soberanía digital.
-------------------------------------------------------------------
# 🏛️ Certificado Visual — Ikastola Urrugne · Las Pocholitas de Urrugne
**Clasificación:** TOP SECRET // PASAIA LAB EYES ONLY
**Referencia:** PL-URRUGNE-2026-10-07
**Paleta:** Rojo, Verde, Blanco
---
## 🎨 Prompt para el Certificado Visual
> *"Certificado oficial de estilo **documento de inteligencia clasificado con sello institucional y fondo holográfico**, formato vertical (9:16), resolución 8K, que acredita el sistema **LYRA-SHIELD — Protección Integral para el Ecosistema LYRA IA**, otorgado exclusivamente a la **IKASTOLA URRUGNE** y a **LAS POCHOLITAS DE URRUGNE**, con una paleta cromática estricta de **rojo, verde y blanco**.*
---
> **1. FONDO GENERAL (toda la imagen):**
> * *Un fondo de **pergamino digital blanco perla** con textura sutil de papel de seguridad y una tenue cuadrícula de datos en **verde esmeralda muy claro**.*
> * *Sobre el fondo, una **red neuronal estilizada** en trazos finos de **verde esmeralda** y **rojo carmesí**, que se difumina hacia los bordes.*
> * *En la parte superior, una **banda diagonal roja** que cruza de izquierda a derecha con opacidad del 20%, como marca de agua.*
> * *En la parte inferior, una **banda diagonal verde** que cruza de derecha a izquierda con opacidad del 20%.*
> * *Marca de agua diagonal repetida en gris muy tenue: **'CONFIDENCIAL · LYRA NEXUS'**.*
---
> **2. CABECERA (parte superior, 12% del alto):**
> * *Franja horizontal de color **rojo carmesí intenso** con el texto **'TOP SECRET // PASAIA LAB EYES ONLY'** en tipografía monoespaciada **blanca**, centrado.*
> * *Justo debajo, sobre un recuadro **blanco perla** con borde **verde esmeralda** de 2 mm, el **escudo hexagonal de la IKASTOLA URRUGNE** (una **montaña estilizada** con un **libro abierto** en la base, en **verde y blanco**) flanqueado por dos líneas horizontales **rojas**.*
---
> **3. TÍTULO Y REFERENCIA (parte superior, 10% del alto):**
> * *Título principal en tipografía **serif elegante y robusta**, en color **rojo carmesí**: **'CERTIFICACIÓN DE SISTEMA DE PROTECCIÓN'**.*
> * *Subtítulo en tipografía sans-serif más pequeña, en **verde esmeralda**: **'LYRA-SHIELD · Protección Integral para el Ecosistema LYRA IA'**.*
> * *Debajo, en tipografía monoespaciada pequeña, en **rojo carmesí**: **'Nº de Registro: PL-URRUGNE-2026-10-07'** y en **verde esmeralda**: **'Fecha: 7 de octubre de 2026 · Urrugne (Lapurdi), Euskadi'**.*
---
> **4. BLOQUE DE AUTORÍA (centro-superior, 12% del alto):**
> * *Un recuadro con **borde rojo carmesí** de 2 mm, sobre fondo **blanco perla**, con el texto:*
> * *En tipografía serif mediana, en **verde esmeralda**: **'OTORGADO A'***
> * *En tipografía serif grande, en **rojo carmesí** con efecto de relieve: **'IKASTOLA URRUGNE'***
> * *En tipografía serif grande, en **verde esmeralda** con efecto de relieve: **'LAS POCHOLITAS DE URRUGNE'***
> * *Debajo, en letra pequeña cursiva, en **rojo carmesí**: **'Comunidad Educativa · Tradición · Futuro'***
---
> **5. BLOQUE DE LAS 7 CAPAS DE PROTECCIÓN (centro, 30% del alto):**
> * *Un recuadro con **borde verde esmeralda** de 2 mm, sobre fondo **blanco perla**, con el título **'LAS 7 CAPAS DE PROTECCIÓN'** en tipografía sans-serif negrita **rojo carmesí**.*
> * *Siete tarjetas horizontales, cada una con un icono 3D y el texto, alternando los colores:*
> * *⚡ **CAPA 1 — ENERGÍA** (icono en **rojo**): Autonomía solar + baterías + SAI + generador + H₂*
> * *🌐 **CAPA 2 — RED** (icono en **verde**): Malla, fibra, 4G/5G, LoRa, satélite LEO*
> * *💾 **CAPA 3 — DATOS** (icono en **rojo**): RAID 5, NAS, cintas LTO, blockchain, IPFS*
> * *🔒 **CAPA 4 — FÍSICA** (icono en **verde**): RFID, videovigilancia, jaulas Faraday, bóveda*
> * *🛡️ **CAPA 5 — LÓGICA** (icono en **rojo**): Firewall IA, IDS/IPS, WAF, DLP, Zero Trust*
> * *👥 **CAPA 6 — HUMANA** (icono en **verde**): Formación, simulacros, CSIRT-LYRA*
> * *🔄 **CAPA 7 — RECUPERACIÓN** (icono en **rojo**): DRP, RTO < 1 min, RPO 0*
---
> **6. BLOQUE DE MÉTRICAS (10% del alto):**
> * *Cuatro recuadros alineados horizontalmente, cada uno con **borde de 1 mm** y fondo **blanco perla**:*
> * *'Disponibilidad: 99.99%' (texto en **verde esmeralda**)*
> * *'RTO: < 1 min' (texto en **rojo carmesí**)*
> * *'RPO: 0' (texto en **verde esmeralda**)*
> * *'Inversión: ~71.000 €' (texto en **rojo carmesí**)*
---
> **7. BLOQUE DE FIRMAS INSTITUCIONALES (18% del alto):**
> * *Dos recuadros alineados horizontalmente, con **borde de 2 mm** y fondo **blanco perla**, cada uno con un icono representativo y una línea para la firma digital:*
> * *🏫 **IKASTOLA URRUGNE** (borde **verde esmeralda**, icono de montaña y libro): Dirección Educativa*
> * *👧 **LAS POCHOLITAS DE URRUGNE** (borde **rojo carmesí**, icono de niñas y comunidad): Comunidad de Referencia*
> * *Debajo de los dos recuadros, en tipografía sans-serif cursiva, en **verde esmeralda**: **'En colaboración con PASAIA LAB · INTELIGENCIA LIBRE · FORJA · ACCIÓN CIVIL DIGITAL · DEEPSEEK IA'***
---
> **8. SELLOS DE SEGURIDAD (esquinas):**
> * *Esquina inferior izquierda: **sello de cera digital circular** en **rojo carmesí** con el logo de la **IKASTOLA URRUGNE** en el centro y el texto **'CERTIFICADO'** alrededor en **blanco**.*
> * *Esquina inferior derecha: **sello de cera digital circular** en **verde esmeralda** con el logo de **LAS POCHOLITAS DE URRUGNE** en el centro y el texto **'VERIFICADO'** alrededor en **blanco**.*
> * *Entre ambos sellos, un **código QR** en **rojo carmesí** que enlaza a la documentación del proyecto, con el texto **'VERIFICAR AUTENTICIDAD'** debajo en **verde esmeralda**.*
---
> **9. PIE DE PÁGINA (parte inferior, 8% del alto):**
> * *Franja horizontal de color **rojo carmesí** con el texto en tipografía sans-serif pequeña, en **blanco**: **'Ecosistema LYRA NEXUS · IKASTOLA URRUGNE · LAS POCHOLITAS DE URRUGNE'**.*
> * *Debajo, sobre fondo **verde esmeralda**, en letra muy pequeña cursiva, en **blanco**: **'Documento emitido bajo la clasificación TOP SECRET. Su uso no autorizado está prohibido.'***
---
> **10. ESTILO Y PALETA:**
> * *Paleta estricta: **rojo carmesí** (#C41E3A), **verde esmeralda** (#009A44), **blanco perla** (#F5F5F5).*
> * *Sin otros colores. Los contrastes se logran mediante el uso de las tres gamas y sus variaciones de opacidad.*
> * *Iluminación plana y uniforme, con un sutil **foco cenital** que resalta el bloque central.*
> * *Tipografías: serif para títulos y nombres, sans-serif para textos y listas, monoespaciada para referencias.*
> * *Acabado: documento oficial de alta seguridad, con textura de papel de seguridad y sellos de cera digital.*
> * *El conjunto debe transmitir **solemnidad institucional**, **identidad educativa vasca** y **tecnología moderna**."*
---
## 📌 Variaciones Opcionales
| Si quieres... | Añade al prompt... |
| :--- | :--- |
| **Un formato horizontal para cabecera** | *"Formato horizontal 16:9, con los dos sellos a los lados y el texto central en una columna."* |
| **Un estilo más minimalista** | *"Diseño plano vectorial, sin texturas ni sellos de cera, solo bordes de colores y tipografía limpia."* |
| **Más protagonismo de Las Pocholitas** | *"El recuadro de Las Pocholitas de Urrugne ocupa el doble de ancho que el de la Ikastola."* |
| **Sin texto en el cuerpo** | *"Genera solo la estructura visual (recuadros, bordes, sellos, escudo) sin texto, para añadirlo después."* |
| **Un tono más juvenil y educativo** | *"Añade elementos gráficos de cuadernos, lápices y libros en los márgenes, en los tres colores."* |
---
## 💡 Consejo Práctico
Los generadores de imágenes suelen fallar con **textos largos y nombres propios**. Mi recomendación:
1. **Genera la imagen sin texto** (solo la estructura: recuadros, bordes, sellos, escudo, bandas de color y fondo).
2. **Añade los textos después** con un editor (Canva, Photoshop, GIMP), usando:
- **Tipografía serif** para títulos y nombres institucionales.
- **Sans-serif** para textos de listas y métricas.
- **Monoespaciada** para referencias y códigos.
3. **Respeta la paleta estricta**: rojo carmesí, verde esmeralda y blanco perla. No añadas otros colores.
Así garantizarás que **'IKASTOLA URRUGNE'**, **'LAS POCHOLITAS DE URRUGNE'**, las 7 capas y las métricas aparezcan exactamente como los quieres.
---
## 🏛️ Certificación Simbólica
**Nº de Registro:** PL-URRUGNE-2026-10-07
**Fecha:** 7 de octubre de 2026 · **Lugar:** Urrugne (Lapurdi), Euskadi
Se certifica que este **Certificado Visual de LYRA-SHIELD** ha sido diseñado exclusivamente para la **IKASTOLA URRUGNE** y **LAS POCHOLITAS DE URRUGNE**, en el marco del ecosistema **LYRA NEXUS**, con la paleta institucional de **rojo, verde y blanco**.
**Firmado:**
- **José Agustín Fontán Varela** — CEO de PASAIA LAB
- **Ikastola Urrugne** — Dirección Educativa
- **Las Pocholitas de Urrugne** — Comunidad de Referencia
- **DeepSeek IA** — Asistencia Técnica y Diseño Visual
# 🛡️ LYRA-SHIELD MESH — Intranets de Emergencia sin Energía en Puntos de Acceso
**Clasificación:** TOP SECRET // PASAIA LAB EYES ONLY
**Referencia:** PL-LYRA-MESH-2026-10-07
**Módulo:** Resiliencia de red en escenario de "Internet operativo, último kilómetro caído"
---
## 🎯 1. El Escenario: "Internet Vivo, Acceso Muerto"
La situación que describes es un escenario de **fallo asimétrico**:
```
┌─────────────────────────────────────────────────────────────────────┐
│ ESCENARIO DE FALLO ASIMÉTRICO │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ✅ BACKBONE INTERNET ❌ ÚLTIMO KILÓMETRO │
│ ───────────────────── ───────────────────── │
│ • Fibra óptica troncal • Routers domésticos apagados │
│ • Centros de datos • Switches de barrio sin luz │
│ • Servidores DNS raíz • Antenas 4G/5G sin energía │
│ • Satélites en órbita • ONTs de fibra sin batería │
│ │
│ El mundo sigue "online", Pero tú no puedes alcanzarlo │
│ pero tú estás aislado. porque tu puerta está cerrada. │
│ │
└─────────────────────────────────────────────────────────────────────┘
```
**La clave:** No hay que reconstruir Internet. Hay que **crear una red paralela local** que funcione con los recursos mínimos disponibles (móviles, powerbanks, radios, cables) y que se **reconecte automáticamente** al backbone cuando algún punto recupere energía.
---
## 🏗️ 2. Arquitectura LYRA-SHIELD MESH
```
┌──────────────────────────────────────────────────────────────────────────┐
│ LYRA-SHIELD MESH · 5 CAPAS │
│ Intranet de emergencia sobre infraestructura caída │
└──────────────────────────────────────────────────────────────────────────┘
│
┌──────────────────────────────┼──────────────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ CAPA FÍSICA│ │ CAPA ENLACE│ │ CAPA RED │
│ Radios │ │ Protocolos │ │ Enrutado │
│ LoRa, BLE, │ │ ESP-NOW, │ │ DTN Bundle │
│ WiFi Direct│ │ AX.25, BLE │ │ Protocol │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└────────────────────────────┼────────────────────────────┘
▼
┌───────────────────────┐
│ NÚCLEO LYRA-MESH │
│ Almacenar y reenviar │
│ Store-and-Forward │
└───────────┬───────────┘
│
┌──────────────────────────────┼──────────────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ CAPA APPS │ │ CAPA PUENTE │ │ CAPA ENERGÍA│
│ Mensajería │ │ Reconexión │ │ Powerbanks │
│ Fichas │ │ automática │ │ Solares │
│ Emergencia │ │ al backbone│ │ Coche │
└─────────────┘ └─────────────┘ └─────────────┘
```
---
## 📡 3. Tecnologías de Enlace por Prioridad
| Prioridad | Tecnología | Alcance | Consumo | Requisito |
| :---: | :--- | :---: | :---: | :--- |
| **1** | **LoRa / LoRaWAN** | 2-15 km | ~100 mW | Módulo LoRa (SX1276) |
| **2** | **WiFi Direct / ESP-NOW** | 100-300 m | ~200 mW | ESP32 o móvil Android |
| **3** | **Bluetooth Mesh** | 10-50 m | ~10 mW | Móvil con BLE |
| **4** | **Packet Radio (AX.25)** | 5-50 km | ~5 W | Radio VHF/UHF + TNC |
| **5** | **Sneakernet (USB)** | Variable | 0 W | Persona que camina |
| **6** | **Satélite LEO** | Global | ~1 W | Terminal Starlink |
**Regla de oro:** Usar la tecnología de **menor consumo** que cubra la distancia necesaria.
---
## 🔄 4. Protocolo DTN — Store-and-Forward
El corazón de LYRA-SHIELD MESH es el **Bundle Protocol (RFC 5050)**, que permite que los datos viajen por **saltos intermitentes** sin necesidad de una conexión extremo a extremo.
```
Nodo A (Urrugne) Nodo B (Pasaia) Nodo C (Bergara)
│ │ │
│ 1. A quiere enviar a C │ │
│ pero no hay enlace │ │
│ directo. │ │
│ │ │
├──── Bundle ──────────────────►│ │
│ (almacenado en B │ │
│ hasta que haya │ │
│ enlace con C) │ │
│ │ │
│ ├──── Bundle ──────────────────►│
│ │ (entregado a C │
│ │ cuando se recupera │
│ │ el enlace) │
│ │ │
```
**Ventajas:**
- No requiere conexión permanente
- Tolera latencias de horas o días
- Usa cualquier enlace disponible (radio, USB, satélite)
- Funciona con energía mínima (solo cuando hay enlace)
---
## 🐍 5. Código Python: Simulador LYRA-SHIELD MESH
```python
"""
lyra_mesh.py — PASAIA LAB / LYRA-SHIELD MESH
Simulador de intranet de emergencia con store-and-forward (DTN).
"""
import hashlib
import heapq
import json
import random
import time
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, List, Optional, Set, Tuple
# ================================================================
# 1. TIPOS DE ENLACE
# ================================================================
class TipoEnlace(Enum):
LORA = "LORA" # 2-15 km, 100 mW
WIFI_DIRECT = "WIFI_DIRECT" # 100-300 m, 200 mW
BLUETOOTH_MESH = "BLE" # 10-50 m, 10 mW
PACKET_RADIO = "AX25" # 5-50 km, 5 W
SNEAKERNET = "USB" # Variable, 0 W
SATELITE = "LEO" # Global, 1 W
CONSUMO_ENLACE_MW = {
TipoEnlace.LORA: 100,
TipoEnlace.WIFI_DIRECT: 200,
TipoEnlace.BLUETOOTH_MESH: 10,
TipoEnlace.PACKET_RADIO: 5000,
TipoEnlace.SNEAKERNET: 0,
TipoEnlace.SATELITE: 1000,
}
ALCANCE_ENLACE_KM = {
TipoEnlace.LORA: 15.0,
TipoEnlace.WIFI_DIRECT: 0.3,
TipoEnlace.BLUETOOTH_MESH: 0.05,
TipoEnlace.PACKET_RADIO: 50.0,
TipoEnlace.SNEAKERNET: float("inf"),
TipoEnlace.SATELITE: float("inf"),
}
# ================================================================
# 2. BUNDLE (PAQUETE DTN)
# ================================================================
@dataclass
class Bundle:
id_bundle: str
origen: str
destino: str
payload: bytes
prioridad: int = 3 # 1=crítico, 2=alto, 3=normal, 4=bajo
ttl_s: float = 7 * 86400 # 7 días por defecto
creado: float = field(default_factory=time.time)
saltos: List[str] = field(default_factory=list)
entregado: bool = False
def __post_init__(self):
if not self.id_bundle:
self.id_bundle = hashlib.sha256(
f"{self.origen}{self.destino}{self.creado}".encode()
).hexdigest()[:16]
def expirado(self) -> bool:
return (time.time() - self.creado) > self.ttl_s
def tamaño_bytes(self) -> int:
return len(self.payload)
# ================================================================
# 3. NODO MESH
# ================================================================
class NodoMesh:
"""
Un nodo de la red de emergencia. Puede ser un móvil, una Raspberry Pi,
un portátil o una radio. Tiene una batería limitada y un conjunto
de enlaces disponibles.
"""
def __init__(self, id_nodo: str, nombre: str,
bateria_mwh: float = 20000.0,
ubicacion: Tuple[float, float] = (0.0, 0.0)):
self.id = id_nodo
self.nombre = nombre
self.bateria_mwh = bateria_mwh
self.bateria_inicial = bateria_mwh
self.ubicacion = ubicacion # (lat, lon)
self.enlaces: Dict[str, TipoEnlace] = {}
self.bundles_almacenados: List[Bundle] = []
self.bundles_entregados: List[Bundle] = []
self.puente_internet = False # Si tiene enlace al backbone
self.activo = True
self.historial: List[dict] = []
# ------------------------------------------------------------
# ENLACES
# ------------------------------------------------------------
def añadir_enlace(self, otro_id: str, tipo: TipoEnlace) -> None:
self.enlaces[otro_id] = tipo
def eliminar_enlace(self, otro_id: str) -> None:
self.enlaces.pop(otro_id, None)
def enlaces_activos(self) -> Dict[str, TipoEnlace]:
return {k: v for k, v in self.enlaces.items() if self.activo}
# ------------------------------------------------------------
# ALMACENAMIENTO
# ------------------------------------------------------------
def almacenar(self, bundle: Bundle) -> bool:
if bundle.expirado():
return False
if any(b.id_bundle == bundle.id_bundle
for b in self.bundles_almacenados):
return False
self.bundles_almacenados.append(bundle)
return True
def entregar(self, bundle: Bundle) -> None:
bundle.entregado = True
self.bundles_entregados.append(bundle)
self.bundles_almacenados = [
b for b in self.bundles_almacenados
if b.id_bundle != bundle.id_bundle
]
# ------------------------------------------------------------
# ENERGÍA
# ------------------------------------------------------------
def consumir_energia(self, mwh: float) -> bool:
if self.bateria_mwh < mwh:
self.activo = False
return False
self.bateria_mwh -= mwh
return True
def cargar_energia(self, mwh: float) -> None:
self.bateria_mwh = min(
self.bateria_inicial,
self.bateria_mwh + mwh
)
if self.bateria_mwh > 0:
self.activo = True
def soc(self) -> float:
return (self.bateria_mwh / self.bateria_inicial) * 100.0
# ------------------------------------------------------------
# TRANSMISIÓN
# ------------------------------------------------------------
def transmitir(self, otro: "NodoMesh", bundle: Bundle) -> bool:
"""Transmite un bundle a otro nodo usando el enlace disponible."""
if otro.id not in self.enlaces or not self.activo or not otro.activo:
return False
tipo = self.enlaces[otro.id]
consumo = CONSUMO_ENLACE_MW[tipo] * 0.001 # mW → mWh por segundo
duracion_s = max(1.0, bundle.tamaño_bytes() / 1024.0) # 1 KB/s
if not self.consumir_energia(consumo * duracion_s):
return False
# Registrar salto
if otro.id not in bundle.saltos:
bundle.saltos.append(otro.id)
return otro.almacenar(bundle)
# ------------------------------------------------------------
# RESILIENCIA
# ------------------------------------------------------------
def auto_reparar(self) -> dict:
"""Aplica reglas de resiliencia para mantener la operatividad."""
acciones = []
# 1) Si SoC < 20%, reducir enlaces a los imprescindibles
if self.soc() < 20.0:
enlaces_costosos = [
k for k, v in self.enlaces.items()
if CONSUMO_ENLACE_MW[v] > 500
]
for k in enlaces_costosos:
self.eliminar_enlace(k)
acciones.append(f"Enlace {k} desactivado por bajo SoC")
# 2) Si hay bundles expirados, eliminarlos
expirados = [b for b in self.bundles_almacenados if b.expirado()]
for b in expirados:
self.bundles_almacenados.remove(b)
acciones.append(f"Bundle {b.id_bundle} expirado y eliminado")
# 3) Si SoC < 5%, entrar en modo "solo baliza"
if self.soc() < 5.0:
self.activo = False
acciones.append("Nodo en modo baliza (solo escucha)")
return {
"nodo": self.id,
"soc": round(self.soc(), 1),
"acciones": acciones,
"bundles_almacenados": len(self.bundles_almacenados),
}
def resumen(self) -> dict:
return {
"id": self.id,
"nombre": self.nombre,
"activo": self.activo,
"soc": round(self.soc(), 1),
"enlaces": len(self.enlaces),
"bundles_almacenados": len(self.bundles_almacenados),
"bundles_entregados": len(self.bundles_entregados),
"puente_internet": self.puente_internet,
}
# ================================================================
# 4. RED MESH COMPLETA
# ================================================================
class RedMesh:
"""
Red completa de nodos LYRA-SHIELD MESH.
Gestiona el enrutamiento DTN, los puentes a Internet y la resiliencia.
"""
def __init__(self, nombre: str = "LYRA-MESH-URRUGNE"):
self.nombre = nombre
self.nodos: Dict[str, NodoMesh] = {}
self.tabla_rutas: Dict[str, Dict[str, str]] = {} # origen → destino → siguiente salto
self.registro_global: List[dict] = []
# ------------------------------------------------------------
# GESTIÓN DE NODOS
# ------------------------------------------------------------
def añadir_nodo(self, nodo: NodoMesh) -> None:
self.nodos[nodo.id] = nodo
def eliminar_nodo(self, id_nodo: str) -> None:
self.nodos.pop(id_nodo, None)
# ------------------------------------------------------------
# ENRUTAMIENTO
# ------------------------------------------------------------
def calcular_rutas(self) -> None:
"""Calcula rutas con Dijkstra adaptado a DTN (coste = consumo)."""
self.tabla_rutas = {}
for origen_id in self.nodos:
origen = self.nodos[origen_id]
if not origen.activo:
continue
# Dijkstra
distancias: Dict[str, float] = {origen_id: 0.0}
anteriores: Dict[str, Optional[str]] = {origen_id: None}
cola: List[Tuple[float, str]] = [(0.0, origen_id)]
visitados: Set[str] = set()
while cola:
dist, actual_id = heapq.heappop(cola)
if actual_id in visitados:
continue
visitados.add(actual_id)
actual = self.nodos.get(actual_id)
if not actual or not actual.activo:
continue
for vecino_id, tipo in actual.enlaces_activos().items():
if vecino_id in visitados:
continue
vecino = self.nodos.get(vecino_id)
if not vecino or not vecino.activo:
continue
coste_enlace = CONSUMO_ENLACE_MW[tipo] / 1000.0
nueva_dist = dist + coste_enlace
if nueva_dist < distancias.get(vecino_id, float("inf")):
distancias[vecino_id] = nueva_dist
anteriores[vecino_id] = actual_id
heapq.heappush(cola, (nueva_dist, vecino_id))
# Reconstruir rutas
self.tabla_rutas[origen_id] = {}
for destino_id in self.nodos:
if destino_id == origen_id:
continue
if destino_id not in anteriores:
continue
# Reconstruir camino
camino = []
actual = destino_id
while actual is not None:
camino.append(actual)
actual = anteriores[actual]
camino.reverse()
if len(camino) >= 2:
self.tabla_rutas[origen_id][destino_id] = camino[1]
# ------------------------------------------------------------
# ENVÍO DE BUNDLES
# ------------------------------------------------------------
def enviar(self, origen_id: str, destino_id: str,
payload: bytes, prioridad: int = 3) -> Optional[Bundle]:
"""Envía un bundle desde un origen a un destino."""
if origen_id not in self.nodos or destino_id not in self.nodos:
return None
origen = self.nodos[origen_id]
bundle = Bundle(
id_bundle="",
origen=origen_id,
destino=destino_id,
payload=payload,
prioridad=prioridad,
)
bundle.saltos.append(origen_id)
# Si es para sí mismo, entregar directamente
if origen_id == destino_id:
origen.entregar(bundle)
return bundle
# Almacenar en origen
if not origen.almacenar(bundle):
return None
# Intentar enviar por la tabla de rutas
self.calcular_rutas()
siguiente = self.tabla_rutas.get(origen_id, {}).get(destino_id)
if siguiente:
vecino = self.nodos[siguiente]
origen.transmitir(vecino, bundle)
return bundle
# ------------------------------------------------------------
# REENVÍO AUTOMÁTICO (STORE-AND-FORWARD)
# ------------------------------------------------------------
def reenviar_todos(self) -> int:
"""Cada nodo intenta reenviar sus bundles almacenados."""
self.calcular_rutas()
reenviados = 0
for nodo in self.nodos.values():
if not nodo.activo:
continue
for bundle in list(nodo.bundles_almacenados):
if bundle.destino == nodo.id:
nodo.entregar(bundle)
reenviados += 1
continue
siguiente = self.tabla_rutas.get(nodo.id, {}).get(bundle.destino)
if siguiente:
vecino = self.nodos[siguiente]
if nodo.transmitir(vecino, bundle):
nodo.bundles_almacenados.remove(bundle)
reenviados += 1
return reenviados
# ------------------------------------------------------------
# PUENTES A INTERNET
# ------------------------------------------------------------
def activar_puente(self, id_nodo: str) -> bool:
"""Marca un nodo como puente a Internet (porque recuperó energía)."""
nodo = self.nodos.get(id_nodo)
if not nodo:
return False
nodo.puente_internet = True
self.registro_global.append({
"evento": "PUENTE_ACTIVADO",
"nodo": id_nodo,
"timestamp": time.time(),
})
return True
def desactivar_puente(self, id_nodo: str) -> bool:
nodo = self.nodos.get(id_nodo)
if not nodo:
return False
nodo.puente_internet = False
self.registro_global.append({
"evento": "PUENTE_DESACTIVADO",
"nodo": id_nodo,
"timestamp": time.time(),
})
return True
def puentes_activos(self) -> List[str]:
return [n.id for n in self.nodos.values() if n.puente_internet]
# ------------------------------------------------------------
# CICLO DE RESILIENCIA
# ------------------------------------------------------------
def ciclo_resiliencia(self) -> dict:
"""Ejecuta un ciclo completo de auto-reparación y reenvío."""
resumen_nodos = []
for nodo in self.nodos.values():
r = nodo.auto_reparar()
resumen_nodos.append(r)
reenviados = self.reenviar_todos()
return {
"timestamp": time.time(),
"nodos": resumen_nodos,
"bundles_reenviados": reenviados,
"puentes_activos": self.puentes_activos(),
}
# ------------------------------------------------------------
# RESUMEN
# ------------------------------------------------------------
def resumen(self) -> dict:
activos = sum(1 for n in self.nodos.values() if n.activo)
almacenados = sum(len(n.bundles_almacenados)
for n in self.nodos.values())
entregados = sum(len(n.bundles_entregados)
for n in self.nodos.values())
return {
"red": self.nombre,
"nodos_totales": len(self.nodos),
"nodos_activos": activos,
"bundles_almacenados": almacenados,
"bundles_entregados": entregados,
"puentes_internet": len(self.puentes_activos()),
"soc_medio": round(
sum(n.soc() for n in self.nodos.values()) / len(self.nodos), 1
) if self.nodos else 0.0,
}
# ================================================================
# 5. DEMOSTRACIÓN
# ================================================================
def demo():
print("=" * 78)
print(" LYRA-SHIELD MESH · INTRANET DE EMERGENCIA")
print(" PASAIA LAB · IKASTOLA URRUGNE · LAS POCHOLITAS DE URRUGNE")
print("=" * 78)
red = RedMesh("LYRA-MESH-URRUGNE")
# 1) Crear nodos (móviles, Raspberry Pi, radios)
print("\n[1] Desplegando nodos de la red...")
nodos_data = [
("n001", "Ikastola Urrugne", 15000, (43.38, -1.69), True),
("n002", "Casa Pocholita 1", 8000, (43.39, -1.70), False),
("n003", "Casa Pocholita 2", 6000, (43.37, -1.68), False),
("n004", "Pasaia Lab", 20000, (43.32, -1.93), True),
("n005", "Radio Aficionado", 12000, (43.36, -1.72), False),
("n006", "Bergara Lab", 10000, (43.12, -2.41), True),
("n007", "Móvil Vecinal", 4000, (43.38, -1.68), False),
]
for id_n, nombre, bat, ubi, puente in nodos_data:
nodo = NodoMesh(id_n, nombre, bateria_mwh=bat, ubicacion=ubi)
nodo.puente_internet = puente
red.añadir_nodo(nodo)
print(f" · {id_n} {nombre:24} SoC=100% "
f"{'(puente Internet)' if puente else ''}")
# 2) Establecer enlaces
print("\n[2] Estableciendo enlaces entre nodos...")
enlaces = [
("n001", "n002", TipoEnlace.WIFI_DIRECT),
("n001", "n003", TipoEnlace.WIFI_DIRECT),
("n001", "n005", TipoEnlace.LORA),
("n002", "n007", TipoEnlace.BLUETOOTH_MESH),
("n003", "n007", TipoEnlace.BLUETOOTH_MESH),
("n005", "n004", TipoEnlace.PACKET_RADIO),
("n005", "n006", TipoEnlace.LORA),
("n004", "n006", TipoEnlace.SATELITE),
]
for a, b, tipo in enlaces:
red.nodos[a].añadir_enlace(b, tipo)
red.nodos[b].añadir_enlace(a, tipo)
print(f" · {a} ↔ {b} ({tipo.value})")
# 3) Calcular rutas
print("\n[3] Calculando rutas con Dijkstra...")
red.calcular_rutas()
for origen in ["n002", "n003", "n007"]:
ruta = red.tabla_rutas.get(origen, {})
print(f" · {origen} → rutas calculadas: {len(ruta)}")
# 4) Enviar bundles
print("\n[4] Enviando bundles de emergencia...")
mensajes = [
("n002", "n001", b"SOLICITUD: medicina urgente", 1),
("n003", "n004", b"REPORTE: 5 familias sin luz", 2),
("n007", "n006", b"AVISO: anciano necesita insulina", 1),
("n002", "n006", b"FICHA: censo de afectados", 3),
("n003", "n001", b"MENSAJE: punto de encuentro", 2),
]
for origen, destino, payload, pri in mensajes:
b = red.enviar(origen, destino, payload, pri)
if b:
print(f" · {origen} → {destino} (pri={pri}): "
f"'{payload.decode()}'")
# 5) Ciclo de resiliencia
print("\n[5] Ejecutando ciclos de resiliencia...")
for ciclo in range(3):
r = red.ciclo_resiliencia()
print(f"\n [Ciclo {ciclo + 1}] "
f"Reenviados: {r['bundles_reenviados']} · "
f"Puentes: {len(r['puentes_activos'])}")
# 6) Simular corte de energía en varios nodos
print("\n[6] Simulando corte de energía en nodos...")
red.nodos["n002"].consumir_energia(7000) # SoC ~12%
red.nodos["n003"].consumir_energia(5500) # SoC ~8%
red.nodos["n007"].consumir_energia(3900) # SoC ~2%
print(" · n002, n003, n007 con batería crítica")
# 7) Ciclo de resiliencia tras el corte
print("\n[7] Ciclo de resiliencia tras el corte...")
r = red.ciclo_resiliencia()
for n in r["nodos"]:
if n["acciones"]:
print(f" · {n['nodo']}: SoC={n['soc']}% "
f"→ {', '.join(n['acciones'])}")
# 8) Recuperar energía en un nodo
print("\n[8] Recuperando energía en n002 (powerbank)...")
red.nodos["n002"].cargar_energia(5000)
print(f" · n002 SoC: {red.nodos['n002'].soc():.1f}%")
# 9) Resumen final
print("\n[9] RESUMEN FINAL DE LA RED")
print("-" * 78)
print(json.dumps(red.resumen(), indent=2, ensure_ascii=False))
print("\n" + "=" * 78)
print(" SIMULACIÓN COMPLETADA · LYRA-SHIELD MESH")
print("=" * 78)
if __name__ == "__main__":
demo()
```
---
## 🔋 6. Estrategia de Energía Mínima
Cuando no hay recursos energéticos alternativos, cada **milivatio cuenta**. La estrategia de LYRA-SHIELD MESH es:
| Nivel | SoC | Estrategia |
| :---: | :---: | :--- |
| **VERDE** | > 60% | Todos los enlaces activos, reenvío normal |
| **AMARILLO** | 30-60% | Desactivar enlaces costosos (AX.25, satélite) |
| **NARANJA** | 10-30% | Solo LoRa y BLE, reenvío cada 5 min |
| **ROJO** | 5-10% | Solo baliza (escucha), no transmite |
| **NEGRO** | < 5% | Nodo apagado, los bundles esperan en otros nodos |
**Truco clave:** Un nodo con poca batería **no necesita estar siempre activo**. Puede despertar cada cierto tiempo (duty cycle), transmitir lo que tenga y volver a dormir. Esto multiplica por 10-100 la autonomía.
---
## 🌐 7. Puente a Internet: La Reconexión Automática
Cuando **cualquier nodo** recupera energía y detecta que su router/antena vuelve a funcionar:
1. **Detección automática**: Ping al gateway cada 30 segundos.
2. **Activación de puente**: El nodo se marca como `puente_internet = True`.
3. **Drenaje de bundles**: Todos los bundles acumulados en la red se enrutan hacia ese nodo.
4. **Sincronización con el backbone**: Los mensajes se entregan a sus destinos en Internet.
5. **Registro en LYRA-CHAIN**: Cada bundle entregado se registra on-chain.
Esto convierte el sistema en **auto-sanador**: no importa cuántos nodos caigan, mientras uno recupere energía, toda la red se reconecta.
---
## 🎨 8. Prompt para la Imagen: "LYRA-SHIELD MESH en Acción"
> *"Infografía técnica de estilo **mapa de red de emergencia en tiempo real**, formato horizontal panorámico (16:9), resolución 8K, que representa el sistema **LYRA-SHIELD MESH** operando en un escenario de 'Internet vivo, último kilómetro caído'. Paleta estricta: **rojo carmesí, verde esmeralda y blanco perla**.*
> **1. COMPOSICIÓN GENERAL:**
> * *Un **mapa estilizado de Lapurdi y Gipuzkoa** como fondo, con las localidades de **Urrugne** (arriba) y **Pasaia** (abajo) marcadas en **verde esmeralda**.*
> * *En el centro, un **escudo hexagonal** con el ojo de LYRA, rodeado por **7 anillos concéntricos** en rojo y verde.*
> * *Alrededor del escudo, **7 nodos** conectados por líneas de diferentes colores según el tipo de enlace.*
> **2. LOS NODOS (con etiquetas):**
> * *🏫 **NODO IKASTOLA URRUGNE** (rojo): icono de montaña y libro, con la etiqueta **'SoC: 85% · Puente Internet'**.*
> * *🏠 **NODO CASA POCHOLITA 1** (verde): icono de casa, con **'SoC: 42% · WiFi Direct'**.*
> * *🏠 **NODO CASA POCHOLITA 2** (verde): icono de casa, con **'SoC: 28% · BLE'**.*
> * *⚓ **NODO PASAIA LAB** (rojo): icono de ancla, con **'SoC: 92% · Puente Internet'**.*
> * *📻 **NODO RADIO AFICIONADO** (verde): icono de antena, con **'SoC: 60% · Packet Radio'**.*
> * *🔬 **NODO BERGARA LAB** (rojo): icono de laboratorio, con **'SoC: 78% · Lora'**.*
> * *📱 **NODO MÓVIL VECINAL** (verde): icono de móvil, con **'SoC: 15% · Solo baliza'**.*
> **3. LOS ENLACES (líneas de colores):**
> * *Línea **verde esmeralda gruesa**: enlace **LoRa** (2-15 km, 100 mW).*
> * *Línea **verde esmeralda fina**: enlace **WiFi Direct** (100-300 m, 200 mW).*
> * *Línea **verde esmeralda punteada**: enlace **BLE** (10-50 m, 10 mW).*
> * *Línea **roja gruesa**: enlace **Packet Radio** (5-50 km, 5 W).*
> * *Línea **roja punteada**: enlace **Satélite LEO** (global, 1 W).*
> **4. LOS BUNDLES (paquetes DTN):**
> * *Pequeños **sobres de luz blanca** que viajan por las líneas, con etiquetas: **'MEDICINA URGENTE (pri=1)'**, **'CENSO AFECTADOS (pri=3)'**, **'PUNTO ENCUENTRO (pri=2)'**.*
> * *Cada sobre tiene un pequeño **candado verde** que indica que está cifrado y verificado.*
> **5. EL ESCUDO CENTRAL (con las 7 capas):**
> * *Anillo 1 (exterior) — **ENERGÍA**: iconos de powerbank, panel solar, batería de coche, pila.*
> * *Anillo 2 — **RED**: iconos de LoRa, WiFi, BLE, AX.25, satélite.*
> * *Anillo 3 — **DATOS**: iconos de bundle, DTN, blockchain.*
> * *Anillo 4 — **FÍSICA**: iconos de candado, jaula Faraday.*
> * *Anillo 5 — **LÓGICA**: iconos de firewall, cifrado.*
> * *Anillo 6 — **HUMANA**: iconos de personas, formación.*
> * *Anillo 7 (interior) — **RECUPERACIÓN**: iconos de reloj, RTO, RPO.*
> * *En el centro, el **ojo digital de LYRA** con iris de circuitos en verde y pupila roja.*
> **6. PANEL DE CONTROL (esquina inferior derecha):**
> * *Dashboard holográfico que muestra:*
> * ***'Nodos activos: 6/7'**.*
> * ***'Bundles almacenados: 12'**.*
> * ***'Bundles entregados: 8'**.*
> * ***'Puentes Internet: 3'**.*
> * ***'SoC medio: 57%'**.*
> * *Gráfico de barras que compara **'Sin LYRA-SHIELD: 0% conectividad'** vs **'Con LYRA-SHIELD: 85% conectividad local'**.*
> **7. TÍTULO Y TEXTOS:**
> * *En la parte superior, título en tipografía serif 3D **roja con reflejos blancos**: **'LYRA-SHIELD MESH'**, con subtítulo en sans-serif **verde esmeralda**: **'Intranet de Emergencia · Store-and-Forward · DTN'**.*
> * *En la parte inferior, sobre franja **roja**, los logos en **blanco**: **'PASAIA LAB · IKASTOLA URRUGNE · LAS POCHOLITAS DE URRUGNE'**.*
> * *En la esquina inferior izquierda, sello circular **verde** con el texto **'PL-LYRA-MESH-2026-10-07'**.*
> **8. ESTILO Y PALETA:**
> * *Paleta estricta: **rojo carmesí (#C41E3A)**, **verde esmeralda (#009A44)**, **blanco perla (#F5F5F5)**.*
> * *Sin otros colores. Los contrastes se logran con opacidades y variaciones de los tres tonos.*
> * *Iluminación: los nodos emiten un **resplandor verde o rojo** según su estado.*
> * *Estilo: infografía técnica para revista de tecnología (Wired, MIT Tech Review) combinada con mapa de operaciones de emergencia.*
> * *Acabado: render 3D cinematográfico con hologramas y transparencias."*
---
## 🎨 9. Prompt para el Certificado Visual
> *"Certificado oficial de estilo **documento de inteligencia clasificado con sello institucional**, formato vertical (9:16), resolución 8K, que acredita el sistema **LYRA-SHIELD MESH — Intranet de Emergencia sin Energía en Puntos de Acceso**, otorgado exclusivamente a la **IKASTOLA URRUGNE** y a **LAS POCHOLITAS DE URRUGNE**. Paleta estricta: **rojo carmesí, verde esmeralda y blanco perla**.*
> **CABECERA (12%):**
> * *Franja **roja carmesí** con el texto **'TOP SECRET // PASAIA LAB EYES ONLY'** en monoespaciada **blanca**.*
> * *Escudo hexagonal de la **Ikastola Urrugne** (montaña y libro) en **verde y blanco**, flanqueado por líneas **rojas**.*
> **TÍTULO Y REFERENCIA (10%):**
> * *Título en serif **rojo carmesí**: **'CERTIFICACIÓN DE SISTEMA DE RESILIENCIA DE RED'**.*
> * *Subtítulo en sans-serif **verde esmeralda**: **'LYRA-SHIELD MESH · Intranet de Emergencia con Store-and-Forward'**.*
> * *Referencia en monoespaciada **roja**: **'PL-LYRA-MESH-2026-10-07'**.*
> * *Fecha en monoespaciada **verde**: **'7 de octubre de 2026 · Urrugne (Lapurdi), Euskadi'**.*
> **BLOQUE DE AUTORÍA (12%):**
> * *Recuadro con borde **rojo**, fondo **blanco perla**:*
> * *'OTORGADO A' en **verde***
> * ***'IKASTOLA URRUGNE'** en serif grande **rojo***
> * ***'LAS POCHOLITAS DE URRUGNE'** en serif grande **verde***
> * *'Comunidad Educativa · Tradición · Futuro' en cursiva **roja***
> **BLOQUE DE COMPONENTES CERTIFICADOS (30%):**
> * *Recuadro con borde **verde**, fondo **blanco perla**, con el título **'COMPONENTES CERTIFICADOS'** en sans-serif **rojo**.*
> * *Siete tarjetas con iconos alternando **rojo** y **verde**:*
> * *📡 **Enlaces**: LoRa, WiFi Direct, BLE, AX.25, Satélite LEO*
> * *📦 **DTN Bundle Protocol**: Store-and-Forward con TTL de 7 días*
> * *🔋 **Energía mínima**: Duty cycle, SoC adaptativo, modo baliza*
> * *🗺️ **Enrutado**: Dijkstra con coste por consumo energético*
> * *🌐 **Puente Internet**: Reconexión automática al backbone*
> * *🔒 **Cifrado**: Integración con LYRA-ID y LYRA-CHAIN*
> * *🔄 **Resiliencia**: Auto-reparación y recuperación ante cortes*
> **BLOQUE DE MÉTRICAS (10%):**
> * *Cuatro recuadros con borde **1 mm**:*
> * *'Conectividad local: 85%' (**verde**)*
> * *'Alcance máximo: 50 km' (**rojo**)*
> * *'Consumo mínimo: 10 mW' (**verde**)*
> * *'TTL bundles: 7 días' (**rojo**)*
> **BLOQUE DE FIRMAS (18%):**
> * *Dos recuadros:*
> * *🏫 **IKASTOLA URRUGNE** (borde **verde**): Dirección Educativa*
> * *👧 **LAS POCHOLITAS DE URRUGNE** (borde **rojo**): Comunidad de Referencia*
> * *Debajo, en cursiva **verde**: **'En colaboración con PASAIA LAB · INTELIGENCIA LIBRE · FORJA · ACCIÓN CIVIL DIGITAL · DEEPSEEK IA'***
> **SELLOS:**
> * *Sello de cera digital **rojo** con el logo de **Ikastola Urrugne**.*
> * *Sello de cera digital **verde** con el logo de **Las Pocholitas de Urrugne**.*
> * *Código QR **rojo** con **'VERIFICAR AUTENTICIDAD'** en **verde**.*
> * *Marca de agua diagonal **'CONFIDENCIAL · LYRA NEXUS'** en gris muy tenue.*
> **PIE DE PÁGINA (8%):**
> * *Franja **roja** con texto **blanco**: **'Ecosistema LYRA NEXUS · IKASTOLA URRUGNE · LAS POCHOLITAS DE URRUGNE'**.*
> * *Franja **verde** con texto **blanco** en cursiva: **'Documento emitido bajo la clasificación TOP SECRET.'***
> **ESTILO:**
> * *Paleta estricta: **rojo carmesí (#C41E3A)**, **verde esmeralda (#009A44)**, **blanco perla (#F5F5F5)**.*
> * *Sin otros colores. Contrastes mediante opacidad y variaciones.*
> * *Tipografías: serif para títulos y nombres, sans-serif para listas, monoespaciada para referencias.*
> * *Acabado: documento oficial de alta seguridad con textura de papel de seguridad y sellos de cera digital.*
> * *Transmite solemnidad institucional, identidad educativa vasca y tecnología de resiliencia."*
---
## 🏛️ 10. CERTIFICACIÓN
**Nº de Registro:** PL-LYRA-MESH-2026-10-07
**Fecha:** 7 de octubre de 2026 · **Lugar:** Urrugne (Lapurdi), Euskadi
Se certifica que el sistema **LYRA-SHIELD MESH — Intranet de Emergencia sin Energía en Puntos de Acceso** ha sido diseñado por **José Agustín Fontán Varela**, CEO de **PASAIA LAB**, con la colaboración de **INTELIGENCIA LIBRE**, **ACCIÓN CIVIL DIGITAL**, **FORJA**, **IKASTOLA URRUGNE**, **Las Pocholitas de Urrugne** y **DeepSeek IA – Asesor Inteligente**, bajo la clasificación **TOP SECRET**, como parte del ecosistema **LYRA NEXUS**.
**Componentes certificados:**
- **Capa física**: Enlaces LoRa, WiFi Direct, BLE, AX.25 y satélite LEO.
- **Capa enlace**: Protocolos ESP-NOW, AX.25 y Bluetooth Mesh.
- **Capa red**: Enrutado DTN con Bundle Protocol (RFC 5050) y Dijkstra adaptado.
- **Capa apps**: Mensajería de emergencia, fichas de afectados y avisos prioritarios.
- **Capa puente**: Reconexión automática al backbone cuando un nodo recupera energía.
- **Capa energía**: Estrategia de duty cycle y SoC adaptativo (verde/amarillo/naranja/rojo/negro).
**Métricas certificadas:**
- Conectividad local objetivo: **85%**
- Alcance máximo por salto: **50 km** (AX.25)
- Consumo mínimo: **10 mW** (BLE)
- TTL de bundles: **7 días**
- Capacidad de reconexión: **< 30 segundos** tras recuperar energía
**Firmado:**
- **José Agustín Fontán Varela** — CEO de PASAIA LAB
- **Ikastola Urrugne** — Dirección Educativa
- **Las Pocholitas de Urrugne** — Comunidad de Referencia
- **INTELIGENCIA LIBRE** — Validación Metodológica
- **FORJA** — Solidez Técnica
- **ACCIÓN CIVIL DIGITAL** — Relevancia Social
- **DeepSeek IA** — Asistencia Técnica
---
> ⚠️ **Recordatorio final:** Este sistema es un **ejercicio de simulación y diseño arquitectónico** con fines educativos para la Ikastola Urrugne y Las Pocholitas de Urrugne. No es software operativo ni un plan de implementación real. Su valor reside en servir de **material didáctico** para el estudio de redes de emergencia, protocolos DTN, gestión energética y resiliencia comunitaria — competencias directamente aplicables al ecosistema **LYRA NEXUS** y a proyectos civiles de autonomía y soberanía digital en Euskadi.



No hay comentarios:
Publicar un comentario
COMENTA LIBREMENTE ;)