De Wikipedia, la enciclopedia libre
  (Redirigido desde PKCS1 )
Saltar a navegación Saltar a búsqueda

En criptografía , PKCS # 1 es el primero de una familia de estándares denominados Estándares de criptografía de clave pública (PKCS) , publicados por RSA Laboratories . Proporciona las definiciones básicas y las recomendaciones para implementar el algoritmo RSA para la criptografía de clave pública . Define las propiedades matemáticas de las claves públicas y privadas, operaciones primitivas para cifrado y firmas, esquemas criptográficos seguros y representaciones de sintaxis ASN.1 relacionadas .

La versión actual es 2.2 (2012-10-27). En comparación con 2.1 (2002-06-14), que se volvió a publicar como RFC 3447, la versión 2.2 actualiza la lista de algoritmos hash permitidos para alinearlos con FIPS 180-4, por lo que agrega SHA-224, SHA-512/224 y SHA- 512/256.

Llaves [ editar ]

El estándar PKCS # 1 define las definiciones matemáticas y las propiedades que deben tener las claves públicas y privadas RSA. El par de claves tradicional se basa en un módulo, que es el producto de dos números primos grandes distintos , y , tal que .

A partir de la versión 2.1, esta definición se generalizó para permitir claves de primos múltiples, donde el número de primos distintos puede ser dos o más. Cuando se trata de claves de primos múltiples, los factores primos generalmente se etiquetan como para algunos , de manera que:

por

Como conveniencia de notación, y .

La clave pública RSA se representa como la tupla , donde el entero es el exponente público.

La clave privada RSA puede tener dos representaciones. La primera forma compacta es la tupla , donde es el exponente privado. La segunda forma tiene al menos cinco términos (p, q, dp, dq, qinv) o más para claves de primos múltiples. Aunque matemáticamente redundante en la forma compacta, los términos adicionales permiten ciertas optimizaciones computacionales al usar la clave. En particular, el segundo formato permite derivar la clave pública. [1]

Primitivas [ editar ]

El estándar define varias primitivas básicas. Las operaciones primitivas proporcionan las instrucciones fundamentales para convertir las fórmulas matemáticas en bruto en algoritmos computables.

  • I2OSP - Primitiva de cadena de entero a octeto - Convierte un entero no negativo (potencialmente muy grande) en una secuencia de bytes (cadena de octetos).
  • OS2IP - Primitiva de cadena de octetos a entero - Interpreta una secuencia de bytes como un entero no negativo
  • RSAEP - Primitiva de encriptación RSA - Encripta un mensaje usando una clave pública
  • RSADP - Primitiva de descifrado RSA - Descifra texto cifrado utilizando una clave privada
  • RSASP1 - Primitiva de firma RSA 1 - Crea una firma sobre un mensaje usando una clave privada
  • RSAVP1 - Primitiva de verificación RSA 1 - Verifica que una firma es para un mensaje usando una clave pública

Esquemas [ editar ]

Por sí mismas, las operaciones primitivas no proporcionan necesariamente ninguna seguridad. El concepto de un esquema criptográfico es definir algoritmos de nivel superior o usos de las primitivas para que logren ciertos objetivos de seguridad.

Hay dos esquemas de cifrado y descifrado:

Nota: Se realizó un pequeño cambio en RSAES-OAEP en PKCS # 1 versión 2.1, lo que provocó que RSAES-OAEP en PKCS # 1 versión 2.0 sea totalmente incompatible con RSA-OAEP en PKCS # 1 versión 2.1 y versión 2.2.

También hay dos esquemas para tratar con firmas:

  • RSASSA-PSS: S cheme de S ignature P robabilistic mejorado con apéndice; basado en el esquema de firma probabilística originalmente inventado por Bellare y Rogaway.
  • RSASSA PKCS1-v1_5: viejos S IRMA S cheme con A péndice como primera estandarizada en la versión 1.5 de PKCS # 1.

Los dos esquemas de firma utilizan métodos de codificación definidos por separado:

  • EMSA-PSS: método de codificación para apéndice de firma, esquema de firma probabilística.
  • EMSA-PKCS1-v1_5: método de codificación para el apéndice de firma como se estandarizó por primera vez en la versión 1.5 de PKCS # 1.

Los esquemas de firma son en realidad firmas con apéndice , lo que significa que en lugar de firmar algunos datos de entrada directamente, se usa primero una función hash para producir una representación intermedia de los datos, y luego se firma el resultado del hash. Esta técnica casi siempre se usa con RSA porque la cantidad de datos que se pueden firmar directamente es proporcional al tamaño de las claves; que casi siempre es mucho menor que la cantidad de datos que una aplicación puede querer firmar.

Historial de versiones [ editar ]

  • Versiones 1.1–1.3, de febrero a marzo de 1991, de distribución privada.
  • Versión 1.4, junio de 1991, publicada para el Taller de implementadores de NIST / OSI.
  • Versión 1.5, noviembre de 1993. Primera publicación pública. Republicado como RFC 2313.
  • Versión 2.0, septiembre de 1998. Republicado como RFC 2437.
  • Versión 2.1, junio de 2002. Republicado como RFC 3447.
  • Versión 2.2, octubre de 2012. Republicado como RFC 8017.

Implementaciones [ editar ]

A continuación se muestra una lista de bibliotecas de criptografía que brindan soporte para PKCS # 1:

Ataques [ editar ]

Se descubrieron múltiples ataques contra PKCS # 1 v1.5. [2] [3]

En 1998, Daniel Bleichenbacher publicó un artículo fundamental sobre lo que se conoció como el ataque de Bleichenbacher (también conocido como "ataque del millón de mensajes"). [3] [4] PKCS # 1 se actualizó posteriormente en la versión 2.0 y se emitieron parches para los usuarios que deseaban seguir utilizando la versión anterior del estándar. [2] Con ligeras variaciones, esta vulnerabilidad todavía existe en muchos servidores modernos. [5]

En 2006, Bleichenbacher presentó un nuevo ataque de falsificación contra el esquema de firmas RSASSA-PKCS1-v1_5. [6]

Ver también [ editar ]

  • Comparación de bibliotecas de criptografía

Referencias [ editar ]

  1. ^ Ilmari Karonen (27 de octubre de 2017). "¿Puedo obtener una clave pública de una clave privada RSA?" . Stack Exchange .
  2. ↑ a b Jean-Sébastien Coron, Marc Joye, David Naccache y Pascal Paillier (2000). Nuevos ataques al cifrado PKCS # 1 v1.5 (PDF) . Apuntes de conferencias en informática. 1807 . EUROCRYPT . págs. 369–381. doi : 10.1007 / 3-540-45539-6 . ISBN  978-3-540-67517-4. S2CID  8447520 .CS1 maint: multiple names: authors list (link)
  3. ↑ a b Romain Bardou, Riccardo Focardi, Yusuke Kawamoto, Lorenzo Simionato, Graham Steel, Joe-Kai Tsay (2012). "Ataques de Oracle de relleno eficiente en hardware criptográfico" . Rr-7944 . INRIA : 19.CS1 maint: uses authors parameter (link)
  4. ^ RFC 3218 - Prevención del ataque de millones de mensajes en la sintaxis de mensajes criptográficos 
  5. ^ Hanno Böck; Juraj Somorovsky; Craig Young. "Ataque de ROBOT: retorno de la amenaza de Oracle de Bleichenbacher" . Consultado el 27 de febrero de 2018 .
  6. ^ Tetsuya Izu, Masahiko Takenaka, Takeshi Shimoyama (abril de 2007). "Análisis del ataque de falsificación de Bleichenbacher". Segunda Conferencia Internacional sobre Disponibilidad, Fiabilidad y Seguridad (ARES'07) . IEEE . págs. 1167-1174. doi : 10.1109 / ARES.2007.38 . ISBN 978-0-7695-2775-8. S2CID  2459509 .CS1 maint: uses authors parameter (link)

Enlaces externos [ editar ]

  • RFC  8017 - PKCS # 1: Especificaciones de criptografía RSA Versión 2.2
  • PKCS # 1 v2.2: Estándar de criptografía RSA en Wayback Machine (archivado el 10 de abril de 2016)
  • Elevando el estándar para las firmas RSA: RSA-PSS en Wayback Machine (archivado 2004-04-04)