SSL: como os certificados são protegidos contra ataques intermediários?
Minha pergunta é sobre certificados especificamente em ssl, mas acho que as perguntas devem se aplicar a todos os certificados. Incluí o procedimento SSL por uma questão de clareza.
No SSL, é isso que entendo ser o procedimento:
1) Cliente
envia algoritmos de criptografia suportadosenvia nonce cliente2) Servidor
escolhe (e envia) umalgoritmo simétricoum algoritmo de chave públicaum algoritmo MACenvia seu certificadoenvia servidor nonce3) Cliente
verifica certificadoExtrai chave públicaGera uma chave secreta pré-mestre (pms)criptografa com chave pública de servidores e envia4) Cliente e Servidor
mestre de computação secreto (MS) do PMS e não-governamentaisPMS cortado para gerar duas criptografia e duas chaves mac5) Cliente
envia um mac de todos os apertos de mão (para garantir que eles não tenham sido modificados anteriormente)6) Servidor
envia um mac de todos os apertos de mãoPergunta, questão
O que impede um homem no ataque do meio de acontecer no segundo passo? Por que um homem do meio não pode, digamos, enganar, capturar o certificado enviado pelo servidor e alterar a chave pública (para algo em que tem a chave privada).
Presumo que o certificado esteja criptografado de alguma forma.
No entanto, o servidor não pode criptografar o certificado porque o cliente ainda não possui a chave pública. Quando o servidor obtém a chave de uma autoridade (como veri-sign), a chave seria pré-escrita usando a chave pública da verisign? Eu acho que isso deve funcionar porque todos os navegadores da web devem ter as chaves públicas da maioria das autoridades.