Deci, putem verifica fiecare dintre aceste valori posibile pentru secretul partajat.
În practică, numărul de valori posibile pentru secretul partajat este prea mare pentru ca scanarea tuturor posibilităților să fie practice - există întotdeauna atacuri mai ușoare. Și, după cum se pare că ați ghicit corect, recunoașterea secretului partajat pe baza $g, g^a \bmod p, g^b \bmod p$ se crede a fi o problemă grea (de fapt, o numim „problema decizională Diffie-Hellman”)
Un atac este de a lua $g$ și $g^a \bmod p$ și încercați să vă recuperați $a$ (adică rezolvăm problema jurnalului discret) - odată ce avem $a$, putem calcula $B^a \bmod p$ (care este secretul partajat) și acesta este secretul partajat.
Cealaltă abordare posibilă este să atacăm partea simetrică a lucrurilor - ignorăm complet operațiunea DH și facem doar un atac cu forță brută asupra cheii simetrice. BTW: necunoașterea textului clar exact nu este de obicei o problemă; chiar dacă nu știm exact ce este, în general știm destule despre el pentru a-l deosebi de galimatia aleatoare (care este ceea ce obții atunci când încerci să-l decriptezi cu cheia greșită) - în plus, dacă folosești un AEAD algoritmului, cheia este folosită pentru a genera o etichetă (precum și pentru a cripta), iar eticheta poate fi, de asemenea, utilizată pentru a distinge cheia corectă (chiar dacă textul simplu este într-adevăr fals aleatoriu).
Pentru ambele atacuri, de obicei selectăm parametri de securitate (cum ar fi dimensiunea $p$ și dimensiunea cheii simetrice) pentru a face ambele abordări imposibile.