Please enable JavaScript.
Coggle requires JavaScript to display documents.
GENERACIÓN Y DISTRIBUCIÓN DE CLAVES, image, image - Coggle Diagram
GENERACIÓN Y DISTRIBUCIÓN DE CLAVES
CONCEPTO FUNDAMENTAL
¿Qué es una clave criptográfica?
Dato (número o cadena de bits) que controla un algoritmo criptográfico
Determina cómo se cifra, descifra, firma o autentica la información
Sin la clave correcta, el algoritmo no produce resultados válidos
Ejemplo: en AES el mismo algoritmo da resultados distintos con claves distintas
Principio de Kerckhoffs (1883)
La seguridad debe depender SOLO de la clave, no del secreto del algoritmo
El algoritmo puede (y debe) ser público y auditado
Lo contrario es "seguridad por oscuridad" (inseguro)
Gestión de claves (Key Management)
Conjunto de procesos: generación, almacenamiento, distribución, uso, rotación, destrucción
Es el eslabón más débil de cualquier sistema criptográfico
"La criptografía es fácil; la gestión de claves es lo difícil"
Conceptos relacionados
Criptosistema: algoritmo + clave + protocolos
Cifrado: texto plano → texto cifrado
Espacio de claves: conjunto de todas las claves posibles (2^n para n bits)
Cryptoperiod: tiempo de vida útil de una clave
MÉTODOS DE GENERACIÓN DE CLAVES
Fuentes de aleatoriedad (lo más crítico)
TRNG: generadores físicos verdaderamente aleatorios
Ruido térmico, eléctrico, radiactivo, atmosférico
Movimientos del mouse, tiempos de tecleo (histórico)
Requieren "debiasing" para uniformizar la salida
CSPRNG: generadores pseudoaleatorios criptográficamente seguros
Deterministas pero impredecibles (forward security)
Se alimentan de una semilla con entropía real
Ejemplos: /dev/urandom, BCryptGenRandom, SecureRandom (Java), secrets (Python)
Entropía
Medida de impredecibilidad en bits
Clave de 256 bits requiere 256 bits reales de entropía
Mala entropía = claves predecibles = sistema roto
Generación de claves simétricas
Extraer directamente n bits de un CSPRNG
Simple y rápida
Tamaño recomendado: 128 mínimo, 256 bits ideal (AES-256)
Generación de claves asimétricas
RSA
Generar dos primos enormes p y q
n = p·q, e = 65537, calcular d = e⁻¹ mod φ(n)
Privada: (d, n) / Pública: (e, n)
ECC (curvas elípticas)
Privada: número aleatorio d
Pública: punto Q = d·G en la curva
Curvas: P-256, P-384, Curve25519, secp256k1
Diffie-Hellman
Parámetros públicos g y p; secretos a y b aleatorios
Derivación de claves desde contraseñas (KDF)
PBKDF2: hash iterado miles de veces
bcrypt: basado en Blowfish, incorpora salt
scrypt: cuesta memoria, resistente a GPU
Argon2id: ganador del Password Hashing Competition (2015)
HKDF: deriva claves desde un secreto compartido
Uso de salt (aleatorio por usuario) y pepper (secreto del servidor)
Generación distribuida
Diffie-Hellman: ambas partes contribuyen al secreto
Shamir Secret Sharing: la clave se divide en n partes, se necesitan t para reconstruir
MPC: varias partes computan sin revelar sus entradas
DKG: generación distribuida en blockchains y firmas umbral
Estándares de generación (NIST SP 800-90)
90A: DRBG (Hash_DRBG, HMAC_DRBG, CTR_DRBG)
90B: estimación de entropía de fuentes
90C: construcción completa con re-sembrado
Tests de calidad: NIST SP 800-22, Diehard, TestU01
¿QUÉ ES LA DISTRIBUCIÓN DE CLAVES?
Definición
Proceso de hacer llegar una clave (o el material para acordarla) de forma segura desde quien la genera hasta quienes la usarán
Garantizar que solo las partes autorizadas la posean
El problema fundamental
Paradoja: para enviar una clave secreta necesitas YA un canal seguro
Soluciones posibles
Canal físico seguro (fuera de banda)
Tercero de confianza (KDC, CA)
Criptografía asimétrica (rompe la paradoja)
Diferencia clave
Key transport: una parte genera y envía la clave
Key agreement: ambas partes contribuyen y calculan el mismo secreto (DH)
Canales
Canal seguro: confidencial + íntegro + autenticado
Canal autenticado: solo integridad y origen (suficiente para DH firmado)
Canal inseguro: requiere protocolos con autenticación
MÉTODOS DE DISTRIBUCIÓN DE CLAVES
Métodos físicos / fuera de banda
Courier de confianza o valija diplomática
Sobres sellados con clave impresa
Split knowledge: clave dividida en partes enviadas por separado
Dual control: dos personas transportan mitades distintas
Tokens USB / tarjetas inteligentes entregados en persona
QR codes verificados cara a cara (Signal, WhatsApp)
One-time pad: libreta de claves distribuida físicamente
Método con tercero de confianza: KDC
Centro de Distribución de Claves
Servidor central que comparte clave maestra con cada usuario
Reduce de n(n-1)/2 claves a solo n
Emite claves de sesión bajo demanda con tickets
Desventaja: punto único de fallo y cuello de botella
Kerberos v5 (el ejemplo clásico)
Componentes: AS, TGS, base de datos, cliente, servidor
Flujo
Cliente pide autenticación al AS
AS devuelve TGT (cifrado con clave del TGS) + clave de sesión cliente-TGS
Cliente pide ticket de servicio al TGS con su authenticator
TGS devuelve ticket cifrado con clave del servidor + clave de sesión
Cliente presenta ticket al servidor
Servidor responde con authenticator+1 (autenticación mutua)
Protecciones: nonces, timestamps, tiempos de vida, flags
Método Diffie-Hellman (acuerdo sin canal seguro)
Alice y Bob intercambian g^a y g^b públicamente
Ambos calculan el secreto compartido g^(ab)
Un espía que ve el tráfico no puede calcularlo (problema del logaritmo discreto)
Variantes
DH clásico
DHE / ECDHE (efímero → forward secrecy)
STS (firma los valores públicos → autenticado)
Requiere autenticación para evitar MitM
Método con criptografía asimétrica
Cifrar la clave de sesión con la clave pública del destinatario
RSA con OAEP, RSA-KEM
ECIES / ElGamal
Key wrapping: la KEK envuelve a la DEK (AES-KW RFC 3394)
Esquema híbrido (el más usado)
Asimétrico para intercambiar/autenticar
Simétrico para cifrar los datos (velocidad)
Método con PKI (distribución de claves públicas)
Certificados X.509 firmados por una CA
El usuario confía en la clave pública porque la CA la certifica
Publicación en directorios/repositorios
Validación con CRL u OCSP
Métodos modernos
Signal Protocol: Double Ratchet (claves que evolucionan por mensaje)
X3DH: acuerdo de claves extendido con claves pre-firmadas
TLS 1.3: solo (EC)DHE efímero, incluso en reanudaciones
PSK (Pre-Shared Keys): claves pre-compartidas en IoT
SEGURIDAD DE LA DISTRIBUCIÓN DE CLAVES
Amenazas principales
Man-in-the-Middle (MitM)
Eve intercepta y sustituye claves en el intercambio
Mitigación: autenticar el canal (certificados, firmas, SAS, QR)
Replay (repetición de mensajes)
Mitigación: nonces, timestamps, contadores
Downgrade (forzar protocolos débiles)
Ejemplos reales: FREAK, Logjam, POODLE
Mitigación: TLS 1.3 eliminó negociaciones débiles
Suplantación de identidad
Mitigación: certificados válidos y verificados
Robo en tránsito o en reposo
Mitigación: canales cifrados, almacenamiento en HSM
Compromiso de la CA
Casos reales: DigiNotar 2011, Symantec 2018
Mitigación: Certificate Transparency, revocación, pinning
Propiedades de seguridad que debe lograr
Secrecia de la clave: solo las partes autorizadas la conocen
Autenticación: certeza de con quién se comparte
Integridad: la clave no fue alterada en tránsito
Forward secrecy (secrecía futura)
Si la clave privada se compromete mañana, el tráfico de ayer sigue seguro
Se logra con claves efímeras (ECDHE)
Resistencia a replay
Frescura: claves nuevas por sesión (nonces, timestamps)
Mecanismos de protección
Firmas digitales sobre los valores intercambiados
Certificados con validación completa (cadena, expiración, revocación, hostname)
Certificate pinning (fijar la clave esperada)
Short Authentication String (SAS): comparar código corto en voz alta o QR
Verificación out-of-band (código de seguridad en mensajería)
APLICACIONES DONDE SE USAN
Comunicaciones web
TLS/HTTPS: certificados + ECDHE + AES-GCM
Certificate Transparency y pinning en apps móviles
Correo electrónico
PGP/GPG (web of trust)
S/MIME (PKI corporativa)
Mensajería instantánea
Signal (Double Ratchet, X3DH)
WhatsApp, Telegram (MTProto), iMessage
Acceso remoto y redes
SSH: claves de host y de usuario, known_hosts
VPN: IPsec/IKE, WireGuard (Curve25519 + ChaCha20)
WiFi: WPA2-Enterprise (802.1X + RADIUS), WPA3 (SAE/Dragonfly)
Autenticación de usuarios
Inicio de sesión corporativo: Kerberos (Active Directory)
SSO con SAML/OIDC: tokens firmados (JWT con JWK)
FIDO2/WebAuthn: claves en hardware, sin contraseñas
2FA: TOTP (HOTP/TOTP, RFC 4226/6238)
Almacenamiento y datos
Cifrado de discos: BitLocker (TPM), FileVault, LUKS
Cifrado de bases de datos y backups
Sistemas de archivos cifrados (EFS)
Gestores de claves en la nube: AWS KMS, Azure Key Vault, GCP KMS, HashiCorp Vault
Blockchain y criptomonedas
Bitcoin/Ethereum: claves ECC (secp256k1) generadas localmente
Wallets: seed BIP39, jerárquicas HD BIP32/44
Direcciones = hash de la clave pública
Firmas umbral y multisig
IoT y sistemas embebidos
Provisionado de claves en fábrica
TPM/Secure Element en dispositivos
Matter, Zigbee, LoRaWAN (sesiones con AppKey)
Gobierno y defensa
Comunicaciones militares: claves en fill devices (SKL)
Firma electrónica avanzada y DNIe (PKI nacional)
eIDAS en la Unión Europea: certificados cualificados
Pagos y comercio
PCI-DSS: gestión de claves para datos de tarjeta
EMV en tarjetas bancarias (claves por chip)
HSM en pasarelas de pago
Software y desarrollo
Firma de código (code signing): Actualizaciones de SO, apps
Firma de contenedores e imágenes Docker (Notary, Sigstore/cosign)
Secretos CI/CD: Vault, variables cifradas
Firma de documentos PDF (PAdES)
TIPOS DE CLAVES (TODOS)
Por simetría
Claves simétricas (secretas)
Misma clave para cifrar y descifrar
Algoritmos: AES, DES/3DES, ChaCha20, Blowfish, Camellia, Twofish
Rápidas, cortas (128-256 bits)
Problema: distribución (n(n-1)/2 en red completa)
Claves asimétricas (par público/privado)
Dos claves matemáticamente ligadas
Algoritmos: RSA, ECC (ECDSA/ECDH/EdDSA), ElGamal, DSA
Resuelven distribución y habilitan firma digital y no repudio
Lentas; claves más largas (RSA 2048-4096, ECC 256-521)
Por función / rol
Clave de sesión: temporal, por conexión (TLS, SSH)
Clave maestra / de largo plazo: autenticación (privada RSA/ECC)
KEK (Key Encryption Key): protege/envuelve otras claves
DEK (Data Encryption Key): cifra los datos reales
Clave de firma (Signing Key): genera firmas (solo privada)
Clave de verificación: pública para validar firmas
Clave de cifrado (Encryption Key): confidencialidad
Clave de autenticación: prueba de identidad (Kerberos, HMAC)
Clave MAC / HMAC: integridad y autenticación de mensajes
Clave de derivación (KDF input): genera otras claves
Seed / semilla: origen determinista de claves (wallets BIP39)
Por duración
Estáticas (static): fijas, largo plazo
Efímeras (ephemeral): una sola sesión → forward secrecy
De un solo uso: one-time pad
Por contenido relacionado (no son claves pero acompañan)
IV (Vector de Inicialización): aleatorio, público, no se repite
Nonce: número de una sola vez (ChaCha20, GCM)
Salt: aleatorio por usuario en derivación de contraseñas
Counter/CTR: en modos de contador
Por formato de representación
Binaria (raw bytes)
Hexadecimal / Base64
PEM (texto -----BEGIN KEY-----)
DER (binario ASN.1)
JWK (JSON Web Key, RFC 7517)
PKCS#12 (.pfx/.p12: privada + certificado con contraseña)
PKCS#8 (formato estándar de claves privadas)
Por almacenamiento
En claro (solo en entornos protegidos)
Envuelta (wrapped): cifrada con una KEK
En HSM: nunca sale en claro del hardware
Sellada en TPM: ligada al estado del sistema (PCR)
CICLO DE VIDA DE LA CLAVE (extra)
Fases (NIST SP 800-57)
Generación o importación
Registro y asociación a un propósito
Almacenamiento seguro
Distribución / transporte
Activación
Uso durante su cryptoperiod
Renovación / rotación
Archivado (para datos históricos)
Recuperación ante pérdida
Destrucción (crypto-erasure)
Estados: pre-activa → activa → desactivada → comprometida → destruida
Rotación
Programada: periódica según política
Forzada: tras sospecha de compromiso
Automática: cloud KMS rota DEKs continuamente
Destrucción segura
Borrar la clave = datos irrecuperables (crypto-erasure)
Sobrescritura en HSM, zeroization
ALMACENAMIENTO SEGURO (extra)
Hardware
HSM (FIPS 140-3 nivel 1-4): claves nunca salen en claro
TPM 2.0: sellado, BitLocker, arranque medido
Secure Enclave (Apple), TrustZone (ARM)
Tarjetas inteligentes, SIM, YubiKey (FIDO2)
Software
Keyring del SO: GNOME Keyring, macOS Keychain, DPAPI
HashiCorp Vault, gestores cloud (KMS/Key Vault)
Controles organizativos
Split knowledge y dual control
M de N (Shamir) para claves raíz
Ceremonias de claves auditadas (key ceremonies)
ESTÁNDARES Y NORMATIVAS (extra)
NIST: SP 800-57 (gestión), SP 800-90 (aleatoriedad), FIPS 140-3 (módulos)
ISO/IEC: 11770 (gestión de claves), 9798 (autenticación), 27001 A.8.24
RFCs: 3394 (AES-KW), 5280 (X.509), 4120 (Kerberos), 8446 (TLS 1.3), 7517 (JWK)
PKCS: #1 (RSA), #5 (KDF), #7 (CMS), #11 (API), #12 (.pfx)
KMIP (OASIS): protocolo cliente-servidor de claves
PCI-DSS 3.5-3.6: claves en medios de pago
eIDAS: certificados cualificados en la UE
AMENAZAS Y CASOS REALES (extra)
Fallos de generación
Debian OpenSSL 2008: solo 32.768 claves posibles durante 2 años
ROCA 2017: RSA defectuoso en chips Infineon (DNI electrónico estonio)
Netscape 1995: semillas predecibles
2012 (Bernstein): 0.75% de certificados TLS con claves RSA duplicadas por mal seeding
Fallos de distribución
DigiNotar 2011: CA comprometida emitió certificados de Google (usado en Irán); la empresa quebró
Logjam/FREAK: DH de 512 bits exportables aún en uso
Ataques genéricos
Fuerza bruta, diccionario, rainbow tables (sin salt)
Side-channel: tiempo, consumo eléctrico, EM, caché
Cold boot attack (RAM retiene claves)
Fault injection en tarjetas
Riesgo cuántico
Shor rompe RSA/ECC/DH con un ordenador cuántico grande
Grover: AES-256 queda en 128 bits (aceptable)
"Harvest now, decrypt later": ya están robando datos cifrados hoy
Solución: PQC — ML-KEM (Kyber), ML-DSA (Dilithium), híbridos (ECDH+Kyber ya en Chrome/Signal)
MEJORES PRÁCTICAS (extra)
Generación
Usar solo CSPRNG del sistema/librerías estándar; nunca rand() ni inventar generadores
Tamaños actuales: AES-256, RSA-3072+, ECC P-384/Curve25519
Verificar entropía en VMs y embebidos (snapshots clonados = claves repetidas)
Distribución
Prefiere (EC)DHE efímero → forward secrecy
Siempre autenticar el intercambio (certificados, firmas, verificación SAS)
Validar certificados completos: cadena, expiración, revocación, hostname, key usage
Gestión
Inventario centralizado de todas las claves
Rotación periódica y automatizada
Logging de cada uso (quién, cuándo, para qué)
Plan de respuesta ante compromiso: revocar, re-emitir, auditar impacto
Separar claves por entorno (dev/test/prod)
Crypto-agility: poder cambiar de algoritmo sin rediseñar todo
EJEMPLOS PASO A PASO (extra)
Compra online (TLS 1.3)
Cliente → servidor: ClientHello con key_share ECDHE
Servidor: certificado firmado por CA + su key_share
Cliente valida el certificado con la CA raíz
Ambos derivan claves de sesión (traffic secrets)
Tráfico cifrado con AES-GCM/ChaCha20-Poly1305
Inicio de sesión en Windows (Kerberos)
Usuario → AS → TGT → TGS → ticket del recurso → acceso sin enviar contraseña
Correo con PGP
Genera clave de sesión aleatoria
Cifra el mensaje con AES
Cifra la clave de sesión con la pública del destinatario (RSA/ECC)
Firma todo con su privada
Envía paquete combinado
Bitcoin
Seed aleatoria (128-256 bits) → frase de 12/24 palabras (BIP39)
Wallet HD deriva claves hijo (BIP32)
Dirección = Hash160(clave pública)
Gastar = firma ECDSA con la clave privada