¿Cuál es la diferencia entre DSA y RSA?


Parece que ambos son algoritmos de cifrado que requieren claves públicas y privadas. ¿Por qué elegiría uno frente al otro para proporcionar cifrado en mi aplicación cliente-servidor?

Author: WilliamKF, 2010-05-15

5 answers

Refiriéndose, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html

RSA
El cifrado y descifrado RSA son conmutativos
por lo tanto, puede utilizarse directamente como esquema de firma digital
dado un esquema RSA {(e,R), (d,p,q)}
para firmar un mensaje M, calcule:
S = M potencia d (mod R)
para verificar una firma, calcule:
M = S potencia e ( mod R) = M potencia e. d ( mod R) = M (mod R)

RSA se puede utilizar tanto para el cifrado y las firmas digitales, simplemente invirtiendo el orden en el que se utilizan los exponentes: el exponente secreto (d) para crear la firma, el exponente público (e) para que cualquiera verifique la firma. Todo lo demás es idéntico.

DSA (Algoritmo de Firma Digital)
DSA es una variante de los algoritmos ElGamal y Schnorr crea una firma de 320 bits, pero con seguridad de 512-1024 bits seguridad de nuevo se basa en la dificultad de calcular logaritmos discretos ha sido ampliamente aceptada

Generación de Claves DSA
en primer lugar,se eligen los valores compartidos de clave pública global (p,q, g):
elija un primer grande p = 2 potencia L
donde L = 512 a 1024 bits y es un múltiplo de 64
elija q, un factor primo de 160 bits de p-1
elija g = h potencia (p-1)/q
para cualquier h1
luego cada usuario elige una clave privada y calcula su clave pública:
elija x calcular y = g potencia x (mod p)

La generación de claves DSA está relacionada, pero algo más compleja que El Gamal. Principalmente debido al uso del módulo secundario q de 160 bits utilizado para ayudar acelere los cálculos y reduzca el tamaño de la firma resultante.

DSA de Creación de Firma y Verificación

para firmar un mensaje M
generar clave de firma aleatoria k, k calcular
r = (g potencia k(mod p)) (mod q)
s = k-1.SHA (M)+ x. r (mod q)
enviar firma (r, s) con mensaje

para verificar una firma, calcular:
w = s-1 (mod q)
u1 = (SHA (M).w) (mod q)
u2 = r. w(mod q)
v = (g potencia u1.y power u2(mod p)) (mod q)
si v = r entonces se verifica la firma

La creación de la firma es de nuevo similar a ElGamal con el uso de un por mensaje firma temporal tecla k, pero haciendo calc primero mod p, luego mod q para reducir el tamaño del resultado. Tenga en cuenta que el uso de la función hash SHA es explícita aquí. Verificación también consiste en comparando dos cálculos, siendo de nuevo un poco más complejo que, pero relacionado con El Gamal.
Tenga en cuenta que casi todos los cálculos son mod q, y por lo tanto son mucho más rápidos.
Pero, a diferencia de RSA, DSA se puede utilizar solo para firmas digitales

DSA Security
La presencia de un canal subliminal existe en muchos esquemas (cualquiera que necesite un número aleatorio para ser elegido), no solo DSA. Hace hincapié en la necesidad de una "seguridad del sistema", no sólo buen algoritmo.

 21
Author: AVA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-01 17:34:11

Comprueba La respuesta de AVA a continuación.

Mi antigua respuesta parece incorrecta

 82
Author: SDReyes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-27 22:18:56

Por cierto, no se puede cifrar con DSA, solo firmar. Aunque son matemáticamente equivalentes (más o menos), no se puede usar DSA en la práctica como un esquema de cifrado, solo como un esquema de firma digital.

 24
Author: Henri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-15 18:09:05

Con referencia a man ssh-keygen, la longitud de una clave DSA está restringida a exactamente 1024 bits para seguir siendo compatible con FIPS 186-2 del NIST. Sin embargo, las claves DSA más largas son teóricamente posibles; FIPS 186-3 las permite explícitamente. Además, la seguridad ya no está garantizada con claves RSA o DSA de 1024 bits de largo.

En conclusión, una clave RSA de 2048 bits es actualmente la mejor opción.

MÁS PRECAUCIONES A TOMAR

Establecer una conexión SSH segura implica más que seleccionar la tecnología de par de claves de cifrado seguro. En vista de las revelaciones de la NSA de Edward Snowden, uno tiene que estar aún más vigilante de lo que anteriormente se consideraba suficiente.

Para nombrar solo un ejemplo, usar un algoritmo seguro de intercambio de claves es igualmente importante. Aquí hay una buena descripción de la corriente mejores prácticas de endurecimiento SSH.

 20
Author: Serge Stroobandt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-15 18:54:39

Y además de las respuestas agradables anteriores.

  • DSA utiliza logaritmo discreto.
  • RSA utiliza la Factorización de enteros.

RSA significa Ron Rivest, Adi Shamir y Leonard A dleman.

 5
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-29 19:09:54