Fie p = 2q + 1 un numar prim cu proprietatea ca q este prim si α Z*p un element de
ordin q. Pentru 1 <= a <= q - 1, se defineste β ≡ αa mod p. Fie G subgrupul de ordin q al lui Zp generat de α. Se definesc P = A = G; K = {(p; α; a; β) | β ≡ αa mod p}. Valorile p; α; β sunt publice iar a este secreta. Pentru K = (p; α; a; β); x G se defineste y = sigK(x) = xa mod p. Pentru x; y G, protocolul de verificare se efectueaza astfel: 1. Alice alege aleator numerele e1; e2 Zq; 2. Alice calculeaza c = ye1 β e2 mod p si-l trimite lui Bob; 3. Bob calculeaza d = ca-1mod q mod p si-l trimite lui Alice; 4. Alice admite autenticitatea lui y daca si numai daca d ≡ xe1 αe2 mod p.
Exemplu:
Fie q = 233; p = 2q+1 = 2 * 233 + 1 = 467.
Luam α = 16. Sa presupunem a = 7; avem β = αa mod p = 167 mod 467 = 120. Bob semneaza mesajul x = 19 cu y = xa mod p = 119101 mod 467 = 115. Alice alege e1 = 38; e2 = 397. Ea calculeaza c = ye1 βe2 mod p = 11538120397 mod 467 = 319, la care
Bob raspunde cu d = ca-1mod q mod p = 3197-1mod 233 mod 467 = 319100 mod 467 = 3. Alice verifica atunci relatia d ≡ xe1 αe2 mod p. xe1 α e2 mod p = 193816397 mod 467 = 3