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.