PKCS (Public Key Cryptography Standards)
Los Estándares Criptográficos de Clave Pública
(traducción literal de la denominación PKCS) son un intento por
parte de RSA Data Security, Inc. para proporcionar una norma para la
industria que permita una interfaz estándar con la criptografía
de clave pública. A diferencia de otros estándares, respaladados
por organismos internacionales, se trata de una norma ad hoc creada por una
única empresa. Aunque muchas empresas han participado en el desarrollo
de estos estándares, RSA se reserva la última palabra en su
promulgación y revisión.
Aunque no son realmente estándares, como ya he señalado, son una
aproximación como otra cualquiera al mundo de la criptografía,
con la ventaja de que multiples fabricantes los soportan. En la actualidad se
trata de diez normas:
- PKCS#1 (RSA Encryption Standard) describe un
método para la utilización del algoritmo RSA. Su propósito
es producir firmas digitales de mensajes y "envoltorios digitales"
(mensajes cifrados) utilizando la sintaxis definida en el estándar
PKCS#7. Las firmas digitales se producen aplicando una
función de hash al mensaje y cifrando la huella digital resultante
con la clave privada del firmante. El mensaje y su firma digital se representan
tal como indica PKCS#7. Para conseguir los envoltorios
digitales, el mensaje se cifra primero con una clave simétrica y,
después, se cifra dicha clave con la clave pública del
destinatario del mensaje. Ambos componentes (sobre y clave cifrada) se
representan juntos según PKCS#7. También describe
una sintaxis, idéntica a X.509 para las claves públicas y privadas
y tres algoritmos de firmado digital (MD2 y RSA, MD4 y RSA y MD5 y RSA).
- PKCS#2 y PKCS#4 han sido incorporadas a PKCS#1.
- PKCS#3 (Diffie-Hellman Key-Agreement Standard)
describe un método para implementar el intercambio de claves
Diffie-Hellman.
- PKCS#5 (Password-Based Encryption Standard)
describe un método para cifrar mensajes con una clave secreta derivada
de una frase de paso. Su objetivo primario es permitir la transmisión
cifrada de claves privadas entre dos ordenadores, como se describe en el
PKCS#8, aunque puede ser usada para cifrar mensajes. Emplea
MD2 o MD5 para producir una clave a partir de una frase de paso. Esta clave se
utiliza para cifrar con DES (en modo CBC) el mensaje en cuestión.
- PKCS#6 (Extended-Certificate Syntax Standard)
describe una sintaxis para "certificados extendidos", entendiendo por
tales un superconjunto de X.509, de modo que se pueden extraer certificados
X.509 de estos certificados. Se incluyen atributos adicionales como puede ser
la dirección electrónica. Una lista no exhaustiva de tales
atributos se define en PKCS#9.
- PKSC#7 (Cryptographic Message Syntax Standard)
es una sintaxis general para datos que pueden tener alguna operación
criptográfica asociada, ya sea cifrado ("envoltorios
digitales") o firmado (firmas digitales). La sintaxis es recursiva, de
modo que se pueden anidar envoltorios digitales o cifrar datos cifrados
previamente. También se permiten atributos adicionales, como marcas
temporales (time stamps)... Una forma límite de utilización
de esta sintaxis proporciona un método para distribuir certificados o
listas de revocación de certificados. En este sentido, PKCS#7 es
compatible con varias arquitecturas de gestión de claves basadas en
certificados.
- PKCS#8
(Private-Key Information Syntax Standard) describe una sintaxis para la
información de la clave privada, la cual incluye una clave privada y una
serie de atributos, y una sintaxis para claves privadas cifradas (un algoritmo
de cifrado basado en palabras de paso, como el descrito en el
PKCS#5, podría ser usado para cifrar la
información de clave privada). Una lista parcial de atributos puede
encontrarse en PKCS#9.
- PKCS#9 (Selected Attribute Types) define
algunos atributos para su uso en los certificados extendidos del
PKCS#6, los mensajes firmados digitalmente de
PKCS#7, la información de clave privada de
PKCS#8 y para las peticiones de firmado de certificados
definidas en PKCS#10.
- PKCS#10
(Certification Request Syntax Standard) describe una sintaxis para las
peticiones de certificados. Una petición de certificados consiste en un
nombre distinguido (distinguished name), una clave pública y una
serie de atributos opcionales (parcialmente definidas en
PKCS#9), todo ello firmado colectivamente con la clave privada
de la persona que hace la petición. Las peticiones se envía a una
Autoridad de Certificación, la cual transforma la petición en un
certificado X.509 v.3 o en un certificado extendido (PKCS#6).
Las autoridades de certificación pueden precisar procedimientos de
petición no electrónicos y responder no electrónicamente.
Estos procedimientos son específicos de cada autoridad y están
fuera del estándar.
- PKCS#11
(Cryptographic Token Interface Standard) especifica una interfaz de
programación llamada Cryptoki para su uso con dispositivos
criptográficos de cualquier tipo (conocidos como tokens, tarjetas
generalmente). Cryptoki tiene un enfoque basado en objetos permitiendo
que aplicaciones realicen operaciones criptográficas sin conocer los
detalles de la tecnología de los dispositivos. También define
conjuntos de algoritmos que el token puede soportar.
- PKCS#12
(Personal Information Exchange Syntax Standard) describe la sintaxis
para almacenar en software las claves públicas de un usuario,
proteger sus claves privadas, certificados y cualquier otra información
de relevancia criptográfica. Su propósito es permitir el uso de
un único fichero de claves accesible por cualquier aplicación.
- PKCS#13
(Elliptic Curve Cryptography Standard) describe, de modo similar a como
lo hace PKCS#1, un método para la utilización de
algoritmos de curva elíptica. Describe la generación y
validación de parámetros, la generación y
validación de claves, el procedimiento de firmado y de cifrado...
- PKCS#15 (Smart Card File Format). Este
PKCS, aún en borrador, surge para cubrir ciertos aspectos no
contemplados por PKCS#11. Para ello, trata de uniformizar la
estructura de directorios y ficheros de las tarjetas inteligentes, el contenido
de ciertos ficheros (como el de certificados) y el modo de acceder a ellos, de
modo que se asegure la interoperabilidad entre aplicaciones, de modo que no
dependan de la tarjeta instalada.
Referencias en línea y enlaces
Modificado por última vez el 24 de octubre de 1998.