domingo, marzo 31, 2013

openssl: Codificaciones DER y PEM

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

No hay comentarios: