web-dev-qa-db-fra.com

Quelle est la différence entre DSA et RSA?

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

112
WilliamKF

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

RSA
Le cryptage et le décryptage RSA sont commutatifs
il peut donc être utilisé directement comme schéma de signature numérique
étant donné un schéma RSA {(e, R), (d, p, q)}
pour signer un message M, calculez:
S = M puissance d (mod R)
pour vérifier une signature, calculez:
M = S puissance e (mod R) = M puissance e.d (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 permettre à quiconque de vérifier la signature. Tout le reste est identique.

DSA (algorithme de signature numérique)
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

Génération de clé DSA
premièrement, les valeurs de clé publique globale partagée (p, q, g) sont choisies:
choisissent un grand nombre premier p = 2 puissance L
où L = 512 à 1024 bits et un multiple de 64
choisit q, un facteur premier de 160 bits de p-1
choisissez g = h puissance (p-1)/q
pour tout h1
chaque utilisateur choisit une clé privée et calcule sa clé publique:
choisir x calculer y = g puissance x (mod p)

La génération de clés DSA est liée à, mais un peu plus complexe qu'El Gamal. Principalement en raison de l'utilisation du module secondaire de 160 bits q 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

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

pour vérifier une signature, calculez:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = r.w (mod q)
v = (g puissance u1.y puissance u2 (mod p)) (mod q)
si v = r, 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 calculant mod p, puis mod q pour réduire la taille du résultat. Notez que l'utilisation de la fonction de hachage SHA est explicite ici. La vérification consiste également à comparer deux calculs, encore un peu plus complexes que, mais liés à El Gamal.
Notez que presque tous les calculs sont modq, et sont donc beaucoup plus rapides.
Mais contrairement à RSA, DSA ne peut être utilisé que pour les signatures numériques

DSA Security
La présence d'un canal subliminal existe dans de nombreux schémas (tous ceux qui nécessitent un nombre aléatoire pour être choisi), pas seulement DSA. Il souligne la nécessité de "sécurité du système", et pas seulement d'un bon algorithme.

23
AVA

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

Mon ancienne réponse semble fausse

82
SDReyes

Au fait, vous ne pouvez pas chiffrer avec DSA, seulement signer. Bien qu'ils soient mathématiquement équivalents (plus ou moins), vous ne pouvez pas utiliser DSA en pratique en tant que schéma de chiffrement, mais uniquement en tant que schéma de signature numérique.

24
Henri

En référence à man ssh-keygen, la longueur d'une clé DSA est limitée à exactement 1024 bits pour rester compatible avec les NIST FIPS 186-2. 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 de 1024 bits de long.

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

PLUS DE PRÉCAUTIONS À PRENDRE

Établir une connexion sécurisée SSH implique plus que de choisir une technologie de paire de clés de cryptage sécurisée. Au vu des révélations de Edward Snowden NSA), il faut être encore plus vigilant que ce qui était jugé suffisant auparavant.

Pour ne citer qu'un exemple, utiliser un algorithme d'échange de clé sûr est tout aussi important. Voici un bel aperçu des meilleures pratiques de renforcement SSH .

20
Serge Stroobandt

Et en plus de ce qui précède, Nice répond.

  • DSA utilise le logarithme discret.
  • RSA utilise la factorisation de nombre entier.

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

6
Premraj