Parte: 2 — Criptografía aplicada · Fuente: Real-World Cryptography (Wong) y documentación de HashiCorp Vault / AWS KMS ⏱️ Duración estimada: 110 min · Nivel: Intermedio
Aprender a gestionar el ciclo de vida de las claves y secretos en sistemas reales: dónde guardarlos, cómo rotarlos, cómo evitar hardcodearlos en el código, y qué papel juegan los HSM, los servicios KMS (AWS/GCP/Azure) y HashiCorp Vault. El alumno entenderá conceptos como envelope encryption, cifrado como servicio, secretos dinámicos y el principio de mínimo privilegio aplicado a las claves.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Secretos en el código: anti-patrón | Origen de fugas masivas |
| 2 | HSM y raíz de confianza | Protección física de claves |
| 3 | KMS y cifrado como servicio | Claves gestionadas |
| 4 | Envelope encryption (KEK/DEK) | Escala el cifrado de datos |
| 5 | HashiCorp Vault | Gestor de secretos completo |
| 6 | Secretos dinámicos | Credenciales efímeras |
| 7 | Rotación y mínimo privilegio | Reducir la ventana de compromiso |
# Vault en modo desarrollo (solo laboratorio, NO producción)
vault --version 2>/dev/null || echo "instala HashiCorp Vault para el lab"
El modo
-devde Vault es exclusivamente para aprendizaje: guarda datos en memoria y desactiva TLS. Nunca lo uses con secretos reales.
bash
vault server -dev
export VAULT_ADDR='http://127.0.0.1:8200'
bash
vault kv put secret/miapp db_password="prueba-lab-123"
vault kv get secret/miapp
transit, crea una clave y cifra/descifra datos sin que la aplicación vea nunca la clave:bash
vault secrets enable transit
vault write -f transit/keys/miclave
vault write transit/encrypt/miclave plaintext=$(echo -n "dato" | base64)
Envelope encryption (concepto). Explica el flujo: la app pide al KMS/Vault que cifre una DEK; almacena el dato cifrado con la DEK y la DEK cifrada junto a él; para leer, pide descifrar la DEK.
Rotación. Rota la clave transit (vault write -f transit/keys/miclave/rotate) y verifica que los datos antiguos siguen descifrándose por versión.
Implementa envelope encryption en una pequeña app: genera una DEK por objeto, cifra los datos con AES-GCM y protege la DEK con el motor transit de Vault (o un KMS de laboratorio); guarda solo el dato cifrado y la DEK cifrada. Criterio de aceptación: los datos se recuperan pidiendo a Vault que descifre la DEK, la DEK en claro nunca se persiste, y rotar la clave maestra no impide leer datos antiguos.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Secretos hardcodeados en el repo | Fuga; usa un gestor de secretos y escanea el histórico |
| Misma clave para todo y sin rotación | Compromiso total; usa KEK/DEK y rota |
Vault -dev en producción |
Inseguro; despliega con almacenamiento y TLS reales |
| Permisos excesivos (todos leen todo) | Aplica mínimo privilegio con políticas |
| DEK almacenada en claro | Cífrala con la KEK del KMS/Vault |
❓ ¿KMS o Vault? KMS gestiona claves (a menudo con HSM) y ofrece cifrado como servicio; Vault añade secretos dinámicos, KV y motores múltiples. Suelen complementarse.
❓ ¿Qué es envelope encryption y por qué usarla? Cifrar datos con DEKs y proteger esas DEKs con una KEK del KMS; escala, limita el uso de la clave maestra y facilita la rotación.
❓ ¿Cada cuánto rotar claves? Según política y sensibilidad; adopta rotación automatizada y rota de inmediato ante sospecha de compromiso.
Clase 062 — Criptografía post-cuántica