¿Por qué el algoritmo de firma aparece dos veces en un certificado x509?

8

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.

    
pregunta Eddie 16.02.2016 - 05:46
fuente

1 respuesta

4

Creo es una protección contra cierto tipo de ataques criptográficos llamados "ataques de sustitución de algoritmos".

Por favor, eche un vistazo aquí: Atributo de protección del identificador de algoritmo de Sintaxis de mensajes criptográficos (CMS) (RFC6211) / em>

Como se explica brevemente aquí: enlace

  

En X.509      certificados, el algoritmo de firma está protegido porque es      duplicado en el campo TBSCertificate.signature con la condición      que el validador es comparar ambos campos como parte de la firma      proceso de validación.

Creo que es exactamente lo que estás buscando :)

¡Salud!

Editar : Editado para agregar el " Creo ".

Editar 2 : descubrió que la pregunta está duplicada ... De esta publicación: enlace Relacionando el campo "TBSCertificate.signature":

  

No parece haber mucho uso para este campo, aunque debe verificar que el identificador del algoritmo coincida con el de la firma en el certificado (si alguien puede falsificar la firma en el certificado, entonces también puede cambiar el carácter interno). identificador de algoritmo, es posible que esto se haya incluido debido a algún ataque oscuro donde alguien que podría convencer (roto) el algoritmo de firma A para producir el mismo valor de firma que el algoritmo (seguro) B podría cambiar el identificador de algoritmo externo, desprotegido, de B a A, pero no se pudo cambiar el identificador interno sin invalidar la firma. Lo que esto lograría no está claro).

    
respondido por el BBerastegui 22.02.2016 - 02:46
fuente

Lea otras preguntas en las etiquetas