Supongamos que tengo un sistema por el cual las partes se identifican por su clave pública (con un algoritmo de clave asimétrica preseleccionado). Supongamos que tengo una parte PUB1 que quiere establecer un canal seguro con una parte PUB2. Esto necesariamente significa que la parte PUB1 ya tiene la clave pública de PUB2.
Dado un medio no confiable con MITM, ¿cómo pueden las partes establecer un canal seguro (sin intercepción, no MITM) mientras se autentican mutuamente como la parte que posee los secretos PRIV1 / PRIV2 que coinciden con la identidad PUB1 / PUB2?
Entiendo que Diffie-Hellman con claves públicas puede hacer exactamente esto. ¿Es correcto? ¿Existen implementaciones estándar para .NET que tengan soporte incorporado para este modo de operación?