- 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
2.9 KiB
2.9 KiB
Hashes e Identificadores
Versión: 1.0
Estado: Definición
Visión General
El sistema usa SHA-256 para identificación única e inmutable de todos los elementos.
CONTENIDO → SHA-256 → 64 caracteres hexadecimales
Tipos de Hash
| Prefijo | Tipo | Descripción |
|---|---|---|
| h_maestro | Tag HST | Hash de etiqueta semántica |
| h_instancia | Contexto | Identidad del servidor/instancia |
| h_entrada | Contenedor | Hash de ingesta en secretaría |
| h_bloque | BCK | Hash de bloque consolidado |
| h_milestone | MST | Hash de milestone |
| h_item | ITM | Hash de ítem (plano ideal) |
| h_player | PLY | Hash de identidad |
| h_loc | LOC | Hash de ubicación |
| h_flag | FLG | Hash de marco jurídico |
Fórmulas
h_maestro (HST)
h_maestro = SHA-256(grupo:ref)
Ejemplo:
h_maestro = SHA-256("hst:person")
h_entrada (Secretaría)
h_entrada = SHA-256(timestamp:origen:contenido)
h_bloque (BCK)
h_bloque = SHA-256(h_instancia:secuencia:hash_previo:hash_contenido)
hash_contenido = SHA-256(contenido_serializado)
h_milestone (MST)
h_milestone = SHA-256(h_instancia:secuencia:tipo:contenido)
h_item (ITM)
h_item = SHA-256(h_instancia:secuencia:tipo:contenido)
h_loc (LOC)
h_loc = SHA-256(lat:lon:precision)
Encadenamiento
Bloque 1 Bloque 2 Bloque 3
┌────────────┐ ┌────────────┐ ┌────────────┐
│h_bloque: A │──────►│hash_prev: A│──────►│hash_prev: B│
│ │ │h_bloque: B │ │h_bloque: C │
└────────────┘ └────────────┘ └────────────┘
Verificación
Integridad de Contenido
import hashlib
import json
def verificar_integridad(bloque):
contenido_serializado = json.dumps(bloque['contenido'], sort_keys=True)
hash_calculado = hashlib.sha256(contenido_serializado.encode()).hexdigest()
return hash_calculado == bloque['hash_contenido']
Encadenamiento
def verificar_cadena(bloque, bloque_previo):
return bloque['hash_previo'] == bloque_previo['h_bloque']
Propiedades
| Propiedad | Descripción |
|---|---|
| Determinista | Mismo input → mismo hash |
| Único | Colisión prácticamente imposible |
| Irreversible | No se puede obtener contenido desde hash |
| Fijo | Siempre 64 caracteres |
Uso en Trazabilidad
Bloque (Feldman)
│
└── h_entrada ──► Contenedor (Secretaría)
│
└── archivos_hashes ──► R2 Storage
Cualquier registro final puede rastrearse hasta su origen.