Chiave privata per PEM

5

Sono nuovo alla sicurezza e sto cercando di decodificare alcune comunicazioni crittografate SSL tra il mio computer e il mio server. Sono riuscito a ottenere chiavi private e pubbliche per quanto ne capisco, la chiave privata è questa:

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

[private key content]

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

Tuttavia, Wireshark richiede che la chiave sia in formato .pem per decodificare la comunicazione, posso in qualche modo convertire le mie chiavi in questo formato? Se no, allora come l'applicazione che usa questi pacchetti li decodifica?

    
posta blaz11 21.09.2015 - 23:19
fonte

2 risposte

5

Il "formato .PEM" in realtà non esiste come standard. Questo è più "qualunque sia OpenSSL".

Il PEM deriva da un vecchio standard fallito per Privacy Enhanced Mail (questo è ciò che l'acronimo significa). In questi giorni, "PEM" significa davvero: un testo che assomiglia a:

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

vale a dire. una riga di intestazione che inizia con ----- e contiene la designazione del tipo di dati (ad esempio "RSA PRIVATE KEY"); una linea di rimorchi simile; e tra queste due linee, un oggetto binario codificato in Base64 .

Per le chiavi private RSA, troverai principalmente due tipi di formati codificati PEM. Quando l'intestazione contiene "BEGIN RSA PRIVATE KEY", questa è una chiave privata RSA nel formato descritto da PKCS # 1 . Quando l'intestazione dice "BEGIN PRIVATE KEY" (senza "RSA") utilizza quindi PKCS # 8 , un formato di wrapper che include la designazione del tipo di chiave ("RSA") e la chiave privata stessa.

Nel tuo caso, se vedi qualcosa che sembra PEM e inizia con -----BEGIN RSA PRIVATE KEY----- allora è PEM; mettilo in un file di testo, salvalo sotto un nome (ad esempio "serverkey.pem") e configura Wireshark per usare quel file come chiave del server. Questo è descritto nella documentazione di Wireshark .

Attenzione ad alcuni dettagli, però:

  • Wireshark probabilmente non sarà in grado di leggere il file se è codificato in UTF-16 (ciò che Windows in qualche modo impropriamente chiama "Unicode"). In UTF-16, ogni carattere è codificato su due byte (o quattro byte per alcuni caratteri come Pahawh Hmong ). Se stai utilizzando il blocco note di Windows, al salvataggio del file, scegli la codifica "ANSI" o "UTF-8".

  • Conoscere la chiave privata del server non è sufficiente per decodificare i dati se il client e il server utilizzano una suite di crittografia "DHE" o "ECDHE". Se il client e il server accettano di utilizzare tale suite di crittografia e si desidera comunque intercettare i dati, è necessario effettuare un attacco attivo (a Man-in-the-Middle ) in cui impersonate il server quando si parla con il client e il client quando si parla al server. Questo è molto più lavoro e Wireshark non ti aiuterà molto.

risposta data 22.09.2015 - 16:04
fonte
2

Crea semplicemente un file con estensione ".pem" e prova ad usarlo.

Secondo questa pagina , la chiave privata è memorizzata in un file PEM come hai descritto:

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

[code in whatever format it may be]

-----END RSA PRIVATE KEY-----
    
risposta data 22.09.2015 - 15:31
fonte

Leggi altre domande sui tag