it-swarm.dev

Aggiunta del certificato autofirmato all'archivio attendibile

Ho letto dei certificati e spesso si dice che il certificato autofirmato non debba essere aggiunto all'archivio dell'autorità di fiducia e, anche se lo hai fatto, rimuoverlo immediatamente dopo l'uso.

MSDN Procedura: creare certificati temporanei da utilizzare durante lo sviluppo

Assicurarsi di eliminare eventuali certificati temporanei dell'autorità radice dalle cartelle Autorità di certificazione radice attendibili e cartelle personali facendo clic con il pulsante destro del mouse sul certificato, quindi facendo clic su Elimina.

Perché l'aggiunta di un certificato autofirmato all'archivio attendibile è considerata un rischio per la sicurezza? Come può essere sfruttato da un hacker?

Qualcuno può spiegarmi con un esempio?

12
Chandan

Immagina di voler visitare https://www.google.com .

Come puoi essere sicuro di visitare effettivamente https://www.google.com ? È possibile verificare che le informazioni fornite dal certificato SSL siano autentiche.

enter image description here

Se un utente malintenzionato esegue un attacco MITM contro di te, il browser visualizzerà un avviso sotto forma di un lucchetto rosso anziché verde.

enter image description here

Se un utente malintenzionato ha la possibilità di aggiungere un certificato autofirmato al tuo negozio di fiducia, il browser verificherà che il sito Web falso che l'utente malintenzionato sta utilizzando per attaccarti è in realtà autentico. Ciò ha evidenti implicazioni per la sicurezza in quanto non sarà possibile verificare l'autenticità di un sito Web tramite il certificato SSL.

( [~ # ~] edit [~ # ~] : Grazie @Adnan e @ D3C4FF per aver sottolineato la mia risposta originariamente non affronta la situazione del tuo aggiungendo i propri certificati di sviluppo.)

Per quanto riguarda l'aggiunta di certificati generati dall'utente a fini di sviluppo, non credo che vi siano grandi rischi per la sicurezza. Supponendo che il certificato CA radice generato sia mantenuto locale e non pubblicato da qualche parte (o meglio ancora eliminato dopo averlo finito), nessun altro sarà in grado di firmare certificati che verranno visualizzati come attendibili sul browser. Il suggerimento di Microsoft è comunque valido, inutile ingombrare il tuo archivio principale con certificati casuali che hai generato da solo. Questo potrebbe rende molto più difficile individuare un vero e proprio certificato radice dannoso aggiunto da un attaccante.

6
user10211

Certificati autofirmati

Se hai una chiave CA (privata), che è la stessa di quella del CSR che firmi, allora crei un self- certificato firmato . Se invece crei chiavi separate per l'entità di cui desideri confermare l'identità e la CA utilizzata per confermare l'identità, non è più formalmente un certificato autofirmato.

I certificati autofirmati sono utilizzati principalmente a scopo di test e quindi temporanei. Ciò può essere applicato limitando il loro periodo di validità, ma spesso non viene fatto a favore della convenienza.

Come lo fanno le CA del mondo reale

Le autorità di certificazione disporranno di una gerarchia di chiavi/certificati (comprendente la catena di certificati di cui probabilmente avete sentito parlare). Se tu o il tuo fornitore del sistema operativo scegli di affidarti a un certificato CA radice, ciò implica fiducia nei sub-CA i cui certificati sono stati firmati con la chiave CA radice.

Ciò significa che la chiave della CA principale richiede la massima sicurezza, poiché può essere utilizzata per creare un numero qualsiasi di CA secondarie che saranno considerate attendibili se qualcuno sceglie di fidarsi del certificato CA principale.

Assicurarsi di eliminare eventuali certificati temporanei dell'autorità radice dalle cartelle Autorità di certificazione radice attendibili e cartelle personali facendo clic con il pulsante destro del mouse sul certificato, quindi facendo clic su Elimina.

Ha perfettamente senso ora, se si considera che un certificato CA radice (con chiave) proprio avrà il più grande potenziale di essere abusato e creerà il più grande botto per il dollaro per un attaccante. se compromesso. Ti consigliamo di tenerli nascosti in modo sicuro a meno che tu non li stia utilizzando proprio ora per firmare un CSR Sub-CA. Quindi, rimuovili e conservane una copia per scopi di firma CSR successivi (se necessario).

Tuttavia, poiché la citazione riguarda chiaramente i "certificati temporanei dell'autorità di root", penso che l'indizio sia nascosto in temporaneo e questo è qualcosa che l'amministratore di sistema definisce per le proprie CA e sub-CA (ovvero se si intende utilizzarle in futuro o meno).

Fondamentalmente puoi considerare di eliminare un certificato/chiave della CA temporanea rendendolo non disponibile per un utente malintenzionato, in modo simile alle misure di sicurezza delle chiavi della CA radice effettive. Presuppone che questa CA temporanea non verrà utilizzata per firmare altri certificati (di sviluppo).

Quindi quella piccola parola temporanea implica un po 'più nella citazione di quanto sembri a prima vista.

Come appare in pratica

Supponiamo che tu abbia una chiave CA radice che non scade mai (sebbene nella maggior parte dei casi sarà semplicemente un periodo relativamente lungo, come 20 anni) e un certificato CA radice corrispondente. Ti consigliamo di proteggere la chiave da qualsiasi compromesso, soprattutto se il certificato è considerato affidabile da molte persone. Questo è il caso dei certificati CA radice di, diciamo, Verisign o Comodo.

La chiave CA principale verrà quindi utilizzata solo per firmare il certificato di una CA secondaria (che ha una propria chiave distinta), creando così i primi due collegamenti in una catena di certificati che il browser o Microsoft signtool e molte altre utility ti consentono di ispezionare. La chiave della CA principale non verrebbe mai utilizzata direttamente per elaborare il CSR e quindi confermare la tua identità di utente finale/sito Web/azienda.

Ogni rispettiva CA secondaria verrà di solito utilizzata solo per uno scopo particolare (ci sono campi aggiuntivi per determinati scopi, come la firma del codice) e il suo periodo di validità sarà un sottoinsieme dei certificati CA principali.

Ma questa è una differenza tra la chiave della CA principale e la chiave della CA secondaria: la chiave della CA principale può essere nascosta in modo sicuro (parlando sicurezza fisica qui) la maggior parte delle volte , a meno che non sia assolutamente necessario firmare il CSR per una nuova CA secondaria, mentre la chiave CA secondaria verrà probabilmente utilizzata su un tipo di server altamente sicuro per firmare le CSR dei clienti (quando si considera un'autorità di certificazione reale) come Verisign). Ciò significa che la CA secondaria è più a rischio della CA principale e in primo luogo perché si desidera applicare diversi livelli di sicurezza.

Il vantaggio è che, in caso di compromissione della CA secondaria, il suo certificato può essere inserito in un ARL/CRL (elenco di revoche di autorità/certificati), mentre l'inserimento del certificato CA radice in un ARL/CRL è garantito solo per motivi tecnici (ad es. usando l'hash MD5 ora compromesso, una lunghezza della chiave non considerata più sicura ...). I costi associati a uno di questi sono il fattore determinante a diversi livelli:

  • i costi per l'archiviazione sicura delle chiavi, in particolare la chiave CA principale, devono essere maggiormente protetti
  • i costi per la modifica dei certificati CA radice rispetto alla modifica dei certificati CA secondari
  • costi in caso di revoca dei certificati (sub) CA.
7
0xC0000022L

Se un cattivo ruba la chiave privata di una CA di cui il tuo computer si fida, allora sarà in grado di emettere certificati falsi per nomi di server arbitrari e il tuo computer li accetterà come autentici senza nemmeno un avvertimento. Ecco la tua ultima linea di difesa contro il falso www.google.com, www.Paypal.com e così via - benvenuto attacchi man-in-the-Middle , arrivederci al tuo conto bancario.

Questo scenario peggiore può essere evitato per fortuna (che spesso funziona bene) e proteggendo la chiave privata della tua CA personalizzata dal furto, che non è così facile come sembra, specialmente contro i colleghi, che spesso hanno un accesso fisico intermittente alla tua macchina, ad esempio quando sei fuori per una pausa caffè (con accesso fisico possono fare molte cose cattive contro di te, ma rubare un file di chiave privata è davvero particolarmente discreto e difficile da rilevare).

5
Thomas Pornin

La risposta di Terry ti dà un'ottima spiegazione di come funzionano i certificati. Proverei direttamente a rispondere alla tua domanda.

Lo scopo di disporre di certificati digitali in un browser Web è di abilitare la fiducia tra il browser e il server Web con cui si desidera comunicare. Il browser convalida il certificato inviato dal server utilizzando la convalida della firma digitale utilizzando i certificati radice preinstallati. Questo meccanismo crittografico è lì per darti la certezza che la parte con cui stai comunicando è davvero chi afferma di essere.

È possibile aggiungere la propria gerarchia di certificati a tre livelli nel browser per uso personale. Questo eviterà le pagine di avviso mostrate dai browser quando incontrano un certificato inaffidabile, ma immagina il caso in cui perdi un certificato ritenuto attendibile dal tuo browser. Un utente malintenzionato intelligente potrebbe essere in grado di eseguire un MITM di successo utilizzando il certificato rubato e poiché il tuo browser si fida del certificato, non verrà visualizzato alcun avviso durante la visita al sito Web falso che sembra legittimo.

N.B. Lo scopo di avere fiducia in base ai certificati SSL è evitare il MITM

1
Shurmajee