Verifica dell'identità del server tramite timestamp crittografati

0

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?

    
posta user3834459 21.09.2016 - 22:11
fonte

1 risposta

1

Se è possibile includere una chiave pubblica, è possibile includere anche un certificato autofirmato di lunga durata (che è possibile generare ad esempio utilizzando lo strumento da riga di comando openssl ). Se ti fidi esplicitamente di questo certificato nel client, puoi utilizzare un normale TLS o DTLS run-of-the-mill per creare una connessione sicura con il server.

In questo modo non avresti bisogno di tutto il PKI, di terze parti fidate ecc., ma hai ancora una soluzione ibrida basata su certificato X509.

Si noti che il certificato dovrebbe essere in grado di crittografare se si desidera utilizzare direttamente la crittografia RSA per la chiave di sessione e firmare (autenticare) per gli schemi DHE o ECDHE che forniscono la sicurezza in avanti.

    
risposta data 21.09.2016 - 22:53
fonte

Leggi altre domande sui tag