Encryption key management
AES-256 en reposo (cifrado de plataforma Supabase) · TLS en tránsito · cifrado por columna con pgcrypto sobre las credenciales de la clínica · 6 disparadores de rotación · escrow Shamir 3-of-5 · matriz de cumplimiento GDPR/AEPD/NIS2/AI Act. Incluye lo que NO está cifrado: el contenido de las conversaciones no lleva cifrado por columna.
6 key types · gestión completa
| Tipo | Algoritmo | Storage | Rotation | Scope |
|---|---|---|---|---|
| Cifrado de la base de datos en reposo | AES-256 · cifrado transparente de disco gestionado por Supabase | Supabase managed (plataforma) · no gestionamos nosotros la clave | Gestionada por el proveedor | Toda la BD. NO hay cifrado adicional por columna sobre datos de paciente — ver fila siguiente para lo que sí lo lleva |
| Cifrado por columna · credenciales de la clínica | pgcrypto vía RPC encrypt_token/decrypt_token | Clave única TOKEN_ENCRYPTION_KEY en el entorno del Worker · nunca en código ni repo | Doble clave (TOKEN_ENCRYPTION_KEY + _OLD) · rotación sin downtime vía /rotate-secret | whatsapp_access_token_enc · cal_api_key_enc. Cubre las credenciales de terceros de la clínica, NO datos de paciente |
| Application secrets (API keys · tokens) | TOKEN_ENCRYPTION_KEY symmetric (AES-256) | Cloudflare Workers env (encrypted at rest) · NOT in code/repo | Trimestral · blue-green via runbook /rotate-secret | OpenAI · Meta WhatsApp · Stripe · Cal.com · Sentry · Upstash · UptimeRobot |
| TLS in transit | TLS 1.3 mandatory · TLS 1.2 fallback minimum · NO TLS 1.0/1.1 | Cloudflare managed certificates · Let's Encrypt auto-renewal | Automatic 90d · enforced by CA | ALL HTTP traffic landing + worker + webhook + admin · HSTS preload submitted |
| Webhook signing keys | HMAC-SHA256 · Meta + Stripe + Upstash signing secrets | Cloudflare env separated por provider · zero overlap | Trimestral coordinated con provider rotation · zero downtime via dual-validate window 24h | Meta webhook · Stripe webhook · QStash signing |
| Backup encryption | AES-256 + per-backup key envelope encryption | Backup KEY separated · NOT same KMS as DB · cross-account isolation | Anual + per-major-incident | Daily Supabase PITR backups · monthly archive offsite |
6 rotation triggers
Escrow + disaster recovery · 6 reglas
Key loss = data loss. La estrategia equilibra seguridad (anti-coacción) y recuperación (anti-pérdida) con Shamir Secret Sharing. No hay componente zero-knowledge.
- Backup KEY split via Shamir Secret Sharing · 3-of-5 threshold · 5 trustees designated (founder + 2 family legal + 2 advisor)
- Trustees receive encrypted shares + recovery procedure documented · annual verification still accessible
- Recovery process requires 3+ trustees coordinated · NO single point access (anti-coercion · anti-loss)
- NO hay arquitectura zero-knowledge ni claves por tenant: TOKEN_ENCRYPTION_KEY es un secreto único del Worker. Como encargado del tratamiento, podemos descifrar las credenciales que la clínica nos confía — dicho explícitamente porque lo contrario sería vender una garantía que no damos
- Application secrets escrow vía 1Password Business Vault accessible only founder · backup access via legal succession plan documented
- Annual disaster recovery drill tests backup KEY recovery (Q4 · last 2026-02-10 successful)
Compliance matrix · standards coverage
| Standard | Coverage |
|---|---|
| GDPR Art 32 · pseudonymisation + encryption | ○ A revisar por asesoría · medidas reales: AES-256 en reposo (plataforma Supabase) + TLS en tránsito + RLS + cifrado por columna de credenciales (pgcrypto) + audit log. NO hay cifrado por columna del contenido de las conversaciones |
| AEPD Guía Cifrado Personal Data 2024 | ✓ Cumplido · AES-256 minimum · key rotation documented · NO claves débiles (RC4 · DES · MD5) |
| NIS2 Directive · encryption requirements | ○ Parcial · NIS2 transposition España pendiente · readiness Q3 2026 planned |
| AI Act Art 10 · data security | ✓ Cumplido por encryption · governance gaps in audit logs being addressed Q4 2026 |
| ISO 27001 Annex A.10 · cryptography | ○ Roadmap · ISO 27001 certification Q4 2026-Q1 2027 · controls implementados sin formal cert pre-revenue |
| PCI-DSS · payment data | N/A · Stripe maneja tokenization · we NEVER store PAN · scope reduced to SAQ-A merchant |
7 secretos pendientes rotation (post-Sprint Hardening backlog): OpenAI v3 · Upstash · QStash signing+token · GitHub PAT · TOKEN_ENCRYPTION_KEY · Meta Permanent · UptimeRobot. Status: HIGH priority · founder + Claude 1d effort · target completion >semana actual.
HSM dedicated: actualmente keys gestionadas Cloudflare/Supabase managed services · NO HSM dedicado. Roadmap Q2 2027 si client Enterprise lo requiere contractualmente. Trade-off documented: managed simpler vs HSM more sovereign.
Client-managed keys (BYOK): NOT supported actualmente · roadmap pre-Enterprise tier. Útil clínicas largas con compliance custom requirements.
¿Tu CISO necesita key management deep-dive?
Para procurement Enterprise · architecture diagram detallado · revisión de la implementación de cifrado (pgcrypto) · esquema de rotación de clave · roadmap BYOK · disponibles bajo NDA. Acelera security review pre-contract.