Ideea utilizării perechilor de chei statice este într-adevăr că datele din schimbul de chei sunt semnate. Nu contează prea mult ce se semnează, atâta timp cât schimbul de chei nu poate fi efectuat de un adversar.
Pentru a verifica semnăturile este necesar ca cheia publică a semnatarului să fie de încredere. Asta iti lipseste din descriere. Dacă verificatorul acceptă doar acea cheie sau un set de chei, atunci semnătura adversarului este respinsă, verificarea semnăturii eșuează și cheile nu sunt stabilite sau utilizate.
Cum să puneți încredere în cheia publică devine atunci următoarea problemă. Acest lucru nu face parte din protocolul de acord cheie. O modalitate este de a avea încredere în mod explicit într-o cheie publică, de exemplu prin verificarea unei amprente a cheii publice prin telefon. Se poate, de asemenea, ca cheia să fie încărcată pe un canal de încredere; acesta este ceva care, de exemplu, este adesea efectuat cu chei publice SSH.
Pentru TLS, încrederea este stabilită prin certificate de încredere (rădăcină) ale autorităților de certificare. Aceștia sunt apoi responsabili doar pentru crearea de certificate pentru entitățile care pot arăta că controlează un anumit domeniu. Aceste certificate conțin atât acel domeniu, cât și cheia publică utilizată pentru verificare. Această structură se numește PKIX: Public Key Infrastructure utilizând certificate X.509 și Liste de revocare a certificatelor.
Cateva note:
- Am eliminat orice mențiune a acordului cheie sau a algoritmilor de generare/verificare a semnăturii - algoritmii utilizați nu sunt importanți pentru această întrebare.
- De asemenea, este posibil să aveți încredere într-o cheie publică Diffie-Hellman (statică), dar ați pierde secretul direct - în cazul în care cheia privată pe termen lung a acelei perechi de chei se scurge, adversarul ar putea reda acordul cheii și decripta toate mesajele (și, de asemenea, complică PKI).
- Generarea semnăturii nu este același lucru cu semnarea unui mesaj sau a mesajului hash, iar verificarea nu este același lucru cu „decriptarea cu cheia publică” - cheia publică Diffie-Hellman ar fi doar trimite în clar împreună cu semnătura peste el.
- Poate fi necesar un control suplimentar al accesului după stabilirea sesiunii - de aceea certificatul folosit pentru a crea o conexiune este adesea transmis back-end și utilizat într-un sistem de control al accesului de vreun fel.