0Pricing
Cryptology Academy · Lección

OAEP: padding óptimo para cifrado asimétrico

Recorra la codificación OAEP y descubra cómo consigue seguridad IND-CCA2.

OAEP: padding óptimo para cifrado asimétrico es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 3 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.

Bienvenida

OAEP (Optimal Asymmetric Encryption Padding) proporciona cifrado RSA con seguridad IND-CCA2 demostrable. Utiliza una codificación aleatoria que hace que las consultas al oráculo carezcan de valor criptográfico.

Objetivos de OAEP

OAEP fue diseñado por Bellare y Rogaway (1994) con dos objetivos: (1) prevenir todos los ataques contra el RSA de libro de texto mediante aleatorización y (2) alcanzar seguridad IND-CCA2 con una prueba formal de seguridad en el modelo del oráculo aleatorio.

Entradas de OAEP

M: mensaje que se cifrará (|M| ≤ |n| - 2*hLen - 2 bytes) L: etiqueta opcional (normalmente vacía) MGF: Mask Generation Function (basada en SHA-256) r: semilla aleatoria (hLen bytes)

Paso 1 de la codificación OAEP: bloque de datos

DB = lHash || PS || 0x01 || M donde: - lHash = Hash(L) (hash de la etiqueta) - PS = bytes cero que completan hasta alcanzar una longitud fija - 0x01 marca el inicio del mensaje

Paso 2 de la codificación OAEP: enmascaramiento

maskedDB = DB XOR MGF(r, len(DB)) maskedSeed = r XOR MGF(maskedDB, hLen) EM = 0x00 || maskedSeed || maskedDB Este es el mensaje con padding que se proporciona al cifrado RSA.

MGF1: Mask Generation Function

MGF1(Z, L) = Hash(Z || 0x00000000) || Hash(Z || 0x00000001) || ... MGF1 con SHA-256 genera una salida pseudoaleatoria de longitud arbitraria a partir de una semilla. Se utiliza en OAEP y RSA-PSS.

Descodificación OAEP

Dado EM: 1. Divida EM en maskedSeed y maskedDB 2. r = maskedSeed XOR MGF(maskedDB, hLen) 3. DB = maskedDB XOR MGF(r, len(DB)) 4. Verifique que lHash coincida; busque el separador 0x01; extraiga M 5. Cualquier error → el descifrado falla (siempre se devuelve el mismo error)

Por qué OAEP derrota los ataques de oráculo

La semilla aleatoria r de OAEP cambia con cada cifrado. Con una probabilidad abrumadora, un texto cifrado modificado se descifra como un mensaje con padding uniformemente aleatorio. El oráculo ve «no válido» en todas las modificaciones.

Seguridad IND-CCA2

IND-CCA2 (Indistinguishability under Chosen-Ciphertext Attack 2, indistinguibilidad bajo el ataque de texto cifrado elegido 2): el atacante no puede distinguir Enc(M0) de Enc(M1), aunque tenga acceso a un oráculo de descifrado para todos los textos cifrados excepto el texto cifrado de prueba. OAEP proporciona esta propiedad.

OAEP frente a v1.5 en la práctica

Biblioteca cryptography de Python: utilice padding.OAEP(), no padding.PKCS1v15(). En Java, utilice el cifrador 'RSA/ECB/OAEPWithSHA-256AndMGF1Padding'. Nunca utilice 'RSA/ECB/PKCS1Padding' en código nuevo.

Tamaño máximo del mensaje con OAEP

Para RSA-2048 con SHA-256: Tamaño máximo del mensaje = 256 - 2×32 - 2 = 190 bytes La sobrecarga de OAEP es de 2×hLen + 2 bytes. Para mensajes más largos, utilice cifrado híbrido AES: cifre la clave AES con OAEP y los datos con AES-GCM.

Comprobación rápida

¿Qué propiedad hace que OAEP sea resistente a los ataques de oráculo de padding?

Recapitulación

OAEP proporciona seguridad demostrable para el cifrado RSA. A continuación, estudiaremos RSA-PSS, la mejora análoga para las firmas RSA.

Preguntas frecuentes

¿La lección «OAEP: padding óptimo para cifrado asimétrico» es gratis?

Sí — el texto completo de «OAEP: padding óptimo para cifrado asimétrico» 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 «OAEP: padding óptimo para cifrado asimétrico»?

Recorra la codificación OAEP y descubra cómo consigue seguridad IND-CCA2. 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 3 de 4.

¿Cuánto tiempo toma la lección «OAEP: padding óptimo para cifrado asimétrico»?

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. RSA de libro de texto y por qué es inseguro
  2. Padding PKCS#1 v1.5 y Bleichenbacher
  3. OAEP: padding óptimo para cifrado asimétrico
  4. RSA-PSS para firmas digitales
← Volver a Cryptology Academy