A la hora de trabajar con openssl, podemos usar dos formatos para almacenar la información de las claves que generemos. El primero de ellos se conoce como PEM - derivado de las propuestas Privacy Enhanced Email -, un formato que codifica la información binaria en base64 - cuyo alfabeto de símbolos son todos caracteres ASCII imprimibles -. El segundo se conoce como DER, y no es más que una manera de codificar en binario estructuras expresadas a través de la notación ASN.1 - donde andarán mis apuntes de redes II ... -
La codificación PEM no es más que la información codificada en DER, transformada en base64 y con dos líneas que marcan el comienzo y el final de dichos datos en base64. Por ejemplo, un fichero con los parámetros para generar una clave DSA comienzan por -----BEGIN DSA PARAMETERS-----, en medio van las líneas codificadas en base64 y termina con -----END DSA PARAMETERS-----
A la hora de generar claves, se puede especificar el formato que se va a usar para almacenar la misma. Por defecto se usa PEM, pero puede controlarse el formato de salida y de entrada con ayuda de los parámetros -outform fmt e -inform fmt, pudiéndose respectivamente, donde fmt es PER o DER en función de la codificación que se desee usar.
Por ejemplo, si se quiere convertir una clave DSA en formato PEM a formato DER se utilizaría la orden:
openssl dsa -inform PEM -in private.pem -outform DER -out private.der
Curiosamente, aunque se puede generar los parámetros de las claves en formato DER o PEM, ni genrsa ni gendsa admiten éstos en formato DER, al menos en la versión que viene por defecto en MacOS X 10.7 "Lion". Mucho más interesante es ver como realizar estas operaciones a través de programación. Espero tener tiempo para escribir un par de entradas que sirvan de guía para programar con OpenSSL.
Technorati Tags: openssl, criptografía,cifrado