Files
system-docs/06_SEGURIDAD/inmutabilidad.md
ARCHITECT 6ea70bd34f Update to Skynet v7 - Complete documentation restructure
- Nueva estructura de carpetas según Skynet v7
- Añadidos schemas SQL completos
- Documentación de entidades, componentes e integraciones
- Modelo de seguridad actualizado
- Infraestructura y operaciones reorganizadas
2025-12-29 18:23:41 +00:00

3.5 KiB

Inmutabilidad

Versión: 1.0
Estado: Definición


Principio

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   Los datos de entrada y salida nunca se modifican.            │
│   La trazabilidad siempre es posible.                          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Componentes Inmutables

Componente Mutabilidad Eliminación
Secretaría (Clara/Margaret) Inmutable Prohibida
Contable (Feldman) Inmutable Prohibida

Componentes Editables

Componente Mutabilidad Eliminación
Producción (Alfred/Jared) Editable Permitida
Administración (Mason) Editable Siempre (tras consolidar)

Cadena de Hashes

Encadenamiento

Bloque 1              Bloque 2              Bloque 3
┌────────────┐       ┌────────────┐       ┌────────────┐
│h_bloque: A │──────►│hash_prev: A│──────►│hash_prev: B│
│content: X  │       │h_bloque: B │       │h_bloque: C │
│            │       │content: Y  │       │content: Z  │
└────────────┘       └────────────┘       └────────────┘

Verificación

def verificar_cadena_completa():
    bloques = obtener_todos_bloques_ordenados()
    
    for i, bloque in enumerate(bloques):
        # Verificar hash de contenido
        if not verificar_integridad(bloque):
            return False, f"Integridad fallida en bloque {i}"
        
        # Verificar encadenamiento
        if i > 0:
            if bloque.hash_previo != bloques[i-1].h_bloque:
                return False, f"Encadenamiento roto en bloque {i}"
    
    return True, "Cadena válida"

Reglas de Validación

Regla Nombre Descripción
M-001 Hash único h_bloque no existe previamente
M-002 Encadenamiento hash_previo apunta a bloque existente
M-003 Integridad hash_contenido = SHA-256(contenido)

Trazabilidad

Cualquier registro en Feldman puede rastrearse hasta Secretaría:

Bloque (Feldman)
    │
    └── h_entrada ──► Contenedor (Secretaría)
                          │
                          ├── timestamp
                          ├── origen
                          ├── usuario
                          └── archivos_hashes ──► R2

Auditoría

Sentinel verifica periódicamente:

Modo Frecuencia Verificación
LIGHT 5 min Últimos bloques
DEEP 1 hora Cadena completa

Blockchain Ready

La estructura de bloques encadenados está preparada para:

  • Publicación en blockchain (Polygon)
  • Merkle tree para verificación
  • Smart contracts para sellado

Estado: Preparado pero no implementado.