Primero, aquí está mi interpretación del proceso de validación del certificado (si se equivoca, siéntete más libre de corregirme).
Al conectarse a un sitio web mediante https, el sitio web presenta un certificado SSL al navegador. Se utiliza para autenticar el sitio web. El navegador debe tener una forma de decidir si confiar en ese certificado. El navegador hace esto verificando si el certificado del sitio web fue emitido y firmado por una Autoridad de Certificación de confianza. Cuando se emite un certificado, la Autoridad de certificación incluye esta prueba al "firmar" criptográficamente el certificado con una clave privada, de una manera que solo la CA real podría hacer y que los navegadores pueden verificar. Pero la CA en realidad no firma el certificado en bruto. Si ejecuta el certificado a través de un algoritmo hash unidireccional como SHA-1 y lo firma con la clave privada de la AC. Cuando se presenta el certificado con el navegador, una de las primeras cosas que hace es verificar la firma. Debido a que el certificado se firmó con la clave privada de la CA (y asumimos que solo está en posesión de la CA) podemos verificar la firma (por lo tanto, autenticar) el servidor porque la clave pública correspondiente de la CA está envuelta en un certificado X.509 precargado en el navegador. A continuación, el navegador calcula el SHA-1 para ese certificado y luego lo compara con el valor presentado en el certificado enviado por el sitio web para verificar su integridad, que no se modificó durante el tránsito.
Si lo anterior es cierto, entonces tengo la siguiente pregunta. Aunque los investigadores de Google demostraron recientemente que dos archivos .pdf diferentes produjeron el mismo valor de SHA-1, por lo que se produjo una colisión, me pregunto cómo puede explotarse esto. Quiero decir, digamos que example.com tiene un certificado con un valor SHA-1 igual a X y está firmado por Verisign. Un atacante crea un certificado para example.com y el valor de SHA-1 también es igual a X, así que de nuevo, tenemos una colisión, pero esta vez no es de ninguna CA confiable. Entonces, si el atacante ahora intenta hacerse pasar por example.com, ¿cómo puede ser explotado si el navegador no puede verificar que está firmado por una CA raíz de confianza? ¿Esto no causaría ningún problema solo si la CA raíz se ve comprometida?
Añadido: ¿O por qué es incluso un problema con la firma de documentos? Quiero decir, decir que un socio comercial está a punto de enviarme un contrato. Está firmado por él y puedo verificarlo y lo envié de vuelta después de firmar con mi clave privada. Entonces, ¿por qué debería preocuparme que él pudiera calcular un documento de aspecto similar con el mismo valor hash? Si no lo entendí, ¿cómo puede él probar que lo firmé? Supongo que no puede. E incluso si obtengo el documento "falso", solo porque está firmado, ¿no debería verificar lo que hay en el documento antes de firmarlo y enviarlo de vuelta?
EDITAR:
Creo que empiezo a entender. Entonces, si para el certificado A, el compendio del mensaje es igual a X y una CA raíz lo firma con su clave privada, todos pueden verificar su autenticidad descifrando la firma con la clave pública que está precargada en el navegador en forma de una X Certificado .509, ¿correcto? Entonces, dado el valor hash de X (ya que no es un secreto de todos modos) e incluso sin saber la clave privada que firmó el hash, sé que el resultado final (firma) = Y. Entonces, si sé el hash del certificado A = X y Puedo computar otro certificado (con el Emisor archivado establecido en la CA raíz que firmó el certificado real) y su valor hash también será = X (se produjo una colisión), incluso sin conocer la clave privada de los firmantes, si proporciono el El valor Y en cuanto a la firma (debido a que el hash único del certificado más el cifrado a través de la clave privada produciría un valor de la firma Y), el navegador aceptará y validará el certificado, ya que podrá descifrar la firma con el la clave pública correspondiente de la CA raíz, que está realizando la validación, calcula ese hash nuevamente y la compara con lo que envió el servidor falso y el certificado falso, ¿correcto? Gracias