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 introducida por Bellare y Rogaway , [1] y posteriormente estandarizada 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 de trampilla segura , se demuestra que este procesamiento en el modelo de Oracle aleatorio da como resultado un esquema combinado que es semánticamente seguro bajo el ataque de texto plano elegido (IND-CPA) . Cuando se implementa con ciertas permutaciones de trampilla (por ejemplo, RSA), OAEP también demuestra ser seguro contra el ataque 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. Agregue un elemento de aleatoriedad que pueda 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 filtración de información) garantizando que un adversario no pueda recuperar ninguna parte del texto sin formato sin poder invertir la permutación unidireccional de la trampilla .

La versión original de OAEP (Bellare/Rogaway, 1994) mostró una forma de " conocimiento de texto sin formato " (que, según afirmaron, implica seguridad contra ataques de texto cifrado elegidos ) en el modelo de Oracle aleatorio cuando se utiliza OAEP con cualquier permutación de trampilla. Los resultados posteriores contradijeron esta afirmación y mostraron que OAEP solo era seguro para IND-CCA1 . Sin embargo, se demostró en el modelo aleatorio de Oracle que el esquema original es seguro IND-CCA2 cuando se usa 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] Un trabajo más reciente ha 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 dureza 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 la etiqueta L usando 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 bytes de longitud.
  4. Genere 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. Enmascare 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. Enmascare 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 seguidos en el algoritmo de codificación:

  1. Hash la etiqueta L usando la función hash elegida:
  2. Para revertir el paso 9, divida el mensaje codificado EM en el byte 0x00, MaskedSeed (con longitud hLen ) y MaskedDB :
  3. Genere la seedMask que se usó 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. Comprueba eso:
      • 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 no se cumple alguna de estas condiciones, entonces el relleno no es válido.

Uso en RSA: el mensaje codificado se puede cifrar con RSA. La propiedad determinista de RSA ahora se evita mediante el uso de la codificación OAEP porque la semilla se genera aleatoriamente e influye en todo el mensaje codificado.

Seguridad

La seguridad de " todo o nada " proviene del hecho de que para recuperar M , uno debe recuperar toda la base de datos enmascarada y toda la semilla enmascarada ; Se requiere MaskedDB para recuperar la semilla de MaskedSeed , y se requiere la semilla para recuperar el bloque de datos DB de MaskedDB . Dado que cualquier bit modificado de un hash criptográfico cambia completamente el resultado, tanto el maskedDB completo como el maskedSeed completo deben recuperarse por completo.

Implementación

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

Ver también

Referencias

  1. ^ M. Bellare , P. Rogaway . Cifrado asimétrico óptimo: cómo cifrar con RSA . Resumen ampliado en Avances en criptología: actas de Eurocrypt '94, notas de conferencias sobre informática, vol. 950, A. De Santis ed, Springer-Verlag , 1995. versión completa (pdf)
  2. ^ Eiichiro Fujisaki, Tatsuaki Okamoto, David Pointcheval y Jacques Stern . RSA-- La OAEP está segura bajo el supuesto RSA . En J. Kilian, ed., Avances en criptología - CRYPTO 2001, vol. 2139 de Lecture Notes in Computer Science, SpringerVerlag, 2001. versión completa (pdf)
  3. ^ Víctor Shoup. "OAEP reconsiderada" . Laboratorio de investigación de IBM Zurich, Saumerstr. 4, 8803 Rüschlikon, Suiza. 18 de septiembre de 2001. versión completa (pdf)
  4. ^ P. Paillier y J. Villar, Comercio unidireccional contra la seguridad del texto cifrado elegido en el cifrado basado en factoring , 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. seg. 7.1.1. doi : 10.17487/RFC8017 . RFC 8017 . Consultado el 4 de junio de 2022 .
  7. ^ Marrón, Daniel RL (2006). "¿Qué hashes hacen que RSA-OAEP sea seguro?" (PDF) . Archivo ePrint de criptología IACR . Consultado el 3 de abril de 2019 .