Estoy escribiendo mi propio sistema de licencias de software pequeño y me gustaría establecer un canal seguro con un sistema criptográfico híbrido (asimétrico - > simétrico).
Me gustaría evitar que aparezca todo el certificado, ya que mi aplicación (el archivo ejecutable enviado a los clientes) incluiría mi clave pública por completo. El problema es: ¿cómo verificar la identidad del servidor?
Pensé en lo siguiente: podría hacer que el servidor envíe la marca de tiempo cuando la conexión se intentó cifrar por primera vez con su clave privada (por lo que la aplicación cliente podría verificar que el servidor realmente es quien afirma es) ... pero la marca de tiempo podría ser imprecisa debido a los retardos TCP / IP impredecibles.
¿Qué podría enviar el servidor que no sea vulnerable a un ataque de reproducción de un tercero malicioso?