Skip to content

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:

  1. Genera shares nuevos vía vault operator rekey (invalida los actuales del archivo).
  2. Distribuye cada share nuevo a un custodio distinto, en papel notariado con QR + hex del share.
  3. Destruye vault-init.json de forma auditable.
  4. Rota el root token y genera un token de emergencia por escrow legal.
  5. 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-5

Ejecución (orden)

Fase 0 — Antes del día D (T-7 a T-3)

  1. Llenar CUSTODIAL-CHAIN-OF-CUSTODY.md con datos de los 5 custodios.
  2. Firmar acta-corporativa-designacion-custodios.md (representante legal).
  3. Cada custodio firma su nda-custodio.md.
  4. Reservar notaría para día D + hora.
  5. Ejecutar CHECKLIST-PRE-CEREMONY.md.

Fase 1 — Día D, mañana (2h antes)

  1. Ejecutar CHECKLIST-DAY-OF.md step 1 a 4 (setup técnico).
  2. Ejecutar scripts/rekey-vault.sh — genera 5 shares nuevos.
  3. Ejecutar scripts/print-shares-qr.sh — imprime 5 hojas A4.
  4. Verificar visualmente: 5 hojas, cada una con QR + hex + hash del share.

Fase 2 — Ceremonia (90 min, presencial + notario)

  1. Seguir CEREMONY-SCRIPT.md paso a paso.
  2. Cada custodio recibe su hoja + firma recibo-de-entrega-share.md.
  3. Notario sella + firma acta.
  4. Firma acta-ceremonia.md con los 5 + coordinador.

Fase 3 — Post-ceremonia (mismo día)

  1. Ejecutar scripts/verify-quorum.sh — test con 3 shares aleatorios (los custodios recitan por teléfono).
  2. Ejecutar scripts/post-ceremony-hardening.sh — destruye vault-init.json.
  3. Distribuir PDFs firmados a docs/security/inventories/.
  4. Actualizar PCI_DSS_CONTROLS.md con 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.md escenario E).
  • Escrow legal: 1 de los 5 shares queda con abogado externo, para proteger contra escenario "todos los ejecutivos internos comprometidos".

Documentación Confidencial — Solo para uso interno y auditoría PCI DSS