Puede ser más razonable referirse a ElGamal en este punto, que se puede considerar como "Diffie-Hellman retrasado" y hace lo que usted describe como "Diffie-Hellman estático". La forma en que funciona es básicamente la siguiente
You generate secret/public long-term keypair LTsec and LTpub
Envías LTpub a una CA, que puede contactarte por teléfono o cualquier otra cosa para verificar que realmente eres tú. Una vez realizada la verificación firman LTpub. Eso significa que obtienes un certificado firmado que consta de tu clave pública y la firma de la AC:
(new) LTpub = (LTpub, CAsig of LTpub)
Luego, puede usar eso para autenticarse usted mismo o su servidor o lo que desee. Por ejemplo, puede permitir que su servidor web en www.example.com se autentique con ese certificado.
Cuando John se conecta a ese servidor y desea usar el Acuerdo de clave DH que ocurre (simplificado):
John genera un nuevo par de llaves DH efímero (Jpub, Jsec) y envía la parte pública al servidor web
John ----- Jpub -----> Webserver
El servidor web genera un nuevo par de llaves DH efímeras (Wsec, Wpub) y envía la parte pública a John. También firma Wpub con LTsec desde arriba.
Wpub
John <---- SIGN_LTsec(Wpub) ---- Webserver
LTpub
Ahora John puede hacer ciertas cosas:
- John ahora puede verificar que Wpub fue generado por alguien que posee LTsec (¡importante!).
- John también puede verificar que el que posee LTsec es el que generó LTpub.
- John también puede verificar que una CA haya verificado LTpub.
- John ahora puede asumir que una CA verificó la información en LTpub mediante una llamada telefónica (o lo que sea) y que el emisor es quien se propone ser (aquí: www.example.com)
- Finalmente, John puede asumir razonablemente que comparte una clave (Wpub ^ Jsec) con www.example.com
Por supuesto, esto es solo una descripción muy básica de la relación de confianza y los detalles técnicos.
Después de todo, eche un vistazo más de cerca a ElGamal para obtener más información técnica.