¿Cómo se genera una firma digital de un X.509?

1

Hace poco me hicieron una pregunta en una entrevista de trabajo sobre HTTPS y admití que mi conocimiento era confuso en el área, pero de todos modos le di una grieta, la pregunta era cómo alguien sabe que cuando se conectan a un servidor que la persona ¿O servicio dicen quienes dicen que son? ¿Cómo puedes confiar en ellos? Le respondí que se le entregará un certificado de la AC y que contiene información de que la conexión es legítima, que aparentemente no fue satisfactoria, ya que luego solicitaron más preguntas sobre cómo sabe que son quienes dicen que son de este certificado. En mi cabeza, pensé que proporcionar un certificado de la CA era suficiente.

La respuesta que buscaban era la firma digital. Que me olvidé por completo. Sin embargo, después de sentirme como un completo idiota, decidí apuntalar algunos agujeros en mi conocimiento y aprendí algo.

Para recapitular (por favor, siéntase libre de decirme si me falta algo) la firma digital se crea mediante el hashing de algunos datos en el certificado y luego lo cifra mediante la clave privada de CA, que la persona interesada en autenticar la validez de dicho certificado generará un hash en los mismos datos en el certificado utilizado en la generación de firmas, luego usará la clave pública de certificados para descifrar la firma digital que obtiene el hash y luego compararlos.

Ahora, cuando estoy un poco perplejo es cómo le permite a un cliente saber qué parte del certificado hash para luego compararlo con el hash recuperado usando la clave pública de certificados en la firma digital. ¿X.509 tiene un estándar o simplemente tiene todo en el certificado? ¿O se comunican de alguna manera sobre cómo generan el hash?

    
pregunta Genhain 15.11.2016 - 07:42
fuente

1 respuesta

4
  

... qué parte del certificado de hash ... ¿Tiene x.509 un estándar o simplemente tiene todo lo que hay en el certificado?

Todo está definido en RFC 5280 . En la sección 4.1.1.3. encontrará:

  

4.1.1.3. signatureValue
El campo signatureValue contiene una firma digital calculada en      el ASN.1 DER codificado tbsCertificate .

Y para averiguar qué es este certificado de tbs, continúe leyendo con la sección 4.1.2:

  

4.1.2. TBSCertificate
     La secuencia TBSCertificate contiene información asociada con la      sujeto del certificado y de la CA que lo emitió. Cada      TBSCertificate contiene los nombres del sujeto y del emisor, un público      clave asociada con el tema, un período de validez, un número de versión,      y un número de serie; algunos PUEDEN contener un identificador único opcional      campos .....

El certificado en sí es el certificado tbs, el algoritmo de firma y la firma. O de una manera más formal definida en página 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,
     ...
    
respondido por el Steffen Ullrich 15.11.2016 - 07:54
fuente