web-dev-qa-db-fra.com

Clé privée de PEM

Je suis nouveau dans le domaine de la sécurité et j'essaie de décoder certaines communications cryptées SSL entre ma machine et mon serveur. J'ai réussi à obtenir des clés privées et publiques pour autant que je comprends la clé privée est celle-ci:

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

[private key content]

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

Cependant, Wireshark requiert que la clé soit dans .pem format pour décoder la communication, puis-je en quelque sorte convertir mes clés dans ce format? Si non, comment l'application qui utilise ces packages les décode-t-elle?

7
blaz11

Le "format .PEM" n'existe pas vraiment en standard. C'est plus "quoi qu'OpenSSL fasse".

PEM provient d'une ancienne norme défaillante pour Privacy Enhanced Mail (c'est ce que l'acronyme signifie). De nos jours, "PEM" signifie vraiment: du texte qui ressemble à:

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

C'est à dire. une ligne d'en-tête qui commence par ----- et contient la désignation du type de données (par exemple "RSA PRIVATE KEY"); une ligne de remorque similaire; et entre ces deux lignes, un objet binaire encodé en Base64 .

Pour les clés privées RSA, vous rencontrerez principalement deux types de formats codés PEM. Lorsque l'en-tête contient "BEGIN RSA PRIVATE KEY", il s'agit d'une clé privée RSA au format décrit par PKCS # 1 . Lorsque l'en-tête dit "BEGIN PRIVATE KEY" (sans le "RSA"), il utilise PKCS # 8 , un format de wrapper qui inclut la désignation du type de clé ("RSA") et la clé privée lui-même.

Dans votre cas, si vous voyez quelque chose qui ressemble à PEM et commence par -----BEGIN RSA PRIVATE KEY----- alors il est PEM; il suffit de le mettre dans un fichier texte, de l'enregistrer sous un nom (par exemple "serverkey.pem") et de configurer Wireshark pour utiliser ce fichier comme clé de serveur. Ceci est décrit dans la documentation Wireshark .

Attention cependant à certains détails:

  • Wireshark ne sera probablement pas en mesure de lire le fichier s'il est encodé en UTF-16 (ce que Windows appelle quelque peu à tort "Unicode"). En UTF-16, chaque caractère est codé sur deux octets (ou quatre octets pour certains caractères comme Pahawh Hmong ). Si vous utilisez le bloc-notes de Windows, lors de l'enregistrement du fichier, choisissez l'encodage "ANSI" ou "UTF-8".

  • Connaître la clé privée du serveur n'est pas suffisant pour décrypter les données si le client et le serveur utilisent une suite de chiffrement "DHE" ou "ECDHE". Si le client et le serveur acceptent d'utiliser une telle suite de chiffrement et que vous souhaitez toujours intercepter les données, vous devez alors lancer une attaque active (a - Man-in-the-Middle ) dans lequel vous vous faites passer pour le serveur lorsque vous parlez au client et le client lorsque vous parlez au serveur. C'est beaucoup plus de travail et Wireshark ne vous y aidera pas beaucoup.

7
Tom Leek

Créez simplement un fichier avec une extension ".pem" et essayez de l'utiliser.

Selon cela page , la clé privée est stockée dans un fichier PEM comme vous l'avez décrit:

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

[code in whatever format it may be]

-----END RSA PRIVATE KEY-----
2
feral_fenrir