El sustrato del libro de capacidades
TopicFrom the PointSav Documentation
El Sustrato del Libro de Capacidades es el mecanismo por el cual cada decisión de control de acceso en un despliegue de plataforma se convierte en un evento criptográficamente auditable, anclado en un registro que controla el cliente.
El Sustrato del Libro de Capacidades es el mecanismo por el cual cada decisión de control de acceso en un despliegue de plataforma se convierte en un evento criptográficamente auditable, anclado en un registro que controla el cliente.
Extiende el modelo de capacidades nativo del microkernel seL4 — verificado formalmente — con una capa de transparencia que hace que el registro de auditoría sea portátil, de raíz del cliente y verificable por terceros sin ninguna relación de confianza con el operador.
[edit]Resumen
Un microkernel decide si un proceso tiene permiso para acceder a un recurso de hardware. seL4 usa capacidades — tokens infalsificables que codifican exactamente qué recurso posee un proceso y qué operaciones puede realizar. La implementación C de seL4 está verificada formalmente contra una especificación matemática: el kernel no puede ser engañado para honrar una capacidad que debería rechazar.
El Sustrato del Libro de Capacidades añade una propiedad nueva: cada decisión de invocación de capacidad puede vincularse, mediante una prueba de inclusión de Merkle, a un checkpoint en un registro de transparencia firmado. El cliente posee las claves de firma para ese registro. El cliente puede auditar el historial completo. Terceros pueden verificar entradas individuales contra checkpoints publicados sin acceder al registro completo.
El resultado es un sustrato de seguridad con dos capas verificables independientemente: la capa del kernel (prueba formal de seL4) y la capa del libro (registro de auditoría Merkle, que no puede ser reescrito sin las claves apex del cliente). La combinación es lo que el Sustrato del Libro de Capacidades nombra como el salto adelante.
[edit]Secciones del TOPIC en inglés
[edit]§1 — Qué es el Sustrato del Libro de Capacidades
Explica el modelo de capacidades de seL4 (tokens infalsificables, sin autoridad ambiental, sin usuario root), la prueba formal del kernel, y qué añade el Sustrato del Libro: un anclaje de cada capacidad a un checkpoint firmado en un registro de transparencia de raíz del cliente. El kernel comprueba dos capas independientes: la capa formal (¿es esta capacidad estructuralmente válida?) y la capa del libro (¿está el estado de esta capacidad en el registro auditado?).
[edit]§2 — El tipo Capability — campos, semántica, enlace al kernel
Documenta la estructura Capability en system-core: cap_type
(Endpoint, Memory, Irq, Notification, CNode — vocabulario nativo de seL4),
rights (Read, Write, Invoke, Grant, Revoke), expiry_t (opcional: segundos
Unix; None = sin caducidad incorporada), witness_pubkey (clave SSH para
extensión de caducidad), y ledger_anchor (identificador del checkpoint en el
registro Merkle del cliente). Explica cómo Capability::hash() produce un
SHA-256 determinista que sirve como clave en el árbol Merkle y en el conjunto
de revocación.
[edit]§3 — Capacidades con límite de tiempo (Mecanismo A)
Explica el flujo de decisión del kernel para una capacidad con expiry_t:
si now < expiry_t, se honra la invocación; si ha caducado y no hay testigo,
se rechaza; si hay un WitnessRecord con firma válida y prueba de inclusión
Merkle que lo acredita en el registro actual, se extiende la caducidad y se
honra la invocación. El requisito de prueba de inclusión significa que una
extensión de vida de capacidad no puede ser honrada hasta que haya sido
comprometida en el registro de transparencia del cliente.
[edit]§4 — La ceremonia de traspaso de apex (N+3+)
Documenta el protocolo formal de rotación de claves apex a través de cuatro
alturas de checkpoint: N (última operación con P-antiguo), N+1 (entrada de
revocación de P-antiguo), N+2 (checkpoint de traspaso co-firmado por ambos
apexes), N+3+ (sólo P-nuevo aceptado; P-antiguo rechazado con StaleApex).
Explica las tres propiedades del protocolo: atomicidad (el traspaso es un
evento único en el registro), auditabilidad (cualquier tercero puede
identificar el checkpoint exacto donde cambió la autoridad), y finalidad (la
rotación es permanente sin una nueva ceremonia).
[edit]§5 — La máquina de estados LedgerConsumer
Describe el rasgo LedgerConsumer en system-ledger y el flujo de consulta:
validez del apex → invariante post-traspaso → comprobación de revocación →
comprobación de caducidad → extensión por testigo. Cubre los tres tipos de
veredicto (Allow, Refuse(reason), ExtendThenAllow) y los cuatro métodos:
consult_capability (lectura), apply_revocation, apply_apex_handover,
apply_witness_record (escrituras).
[edit]§6 — Disciplina de caché — por qué la diferencia de 358.000× es crítica
Explica el problema: la verificación de firma ed25519 tarda ~4 ms en el
hardware de referencia; no se puede verificar en cada invocación de capacidad
sin un coste insostenible. La solución: el CheckpointCache guarda los últimos
N checkpoints verificados; una búsqueda en caché cuesta 11,2 ns frente a
4 ms — una diferencia de 358.000×. En funcionamiento estable, la tasa de
aciertos de caché se acerca al 100%. Explica que la caché y las pruebas de
inclusión son complementarias, no alternativas: la caché hace rápida la ruta
de lectura; las pruebas hacen fiable la ruta de escritura.
[edit]§7 — Revocación e invariantes post-traspaso
Explica la diferencia entre revocación (una capacidad específica es
permanentemente inválida — comprobación O(1) en un HashSet<Hash256>) e
invariante post-traspaso (una clave apex entera es inválida para un período
entero de tiempo, gobernado por la altura del checkpoint). Ambas son
aplicadas por InMemoryLedger y verificadas en el test de integración
de extremo a extremo de la ceremonia de traspaso completa.
[edit]§8 — Relación con el libro WORM
Describe la relación arquitectónica: el sustrato WORM es la capa de
almacenamiento de registros fundamental. service-fs (Ring 1) es el
consumidor a nivel de aplicación. system-ledger es el consumidor a nivel de
sustrato. Ambos usan el mismo formato de nota firmada C2SP; ambos verifican
firmas ed25519 del apex; la diferencia es la posición de despliegue
(kernel-adyacente vs. espacio de usuario) y el presupuesto de latencia. El
system-core compartido evita la duplicación de la mecánica de pruebas entre
consumidores.
[edit]§9 — Referencias cruzadas
El Sustrato del Libro de Capacidades y el Sustrato Soberano de Dos Bases; especificación operativa del sustrato; diseño del libro WORM; TOPIC compañero sobre pruebas de Merkle; estado de implementación Phase 1A (system-core v0.2.0 con 51 pruebas; system-ledger v0.2.1 con 44 pruebas + 10 benchmarks).
(El TOPIC canónico en inglés está en topic-capability-ledger-substrate.md.
Esta versión en español es un panorama estratégico, no una traducción
palabra-por-palabra.)