3w6o33

DSA (Digital Signature Algorithm, en español Algoritmo de Firma digital) 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.

Generación de llaves

Elegir un número 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.

Firma

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.

Verificación

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.

Demostración del algoritmo

El esquema de la firma está correcto en el sentido que el verificador aceptará siempre firmas genuinas. Esto puede ser demostrada como sigue:

De g = h^z \pmod p sigue g^q \equiv h^{qz} \equiv h^{p-1} \equiv 1 \pmod p por Pequeño teorema de Fermat. Ya que g>1 y q es primo sigue que g tiene orden q.

El firmante computa

s=k^{-1}(\mbox{SHA-1}(m)+xr) \mod{q}.

Entonces

\begin{matrix}
k & \equiv & \mbox{SHA-1}(m)s^{-1}+xrs^{-1}\\
  & \equiv & \mbox{SHA-1}(m)w + xrw \pmod{q}.\\
\end{matrix}

Ya que g tiene orden q tenemos que

\begin{matrix}
g^k & \equiv & g^{{\rm SHA-1}(m)w}g^{xrw}\\
    & \equiv & g^{{\rm SHA-1}(m)w}y^{rw}\\
    & \equiv & g^{u1}y^{u2} \pmod{p}.\\
\end{matrix}

Finalmente, la correctitud de DSA surge de

r=(g^k \mod p) \mod q = (g^{u1}y^{u2} \mod p) \mod q = v.
Compartir

Mi nombre es Alexander fundador y CEO, y me gusta llamarme un Geek. Amo la informática, tecnología y todo lo que está relacionado con ella. Inicié este sitio con la intención de compartir conocimientos como cursos en línea, tutoriales y videotutoriales. Estoy muy entusiasmado con la información que he descubierto y compartido hasta el momento. La verdad es que lo he hecho con el mayor de los gustos. Así es, soy un Geek con una visión para compartir conocimiento. Leer mas...