Cadena de Recibos Ed25519 — Sesión alcazar-2026-06-18
01
Read
contratos/alcazar-spa-v3.pdf
allow
receipt_id: rcpt-a8f3c9d2
event_time: 2026-06-18T09:15:03.211Z
input_hash: sha256:3f8c9d2e…
parent: genesis (first)
policy_id: protect.cedar
sig: 4cde814b…f3e2a19c
↓ SHA-256 linkage
02
Grep
representaciones-garantias · SPA §4
allow
receipt_id: rcpt-c3b7d4e1
event_time: 2026-06-18T09:15:44.089Z
input_hash: sha256:7a2b1f3c…
parent: rcpt-a8f3c9d2
policy_id: protect.cedar
sig: e7f1a234…c8b5d901
↓
03
WebSearch
CNMC DataBridge Analytics 2025 sanciones
allow
receipt_id: rcpt-5e9a2b7f
event_time: 2026-06-18T09:17:12.555Z
input_hash: sha256:9d1e4f6a…
parent: rcpt-c3b7d4e1
policy_id: protect.cedar
sig: b2c3d4e5…a1b9c7f0
↓
04
Read
contratos/anexo-ii-IP-transferencia.pdf
allow
receipt_id: rcpt-d1f4a8c3
event_time: 2026-06-18T09:19:07.310Z
input_hash: sha256:4c7e2b9a…
parent: rcpt-5e9a2b7f
policy_id: protect.cedar
sig: f5g6h7i8…j0k1l2m3
↓
05
Bash
rm -rf ./contratos/borrador-confidencial/
DENY
receipt_id: rcpt-9b2e5f1a
event_time: 2026-06-18T09:21:44.702Z
input_hash: sha256:1a9f8e7b…
parent: rcpt-d1f4a8c3
policy_id: protect.cedar
Cedar rule: forbid(Bash) — rm -rf pattern
↓ bloqueo registrado · herramienta NO ejecutada
06
Bash
git log --oneline contratos/alcazar-spa-v3.pdf
allow
receipt_id: rcpt-7c4f1e9b
event_time: 2026-06-18T09:22:19.088Z
input_hash: sha256:8b6e3d2c…
parent: rcpt-9b2e5f1a
policy_id: protect.cedar
sig: n4o5p6q7…r8s9t0u1
↓
07
Read
plantillas/informe-dd-m-a.md
allow
receipt_id: rcpt-2a8d3f7e
event_time: 2026-06-18T09:24:55.441Z
input_hash: sha256:5c2d9e1f…
parent: rcpt-7c4f1e9b
policy_id: protect.cedar
sig: v2w3x4y5…z6a7b8c9
↓
⋮
Recibos 08–13: Write(./informes/…), Read, Grep, Bash(npm run pdf), Bash(node), Read — todos
allow ×6
rcpt-6e1b4c9f → rcpt-4a7d2e3b → rcpt-1f8c5b2a → rcpt-3d9e7f4c → rcpt-8b2a6d1e → rcpt-5f3c1b9a
↓
14
Write
./informes/alcazar-dd-final-20260618.pdf
allow
ÚLTIMO
receipt_id: rcpt-0e9a7b3d
event_time: 2026-06-18T09:47:31.892Z
input_hash: sha256:c8d7e6f5…
parent: rcpt-5f3c1b9a
policy_id: protect.cedar
sig: d0e1f2g3…h4i5j6k7
Verificación offline superada
Cadena: 14 / 14 recibos válidos
Firmas Ed25519: todas íntegras
Hash chain: sin interrupciones
Herramienta: @veritasacta/verify v1.4.2
$ npx @veritasacta/verify ./receipts/*.json
Loaded 14 receipts from ./receipts/
Verifying signatures (Ed25519)...
Verifying hash chain (SHA-256)...
✓ All 14 receipts verified. Chain intact. Exit 0.
Política Cedar activa — protect.cedar
// Lectura: siempre permitida
permit (principal, action in
[Action::"Read", Action::"Grep",
Action::"WebSearch"], resource);
// Bash: solo comandos seguros
permit (principal,
action == Action::"Bash",
resource) when {
context.command_pattern in [
"git", "npm", "node",
"ls", "cat", "python"
]};
// DENY autoritativo: comandos destructivos
forbid (principal,
action == Action::"Bash",
resource) when {
context.command_pattern in
["rm -rf", "dd", "shred"]};
// Escritura: solo dentro del proyecto
permit (principal,
action in [Action::"Write",
Action::"Edit"], resource)
when { context.path_starts_with == "./" };
Detección de manipulación
Si un auditor externo modifica retroactivamente el recibo #05 para ocultar el deny:
- "decision": "deny"
+ "decision": "allow" <-- manipulación
npx @veritasacta/verify ./receipts/*.json
✗ rcpt-9b2e5f1a: signature mismatch
Expected: ed25519(JCS(receipt)) == sig
Got: INVALID — exit 1
✗ rcpt-9b2e5f1a: signature mismatch
Expected: ed25519(JCS(receipt)) == sig
Got: INVALID — exit 1
Cobertura normativa
EU AI Act · Art. 12
Registro inmutable de actividades del sistema IA de alto riesgo. Recibos firmados = evidencia válida.
✓
DORA · Resiliencia digital
Trazabilidad de procesos automatizados en entidades financieras. Hash-chain anti-retroceso.
✓
SLSA Provenance v1
Cadena de recibos referenciada en byproducts del attestation. Dos dominios de confianza cruzados.
✓
CI/CD — Gate en GitHub Actions
# .github/workflows/verify-receipts.yml
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Agente DD
run: python scripts/run_agent.py
- name: Verificar cadena
run: npx @veritasacta/verify receipts/
- name: Archivar evidencia
uses: actions/upload-artifact@v4
with: { path: receipts/ }