A questo punto potrebbe essere più ragionevole fare riferimento a ElGamal , che puoi considerare come "differito Diffie-Hellman" e fa ciò che descrivi come "Diffie-Hellman statico". Il modo in cui funziona è fondamentalmente come segue
You generate secret/public long-term keypair LTsec and LTpub
Invia LTpub a una CA, che potrebbe contattarti telefonicamente o qualsiasi altra cosa per verificare che sei veramente tu. Una volta eseguita la verifica, firmano LTpub. Ciò significa che ottieni un certificato firmato che comprende la tua chiave pubblica e la firma della CA:
(new) LTpub = (LTpub, CAsig of LTpub)
Puoi quindi usarlo per autenticare te stesso o il tuo server o qualunque cosa tu voglia. Ad esempio, puoi consentire al tuo server web all'indirizzo www.example.com di autenticarsi con quel certificato.
Quando John si connette a quel server e desidera utilizzare il contratto chiave DH che si verifica (semplificato):
John genera una nuova coppia di chiavi DH effimera (Jpub, Jsec) e invia la parte pubblica al server web
John ----- Jpub -----> Webserver
Il server web genera una nuova coppia di chiavi DH ephmeral (Wsec, Wpub) e invia la parte pubblica a John. Contrassegna anche Wpub con LTsec dall'alto.
Wpub
John <---- SIGN_LTsec(Wpub) ---- Webserver
LTpub
Ora John ora può fare certe cose:
- John può ora verificare che Wpub sia stato generato da qualcuno che possiede LTsec (importante!).
- John può anche verificare che colui che possiede LTsec è quello che ha generato LTpub.
- John può anche verificare che LTpub sia stato verificato da una CA.
- John può ora presumere che una CA abbia verificato le informazioni in LTpub da una telefonata (o qualsiasi altra cosa) e che l'emittente sia chi propone di essere (qui: www.example.com)
- Finalmente John può presumere che condivide una chiave (Wpub ^ Jsec) con www.example.com
Ovviamente questa è solo una panoramica di base della relazione di fiducia e dei dettagli tecnici.
Dopo tutto, dai un'occhiata più da vicino a ElGamal per ulteriori informazioni tecniche.