Tema
Vault Shamir Ceremony — Ejecución PCI DSS v4.0
Contexto
Vault Fintrix está actualmente inicializado con Shamir Secret Sharing 5-of-3 (5 shares generados, 3 requeridos para unseal). Los shares y el root token están hoy en /root/vault-init.json del droplet vault-01 — esto es un finding P1 del QSA garantizado.
Esta ceremonia:
- Genera shares nuevos vía
vault operator rekey(invalida los actuales del archivo). - Distribuye cada share nuevo a un custodio distinto, en papel notariado con QR + hex del share.
- Destruye
vault-init.jsonde forma auditable. - Rota el root token y genera un token de emergencia por escrow legal.
- Firma acta corporativa con los 5 custodios + notario + representante legal.
Después de la ceremonia, el único path para hacer unseal es:
3 de los 5 custodios cooperando (cada uno provee su share desde su ubicación física custodiada).
Estructura del paquete
vault-shamir-ceremony/
├── README.md ← este archivo
├── CEREMONY-SCRIPT.md ← guion paso a paso 90 min
├── CHECKLIST-PRE-CEREMONY.md ← preparativos día -3 a día -1
├── CHECKLIST-DAY-OF.md ← checklist minuto a minuto
├── RUNBOOK-POST-CEREMONY.md ← hardening + verificación 24h
├── CUSTODIAL-CHAIN-OF-CUSTODY.md ← registro maestro (llenar día D)
├── templates/
│ ├── acta-corporativa-designacion-custodios.md
│ ├── acta-ceremonia.md
│ ├── nda-custodio.md
│ ├── certificado-de-custodia.md
│ ├── recibo-de-entrega-share.md
│ └── share-paper-a4.template.html
└── scripts/
├── rekey-vault.sh ← generar 5 shares nuevos
├── print-shares-qr.sh ← QR + hex a papel A4
├── post-ceremony-hardening.sh ← destruir vault-init.json, rotar root
└── verify-quorum.sh ← test unseal con 3-of-5Ejecución (orden)
Fase 0 — Antes del día D (T-7 a T-3)
- Llenar
CUSTODIAL-CHAIN-OF-CUSTODY.mdcon datos de los 5 custodios. - Firmar
acta-corporativa-designacion-custodios.md(representante legal). - Cada custodio firma su
nda-custodio.md. - Reservar notaría para día D + hora.
- Ejecutar
CHECKLIST-PRE-CEREMONY.md.
Fase 1 — Día D, mañana (2h antes)
- Ejecutar
CHECKLIST-DAY-OF.mdstep 1 a 4 (setup técnico). - Ejecutar
scripts/rekey-vault.sh— genera 5 shares nuevos. - Ejecutar
scripts/print-shares-qr.sh— imprime 5 hojas A4. - Verificar visualmente: 5 hojas, cada una con QR + hex + hash del share.
Fase 2 — Ceremonia (90 min, presencial + notario)
- Seguir
CEREMONY-SCRIPT.mdpaso a paso. - Cada custodio recibe su hoja + firma
recibo-de-entrega-share.md. - Notario sella + firma acta.
- Firma
acta-ceremonia.mdcon los 5 + coordinador.
Fase 3 — Post-ceremonia (mismo día)
- Ejecutar
scripts/verify-quorum.sh— test con 3 shares aleatorios (los custodios recitan por teléfono). - Ejecutar
scripts/post-ceremony-hardening.sh— destruye vault-init.json. - Distribuir PDFs firmados a
docs/security/inventories/. - Actualizar
PCI_DSS_CONTROLS.mdcon evidencia + fecha.
Referencias PCI DSS v4.0
- Req 3.6.1 — Procedures to protect keys used for cryptographic operations.
- Req 3.7.1-3.7.9 — Cryptographic key management: generation, distribution, storage, rotation, retirement.
- Req 8.2.1 + 8.2.2 — Unique user IDs (cada custodio, no shares compartidos).
- Req 12.10.1 — Incident response plan (recovery via cuórum documentado).
Notas críticas para el auditor
- Threshold 3 de 5 es óptimo: sobrevive a 2 shares perdidos, requiere colusión de 3 para comprometer.
- Custodios físicamente separados: cada share vive en ubicación distinta (safe personal, safe deposit box, notaría, oficina abogado, oficina de finanza). Ningún par de shares está en misma dirección postal.
- Rotación anual: re-ejecutar esta ceremonia una vez al año (calendario en
MONTHLY-DR-DRILL.mdescenario E). - Escrow legal: 1 de los 5 shares queda con abogado externo, para proteger contra escenario "todos los ejecutivos internos comprometidos".
