Norma técnica
En criptografía , PKCS #1 es el primero de una familia de estándares llamados Estándares de criptografía de clave pública (PKCS) , publicados por RSA Laboratories . Proporciona las definiciones básicas y recomendaciones para implementar el algoritmo RSA para 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 la 2.2 (2012-10-27). En comparación con la 2.1 (2002-06-14), que se volvió a publicar como RFC 3447, la versión 2.2 actualiza la lista de algoritmos de hash permitidos para alinearlos con FIPS 180-4, agregando así SHA-224, SHA-512/224 y SHA-512/256.
Llaves
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, n , que es el producto de dos números primos grandes distintos , p y q , de modo que .
A partir de la versión 2.1, esta definición se generalizó para permitir claves multiprimos, donde el número de primos distintos puede ser dos o más. Cuando se trata de claves multiprimos, los factores primos generalmente se etiquetan como para algún i , de modo que:
- para
Para conveniencia de notación, y .
La clave pública RSA se representa como la tupla , donde el entero e es el exponente público.
La clave privada RSA puede tener dos representaciones. La primera forma compacta es la tupla , donde d es el exponente privado. La segunda forma tiene al menos cinco términos , o más para claves multiprimos. Aunque matemáticamente es redundante con 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]
Primitivos
La norma define varias operaciones primitivas básicas. Las operaciones primitivas proporcionan las instrucciones fundamentales para convertir las fórmulas matemáticas en algoritmos computables.
- I2OSP - Primitivo de cadena de octetos a entero: convierte un entero no negativo (potencialmente muy grande) en una secuencia de bytes (cadena de octetos).
- OS2IP - Cadena de octetos a entero primitivo: interpreta una secuencia de bytes como un entero no negativo
- RSAEP - Primitivo de cifrado RSA: cifra un mensaje utilizando una clave pública
- RSADP (primitivo de descifrado RSA): descifra texto cifrado utilizando una clave privada
- RSASP1 - Primitiva de firma RSA 1: crea una firma sobre un mensaje utilizando una clave privada
- RSAVP1 - Primitiva de verificación RSA 1: verifica que una firma sea para un mensaje utilizando una clave pública
Esquemas
Las operaciones primitivas por sí solas no necesariamente proporcionan seguridad. El concepto de un esquema criptográfico consiste en definir algoritmos de nivel superior o usos de las primitivas para lograr determinados objetivos de seguridad.
Existen dos esquemas de cifrado y descifrado:
- RSAES-PKCS1-v1_5 : esquema de cifrado/descifrado (ES) más antiguo, estandarizado por primera vez en la versión 1.5 de PKCS #1. Vulnerable.
- RSAES-OAEP : ES mejorado; basado en el esquema de relleno de cifrado asimétrico óptimo (OAEP) propuesto por Mihir Bellare y Phillip Rogaway . Recomendado para nuevas aplicaciones. [a]
También existen dos esquemas para tratar las firmas:
- RSASSA-PKCS1-v1_5 : antiguo esquema de firma con apéndice (SSA), estandarizado por primera vez en la versión 1.5 de PKCS #1. Infalsificable, según Jager et al. (2018). [2]
- RSASSA-PSS : SSA mejorado; basado en el esquema de firma probabilística (PSS) inventado originalmente por Bellare y Rogaway. Recomendado para nuevas aplicaciones.
Los dos esquemas de firma utilizan métodos de codificación definidos por separado:
- EMSA-PKCS1-v1_5 : antiguo método de codificación para apéndice de firma (EMSA), tal como se estandarizó por primera vez en la versión 1.5 de PKCS #1.
- EMSA-PSS : EMSA mejorado, basado en el esquema de firma probabilística. Recomendado para nuevas aplicaciones.
Los esquemas de firma son en realidad firmas con apéndice , lo que significa que en lugar de firmar directamente algunos datos de entrada, primero se utiliza 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 utiliza 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.
- ^ 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 fuera totalmente incompatible con RSA-OAEP en PKCS #1 versión 2.1 y versión 2.2.
Historial de versiones
- Versiones 1.1–1.3, febrero a marzo de 1991, distribución privada.
- Versión 1.4, junio de 1991, publicada para el Taller de Implementadores NIST/OSI.
- Versión 1.5, noviembre de 1993. Primera publicación pública. Republicada como RFC 2313.
- Versión 2.0, septiembre de 1998. Republicada como RFC 2437. Introdujo el esquema de cifrado RSAEP-OAEP.
- Versión 2.1, junio de 2002. Republicada como RFC 3447. Introdujo el RSA multiprime y el esquema de firma RSASSA-PSS.
- Versión 2.2, octubre de 2012. Republicado como RFC 8017.
Implementaciones
A continuación se muestra una lista de bibliotecas de criptografía que brindan soporte para PKCS#1:
Ataques
Se descubrieron múltiples ataques contra PKCS #1 v1.5, específicamente contra su esquema de relleno. [3] [4]
En 1998, Daniel Bleichenbacher publicó un artículo fundamental sobre lo que se conocería como el ataque de Bleichenbacher (también conocido como "ataque del millón de mensajes"). El ataque utiliza el relleno como un oráculo. [4] [5] 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. [3] Sin embargo, el esquema de relleno vulnerable sigue en uso y ha dado lugar a ataques posteriores:
- Bardou et al. (2012) descubrieron que varios modelos de tokens PKCS 11 aún utilizan el esquema de relleno v1.5 para RSA. Proponen una versión mejorada del ataque de Bleichenbacher que requiere menos mensajes. Como resultado de esta mejora, lograron extraer la clave secreta de varios modelos en menos de una hora. También muestran que el esquema AES-CBC es vulnerable a un ataque de oráculo de relleno diferente . [4] [6]
- Böck et al. (2018) informan que muchos servidores HTTPS modernos son vulnerables a una variante del ataque. TLS 1.2 contiene contramedidas contra Bleichenbacher, pero las soluciones alternativas no se implementan correctamente en muchos programas debido a su gran complejidad. [7]
En 2006, Bleichenbacher presentó un nuevo ataque de falsificación contra el esquema de firma RSASSA-PKCS1-v1_5. [8] Se informaron variantes de este ataque en 2008 [9] y 2014. [10] Esta clase de ataque explota una implementación defectuosa de la verificación de firma; una implementación adecuada no sería vulnerable. [2]
Véase también
Referencias
- ^ Ilmari Karonen (27 de octubre de 2017). "¿Puedo obtener una clave pública a partir de una clave privada RSA?". Stack Exchange .
- ^ ab Jager, Tibor; Kakvi, Saqib A.; May, Alexander (15 de octubre de 2018). Sobre la seguridad del esquema de firma PKCS#1 v1.5 (PDF) . Segunda Conferencia Internacional sobre Disponibilidad, Confiabilidad y Seguridad (ARES'07). págs. 1195–1208. doi :10.1145/3243734.3243798.
- ^ de Jean-Sébastien Coron, Marc Joye, David Naccache y Pascal Paillier (2000). Avances en criptología: EUROCRYPT 2000 (PDF) . Apuntes de clase sobre informática. Vol. 1807. EUROCRYPT . págs. 369–381. doi :10.1007/3-540-45539-6. ISBN . 978-3-540-67517-4.S2CID8447520 .
{{cite book}}
: CS1 maint: varios nombres: lista de autores ( enlace ) - ^ abc Romain Bardou; Riccardo Focardi; Yusuke Kawamoto; Lorenzo Simionato; Graham Steel; Joe-Kai Tsay (2012). Ataques de oráculos con relleno eficiente en hardware criptográfico. Rr-7944 (informe). INRIA . pág. 19.
- ^ RFC 3218 – Prevención del ataque de un millón de mensajes en la sintaxis de los mensajes criptográficos
- ^ Green, Matthew (21 de junio de 2012). "Un par de años malos para la industria de tokens criptográficos". Algunas reflexiones sobre ingeniería criptográfica .
- ^ Hanno Böck; Juraj Somorovsky; Craig Young. "Ataque ROBOT: el regreso de la amenaza Oracle de Bleichenbacher" . Consultado el 27 de febrero de 2018 .
- ^ Tetsuya Izu; Masahiko Takenaka; Takeshi Shimoyama (abril de 2007). "Análisis del ataque de falsificación de Bleichenbacher". Segunda Conferencia Internacional sobre Disponibilidad, Confiabilidad y Seguridad (ARES'07) . IEEE . pp. 1167–1174. doi :10.1109/ARES.2007.38. ISBN . 978-0-7695-2775-8. Número de identificación del sujeto 2459509.
- ^ Kuhn, Ulrich; Pyshkin, Andrei; Tews, Erik; Weinmann, Ralf-Philipp (2008): Variantes del ataque de bajo exponente de Bleichenbacher a firmas RSA PKCS#1. SICHERHEIT 2008 – Sicherheit, Schutz und Zuverlässigkeit. Beiträge der 4. Jahrestagung des Fachbereichs Sicherheit der Gesellschaft für Informatik eV (GI). Bonn: Gesellschaft für Informatik e. V.. PISSN 1617-5468. ISBN 978-3-88579-222-2 . págs. 97-109. Artículos de investigación periódicos. Sarrebruck. 2.- 4. Abril 2008
- ^ "Investigación avanzada sobre amenazas | Intel Security". 1 de abril de 2015. Archivado desde el original el 1 de abril de 2015.
Enlaces externos
- 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 el 4 de abril de 2004)