Pregunta sobre la seguridad de HTTPS [duplicado]

8

Recientemente leí sobre cómo funcionan los HTTPS y tengo algunas preguntas que aclarar. Perdóneme si esto suena tonto, pero solo necesito aclararlo. Corrígeme si me equivoco.

Tengo que saber que, como parte del inicio del protocolo de enlace TLS, hay un cifrado asimétrico en el que se utiliza la clave pública del Certificado para cifrar la clave generada por el cliente antes de enviarla al servidor y solo el servidor puede descifrarla utilizando su clave privada.

Pero los mensajes posteriores (solicitudes HTTP) utilizan cifrado simétrico con la clave generada por el cliente y tanto el cliente como el servidor usan esta clave para cifrar y descifrar los datos de la aplicación.

Hay una famosa teoría en la criptografía que dice que "la repetición no es buena", donde si un solo mensaje se repite en un mensaje cifrado, es fácil descifrarlo. Si esto es cierto, todos los mensajes cifrados con la clave generada por el cliente tendrán HTTP/1.x , ya que forma parte de la solicitud y la respuesta HTTP.

Por lo tanto, en teoría, un Hombre en el medio con este conocimiento posiblemente puede encontrar patrones en las solicitudes y respuestas HTTP cifradas y encontrar la cadena HTTP/1.x en esas y la fuerza bruta para generar la clave del cliente que se utilizó para cifrar estos mensajes.

¿Estoy en lo correcto o es completamente absurdo, cualquier respuesta o guía sería muy apreciada?

    
pregunta shazin 27.02.2015 - 15:59
fuente

2 respuestas

7

Primero, un par de puntos.

  1. En cualquier sistema criptográfico que no ofrezca un secreto perfecto de la teoría de la información, la clave siempre puede ser forzada. Uno de los componentes clave para determinar si un cifrado es seguro es si es o no factible utilizar claves de fuerza bruta, y si lo es, el cifrado no es seguro. Por lo tanto, forzar la clave no es un problema.

  2. La información filtrada sobre el texto plano no necesariamente compromete la clave. Sin duda, compromete la seguridad, pero saber que el texto cifrado de dos mensajes no significa que aprenda nada sobre la clave. Por lo tanto, si bien la clave es siempre una fuerza bruta, esto no le da ninguna ventaja. Todavía es tan difícil determinar la clave correcta como si no hubiera textos cifrados duplicados.

El ejemplo canónico de esta falla se puede encontrar al usar un cifrado de bloque en el modo ECB (libro de códigos electrónicos). En este modo, cada bloque de texto sin formato se cifra directamente mediante la clave, por lo que si hay varios bloques de texto sin formato que contienen los mismos datos, se producirán bloques de texto cifrado idénticos. Es fácil decir que son duplicados, que es exactamente lo que te preocupa.

La forma en que solucionamos esto (y el mecanismo que también se implementa en los cifrados de bloque TLS (HTTPS)) es agregar un componente adicional de aleatoriedad, denominado vector de inicialización. Este es un valor aleatorio no secreto que se introduce en el proceso de cifrado y es diferente para cada mensaje cifrado. Debido a que la clave y el IV ahora son únicos para cada mensaje, el texto cifrado también será único, incluso en el caso de dos mensajes idénticos. Mientras no reutilice un IV con la misma clave, no habrá un patrón para detectar, y un atacante nunca podrá determinar que dos mensajes son iguales.

    
respondido por el Xander 27.02.2015 - 16:26
fuente
5

La criptografía asimétrica establece un secreto compartido, que se denomina, en terminología TLS , el master secret . El secreto maestro se arregla a lo largo de la sesión ; una sesión TLS consiste en una o varias conexiones (abrir una nueva conexión mientras se reutiliza el secreto maestro se denomina reanudación de sesión y utiliza el "protocolo de enlace abreviado").

Para cada conexión, se derivan varias claves (a través de una función de tipo hash llamada PRF ) del secreto maestro; estas claves incluyen el cifrado y las claves MAC para procesar ambas direcciones del tráfico. La derivación utiliza como entradas el secreto maestro y el "cliente aleatorio" y "servidor aleatorio"; estos "randoms" son valores que el cliente y el servidor se envían al principio del protocolo de enlace (en los mensajes ClientHello y ServerHello ). Por lo tanto, aunque se reutilice el secreto principal, cada nueva conexión tendrá su propio conjunto de claves de cifrado.

Dentro de cada conexión, los datos se envían como paquetes individuales llamados registros . Todos los registros en una dirección determinada (cliente a servidor o servidor a cliente) se cifrarán con la misma clave secreta; sin embargo, el mecanismo de encriptación utiliza un estado por registro (un Vector de inicialización implícito o dependiendo de la versión del protocolo - en caso de que se utilice el cifrado CBC o GCM (un estado de ejecución para el cifrado RC4) que garantiza que incluso si dos registros sucesivos contienen exactamente los mismos datos claros, las versiones cifradas serán distintas, y los interceptores no podrán detectar esa repetición. Además, el MAC agregado en cada registro se calcula sobre una combinación de los datos claros y el registrar el número de secuencia, para que cualquier intento de duplicación, eliminación o reordenación de registros sea detectado de manera confiable.

En cuanto a la fuerza bruta, no se ve afectada de manera notable por ninguna repetición. De hecho, para cualquier análisis de ataque de fuerza bruta, ya asumimos que el atacante conoce una cantidad sustancial de datos de texto claro y el texto cifrado correspondiente. El tamaño de la clave simétrica es tal que incluso en estas condiciones, la fuerza bruta no es factible (hay tantas posibles claves de 128 bits que las posibilidades de encontrar la correcta son abismalmente bajas, independientemente de la cantidad de pares de texto simple / texto cifrado disponibles). / p>     

respondido por el Thomas Pornin 27.02.2015 - 19:25
fuente

Lea otras preguntas en las etiquetas