Un PKI è un sistema per consentire una distribuzione sicura della chiave pubblica. I certificati emessi dalla PKI consentono ai vari sistemi di conoscere le rispettive chiavi pubbliche con un certo livello di garanzia che le chiavi sono autentiche. Nel tuo caso, presumi già che ciascuno dei tuoi due endpoint conosca la chiave pubblica dell'altro endpoint, cioè che il problema con cui PKI si sforza di risolvere sia già stato risolto. Non c'è bisogno di un PKI nel tuo caso, quindi.
Questa conoscenza reciproca delle chiavi pubbliche può quindi essere trasformata in un canale protetto bidirezionale per i dati, ma non è una cosa facile da fare; non è possibile evacuare con un semplice "crittografiamo i dati con la chiave pubblica dell'altro sistema"; come altri hanno sottolineato, questo subirà attacchi di replay (almeno). Ci sono molti dettagli di cui preoccuparsi. Un protocollo in cui tutti questi dettagli sono stati trattati dolorosamente, lungo un corso di due decenni di interruzioni e correzioni, è, in effetti, SSL . Finora, molte persone che pensavano di poter fare meglio hanno fallito, a volte in modo esilarante, spesso in modo spettacolare. SSL include tutti i tipi di funzionalità che tengono traccia dei singoli blocchi di dati ("record" in linguaggio SSL) e rilevano in modo affidabile alterazioni esterne, inclusi pacchetti riordinati, rilasciati o duplicati; assicura anche la terminazione verificata (quando la connessione viene chiusa da una macchina, l'altra macchina ha una certa garanzia che questa è stata effettivamente attivata dall'altra macchina, non da un utente malintenzionato che inserisce un pacchetto RST falso).
Si noti che in SSL, il client e il server inviano le loro chiavi pubbliche l'un l'altro come parte delle catene di certificati. Questo supporta il modello PKI in cui un client (rispettivamente un server) impara una chiave pubblica del server (rispettivamente una chiave pubblica del client) attraverso la convalida del certificato. Tuttavia, nulla impone al client e al server l'elaborazione dei certificati in modo PKI X.509 puro. Ciò che importa è che il client (o il server) utilizzi la chiave pubblica corretta del server (o del client). Se il client conosce già la chiave del server, il client può semplicemente usarlo in SSL e ignorare qualsiasi blob che il server ha inviato come certificato. Pertanto, SSL non è intrinsecamente legato a X.509 oa qualsiasi altro tipo di PKI.