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?