Cosa significa per un certificato digitale essere "firmato"?

20

Quando qualcuno dice che un particolare certificato digitale (come un certificato SSL) è stato "firmato con una chiave", che cosa implica? Significa che il certificato include semplicemente una chiave che dovrebbe essere utilizzata per ulteriori scambi di messaggi? Ciò significa che il certificato stesso è crittografato e può essere decrittografato solo con quella chiave? Implica qualcos'altro? Grazie in anticipo.

    
posta zharvey 28.06.2012 - 18:39
fonte

3 risposte

20

Idealmente, significa che qualcuno ha guardato il certificato e ha deciso che è corretto e legittimo. Una volta che lo hanno fatto, vogliono dire alla gente "Ehi, ho verificato che questo certificato è buono, io mi fido ". Per fare ciò, usano la loro chiave di firma per firmare il certificato.

Ora, quando qualcuno ottiene il certificato, può vedere chi ha firmato il certificato. Se si fidano di uno dei firmatari, possono fidarsi del certificato stesso. Questa è la base di Web Of Trust in PKI .

La firma effettiva dipende probabilmente dal tipo di certificato. Penso che sia una lettura utile .

A digital certificate consists of three things:

  • A public key.
  • Certificate information. ("Identity" information about the user, such as name, user ID, and so on.)
  • One or more digital signatures.

In genere la parte "una delle altre firme digitali" viene eseguita elencando un set di hash crittografati del certificato. Quindi, quando vuoi firmare un certificato, devi calcolare l'hash del certificato, crittografarlo usando la tua chiave privata di firma e aggiungerlo all'elenco delle firme digitali.

    
risposta data 28.06.2012 - 18:47
fonte
8

Ecco la struttura di un certificato X.509 :

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

   TBSCertificate  ::=  SEQUENCE  {
        version         [0]  EXPLICIT Version DEFAULT v1,
        serialNumber         CertificateSerialNumber,
        signature            AlgorithmIdentifier,
        issuer               Name,
        validity             Validity,
        subject              Name,
        subjectPublicKeyInfo SubjectPublicKeyInfo,
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                             -- If present, version MUST be v2 or v3
        subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                             -- If present, version MUST be v2 or v3
        extensions      [3]  EXPLICIT Extensions OPTIONAL
                             -- If present, version MUST be v3
        }

I dati contenuti nel certificato stesso sono la parte TBSCertificate : lega la chiave pubblica (subjectPublicKeyInfo) a un identificatore (l'oggetto) ea varie estensioni di altri attributi.

Questo viene quindi combinato con la firma per formare una struttura Certificate . L'algoritmo della firma impone come dovrebbe essere fatto.

In sostanza, un compendio di TBSCertificate (tipicamente SHA-1) viene calcolato e quindi firmato con la chiave privata del firmatario (l'emittente in termini X.509). La minima modifica del contenuto di TBSCertificate dovrebbe rendere la modifica del digest, che a sua volta dovrebbe invalidare la firma.

Usando le chiavi RSA, la firma del digest usando la chiave privata è matematicamente molto simile a ciò che si farebbe per la crittografia usando la chiave pubblica. Questo non è lo stesso concettualmente, però, e la DSA non ha quella reciprocità, per esempio.

Il principio è lo stesso per altri tipi di certificati, sebbene la struttura possa differire. Considerando che le chiavi pubbliche PGP sono in effetti certificati, potresti essere interessato anche a queste domande:

risposta data 28.06.2012 - 19:43
fonte
4

When someone says that a particular digital certificate (like an SSL cert) has been "signed with a key", what does that imply?

Implica che l'entità proprietaria di tale chiave abbia garantito l'accuratezza delle informazioni contenute nel certificato e abbia allegato le informazioni al certificato che consentono di verificare tale verifica.

Does that mean the certificate simply includes a key that should be used for further message exchanges?

No. I certificati dimostrano solo l'identità.

Does that mean that the cert itself is encrypted and can only be decrypted with that key?

No. Non c'è motivo di crittografare i certificati, contengono solo informazioni pubbliche.

Does it imply something else?

Implica che il proprietario di quella chiave abbia garantito le informazioni nel certificato. Per un tipico certificato SSL, le informazioni nel certificato sono un vincolo tra una chiave pubblica e un nome comune.

Ad esempio, quando punti il tuo browser a https://www.amazon.com/ il server di Amazon ti invierà un certificato. Questo certificato associa una particolare chiave pubblica al nome www.amazon.com . Il tuo browser conferma tre cose per sapere che sta parlando al vero Amazon:

  1. Il server ha presentato un certificato che era valido e firmato da una chiave di cui si fidava.

  2. Il certificato vincola l'identità "www.amazon.com".

  3. Il server dimostra di possedere la chiave privata corrispondente al certificato.

Quindi lo scopo della firma del certificato è di mettere la credibilità dell'agente firmatario dietro le informazioni contenute nel certificato, che è fondamentalmente "questo tizio possiede questa chiave".

    
risposta data 28.06.2012 - 23:42
fonte

Leggi altre domande sui tag