publikaccion @publikaccion

jueves, mayo 17, 2007

.: Tipos de formatos de Certificados

Los certificados de firmas digitales se basan en los algoritmos de firma DSA y en el algoritmo RSA para criptografía de clave pública según los algoritmos PKCS. El formato del certificado depende de la aplicación, ya que no hay unanimidad en los estándars de los formatos. Se suele disponer de claves privadas cuando nos referimos a los formatos PEM y DER. El formato por defecto para la aplicación OpenSSL es PEM. Para aplicaciones Java el formato DER suele encajar mejor con las necesidades de la aplicación en cuanto a la importación de claves privadas y certificados.

De modo genérico, los formatos PEM se suelen emplear en el mundo Unix/Linux, PKCS12 en el mundo Microsoft y el formato DER en el mundo Java.

Los archivos de certificado son objetos codificados en formato ASN-1 según el estándar DES (Data Encryption Standard). Los archivos también se pueden encriptar empleando un algoritmo CIPHER simétrico como 3 DES.

Un archivo de certificado PEM si encriptar tiene este aspecto

-----BEGIN CERTIFICATE-----
MB4CGQDUoLoCULb9LsYm5+/WN992xxbiLQlEuIsCAQM=
-----END CERTIFICATE-----


La cadena que comienza por MB4C es el objeto codificado en Base 64 y en ASN-1.

Un archivo encriptado tendrá cabeceras que describen el tipo de encriptación empleada, así como el vector de inicialización.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C814158661DC1449
AFAZFbnQNrGjZJ/ZemdVSoZa3HWujxZuvBHzHNoesxeyqqidFvnydA==
-----END RSA PRIVATE KEY-----


Las 2 cabeceras Proc-Type y DEK-Info declaran el tipo de encriptado, y la cadena que comienza por AFAZ es el objeto codificado en Base 64, encriptado y codificado en ASN-1.

Debido a que los navegadores hacen uso de aplicaciones Java, exportan o importan los certificados en formato de archivo PKCS12 (que son archivos que empaquetan las claves privadas y públicas en un sólo archivo empleando el algoritmo PKCS#12). Otras aplicaciones emplean el formato PEM de modo que las claves privadas y públicas deben estar desempaquetadas, de modo que el usuario debe recordar el formato de archivo para cada aplicación y debe proceder a la conversión entre formatos según sus necesidades.

PEM

Puede contener todas las claves privadas (RSA y DSA), las claves públicas (RSA y DSA) y los certificados (x509). Este es el formato por defecto de OpenSSL. Almacena los datos en formato DER codificado Base64, entre cabeceras ascii, de modo que es apropiado para transferencias en modo texto entre sistemas. Su extensión suele ser .pem.

DER

Puede contener todas las claves privadas, las claves públicas y los certificados. Se almacena según el formato DER ASN1. No posee cabecera - PEM es el envoltorio del texto de la cabecera de DER. Es el formato por defecto de la mayoría de navegadores web. Su extensión suele ser .der.

PKCS#12

También conocido como archivos PFX (Personal Information Exchange format). Puede contener todas las claves privadas, las claves públicas y los certificados. Se almacena en formato binario. Este formato habilita la transferencia de certificados y sus claves privadas correspondientes de un ordenador a otro o de un ordenador a un medio externo (removable media). El PKCS#12 (o Public Key Cryptography Standard #12) es un formato que es apropiado para llevar de un sitio a otro o almacenar y restaurar dicho certificado y sus claves privadas asociadas. Esto se puede hacer entre productos del mismo proveedor o incluso de proveedores distintos. Su extensión suele ser .p12.

PKCS#7

El PKCS#7 (o Public Key Cryptography Standard #7) habilita la transferencia de un certificado y todas las rutas de los certificados y sus certificaciones de un ordenador a otro, o de un ordenador a un medio externo (removable media). Los archivos PKCS#7 poseen la extensión .p7b, y son compatibles con el estándar ITU-T X.509. Este formato permite atributos como countersignatures estén asociadas con las firmas y que atributos como signing time pueden ser autentificados con contenido de mensaje.

technoratiquetas | | | | |

1 comentario:

NCR dijo...

SAbes como se crea cada uno de los tipos utilizando openssl