2012-03-07 22 views
7

Sto cercando di risolvere il mio utilizzo delle firme digitali e della crittografia. Capisco che ci sono 2 modi principali per farlo: il modo PGP e il modo SSL.GnuPG/PGP e SSL: condivisione della stessa chiave privata?

Cosa mi piacerebbe sapere se è possibile utilizzare la stessa chiave privata per entrambi i certificati SSL e GnuPG, a condizione che questa sia una chiave RSA 2048 bit.

Ho già un certificato SSL firmato da una CA, quindi speravo di utilizzare la chiave privata del certificato come chiave privata principale GnuPG.

So che non possiamo fare asserzioni tra l'SSL e GnuPG in questo modo, ma mi piacerebbe avere una sola chiave privata (quindi solo di dover proteggere un pezzo di dati)

Grazie

+0

I certificati non sono "certificati SSL" e non hanno nulla a che fare con SSL (sebbene possano essere utilizzati in SSL, così come le chiavi OpenPGP possono). –

+0

Bello come il _idea di_ avere "solo una chiave privata per proteggere" suoni, stai davvero mettendo "il tuo unico uovo in molti cesti" per così dire (anti-ridondante): se il tuo server web viene violato, ora il tuo sacro La chiave PGP è stata eliminata! E se il tuo laptop viene rubato/incrinato, ora hai una chiave che può essere facilmente utilizzata per MITM il tuo sito web! Meglio avere separazione dei doveri. – JamesTheAwesomeDude

risposta

10

Puoi farlo, ma non è necessariamente una buona pratica.

In primo luogo, quando si dice "certificato SSL", si intende probabilmente "certificato X.509". SSL/TLS utilizza i certificati X.509 la maggior parte del tempo, ma può anche usare OpenPGP certificates (per quanto ne so, solo GnuTLS li supporta).

Nota che sto anche usando l'espressione "Certificato OpenPGP". La maggior parte delle persone li chiama "chiavi pubbliche PGP" (Open) ", ma sono in realtà dei certificati: sono la combinazione di una chiave pubblica, un identificatore e alcuni attributi, firmati da altre entità che ne attribuiscono la firma, in modo da forma il certificato generale. A rigor di termini, non è solo una chiave pubblica.

La differenza principale tra un certificato X.509 e un certificato PGP è che X.509 può avere solo una firma (quella dell'emittente), mentre è possibile aggiungere più firme su un certificato PGP. (Il modello PGP può essere utilizzato per un modello gerarchico simile a PKI, mentre il modello PKI non può essere utilizzato per gestire il modello Web-of-Trust.)

This Java code dimostra come "convertire" un set di PGP chiavi in ​​un certificato X.509 autofirmato. In linea di principio, potresti anche trasformarlo in un CSR per ottenere un certificato X.509 dalla CA. Se sia una buona idea farlo è una questione diversa.

In primo luogo, di solito è una buona idea ri-generare nuove coppie di chiavi una volta ogni tanto. In genere, questo è uno dei motivi per cui i certificati X.509 utilizzati per SSL hanno una data di scadenza (le firme PGP possono anche essere limitate nel tempo).

Si dovrebbero anche mettere tutte le uova nello stesso cesto. Se una delle chiavi viene compromessa, entrambi i certificati X.509 e PGP saranno compromessi.

Ancora più importante, it's considered bad practice to re-use the same keys for signing and encryption: utilizzarli per due diverse applicazioni (SSL/TLS e GnuPG) peggiorerebbe solo il problema.

+0

Grazie, ha senso ora. E sì, non sono davvero un esperto di sicurezza, quindi non ho ancora familiarità con tutti i termini (SSL, PGP, Key, X.509). – Pedro

+0

Solo una nota: il nostro SecureBlackbox supporta anche le chiavi OpenPGP in SSL/TLS. –

+0

Anche io sto provando questo approccio e sembra impossibile verificare che una X autofirmata.Il certificato 509 è collegato (firmato da) a una chiave OpenPGP specifica. Come lo faccio? Ecco la domanda: http://stackoverflow.com/q/19678786/1045199 –