La "chiave pre-condivisa" è in effetti un modello valido e semplice, se riesci a farcela. La crittografia asimmetrica, con chiavi pubbliche e private e certificati, è stata inventata per risolvere il problema della distribuzione delle chiavi segrete: in generale , è difficile garantire che tutte le coppie di sistemi / persone che devono parlare in modo sicuro a ciascuna l'altro in realtà condivide un valore segreto. In una configurazione client-server, in cui client e server sono macchine distinte, un segreto condiviso deve necessariamente aver viaggiato da una macchina all'altra. I segreti di viaggio sono "meno segreti". Con la crittografia asimmetrica, solo i valori pubblici passano effettivamente sui fili; le chiavi private possono rimanere locali per tutto il loro ciclo di vita, e di solito è una buona idea.
Allo stesso modo, se client e server condividono lo stesso valore segreto, un pirata informatico che imbroglia la macchina apprende il segreto e può impersonare entrambi. Con la crittografia asimmetrica, un utente malintenzionato che saccheggia la RAM o il disco del client può in seguito connettersi al server e autenticarsi come client, ma non può eseguire un server falso che potrebbe ingannare il client.
Questi sono i motivi per cui un meccanismo di chiave precondivisa, sebbene allettante (è più leggero sulla CPU e non coinvolge nessuna delle temute attività X.509 / CA), in pratica implica alcuni punti deboli, a seconda di come è il sistema installato e mantenuto.
(Naturalmente, in tutto quanto sopra suppongo che tu non faccia nulla di stupido, come avere un "segreto" condiviso tra il server e 10000 client, se 10000 client conoscono un "segreto" allora non lo è più un segreto: i sistemi di chiavi pre-condivise appropriati utilizzano una chiave diversa per ogni coppia client-server. Quando la chiave pre-condivisa è un segreto ricordato dall'uomo, ovvero una password , è necessario prestare ulteriore attenzione , perché le password sono deboli e possono essere gestite con SRP .)