Come viene generata una firma digitale di X.509?

1

Recentemente mi è stata posta una domanda a un colloquio di lavoro su HTTPS e ho ammesso che la mia conoscenza era confusa nell'area, ma ho comunque dato una risposta, la domanda era: come qualcuno sa che quando si connettono a un server la persona o il servizio dice chi dicono di essere? come puoi fidarti di loro? Ho risposto che ti verrà fornito un certificato dalla CA e questo contiene informazioni sul fatto che la connessione è legittima, questo non è apparentemente soddisfacente in quanto hanno spinto per ulteriori domande su come sai che sono chi dicono di essere da questo certificato? Nella mia testa pensavo di ricevere un certificato da un CA sufficiente.

La risposta che stavano cercando era la firma digitale. Di cui ho completamente dimenticato. Tuttavia, sentendomi come un completo dopo ho deciso di mettere un po 'di buchi nelle mie conoscenze e ho fatto un po' di apprendimento.

Quindi per ricapitolare (per favore sentitevi liberi di dirmi se mi manca qualcosa) la firma digitale viene creata tagliando alcuni dati sul certificato e quindi crittografandolo usando la chiave privata CA, che la persona interessata ad autenticare la validità di detto certificato genererà un hash sugli stessi dati sul certificato utilizzato nella generazione della firma, quindi utilizzerà la chiave pubblica dei certificati per decrittografare la firma digitale ottenendo l'hash e quindi confrontarli.

Ora, per Im un po 'perplesso su come si fa a dire che un client sa quale parte del certificato hash per poi confrontarlo con l'hash recuperato dall'utilizzo della chiave pubblica dei certificati sulla firma digitale. X.509 ha uno standard o ha appena cancellato tutto nel certificato? o comunicano in qualche modo come generano l'hash?

    
posta Genhain 15.11.2016 - 07:42
fonte

1 risposta

4

... which part of the certificate to hash ... Does x.509 have a standard or do they just hash everything in the certificate?

È tutto definito in RFC 5280 . Nella sezione 4.1.1.3. troverai:

4.1.1.3. signatureValue
The signatureValue field contains a digital signature computed upon the ASN.1 DER encoded tbsCertificate.

E per scoprire cosa questo tbsCertificate continua a leggere con la sezione 4.1.2:

4.1.2. TBSCertificate
The sequence TBSCertificate contains information associated with the subject of the certificate and the CA that issued it. Every TBSCertificate contains the names of the subject and issuer, a public key associated with the subject, a validity period, a version number, and a serial number; some MAY contain optional unique identifier fields.....

Il certificato stesso è quindi il tbsCertificate, il signatureAlgorithm e la firma. O in un modo più formale in pagina 116 :

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

TBSCertificate  ::=  SEQUENCE  {
     version         [0]  Version DEFAULT v1,
     serialNumber         CertificateSerialNumber,
     signature            AlgorithmIdentifier,
     issuer               Name,
     validity             Validity,
     subject              Name,
     ...
    
risposta data 15.11.2016 - 07:54
fonte