3. Es un estándar del Gobierno Federal de los
Estados Unidos de América o FIPS para firmas
digitales. Fue un Algoritmo propuesto por
el Instituto Nacional de Normas y
Tecnología de los Estados Unidos para su uso
en su Estándar de Firma Digital(DSS),
especificado en el FIPS 186. DSA se hizo
público el 30 de agosto de 1991, este algoritmo
como su nombre lo indica, sirve para firmar y
no para cifrar información. Una desventaja de
este algoritmo es que requiere mucho más
tiempo de cómputo que RSA.
4. *
*Elegir un numero primo p de L bits, donde 512 ≤ L ≤
1024 y L es divisible por 64.
*Elegir un número primo q de 160 bits, tal que p−1 =
qz, donde z es algún número natural.
*Elegir h, donde 1 < h < p − 1 tal que g = hz(mod p)
> 1.
*Elegir x de forma aleatoria, donde 1 < x < q-1.
*Calcular y = gx(mod p).
Los datos públicos son p, q, g e y. x es la llave privada.
5. *
*Elegir un número aleatorio k, donde 1 < k
< q.
*Calcular r = (gk mod p)mod q.
*Calcular s = k-1(H(m)+r*x) mod q, donde
H(m) es la función hash SHA-1 aplicada al
mensaje m.
*La firma es el par (r, s).
Si r ó s es cero, se vuelve a repetir el
procedimiento.
6. *
*Calcular w = (s)-1(mod q).
*Calcular u1 = H(m)*w(mod q).
*Calcular u2 = r*w(mod q).
*Calcular v = [gu1*yu2mod p] mod q.
La firma es válida si v = r.
7. *
El esquema de la firma está correcto en el sentido que el verificador
aceptará siempre firmas genuinas. Esto puede ser demostrada como
sigue: