¿Cuál es el problema exacto si un sitio web tiene un certificado SHA-1?

4

Hubo una pregunta reciente acerca de confiar (o no) en un sitio web que muestra un certificado SHA-1. Me gustaría saber si entiendo el problema real correctamente.

Los peligros son (a) que alguien logra redirigirme a un sitio diferente, produce un certificado falso y, como resultado, obtengo una conexión totalmente segura a un sitio web dirigido por piratas informáticos malvados. Y (b) que me conecto al sitio al que quiero conectarme, pero los hackers malvados descifran lo que envío y recibo.

¿Es correcto que los piratas informáticos puedan, a un costo enorme, pero no imposible, crear un certificado SHA-1 falso para un sitio web pequeño y al mismo costo crear un certificado SHA-1 falso para www.amazon.com? Como me redirigirían a su sitio, la seguridad del sitio web real sería completamente irrelevante. Ese pequeño sitio web, y el sitio web de Amazon, podrían tener una seguridad inquebrantable, lo cual no ayuda, ya que nunca logro comunicarme con ellos. En otras palabras, si veo un certificado SHA-1 para Amazon, lo más probable es que sea falso.

Por otra parte, si ese pequeño sitio web, o www.amazon.com, realmente usara un certificado SHA-1, ¿eso haría más fácil descifrar los mensajes que intercambio con el sitio? ¿Podría un pirata informático "romper" de alguna manera los certificados y luego descifrar fácilmente todos los mensajes intercambiados con Amazon? ¿O la comunicación es igual de segura y encriptada independiente del certificado?

Gracias, Gordon, por responder a la pregunta: por lo tanto, utilizar un certificado de baja calidad en su sitio no hace que su sitio sea menos seguro. El problema es indirecto: los certificados de baja calidad se pueden falsificar, por lo tanto, los navegadores (y los usuarios) deben rechazar los certificados de baja calidad, pero mientras muchos sitios utilicen certificados de baja calidad, los navegadores no pueden hacerlo.

    
pregunta gnasher729 28.05.2016 - 15:50
fuente

2 respuestas

7

El riesgo real de seguridad de usar los certificados SHA-1 (o MD5) es indirecto, y por lo tanto es fácil pasarlo por alto. El problema no es la seguridad del certificado real del servidor, es la política del cliente que permite al cliente confiar en los certificados de baja seguridad. Considere dos escenarios aquí (y usaré MD5, porque ya se ha demostrado que es inadecuado):

  • Un cliente se conecta a su servidor, el servidor presenta un certificado firmado por MD5, el cliente recibe su certificado (es decir, si hay un ataque en curso, es uno que permite que su certificado real llegue al cliente), y (para algunos razón) el cliente lo acepta. Esta conexión es segura . Lo único que se necesita para la firma es verificar que el cliente recibió el certificado su y, como lo hizo ... todo está bien.

    En este caso, el nivel de seguridad de la firma en su certificado es irrelevante.

  • Un cliente intenta conectarse a su servidor, pero se produce una especie de intercepción / MITM / ataque de suplantación que sustituye a un certificado diferente (impostor). El algoritmo de firma en el certificado de impostor no necesita coincidir con su certificado real; podría tener un certificado firmado por SHA-2, y el impostor podría presentar un certificado firmado por MD5 en su lugar, y el cliente no podría decir que no estaba viendo su certificado real.

    Nuevamente, el nivel de seguridad de la firma en su certificado (real) es irrelevante. Y no hay forma de que el cliente diga la diferencia entre los dos casos.

Entonces, el algoritmo de firma en tu certificado es irrelevante, ¿verdad? No exactamente. Lo que realmente importa es lo que el cliente aceptará como certificado válido. Si el cliente acepta certificados firmados por MD5, será vulnerable a certificados de impostor. De manera similar, si el cliente acepta los certificados SHA-1 sin lanzar un ataque sibilante, se volverá vulnerable en el futuro (¿quizás pronto?) Cuando se convierta en falsificación de certificados SHA-1. Para evitar esta vulnerabilidad, los clientes (en su mayoría, los navegadores) se actualizan gradualmente con requisitos de validación de certificados más estrictos.

Pero los requisitos de certificación del cliente prácticamente no se pueden actualizar hasta que todos / la mayoría de los certificados de servidor se actualicen; de lo contrario, los clientes emitirán advertencias / errores de rechazo / etc en todo, y estaremos en la posición de enseñar a los usuarios a omite / ignora las advertencias de seguridad, que es una cosa muy mala para enseñarles .

Y ese es el verdadero problema con los certificados SHA-1: requieren que los clientes tengan bajas expectativas de seguridad para conectarse a su servidor. Y no solo para su servidor específico; también tienen un efecto indirecto en la seguridad de la web (y de la infraestructura TLS) en general, porque dificultan que los clientes (tanto software como usuarios) tengan altas expectativas sobre seguridad y confianza.

Si aún usa certificados SHA-1 en este momento, está reteniendo la seguridad general de Internet.

    
respondido por el Gordon Davisson 28.05.2016 - 20:50
fuente
8

El problema se debe al fenómeno inevitable de " Hash Collision "

Los peligros de confiar en los certificados que usan SHA1 comienzan con la técnica utilizada por las Autoridades de Certificación (CA) para firmarlos y cómo los verifica el navegador web.

Como puede saber, el certificado completo no está firmado, en su lugar, solo se firma el hash del certificado.

Permite asumir un certificado con los siguientes datos dentro de A con el valor A produce un hash 7d157d7c000ae27db146575c08ce30df893d3a64 .

Ahora, si un tercero puede crear un certificado X con un valor arbitrario *************** tal que el hash sha1 es 7d157d7c000ae27db146575c08ce30df893d3a64 , entonces se puede usar como un reemplazo y el navegador no ser capaz de notar la diferencia ya que los hashes serían iguales y, por lo tanto, las firmas coincidirían.

El villano en esta historia no es nadie más que nuestra Ley de Moore

Un hash sha1 es un algoritmo hash de 120 bits (20 bytes). Lo que significa que puede producir 2 ^ 120 = 1329227995784915872903807060280344576 valores únicos.

Esto fue más que suficiente hace años, cuando comenzó toda esta historia, pero las computadoras se han vuelto tan rápidas que la potencia informática que se necesita para producir una colisión disminuye cada año.

En 2012, Jesse Walker escribió una estimación del costo para producir una colisión. Según las estimaciones, la colisión costaría $ 2M en 2012, $ 700K en 2015, $ 173K en 2018 y $ 43K en 2021 - > enlace

Eso significa que muchas empresas, organizaciones y gobiernos de hoy tienen suficiente poder de cómputo para producir un certificado falso que pasará por la prueba.

Tienes razón, si hay un sitio que utiliza sha1, existe una gran posibilidad de que se pueda romper. Aún no es un pirata informático, pero es mejor cerrar los agujeros antes de que el agua comience a filtrarse.

    
respondido por el BMC 28.05.2016 - 19:18
fuente

Lea otras preguntas en las etiquetas