Quelle est la différence entre DSA et RSA?

114

Il semble que ce soient tous deux des algorithmes de cryptage qui nécessitent des clés publiques et privées. Pourquoi choisirais-je l'un par rapport à l'autre pour fournir le chiffrement dans mon application client-serveur?

WilliamKF
la source
3
Comme mentionné par henri , DSA n'est pas pour le cryptage, juste pour la signature.
Samveen
Double
Adam Katz

Réponses:

27

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

Le
cryptage et le décryptage RSA RSA sont commutatifs
et peuvent donc être utilisés directement comme schéma de signature numérique
étant donné un schéma RSA {(e, R), (d, p, q)}
pour signer un message M, calculer:
S = M puissance d (mod R)
pour vérifier une signature, calculer:
M = S puissance e (mod R) = M puissance ed (mod R) = M (mod R)

RSA peut être utilisé à la fois pour le cryptage et les signatures numériques, simplement en inversant l'ordre dans lequel les exposants sont utilisés: l'exposant secret (d) pour créer la signature, l'exposant public (e) pour que quiconque vérifie la signature. Tout le reste est identique.

DSA (Digital Signature Algorithm)
DSA est une variante des algorithmes ElGamal et Schnorr crée une signature de 320 bits, mais avec une sécurité de 512-1024 bits, la sécurité repose à nouveau sur la difficulté de calculer des logarithmes discrets a été assez largement acceptée

DSA Key Generation d'
abord partagée au public mondial les valeurs clés (p, q, g) sont choisies:
choisissez un grand premier p = 2 puissance L
où L = 512 à 1024 bits et est un multiple de 64
choisissez q, un facteur premier de 160 bits de p-1
choisissez g = h power (p-1) / q
pour tout h1
puis chaque utilisateur choisit une clé privée et calcule sa clé publique:
choisissez x calculer y = g puissance x (mod p)

La génération de clés DSA est liée à El Gamal, mais un peu plus complexe. Principalement en raison de l'utilisation du module secondaire q de 160 bits utilisé pour accélérer les calculs et réduire la taille de la signature résultante.

Création et vérification de signature DSA

pour signer un message M
générer une clé de signature aléatoire k, k calculer
r = (g puissance k (mod p)) (mod q)
s = k-1.SHA (M) + xr (mod q)
envoyer signature (r, s) avec message

pour vérifier une signature, calculer:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g power u1.y puissance u2 (mod p)) (mod q)
si v = r alors la signature est vérifiée

La création de signature est à nouveau similaire à ElGamal avec l'utilisation d'une clé de signature temporaire par message k, mais en effectuant d'abord calc mod p, puis mod q pour réduire la taille du résultat. Notez que l'utilisation de la fonction de hachage SHA est ici explicite. La vérification consiste également à comparer deux calculs, encore une fois un peu plus complexes que, mais liés à El Gamal.
Notez que presque tous les calculs sont mod q, et sont donc beaucoup plus rapides.
Mais, contrairement à RSA, DSA ne peut être utilisé que pour les signatures numériques

Sécurité DSA
La présence d'un canal subliminal existe dans de nombreux schémas (ceux qui nécessitent un nombre aléatoire pour être choisi), pas seulement DSA. Il met l'accent sur la nécessité d'une «sécurité du système», pas seulement d'un bon algorithme.

AVA
la source
le lien vers votre référence est rompu
Paul Wintz
82

Vérifiez la réponse d'AVA ci-dessous .

Ma vieille réponse semble fausse

SDReyes
la source
Cela signifie-t-il que si la quantité de données à chiffrer est importante, elle s'exécutera plus rapidement en utilisant RSA?
WilliamKF
2
Non, l'inverse. DSA est plus rapide dans la signature (ce qui est mathématiquement plus ou moins égal au cryptage), donc si vous devez crypter beaucoup et décrypter souvent, DSA est plus rapide.
Henri
Beaucoup de données à chiffrer côté client, mais elles ne sont déchiffrées qu'une seule fois sur le serveur, alors DSA gagne-t-il toujours?
WilliamKF
30
DSA ne crypte pas. Répétez, DSA ne crypte pas. Voici un quiz: Que signifie le "S" dans DSA?
Président James K. Polk
4
@GregS RSA étant capable de crypter contre DSA ne pouvant pas crypter est principalement un problème de terminologie. Nous appelons plusieurs algorithmes différents RSA, dont certains signent (par exemple RSA-PSS), certains chiffrent (par exemple RSA-OAEP). Mais nous avons donné à chaque algorithme de crypto basé sur un groupe un nom différent, appelant l'un des algorithmes de cryptage ElGamal encryption et appelant l'un des algorithmes de signature DSA.
CodesInChaos
24

Btw, vous ne pouvez pas chiffrer avec DSA, signez seulement. Bien qu'ils soient mathématiquement équivalents (plus ou moins), vous ne pouvez pas utiliser DSA dans la pratique comme schéma de chiffrement, mais uniquement comme schéma de signature numérique.

Henri
la source
20

En référence à man ssh-keygen, la longueur d'une clé DSA est limitée à exactement 1024 bits pour rester conforme à la norme FIPS 186-2 du NIST. Néanmoins, des clés DSA plus longues sont théoriquement possibles; FIPS 186-3 les autorise explicitement. De plus, la sécurité n'est plus garantie avec des clés RSA ou DSA d'une longueur de 1024 bits.

En conclusion, une clé RSA de 2048 bits est actuellement le meilleur choix.

PLUS DE PRÉCAUTIONS À PRENDRE

L'établissement d'une connexion SSH sécurisée implique plus que la sélection d'une technologie de paire de clés de cryptage sécurisée. Au vu des révélations de la NSA d'Edward Snowden, il faut être encore plus vigilant que ce qui était auparavant jugé suffisant.

Pour ne citer qu'un exemple, l'utilisation d'un algorithme d'échange de clés sécurisé est tout aussi importante. Voici un bel aperçu des meilleures pratiques de durcissement SSH actuelles .

Serge Stroobandt
la source
Certaines versions plus anciennes de ssh-keygenpermettent également d'autres clés de taille en bits (j'utilise moi-même une clé DSA 2048 bits générée à l'aide ssh-keygende RHEL).
Samveen
6

Et en plus des bonnes réponses ci-dessus.

  • DSA utilise le logarithme discret.
  • RSA utilise la factorisation entière.

RSA signifie Ron R ivest, Adi S hamir et Leonard A dleman.

Premraj
la source