0Pricing
Cryptology Academy · Lección

Generación segura de claves, nonces e IV

Use secrets, os.urandom y wrappers seguros en Python y Node.

Generación segura de claves, nonces e IV es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Las tres categorías

Hay tres valores criptográficos distintos que requieren una generación segura: (1) Claves: tienen una larga duración y deben ser impredecibles y secretas. (2) IV: son por mensaje, pueden ser públicos, pero deben ser impredecibles (CBC) o únicos (GCM). (3) Nonces: deben ser únicos en cada uso, aunque pueden ser aleatorios o no.

Claves simétricas

AES-128: secrets.token_bytes(16). AES-256: secrets.token_bytes(32). ChaCha20: secrets.token_bytes(32). Never derive keys from passwords without KDF (PBKDF2/Argon2). Never reuse keys across different algorithms or purposes.

Generación de claves asimétricas

from cryptography.hazmat.primitives.asymmetric import ec, rsa rsa_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) ec_key = ec.generate_private_key(ec.SECP256R1()) # The library handles entropy sourcing internally

IV para AES-CBC

AES-CBC requiere un IV de 16 bytes uniformemente aleatorio para cada mensaje. No reutilice nunca un IV con la misma clave. No utilice nunca un contador como IV en modo CBC. Genere: iv = os.urandom(16). Anteonga el IV al texto cifrado: no tiene que ser secreto, solo impredecible.

Nonce para AES-GCM

AES-GCM requiere un nonce único de 96 bits para cada par (clave, mensaje). La reutilización de un nonce rompe catastróficamente GCM: el atacante recupera la clave de autenticación y puede falsificar mensajes. Utilice un nonce aleatorio de 12 bytes (límite del cumpleaños en 2^32 mensajes) o un contador.

Nonces basados en contador

Para cifrado de gran volumen con una sola clave: mantenga un contador persistente por clave. nonce = counter.to_bytes(12, "big"). Incremente el contador después de cada cifrado. Guarde el contador en un almacenamiento persistente: un reinicio provoca su reutilización.

AEAD resistentes al uso indebido de nonces

AES-GCM-SIV y Deoxys-II son resistentes al uso indebido de nonces: la reutilización de un nonce degrada la seguridad hasta la de un cifrado determinista (sin filtrar la clave de autenticación). Se recomiendan cuando resulta difícil garantizar la unicidad de los nonces (sistemas distribuidos y situaciones de recuperación tras un fallo y reinicio).

HKDF para la derivación de claves

No utilice directamente material de clave sin procesar para varios fines. Derive claves específicas para cada propósito: from cryptography.hazmat.primitives.kdf.hkdf import HKDF. hkdf = HKDF(SHA256(), 32, salt, info=b"enc_key"). key = hkdf.derive(master_key). Utilice un valor de info diferente para cada propósito.

Claves de sesión

Derive claves específicas de la sesión a partir de un secreto compartido (por ejemplo, la salida de ECDH) mediante HKDF. TLS 1.3 deriva claves separadas de cliente y servidor para el handshake y los datos de aplicación. Las claves de sesión aíslan los compromisos: conocer una clave de sesión no revela nada sobre las demás.

Envoltura de claves

Para almacenar una clave de forma segura, envuélvala con una clave de cifrado de claves (KEK) mediante AES-KW (RFC 3394) o AES-GCM. La clave envuelta puede almacenarse en una base de datos o transmitirse. La KEK se almacena en un HSM o en un almacén de claves respaldado por hardware (Android Keystore, Apple Secure Enclave).

Lista de comprobación de auditoría

Antes de la implementación, compruebe: (1) que todas las claves procedan de os.urandom/secrets; (2) que no haya claves ni IV codificados directamente; (3) que los IV nunca se reutilicen con la misma clave; (4) que los nonces de GCM sean únicos para cada mensaje; (5) que se haya definido un calendario de rotación de claves; (6) que la derivación de claves utilice HKDF con cadenas de info distintas.

Comprobación rápida

¿Cuál es la consecuencia de reutilizar un nonce en AES-GCM?

Resumen

Las claves necesitan una generación verdaderamente aleatoria; los IV de CBC necesitan aleatoriedad; los nonces de GCM necesitan unicidad. Utilice os.urandom/secrets, derive claves con HKDF y envuélvalas con KEK. Las AEAD resistentes al uso indebido de nonces protegen frente a la reutilización accidental. Siguiente: pruebas de conocimiento cero.

Preguntas frecuentes

¿La lección «Generación segura de claves, nonces e IV» es gratis?

Sí — el texto completo de «Generación segura de claves, nonces e IV» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Generación segura de claves, nonces e IV»?

Use secrets, os.urandom y wrappers seguros en Python y Node. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Generación segura de claves, nonces e IV»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Aleatoriedad verdadera frente a pseudoaleatoriedad
  2. PRNG criptográficamente seguros
  3. Agotamiento de entropía y errores de claves débiles
  4. Generación segura de claves, nonces e IV
← Volver a Cryptology Academy