Quando dois computadores estabelecem uma conexão HTTPS eles têm que decidir qual chave será usada, certo?
Então, para fazer isso, em algum momento a chave terá que viajar sem criptografia de um computador para outro, não? Naquele momento, não é possível para um intermediário farejá-lo e obter a chave, para que ele possa simplesmente ler/escrever os pacotes criptografados com ela?
Como o protocolo HTTPS evita isso?
Responder1
SSL usa duas chaves, uma privada e uma pública. Apenas a chave pública é enviada e esta chave não tem valor a menos que você conheça a chave privada.
Cada parte criptografa os dados que envia com a chave pública da outra parte (isso é um pouco mais complexo, mas você entendeu). Somente o destinatário é capaz de decodificar (facilmente) o tráfego.
Isso significa que a detecção de tráfego não é um problema tão grande, embora, é claro, os ataques de força bruta dependam do tamanho da chave e do algoritmo usado.
Os ataques man-in-the-middle baseados na intercepção de tráfego e na substituição de servidores representam um risco mais elevado, mas normalmente são evitados através da utilização de autoridades de certificação fiáveis. No entanto, ele seria derrotado se você ignorasse os avisos que seu navegador exibe quando um certificado de servidor não corresponde ao nome do site ou não foi emitido por uma cadeia confiável de autoridades (por exemplo: certificado autoassinado).
Responder2
O protocolo HTTPS/SSL usa chaves públicas/privadas para garantir uma conexão segura. http://en.wikipedia.org/wiki/Transport_Layer_Security