O homem do meio não pode apenas pegar as chaves trocadas pelos oponentes, mudar as chaves e depois descriptografar e criptografar a mensagem novamente?
Sim eles podem.
Um protocolo de troca de chaves como (a versão "manual" do) DH é seguro contra a interceptação (ou seja, simplesmente observar o que está sendo transmitido no canal), mas quebra completamente contra ataques do tipo man-in-the-middle (MITM), como você declarou.
Os certificados são uma tentativa de remediar isso, mas surge outro problema: como você pode garantir que ambas as partes recebam o certificado correto? Obviamente, você não pode simplesmente enviar os certificados pelo canal inseguro, pois isso é suscetível novamente a um ataque MITM.
A solução é a existência de um canal alternativo, (completamente) seguro . Seriam as duas partes se encontrando pessoalmente e trocando seus certificados fisicamente ou por algum canal alternativo confiável (por exemplo, por telefone, se for confiável).
Nas redes de computadores, o canal alternativo é geralmente uma infraestrutura de chave pública (PKI). Isso significa que seu sistema operacional ou navegador possui um conjunto de certificados raiz pré-configurados dos quais outros certificados são assinados (e possivelmente ainda mais certificados usando-os como certificados intermediários ). Portanto, quando você visita um site, ele apresenta um certificado assinado , que é assinado usando (uma cadeia de) certificados nos quais você já confia. Então, usando este certificado, é possível uma troca de chaves autenticada (por exemplo, para concordar com uma chave efêmera para usar com criptografia simétrica comum).