Alice alege o listă de chei private uniform aleatoare $\{a_i\}$. Ea calculează o listă de chei publice corespunzătoare $\{A_i\}$ la fel de $\{a_iG\}$. Ea declară apoi o listă de coduri hash-uri ale cheii publice corespunzătoare $\{P_i\}$ calculat ca $\{hash(A_i)\}$.
$G$ este un punct de bază binecunoscut pe curbă și $hash()$ este o funcție hash sigură criptografic.
Bob face același lucru, astfel încât Bob să aibă chei private $\{b_i\}$, are chei publice $\{B_i\}$, și declară hash-urile cheii publice $\{Q_i\}$.
În acest stadiu, Alice și Bob ar putea decide să colaboreze pentru a stabili lista secretă comună Diffie-Hellman $\{S_i\}$ la fel de $\{a_iB_i\}$ sau $\{b_iA_i\}$. Cu toate acestea, ei nu fac acest lucru.
Fără pierderea generalității, dacă Alice vrea să învețe secretul împărtășit la index $j$ fără ca Bob să descopere $j$ sau secretul partajat:
Alice alege un factor de orbire uniform aleatoriu $r$, și trimite $X=rA_j+jH$ lui Bob. $H$ este un al doilea punct de bază binecunoscut pe curbă, unde $h$ nu se știe astfel încât $hG==H$.
Bob îi trimite înapoi lui Alice lista $\{Z_i\}$ = $\{b_i(X-iH)\}$.
Alice nu poate decât să dezvăluie și să învețe secretul împărtășit $S_j$ prin calcul $r^{-1}Z_j$. Ea nu poate afla nimic despre niciun alt secret comun, deoarece $H$ componenta listei de răspunsuri a lui Bob se va anula doar la un anumit index.
De când acest secret Diffie-Hellman $S_j$ va fi egal cu $a_jB_j$, Alice poate verifica apoi că hash-ul lui Bob $Q_j$ potriviri prin verificare $Q_j\overset{?}{=}hash(a_j^{-1}S_j)$.