Sto scrivendo il mio piccolo sistema di licenza software e mi piacerebbe stabilire un canale sicuro con un crittosistema ibrido (asimmetrico - > simmetrico).
Vorrei evitare di portare l'intera cosa del certificato fin dalla mia applicazione (l'eseguibile spedito ai clienti) includerebbe interamente la mia chiave pubblica. Il problema è: come verificare l'identità del server?
Ho pensato a quanto segue: il server potrebbe inviare il timestamp quando la connessione è stata tentata per la prima volta crittografata con la sua chiave privata (quindi l'app client sarebbe in grado di verificare che il server sia realmente chi afferma è) .. ma il timestamp potrebbe essere impreciso a causa di ritardi TCP / IP imprevedibili.
Che cosa potrebbe inviare il server che non è vulnerabile a un attacco di riproduzione da parte di terzi terzi?