it-swarm.dev

A cosa servono i certificati di firma incrociata in X.509?

Nell'architettura X.509 quali sono gli usi dei certificati di firma incrociata di altre gerarchie?

Espande semplicemente la fiducia?


Quindi, dalla risposta, suppongo che se CA3 è firmato da CA2 (da un'altra gerarchia) e CA1 (un genitore nella propria gerarchia) la cui chiave privata viene utilizzata per crittografare l'hash di autenticazione nel certificato di CA3?

24
zcqwevb

Si tratta di espandere la fiducia, sì. Se ti fidi di CA1 e CA2 e un certificato è firmato da entrambi, hai un livello di affidabilità molto elevato perché due entità marine di cui ti fidi hanno verificato il certificato.

Ha il vantaggio aggiuntivo di aumentare la facilità di verifica della fiducia, come le situazioni in cui hai clienti che si fidano di CA1 o CA2 (ma non di entrambi). In tal caso, è possibile firmare in modo incrociato un certificato di cui entrambi sono attendibili. Ciò consente a più clienti di verificare la fiducia senza dover distribuire certificati separati per CA diverse.

Un altro vantaggio è nelle situazioni in cui la chiave privata di una CA è trapelata. Diciamo che le perdite di chiave di CA1 e il tuo certificato è firmato da CA1 e CA2. Sulla scia della perdita, CA1 emette una revoca per la sua chiave pubblica e non puoi più fidarti di nulla emesso da CA1. Tuttavia, poiché il tuo certificato è firmato anche su CA2, qualsiasi client che si fida di CA2 può comunque mantenere un livello di fiducia nel tuo certificato.

29
Polynomial

Le specifiche X.509 supportano solo una firma. Dalla RFC che li riguarda:

   Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }

Per supportare più signatureValue dovresti fare qualcosa come "signatureValue SEQUENCE OF BIT STRING" e apportare anche alcune altre modifiche.

Se hai un certificato X.509 che è stato firmato da più CA, mi piacerebbe vederlo e fare un po 'di più su di esso!

9
compcert

Lo schema Let's Encrypt utilizzato non richiede due firme in un singolo certificato. A quanto ho capito, sembra così:

Questa radice CA.

  • Cert intermedio A (chiave pubblica X, firmata da CA Root)

Root altro CA.

  • Intermediate Cert A (Chiave pubblica X (stessa!), Firmata da Root Other-CA)

In questo caso ci sono due istanze dello stesso certificato intermedio A: una firmata dalla propria CA Root, l'altra firmata da Other-CA. Hanno la stessa chiave RSA e tutti i campi uguali, tranne per la firma (una firma per ogni istanza di CA intermedia). Il client (come il browser) viene servito con una catena di certificati che ha solo un'istanza di certificato intermedio, non entrambi, e porta a una delle due radici. Questo potrebbe essere l'unico modo compatibile per "cross-sign".

1
Myke B