stringtranslate.com

Relleno de cifrado asimétrico óptimo

En criptografía , el relleno de cifrado asimétrico óptimo ( OAEP ) es un esquema de relleno que se utiliza a menudo junto con el cifrado RSA . OAEP fue introducido por Bellare y Rogaway [1] y posteriormente estandarizado en PKCS#1 v2 y RFC 2437.

El algoritmo OAEP es una forma de red Feistel que utiliza un par de oráculos aleatorios G y H para procesar el texto sin formato antes del cifrado asimétrico . Cuando se combina con cualquier permutación unidireccional segura de puerta trampa , se demuestra en el modelo de oráculo aleatorio que este procesamiento da como resultado un esquema combinado que es semánticamente seguro ante un ataque de texto sin formato elegido (IND-CPA) . Cuando se implementa con ciertas permutaciones de puerta trampa (por ejemplo, RSA), también se demuestra que OAEP es seguro contra ataques de texto cifrado elegido . OAEP se puede utilizar para crear una transformación de todo o nada .

La OAEP satisface los dos objetivos siguientes:

  1. Añade un elemento de aleatoriedad que puede usarse para convertir un esquema de cifrado determinista (por ejemplo, RSA tradicional ) en un esquema probabilístico .
  2. Evite el descifrado parcial de textos cifrados (u otra fuga de información) al garantizar que un adversario no pueda recuperar ninguna porción del texto simple sin poder invertir la permutación unidireccional de la trampa .

La versión original de OAEP (Bellare/Rogaway, 1994) mostró una forma de " conocimiento del texto simple " (que según afirmaban implica seguridad contra ataques de texto cifrado elegido ) en el modelo de oráculo aleatorio cuando se utiliza OAEP con cualquier permutación de trampilla. Los resultados posteriores contradijeron esta afirmación, mostrando que OAEP solo era seguro IND-CCA1 . Sin embargo, se demostró que el esquema original en el modelo de oráculo aleatorio era seguro IND-CCA2 cuando se utiliza OAEP con la permutación RSA utilizando exponentes de cifrado estándar, como en el caso de RSA-OAEP. [2] Victor Shoup ofreció un esquema mejorado (llamado OAEP+) que funciona con cualquier permutación unidireccional de trampilla para resolver este problema. [3] Trabajos más recientes han demostrado que en el modelo estándar (es decir, cuando las funciones hash no se modelan como oráculos aleatorios) es imposible probar la seguridad IND-CCA2 de RSA-OAEP bajo la supuesta dificultad del problema RSA . [4] [5]

Algoritmo

Esquema de codificación OAEP según RFC 8017

En el diagrama,

Codificación

RFC 8017 [6] para PKCS#1 v2.2 especifica el esquema OAEP de la siguiente manera para la codificación:

  1. Hash de la etiqueta L utilizando la función hash elegida:
  2. Genere una cadena de relleno PS que consta de bytes con el valor 0x00.
  3. Concatene lHash , PS , el byte único 0x01 y el mensaje M para formar un bloque de datos DB :. Este bloque de datos tiene una longitud de bytes.
  4. Generar una semilla aleatoria de longitud hLen .
  5. Utilice la función de generación de máscara para generar una máscara de la longitud adecuada para el bloque de datos:
  6. Enmascarar el bloque de datos con la máscara generada:
  7. Utilice la función de generación de máscara para generar una máscara de longitud hLen para la semilla:
  8. Enmascarar la semilla con la máscara generada:
  9. El mensaje codificado (rellenado) es el byte 0x00 concatenado con maskedSeed y maskedDB :

Descodificación

La decodificación funciona invirtiendo los pasos realizados en el algoritmo de codificación:

  1. Hash de la etiqueta L utilizando la función hash elegida:
  2. Para revertir el paso 9, divida el mensaje codificado EM en el byte 0x00, el maskedSeed (con longitud hLen ) y el maskedDB :
  3. Generar la seedMask que se utilizó para enmascarar la semilla :
  4. Para revertir el paso 8, recupere la semilla con seedMask :
  5. Genere la dbMask que se utilizó para enmascarar el bloque de datos:
  6. Para revertir el paso 6, recupere el bloque de datos DB:
  7. Para revertir el paso 3, divida el bloque de datos en sus partes: .
    1. Verifique que:
      • lHash' es igual al lHash calculado
      • PS solo consta de bytes 0x00
      • PS y M están separados por el byte 0x01 y
      • El primer byte de EM es el byte 0x00.
    2. Si alguna de estas condiciones no se cumple, el relleno no es válido.

Uso en RSA: El mensaje codificado puede entonces cifrarse con RSA. La propiedad determinista de RSA ahora se evita al utilizar la codificación OAEP porque la semilla se genera aleatoriamente e influye en todo el mensaje codificado.

Seguridad

La seguridad de " todo o nada " se debe al hecho de que para recuperar M , se debe recuperar toda la maskedDB y toda la maskedSeed ; se requiere maskedDB para recuperar la semilla de maskedSeed , y la semilla es necesaria para recuperar el bloque de datos DB de maskedDB . Dado que cualquier bit modificado de un hash criptográfico cambia completamente el resultado, se deben recuperar completamente toda la maskedDB y toda la maskedSeed .

Implementación

En el estándar PKCS#1, los oráculos aleatorios son idénticos. El estándar PKCS#1 exige además que los oráculos aleatorios sean MGF1 con una función hash adecuada. [7]

Véase también

Referencias

  1. ^ M. Bellare , P. Rogaway . Optimal Asymmetric Encryption - How to encrypt with RSA ( Cifrado asimétrico óptimo: cómo cifrar con RSA) . Resumen ampliado en Advances in Cryptology – Eurocrypt '94 Proceedings, Lecture Notes in Computer Science Vol. 950, A. De Santis ed, Springer-Verlag , 1995. Versión completa (pdf)
  2. ^ Eiichiro Fujisaki, Tatsuaki Okamoto, David Pointcheval y Jacques Stern . RSA: OAEP es seguro bajo el supuesto RSA . En J. Kilian, ed., Advances in Cryptology – CRYPTO 2001, vol. 2139 de Lecture Notes in Computer Science, SpringerVerlag, 2001. Versión completa (pdf)
  3. ^ Victor Shoup. OAEP Reconsidered . IBM Zurich Research Lab, Saumerstr. 4, 8803 Ruschlikon, Suiza. 18 de septiembre de 2001. Versión completa (pdf)
  4. ^ P. Paillier y J. Villar, Intercambio de unidireccionalidad frente a seguridad de texto cifrado elegido en cifrado basado en factorización , Avances en criptología – Asiacrypt 2006.
  5. ^ D. Brown, ¿Qué hashes hacen que RSA-OAEP sea seguro?, IACR ePrint 2006/233.
  6. ^ "Operación de cifrado". PKCS #1: Especificaciones de criptografía RSA versión 2.2. IETF . Noviembre de 2016. pág. 22. sec. 7.1.1. doi : 10.17487/RFC8017 . RFC 8017 . Consultado el 4 de junio de 2022 .
  7. ^ Brown, Daniel RL (2006). "¿Qué hashes hacen que RSA-OAEP sea seguro?" (PDF) . Archivo de publicaciones electrónicas de criptología de la IACR . Consultado el 3 de abril de 2019 .