Informazioni sulla firma del certificato SSL

10

Sto cercando di capire come funzionano il certificato SSL e la firma e la catena della fiducia.

Conosco root CAs e sono utilizzati per firmare intermediate CAs che firma i certificati finali rilasciati a un sito web. Capisco anche come funziona la catena di trust e che poiché un certificato firmato per X.com è firmato dal certificato intermedio che lo ha emesso che è firmato dalla CA radice, posso essere certo che mi sto connettendo a X.com .

La mia domanda è: quanto dura questa catena? Non posso usare X.com per firmare un certificato per un altro dominio, ad esempio Y.com . Se no, perché no? Se sì, non vedo lo scopo della firma.

    
posta AnonSmith 15.07.2013 - 05:24
fonte

5 risposte

8

Per essere accettato come emittente per altri certificati, un certificato CA deve essere contrassegnato come tale: deve contenere un Basic Constraints estensione con il flag cA impostato su TRUE . Se un client (ad esempio un browser Web) vede una catena di certificati server presunta, con il certificato "X.com", non contrassegnato come CA, utilizzato come CA intermedio, il client rifiuterà la catena, in applicazione dello standard Algoritmo di convalida dei certificati, in sezione 6.1.4 , passaggio (k):

  (k)  If certificate i is a version 3 certificate, verify that the
       basicConstraints extension is present and that cA is set to
       TRUE.  (If certificate i is a version 1 or version 2
       certificate, then the application MUST either verify that
       certificate i is a CA certificate through out-of-band means
       or reject the certificate.  Conforming implementations may
       choose to reject all version 1 and version 2 intermediate
       certificates.)

Nota i commenti sui certificati "versione 1" e "versione 2". I certificati X.509 moderni sono "versione 3" (il loro campo version contiene 2, non 0 o 1). Le versioni precedenti per il formato X.509 non avevano spazio per le estensioni, quindi nessuna Basic Constraints . La vistosa vulnerabilità che temevate, con qualsiasi proprietario di certificati che potesse fungere da CA, era, invero, evidente. Ma ci sono voluti diversi anni prima che la gente raggiungesse.

Fortunatamente, tutte le attuali implementazioni di SSL considerano i certificati v1 e v2 come "decisamente non CA", proprio come i certificati v3 privi di un'estensione Basic Constraints .

Allo stesso modo, Internet Explorer, fino a circa il 2003 (se non ricordo male), non ha controllato il cA flag ... ed è stato davvero un problema serio, che è stato prontamente risolto quando scoperto. Dice molto di X.509 che nessuno lo ha mai testato per un po 'di tempo, perché IE aveva già il supporto SSL nel 1996 e i certificati v3 erano standardizzati all'inizio del 1999 (quindi, come è tipico per Web thing, erano già stati distribuiti in quel momento e lo standard era più una documentazione della pratica esistente che altro).

Per quanto riguarda la tua domanda specifica: quanto tempo estende questa catena? Non esiste un limite intrinseco, nello standard X.509, sulla lunghezza della catena, purché tutti i certificati della catena siano debitamente contrassegnati come CA (tranne forse l'ultimo) e abbiano le firme appropriate e tutti i campi nei certificati corrispondano come loro dovrebbero. Tuttavia, la certificazione è delega di fiducia e si fida molto del molto veloce quando delegato troppo. Pertanto, catene eccessivamente lunghe sono una strong indicazione che l'intero processo PKI è andato male.

Inoltre, le catene lunghe possono raggiungere limiti interni in alcune implementazioni. La costruzione di catene (l'operazione che prepara potenziali catene da convalidare) può diventare costosa (con certificati appositamente predisposti, può avere un costo fattoriale per una determinata lunghezza della catena), quindi le implementazioni devono includere un meccanismo di spesso è una lunghezza interna della catena massima. Catene praticamente incontrate hanno lunghezza da 2 a 4 certificati (vale a dire una radice, tre CA intermedie al massimo e quindi il certificato dell'entità finale). Il mio codice tende a rifiutare catene oltre gli 8 certificati e questo limite arbitrario non è mai stato, secondo la mia esperienza, un problema.

    
risposta data 25.07.2013 - 22:59
fonte
4

Quando una CA radice firma un certificato per una CA intermedia, il certificato firmato ha un set di campi speciali (in particolare, un flag di autorità di certificazione nell'estensione dei vincoli di base ), che lo designa come certificato CA. I certificati firmati per i domini, come si otterrebbero dalla CA, non dispongono di questo set di campi, pertanto il browser non li considererà per la catena di certificati attendibili nella CA radice.

    
risposta data 15.07.2013 - 07:04
fonte
1

How long does this chain extend?

Non esiste un limite specifico, ma i client (browser, programmi di posta elettronica, ecc.) potrebbero avere un limite interno sul numero di hop che sono disposti a seguire.

Can't I use X.com to sign a certificate for another domain, say Y.com. If no, why not? If yes, I don't see the purpose of signing.

No, poiché il certificato di X.com non è contrassegnato come certificato di firma.

O meglio: sì, potresti , la tecnologia sottostante non ti impedisce di farlo. Ma i browser sono programmati per verificare il vincolo di base CA: true per tutti i certificati di firma e intermedi e non si fideranno della firma se ciò non è vero.

Convincere una CA a firmare un certificato intermedio per te non è un'impresa da poco, dal momento che sta puntando la propria reputazione sull'affermazione che non firmerai nulla che non dovrebbe essere firmato. Non una piccola garanzia.

    
risposta data 26.07.2013 - 02:39
fonte
1

Sfortunatamente, X.com non può firmare Y.com per motivi di sicurezza. Prendi il seguente esempio:

  1. Mallory sta cercando di eseguire un attacco MITM su Alice e Bob. Possiede un certificato valido firmato da Verisign per Z.com.
  2. Alice invia il certificato valido per X.com a Bob, firmato da Verisign.
  3. Mallory intercetta quella connessione, firma un certificato per X.com con il suo certificato per Z.com e lo invia a bob.
  4. Ora Mallory può decrittografare tutti i dati provenienti da Bob perché ha la chiave privata per il certificato che ha inviato, firmato da Z.com.
risposta data 20.11.2014 - 05:01
fonte
0

Rispondendo direttamente alla tua domanda, NO. Nel tuo caso specifico la catena non si estenderà. Per convalidare un determinato certificato, il browser deve verificare la firma della CA sul certificato. Questo viene fatto utilizzando la chiave pubblica (certificato digitale) della CA. I browser vengono forniti con questi certificati CA già installati (è possibile installare manualmente un certificato in un browser)

Se si utilizza il certificato di X.com per firmare un certificato per un altro dominio Y.com , i browser non saranno in grado di convalidare il certificato poiché non si trova nell'elenco delle CA attendibili e verrà generato un avviso di sicurezza.

Fondamentalmente i certificati vengono utilizzati per verificare l'autenticità del server. Questo è necessario per prevenire attacchi MITM. In caso contrario, un utente malintenzionato potrebbe affermare di essere il vero server e il browser invierà felicemente messaggi crittografati con la chiave privata dell'aggressore. Pertanto, solo i certificati firmati da CA attendibili sono considerati affidabili dal browser.

    
risposta data 15.07.2013 - 06:22
fonte

Leggi altre domande sui tag