# Cifrado **Estado:** Especificación --- ## Principio KEY VAULT ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ "Las llaves nunca viajan con los datos que protegen" │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Envelope Encryption ### Jerarquía de Llaves ``` MASTER KEY (MK) (HSM / KMS externo) │ ┌───────────┼───────────┐ │ │ │ ▼ ▼ ▼ KEK-DATA KEK-SECRETS KEK-SIGNING (Cifra (Cifra API (Firma datos) keys) tokens) │ │ │ ▼ ▼ ▼ DEK-1..n API Keys JWT Keys (Efímeras) (Rotables) (Rotables) ``` --- ## Niveles ### 1. MASTER KEY (MK) | Aspecto | Valor | |---------|-------| | Almacenamiento | HSM/KMS externo | | Exposición | Nunca se expone | | Rotación | Anual | | Uso | Deriva KEKs | ### 2. Key Encryption Keys (KEK) | KEK | Función | Rotación | |-----|---------|----------| | KEK-DATA | Cifra datos | 365 días | | KEK-SECRETS | Cifra API keys | 365 días | | KEK-SIGNING | Firma tokens | 180 días | ### 3. Data Encryption Keys (DEK) | Aspecto | Valor | |---------|-------| | Generación | Por operación | | Cifrado | Con KEK correspondiente | | Rotación | Por uso (efímeras) | --- ## Ventajas de Envelope Encryption | Ventaja | Descripción | |---------|-------------| | **Rotación eficiente** | Rotar KEKs sin re-cifrar todos los datos | | **Separación** | Diferentes KEKs para diferentes propósitos | | **Trazabilidad** | Cada nivel tiene su propio ciclo de vida | | **Seguridad en capas** | Compromiso de DEK no expone otras DEKs | --- ## Cifrado en Reposo ### Base de Datos | Componente | Cifrado | |------------|---------| | PostgreSQL | Transparent Data Encryption (TDE) | | Backups | AES-256-GCM con KEK-DATA | | Logs sensibles | AES-256-GCM con KEK-DATA | ### Almacenamiento | Componente | Cifrado | |------------|---------| | Cloudflare R2 | SSE con llaves gestionadas | | Backups locales | AES-256-GCM | | Archivos temporales | Cifrado en memoria | --- ## Cifrado en Tránsito | Conexión | Protocolo | |----------|-----------| | HTTPS | TLS 1.3 | | PostgreSQL | SSL required | | Redis | TLS | | SSH | Ed25519 | --- ## Gestión de Llaves ### Ubicación | Llave | Ubicación | |-------|-----------| | MASTER KEY | HSM / KMS externo | | KEKs | Infisical (cifradas) | | DEKs | Generadas en runtime | | API Keys | Infisical | ### Acceso ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Servicio │────▶│ Infisical │────▶│ KEK/DEK │ │ │ │ (API) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ (nunca en mismo lugar) │ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ Datos │ │ Llaves │ │ Cifrados │ │ │ └─────────────┘ └─────────────┘ ``` --- ## Algoritmos | Uso | Algoritmo | |-----|-----------| | Cifrado simétrico | AES-256-GCM | | Hashing | SHA-256, SHA-512 | | Firmas | Ed25519, ECDSA | | KDF | Argon2id | | TLS | TLS 1.3 | --- ## Rotación de Llaves | Llave | Proceso | |-------|---------| | **MASTER KEY** | Re-derivar todas las KEKs, re-cifrar DEKs | | **KEK** | Re-cifrar DEKs asociadas | | **DEK** | Generar nueva, re-cifrar datos específicos | --- ## Auditoría | Evento | Log | |--------|-----| | Acceso a KEK | SENTINEL-LIGHT | | Uso de DEK | Trace en S-CONTRACT | | Rotación | Alerta + registro | | Compromiso | SENTINEL-DEEP + alerta crítica |