Clave privada a PEM

5

Soy nuevo en seguridad y estoy tratando de descodificar algunas comunicaciones cifradas SSL entre mi máquina y mi servidor. Logré obtener claves privadas y públicas. Hasta donde entiendo, la clave privada es esta:

-----BEGIN RSA PRIVATE KEY----- 

[private key content]

-----END RSA PRIVATE KEY-----

Sin embargo, Wireshark requiere que la clave esté en formato .pem para decodificar la comunicación. ¿Puedo convertir de alguna manera mis claves a este formato? Si no, ¿cómo la aplicación que utiliza esos paquetes los decodifica?

    
pregunta blaz11 21.09.2015 - 23:19
fuente

2 respuestas

5

El "formato .PEM" no existe realmente como estándar. Esto es más "lo que sea que haga OpenSSL".

PEM proviene de un antiguo estándar fallido para Correo con privacidad mejorada (eso es lo que significa el acrónimo). En estos días, "PEM" realmente significa: un texto que se parece a:

-----BEGIN XXX-----
[some Base64 stuff here]
-----END XXX-----

I.e. una línea de encabezado que comienza con ----- y contiene la designación del tipo de datos (por ejemplo, "CLAVE PRIVADA RSA"); una línea de remolque similar; y entre estas dos líneas, un objeto binario codificado en Base64 .

Para las claves privadas RSA, encontrará principalmente dos tipos de formatos codificados PEM. Cuando el encabezado contiene "BEGIN RSA PRIVATE KEY", se trata de una clave privada RSA en el formato descrito por PKCS # 1 . Cuando el encabezado dice "COMIENZA LA CLAVE PRIVADA" (sin el "RSA"), utiliza PKCS # 8 , un formato de envoltorio eso incluye la designación del tipo de clave ("RSA") y la propia clave privada.

En su caso, si ve algo que se parece a PEM y comienza con -----BEGIN RSA PRIVATE KEY----- , entonces es PEM; solo colóquelo en un archivo de texto, guárdelo con algún nombre (por ejemplo, "serverkey.pem") y configure Wireshark para usar ese archivo como clave de servidor. Esto se describe en la documentación de Wireshark .

Sin embargo, cuida algunos detalles:

  • Es probable que Wireshark no pueda leer el archivo si está codificado en UTF-16 (lo que Windows, de alguna manera, denomina "Unicode"). En UTF-16, cada carácter está codificado sobre dos bytes (o cuatro bytes para algunos caracteres como Pahawh Hmong ). Si está utilizando el bloc de notas de Windows, al guardar el archivo, elija la codificación "ANSI" o "UTF-8".

  • Conocer la clave privada del servidor no es suficiente para descifrar los datos si el cliente y el servidor utilizan un conjunto de cifrado "DHE" o "ECDHE". Si el cliente y el servidor aceptan usar dicho conjunto de cifrado y aún desea interceptar los datos, debe realizar un ataque activo (un Man-in-the-Middle ) en el que se hace pasar por el servidor cuando habla con el cliente, y el cliente cuando habla con el servidor. Esto es mucho más trabajo y Wireshark no te ayudará mucho allí.

respondido por el Tom Leek 22.09.2015 - 16:04
fuente
2

Simplemente cree un archivo con la extensión ".pem" e intente usarlo.

Según esta página , la clave privada se almacena en un archivo PEM como el que describiste:

-----BEGIN RSA PRIVATE KEY----- 

[code in whatever format it may be]

-----END RSA PRIVATE KEY-----
    
respondido por el feral_fenrir 22.09.2015 - 15:31
fuente

Lea otras preguntas en las etiquetas