Saltar al contenido

¿Cuál es la diferencia entre el certificado X.509 y PKCS # 7?

Posterior a de una larga compilación de información pudimos solucionar esta incógnita que tienen ciertos lectores. Te regalamos la solución y nuestro deseo es servirte de mucha apoyo.

Solución:

Ha evolucionado a casi todo lo correcto, pero para agregar varios puntos y expandir la respuesta de @CoverosGene más de lo que me sentía cómodo haciendo en una edición:

X.509 define un certificado (y algunas otras cosas que no son relevantes aquí) en ASN.1, un método de estructuración de datos (¡muy!) general que tiene varias codificaciones definidas, de las cuales
DER La representación de codificación distinguida es bastante común y se usa aquí.

PEM formato, para varios tipos de datos de los cuales un certificado es solo uno, es mucho como usted dice solo datos binarios (DER) codificados en base64 (editar) dividido en líneas normalmente cada 64 caracteres (pero hay variaciones), más líneas de encabezado y final que consisten en guiones + COMIENZO o FIN + el tipo de datos, en este caso CERTIFICADO + guiones. Esas líneas parecen redundantes para un humano, pero el software las espera y, en su mayoría, las requiere. PEM (Privacy Enhanced Mail) era en realidad un estándar completo para el correo electrónico seguro que ahora se ha olvidado en su mayoría (ver más abajo) excepto por su formato de codificación.
(editar) A partir de 2015 existe RFC 7468 que describe en detalle más uso de formatos ‘PEM’ para datos criptográficos modernos.

PKCS # 7 RSA (la empresa, no el algoritmo) lo definió como un formato multipropósito para datos cifrados y / o firmados. Se entregó a IETF y se convirtió en
Sintaxis de mensajes criptográficos de CMS en RFC 2630, luego RFC 3369, luego RFC 3852, luego RFC 5652, de ahí la redacción del indicador de Windows (inetopt). “PKCS # 7” se usa a menudo para significar ambos
el RSA PKCS # 7 original y el CMS sucesor de IETF, de la misma manera que “SSL” se usa a menudo tanto para el protocolo Netscape original como para el sucesor de IETF TLS Transport Level Security.

El .p7b o .p7c El formato es un caso especial de PKCS # 7 / CMS: una estructura SignedData que no contiene “contenido” y cero SignerInfos, pero uno o más certificados (generalmente) y / o CRL (rara vez). Hace mucho tiempo cuando esto proporcionaba una forma estándar de manejar (editar) el conjunto de certificados necesarios para componer un cadena (no necesariamente en orden).

PKCS # 7 / CMS es (¿son?) También ASN.1 y, según las circunstancias, puede ser DER o BER, una codificación estrechamente relacionada con algunas diferencias menores que manejan la mayoría de los decodificadores DER.

Mientras que PKCS # 7 / CMS como cualquier objeto DER o BER poder tener formato PEM, No he visto ninguna implementación que no sea openssl(editar) es raro que los certificados. (Java CertificateFactory puede leer PKCS7 / CMS-certs-only desde DER o PEM, pero CertPath.getEncoded lo escribe solo en DER.) En contraste, los formatos DER y PEM para un solo certificado son comunes.

PKCS # 7 / CMS también se utiliza como base para S / MIME correo electrónico seguro (múltiples rfcs a partir de 5751). Básicamente, PEM codificó PKCS # 7 en texto ASCII que los sistemas de correo electrónico de la década de 1980 podían manejar fácilmente, mientras que S / MIME representa CMS como entidades MIME que están codificadas en varios formas en que los sistemas de correo electrónico modernos pueden manejar.

OpenSSL cuestiones confusas mediante la implementación, en orden: pkcs7 comando que maneja el caso certs-CRLs-only no completo PKCS # 7; a crl2pkcs7 comando que en realidad maneja CRL y certificados, pero nuevamente no el resto de PKCS # 7; a smime comando que realmente maneja tanto S / MIME como PKCS # 7 / CMS para la mayoría de los casos de mensajes encriptados y / o firmados; y un cms comando que en realidad maneja tanto S / MIME como PKCS # 7 / CMS para un conjunto más completo de casos.

Entonces, describiría las opciones como: un certificado en formato PEM o DER; un certificado (único) en un contenedor PKCS # 7 o para abreviar solo p7, y mencionar PEM solo en el raro caso que corresponda; o un cadena cert en PKCS # 7 o p7. La diferencia semántica entre un certificado único y una cadena de certificados es al menos tan importante como la diferencia de formato entre un certificado por sí mismo o en un contenedor.

Y esto ni siquiera alcanza la confusión generalizada entre un certificado en sí mismo (para alguna otra entidad, la mayoría de las veces una raíz de CA o un ancla) y la combinación de certificado PLUS de clave privada, o generalmente cadena, que usa para probar el suyo identidad, por ejemplo, como servidor SSL / TLS o al firmar un correo electrónico S / MIME. Ese utiliza el formato original de intercambio de información personal PFX de Microsoft, o su forma estandarizada PKCS # 12 o “p12”.

PKCS # 7 se puede considerar como un formato que permite agrupar varios certificados, ya sea codificados en DER o PEM, y puede incluir certificados y listas de revocación de certificados (CRL).

Según RFC2315, PKCS # 7 es

a general syntax for data that may have
cryptography applied to it, such as digital signatures and digital
envelopes. The syntax admits recursion, so that, for example, one
envelope can be nested inside another, or one party can sign some
previously enveloped digital data.

Reseñas y valoraciones de la guía

Al final de la web puedes encontrar las anotaciones de otros gestores de proyectos, tú incluso tienes la libertad de insertar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *