Es scheint, dass es sich bei beiden um Verschlüsselungsalgorithmen handelt, für die öffentliche und private Schlüssel erforderlich sind. Warum sollte ich eine gegen die andere auswählen, um die Verschlüsselung in meiner Client-Server-Anwendung bereitzustellen?
encryption
rsa
key
dsa
WilliamKF
quelle
quelle
Antworten:
Verweis auf https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html
RSA
RSA-Verschlüsselung und -Entschlüsselung sind kommutativ,
daher kann sie direkt als digitales Signaturschema verwendet werden,
wenn ein RSA-Schema {(e, R), (d, p, q)}
zum Signieren einer Nachricht M gegeben ist. Berechnen Sie:
S = M Leistung d (mod R)
Um eine Signatur zu verifizieren, berechnen Sie:
M = S Leistung e (mod R) = M Leistung ed (mod R) = M (mod R)
RSA kann sowohl für die Verschlüsselung als auch für digitale Signaturen verwendet werden, indem einfach die Reihenfolge umgekehrt wird, in der die Exponenten verwendet werden: der geheime Exponent (d) zum Erstellen der Signatur, der öffentliche Exponent (e), damit jeder die Signatur überprüfen kann. Alles andere ist identisch.
DSA (Digital Signature Algorithm)
DSA ist eine Variante auf den ElGamal und Schnorr Algorithmen eine Signatur 320 Bit erzeugt, aber mit 512-1024 Bit - Sicherheits Sicherheit wieder ruht auf Schwierigkeiten bei der Berechnung diskreter Logarithmen ganz allgemein akzeptiert wurde
DSA Key Generation
zunächst gemeinsame globale Öffentlichkeit Schlüsselwerte (p, q, g) werden gewählt:
Wählen Sie eine große Primzahl p = 2 Potenz L,
wobei L = 512 bis 1024 Bit und ein Vielfaches von 64 ist.
Wählen Sie q, ein 160-Bit-Primfaktor von p-1,
wählen Sie g = h power (p-1) / q
für jedes h1,
dann wählt jeder Benutzer einen privaten Schlüssel und berechnet seinen öffentlichen Schlüssel:
wähle x compute y = g power x (mod p)
Die Generierung von DSA-Schlüsseln ist verwandt mit El Gamal, jedoch etwas komplexer. Hauptsächlich aufgrund der Verwendung des sekundären 160-Bit-Moduls q, der verwendet wird, um Berechnungen zu beschleunigen und die Größe der resultierenden Signatur zu verringern.
DSA-Signaturerstellung und -verifizierung
zum Signieren einer Nachricht M
erzeugen einen zufälligen Signaturschlüssel k, k berechnen
r = (g Leistung k (mod p)) (mod q)
s = k-1.SHA (M) + xr (mod q)
senden Signatur (r, s) mit Nachricht
zum Überprüfen einer Signatur, berechnen:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g Leistung u1.y Potenz u2 (mod p)) (mod q)
Wenn v = r, wird die Signatur verifiziert
Die Signaturerstellung ähnelt wieder ElGamal mit der Verwendung eines temporären Signaturschlüssels k pro Nachricht, berechnet jedoch zuerst mod p und dann mod q, um die Größe des Ergebnisses zu verringern. Beachten Sie, dass die Verwendung der Hash-Funktion SHA hier explizit ist. Die Überprüfung besteht auch darin, zwei Berechnungen zu vergleichen, die wiederum etwas komplexer sind als El Gamal, aber damit zusammenhängen.
Beachten Sie, dass fast alle Berechnungen mod q sind und daher viel schneller sind.
Im Gegensatz zu RSA kann DSA jedoch nur für digitale Signaturen verwendet werden
DSA-Sicherheit
Das Vorhandensein eines unterschwelligen Kanals besteht in vielen Schemata (bei denen eine Zufallszahl ausgewählt werden muss), nicht nur bei DSA. Es unterstreicht die Notwendigkeit einer "Systemsicherheit", nicht nur eines guten Algorithmus.
quelle
Überprüfen Sie die Antwort von AVA unten .
Meine alte Antwort scheint falsch zu sein
quelle
Übrigens können Sie nicht mit DSA verschlüsseln, sondern nur unterschreiben. Obwohl sie mathematisch äquivalent sind (mehr oder weniger), können Sie DSA in der Praxis nicht als Verschlüsselungsschema verwenden, sondern nur als digitales Signaturschema.
quelle
In Bezug auf
man ssh-keygen
ist die Länge eines DSA-Schlüssels auf genau 1024 Bit beschränkt, um mit FIPS 186-2 von NIST kompatibel zu bleiben. Trotzdem sind theoretisch längere DSA-Schlüssel möglich; FIPS 186-3 erlaubt sie ausdrücklich. Darüber hinaus ist die Sicherheit mit 1024 Bit langen RSA- oder DSA-Schlüsseln nicht mehr garantiert.Zusammenfassend ist ein 2048-Bit-RSA-Schlüssel derzeit die beste Wahl.
MEHR VORSICHTSMASSNAHMEN
Das Herstellen einer sicheren SSH-Verbindung umfasst mehr als die Auswahl einer sicheren Verschlüsselungsschlüsselpaar-Technologie. Angesichts der NSA-Enthüllungen von Edward Snowden muss man noch wachsamer sein als bisher angenommen.
Um nur ein Beispiel zu nennen: Die Verwendung eines sicheren Schlüsselaustauschalgorithmus ist ebenso wichtig. Hier ist ein schöner Überblick über die derzeit besten SSH-Härtungspraktiken .
quelle
ssh-keygen
erlauben auch andere Schlüssel mit Bitgröße (ich selbst verwende einen 2048-Bit-DSA-Schlüssel, der mitssh-keygen
RHEL generiert wurde ).Und zusätzlich zu den oben genannten netten Antworten.
RSA steht für Ron R ivest, Adi S hamir und Leonard A dleman.
quelle