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
This commit is contained in:
119
06_SEGURIDAD/inmutabilidad.md
Normal file
119
06_SEGURIDAD/inmutabilidad.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# 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
|
||||
|
||||
```python
|
||||
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.
|
||||
Reference in New Issue
Block a user