Cuando dos computadoras establecen una conexión HTTPS, tienen que resolver qué clave se utilizará, ¿verdad?
Entonces, para hacer eso, en algún momento la clave tiene que viajar sin cifrar de una computadora a otra, ¿no? En ese momento, ¿no es posible que un intermediario lo huela y obtenga la clave, para luego poder leer/escribir los paquetes cifrados con ella?
¿Cómo evita esto el protocolo HTTPS?
Respuesta1
SSL utiliza dos claves, una privada y otra pública. Sólo se envía la clave pública y esta clave no tiene valor a menos que conozcas la privada.
Cada parte cifra los datos que envía con la clave pública de la otra (eso es un poco más complejo, pero ya entendiste la idea). Sólo el destinatario puede decodificar (fácilmente) el tráfico.
Eso significa que el rastreo de tráfico no es un gran problema, aunque, por supuesto, los ataques de fuerza bruta dependerán del tamaño de la clave y del algoritmo utilizado.
Los ataques de intermediarios basados en la interceptación del tráfico y la sustitución de servidores suponen un mayor riesgo, pero normalmente se evitan mediante el uso de autoridades de certificación de confianza. Sin embargo, se frustraría si ignora las advertencias que muestra su navegador cuando un certificado de servidor no coincide con el nombre del sitio o no ha sido emitido por una cadena confiable de autoridades (por ejemplo: certificado autofirmado).
Respuesta2
El protocolo HTTPS/SSL utiliza claves públicas/privadas para garantizar una conexión segura. http://en.wikipedia.org/wiki/Transport_Layer_Security