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?
encryption
rsa
key
dsa
WilliamKF
la source
la source
Réponses:
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.
la source
Vérifiez la réponse d'AVA ci-dessous .
Ma vieille réponse semble fausse
la source
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.
la source
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 .
la source
ssh-keygen
permettent également d'autres clés de taille en bits (j'utilise moi-même une clé DSA 2048 bits générée à l'aidessh-keygen
de RHEL).Et en plus des bonnes réponses ci-dessus.
RSA signifie Ron R ivest, Adi S hamir et Leonard A dleman.
la source