La Sección 4.1 de RFC 5280 define el contenido de un Certificado x509. Específicamente, se enumeran dos campos ( signatureAlgorithm
y signature
) y se definen para contener la misma información: 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 -~->
Más adelante, en la Sección 4.1.1.2 , signatureAlgorithm
se define como:
4.1.1.2. signatureAlgorithm
El campo signatureAlgorithm contiene el identificador del algoritmo criptográfico utilizado por la CA para firmar este certificado. ... Este campo DEBE contener el mismo identificador de algoritmo que el campo de firma en la secuencia tbsCertificate (Sección 4.1.2.3).
Y en Sección 4.1.2.3 , signature
se define como:
4.1.2.3. Firma
Este campo contiene el identificador de algoritmo para el algoritmo utilizado por la CA para firmar el certificado.
Este campo DEBE contener el mismo identificador de algoritmo que el campo SignatureAlgorithm en el certificado de secuencia (Sección 4.1.1.2).
Mi pregunta es: ¿Por qué la misma información debe aparecer dos veces?
Podría entender que deseo incluir el algoritmo de hash y el método de generación de firmas en la sección Datos del certificado para que se incluya con la verificación de firmas y, por lo tanto, no sea susceptible de cambios.
Pero si ese es el caso, ¿por qué mencionarlo nuevamente entre las secciones de Datos del certificado y Firma?
Me topé con otras preguntas que parecen preguntar lo mismo, pero no encontré una respuesta que hablara específicamente con por qué está en la lista dos veces. Solo que debe estar listado dos veces.