Was ist der Unterschied zwischen DSA und RSA?


114

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?


3
Wie von Henri erwähnt , dient DSA nicht zur Verschlüsselung, sondern nur zum Signieren.
Samveen

Antworten:


27

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.


Der Link zu Ihrer Referenz ist unterbrochen
Paul Wintz

82

Überprüfen Sie die Antwort von AVA unten .

Meine alte Antwort scheint falsch zu sein


Bedeutet das also, dass die zu verschlüsselnde Datenmenge mit RSA schneller ausgeführt wird, wenn sie groß ist?
WilliamKF

2
Nein, umgekehrt. DSA signiert schneller (was mathematisch mehr oder weniger der Verschlüsselung entspricht). Wenn Sie also viel verschlüsseln und häufig entschlüsseln müssen, ist DSA schneller.
Henri

Viele Daten müssen auf der Clientseite verschlüsselt werden, aber sie werden auf dem Server nur einmal entschlüsselt. Gewinnt DSA also immer noch?
WilliamKF

30
DSA verschlüsselt nicht. Wiederholen Sie, DSA verschlüsselt nicht. Hier ist ein Quiz: Was bedeutet das "S" in DSA?
Präsident James K. Polk

4
@GregS RSA ist in der Lage zu verschlüsseln, während DSA nicht in der Lage ist zu verschlüsseln, ist meistens ein Problem der Terminologie. Wir nennen verschiedene Algorithmen RSA, von denen einige Vorzeichen (z. B. RSA-PSS) und einige verschlüsseln (z. B. RSA-OAEP). Wir haben jedoch jedem Algorithmus in gruppenbasierter Krypto einen anderen Namen gegeben, indem wir einen der Verschlüsselungsalgorithmen ElGamal-Verschlüsselung und einen der Signaturalgorithmen DSA aufgerufen haben.
CodesInChaos

24

Ü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.


20

In Bezug auf man ssh-keygenist 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 .


Einige ältere Versionen von ssh-keygenerlauben auch andere Schlüssel mit Bitgröße (ich selbst verwende einen 2048-Bit-DSA-Schlüssel, der mit ssh-keygenRHEL generiert wurde ).
Samveen

6

Und zusätzlich zu den oben genannten netten Antworten.

  • DSA verwendet den diskreten Logarithmus.
  • RSA verwendet Integer Factorization.

RSA steht für Ron R ivest, Adi S hamir und Leonard A dleman.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.