Come si produce una chiave pubblica firmata dalla CA?

Ho bisogno che qualcun altro crittografi i dati segreti con la mia chiave pubblica che posso poi decrittografare con la mia chiave privata. Ho prodotto una coppia di chiavi pubblica / privata RSA con OpenSSL, ho dato loro la chiave pubblica e ho fatto funzionare tutto.

Più recentemente, qualcuno ha sottolineato che siamo soggetti a un possibile attacco man-in-the-middle dove i cattivi accetterebbero la mia chiave pubblica e passerebbero la loro chiave pubblica dallaltra parte. Laltra parte crittografava quindi diligentemente i dati segreti, li passava al MITM che li decrittava, li crittografava di nuovo con la mia chiave pubblica prima di trasmetterli a me senza che io ne fossi più saggio. La soluzione consigliata è che la mia chiave pubblica venga firmata da una CA di cui laltra parte si fida prima di trasmetterla.

Come esperimento, ho prodotto un CSR che sono riuscito a firmare con la mia CA, ma il certificato risultante contiene anche la chiave privata (crittografata). Preferirei non passare la mia chiave segreta a nessun altro, crittografata o meno.

Esiste un modo per far firmare la mia chiave pubblica?

Commenti

  • Il certificato contiene la chiave privata? Eh? Come hai fatto a farlo? Puoi pubblicare quel file su pastebin.com? (Ripeti con una seconda coppia di chiavi in modo da non ‘ condividere loriginale.)
  • Penso di iniziare a capire. Anche se ho bisogno della chiave privata per produrre una CSR, la CSR e il certificato risultante non contengono la chiave privata. Un certificato è effettivamente una chiave pubblica firmata, che è esattamente ciò che voglio.

Risposta

Firma di una chiave pubblica è effettivamente un certificato. Questi sono i passaggi che eseguo per produrre un certificato di chiave pubblica che posso distribuire ad altri in modo che possano comunicare in modo sicuro con me:

Configurazione

  1. Genera le chiavi private:

    openssl genrsa -out private.pem 2048

  2. Genera le chiavi pubbliche:

    openssl rsa -in private.pem -outform PEM -pubout -out public.pem

  3. Crea una CSR (richiesta di firma del certificato)

    openssl req -new -key private.pem -out certificate.csr

  4. Crea un certificato autofirmato (puoi condividere questo certificato)

    openssl x509 -req -days 365 -in certificate.csr -signkey private.pem -out certificate.crt

Crittografia

openssl rsautl -encrypt -inkey private.pem -keyform PEM -in data> encrypted_data

Decrittografia

  1. Estrazione della chiave pubblica dai certificati

    openssl x509 -pubkey -noout -in certificate.crt> certpubkey.pem

  2. Decrittografa i dati

    openssl rsautl -decrypt -inkey certpubkey.pem -keyform PEM -pubin -in encrypted_data> data

Se intendi far firmare la tua chiave da una CA dovrai inviare il tuo file CSR (e un po di contanti) alla tua CA preferita, che ti darà il certificato che puoi usare al posto del certificato autofirmato I menzionato nei passaggi precedenti.

Commenti

  • Questo è un po lopposto di quello che sto chiedendo, ma lo farà ai fini della discussione. Affinché laltra parte possa decrittografare, hanno bisogno della chiave pubblica come estratta da me che è soggetta allattacco MITM o hanno bisogno dellintero certificato che include la chiave privata (crittografata)
  • @ user1683793 Il laltra estremità necessita di due certificati. Il primo dei quali dovrebbero già avere (il certificato CA autofirmato). Il secondo contiene la chiave pubblica che si desidera verificare ed è firmato con il certificato CA (utilizzando la chiave privata CA associata). La validità del secondo certificato viene verificata utilizzando la chiave pubblica nel certificato CA. Le chiavi private sono sempre mantenute private.
  • Penso che tu voglia ” -encrypt ” e ” -decrypt ” invece di ” -sign ” e ” -verify “. (Dettagli qui: czeskis.com/random/openssl-encrypt-file.html )
  • Non funzionante: 2. Decrittografare i dati non ha funzionato per me. Con: openssl rsautl -decrypt -inkey certpubkey.pem -keyform PEM -pubin -in encrypted_data > data ottengo questo errore / msg: A private key is needed for this operation
  • Sezione Setup, il passaggio 2 restituisce public.pem – non è ‘ utilizzato in altro passi. Qual è luso di quella chiave pubblica quando la CSR viene generata con chiave privata?

Risposta

Ci dovrebbero essere tre entità coinvolte nel processo:

  1. Il mittente – Tu
  2. Il destinatario – Lutente
  3. Autorità di certificazione – Terza parte fidata (o tu in alcuni casi)

Il processo che tiene le cose al sicuro è “Il mittente”, genera una coppia di chiavi (pubblica e privata). Mi piace chiamarli chiave e lucchetto per una migliore visuale. La chiave (privata) non dovrebbe mai lasciare il possesso del mittente, ecco perché viene chiamata chiave privata.

Il mittente genera quindi una richiesta di firma del certificato (CSR) con la chiave pubblica (blocco ) che viene inoltrato allautorità di certificazione (terza parte attendibile), lautorità di certificazione firma la chiave pubblica (lucchetto) con la chiave privata delle autorità di certificazione.

Lautorità di certificazione ora invia la chiave pubblica “The Senders” che è firmato dalla chiave privata delle autorità di certificazione al “Mittente”, che ora è il certificato.

Il destinatario ottiene il certificato (diciamo tramite il browser web) e verifica che sia valido con la chiave pubblica delle autorità di certificazione che hanno sia “Il mittente” che “Il destinatario” poiché sono la terza parte attendibile. Una volta verificata, la chiave pubblica nel certificato può essere considerata attendibile * come chiave pubblica “Il mittente” inalterata.

Se “Il destinatario” deve inviare dati a “Il mittente”, utilizzerà il chiave pubblica dal certificato attendibile per crittografare i dati in cypertext che viene poi trasmesso a “The Sender”. Poiché solo la chiave privata “The Sender” può decrittografare il cyphertext che è stato crittografato con la chiave pubblica “The Sender”, chiunque al centro ha essenzialmente un testo incomprensibile inutile.

In alcuni casi “Il mittente” può generare la propria autorità di certificazione firmando la propria CSR con un diverso set di chiavi o autofirmando con lo stesso set di In questo caso la chiave pubblica “Il mittente” deve essere conosciuta da entrambe le parti attraverso un canale sicuro per avere fiducia. Nel software è possibile includere un certificato nel deliverable che può essere utilizzato come terza parte fidata.

* trusted è valido solo se lautorità di certificazione mantiene un CRL (Certificate Revocation List) e tutte le parti monitorano lelenco per garantire che il certificato emesso non sia stato compromesso. Il caso in cui lautorità di certificazione è stata compromessa e la chiave privata è trapelata, esiste e quando ciò accade lagente compromettente può utilizzare la chiave privata per generare un certificato affidabile che imita “Il mittente” , in tal caso è possibile un MITM e il MITM può ricevere dati da “The Sender” decrittografati, archiviati, crittografati con un certificato valido che assomiglia a “The Sender”, quindi passarlo a “The Receiver”.

Risposta

Prendi la chiave privata crittografata dalla copia del certificato CA che hai creato (quando lo dai ad altri). La chiave privata non non è necessario che sia presente a meno che non si intenda utilizzarlo per firmare un certificato contenente un altro er chiave pubblica.

Quando si invia tramite la propria chiave pubblica, inviare invece un intero certificato (eccetto la chiave privata), firmato utilizzando la chiave privata CA associata. Per verificare la validità della chiave pubblica al suo interno, è necessario confrontare lhash del certificato con lhash crittografato (che è stato crittografato utilizzando la chiave privata della CA). Questo viene decrittografato utilizzando la chiave pubblica della CA . Se la decrittografia ha esito positivo e lhash corrisponde allhash del certificato, le informazioni allinterno del certificato possono essere considerate attendibili.

Cè anche di più oltre alla semplice crittografia, ad esempio un attacco di replay in cui un utente malintenzionato invia dati crittografati salvati in precedenza. TLS copre molto di più di quanto la persona media potrebbe pensare e limplementazione di un sistema simile è assolutamente sconsigliata. Usa TLS quando possibile per qualsiasi cosa intesa come privata.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *