Perché l'Algoritmo della firma è elencato due volte in un certificato x509?

8

Sezione 4.1 di RFC 5280 definisce il contenuto di un certificato x509. Nello specifico, vengono elencati due campi ( signatureAlgorithm e signature ) e definiti per contenere la stessa informazione: AlgorithmIdentifier :

4.1.  Basic Certificate Fields

  The X.509 v3 certificate basic syntax is as follows.

  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,
     <-~- truncated -~->

Successivamente, in Sezione 4.1.1.2 , signatureAlgorithm è definito come:

4.1.1.2. signatureAlgorithm

The signatureAlgorithm field contains the identifier for the cryptographic algorithm used by the CA to sign this certificate. ... This field MUST contain the same algorithm identifier as the signature field in the sequence tbsCertificate (Section 4.1.2.3).

E in Sezione 4.1.2.3 , signature è definito come:

4.1.2.3. Signature

This field contains the algorithm identifier for the algorithm used by the CA to sign the certificate.

This field MUST contain the same algorithm identifier as the SignatureAlgorithm field in the sequence Certificate (Section 4.1.1.2).

La mia domanda è: Perché devono essere elencate due volte le stesse informazioni?

Potrei capire di voler includere l'algoritmo di hash e il metodo di generazione di firme nella sezione Dati del certificato, in modo che venga incluso nella verifica della firma e non sia quindi suscettibile di modifiche.

Ma se questo è il caso, perché elencarlo nuovamente tra le sezioni Dati certificati e Firma?

Mi sono imbattuto in altri domande che sembrano chiedere la stessa cosa, ma non ho trovato una risposta che specificatamente parlasse a perché è elencata due volte. Solo che deve essere elencato due volte.

    
posta Eddie 16.02.2016 - 05:46
fonte

1 risposta

4

Penso che sia una protezione contro certi tipi di attacchi crittografici denominati "attacchi di sostituzione dell'algoritmo".

Dai un'occhiata qui: Attributo di protezione degli identificatori dell'algoritmo di crittografia dei messaggi (CMS) (RFC6211)

Come spiegato brevemente qui: link

In X.509 certificates, the signature algorithm is protected because it is duplicated in the TBSCertificate.signature field with the proviso that the validator is to compare both fields as part of the signature validation process.

Penso che sia esattamente quello che stai cercando:)

Ciao!

Modifica : modificato per aggiungere " I think ".

Modifica 2 : scopri che la domanda è duplicata ... Da questo post: link In relazione al campo "TBSCertificate.signature":

There doesn't seem to be much use for this field, although you should check that the algorithm identifier matches the one of the signature on the cert (if someone can forge the signature on the cert then they can also change the inner algorithm identifier, it's possible that this was included because of some obscure attack where someone who could convince (broken) signature algorithm A to produce the same signature value as (secure) algorithm B could change the outer, unprotected algorithm identifier from B to A, but couldn't change the inner identifier without invalidating the signature. What this would achieve is unclear).

    
risposta data 22.02.2016 - 02:46
fonte

Leggi altre domande sui tag