Jaka jest różnica między DSA a RSA?

114

Wygląda na to, że oba są algorytmami szyfrowania, które wymagają klucza publicznego i prywatnego. Dlaczego miałbym wybierać jedną z opcji, aby zapewnić szyfrowanie w mojej aplikacji klienckiej?

WilliamKF
źródło
3
Jak wspomniał Henri , DSA nie służy do szyfrowania, tylko do podpisywania.
Samveen

Odpowiedzi:

27

Odnosząc się, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian-sec-2006/less19.html


Szyfrowanie i deszyfrowanie RSA RSA są przemienne,
dlatego mogą być używane bezpośrednio jako schemat podpisu cyfrowego,
biorąc pod uwagę schemat RSA {(e, R), (d, p, q)}
do podpisania wiadomości M, oblicz:
S = M potęga d (mod R),
aby zweryfikować podpis, oblicz:
M = S moc e (mod R) = M moc ed (mod R) = M (mod R)

RSA może być używany zarówno do szyfrowania, jak i podpisów cyfrowych, po prostu odwracając kolejność, w jakiej są używane wykładniki: tajny wykładnik (d) do tworzenia podpisu, wykładnik publiczny (e) dla każdego, kto weryfikuje podpis. Wszystko inne jest identyczne.

DSA (Digital Signature Algorithm)
DSA jest wariantem algorytmów ElGamala i Schnorra, który tworzy 320-bitowy podpis, ale z bezpieczeństwem 512-1024-bitowym ponownie opiera się na trudności w obliczaniu logarytmów dyskretnych. Generacja klucza DSA jest dość powszechnie akceptowana


pierwsze wspólne globalne publiczne Kluczowe wartości (p, q, g) są wybierane:
wybierz dużą
liczbę pierwszą p = 2 potęgę L, gdzie L = 512 do 1024 bitów i jest wielokrotnością 64
wybierz q, 160 bitowy czynnik pierwszy z p-1
wybierz g = h power (p-1) / q
dla dowolnego h1,
wtedy każdy użytkownik wybiera klucz prywatny i oblicza swój klucz publiczny:
wybierz x oblicz y = g moc x (mod p)

Generowanie kluczy DSA jest powiązane, ale nieco bardziej złożone niż El Gamal. Głównie z powodu zastosowania dodatkowego 160-bitowego modułu q używanego do przyspieszenia obliczeń i zmniejszenia rozmiaru wynikowej sygnatury.

Tworzenie i weryfikacja podpisu DSA w

celu podpisania wiadomości M
generuje losowy klucz podpisu k, k oblicz
r = (moc g k (mod p)) (mod q)
s = k-1.SHA (M) + xr (mod q)
send podpis (r, s) z wiadomością

do weryfikacji podpisu, oblicz:
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g power u1.y power u2 (mod p)) (mod q)
jeśli v = r to podpis jest weryfikowany

Tworzenie podpisu jest ponownie podobne do ElGamala z użyciem tymczasowego klucza podpisu dla wiadomości k, ale najpierw wykonuje się obliczenie mod p, a następnie mod q, aby zmniejszyć rozmiar wyniku. Zauważ, że użycie funkcji skrótu SHA jest tutaj jawne. Weryfikacja obejmuje również porównanie dwóch obliczeń, które są nieco bardziej złożone niż El Gamal, ale są związane.
Zauważ, że prawie wszystkie obliczenia są mod q, a zatem są znacznie szybsze.
Ale w przeciwieństwie do RSA, DSA może być używane tylko do podpisów cyfrowych

Bezpieczeństwo DSA
Kanał podprogowy istnieje w wielu schematach (takich, które wymagają losowego wyboru), nie tylko w DSA. Podkreśla potrzebę „bezpieczeństwa systemu”, a nie tylko dobrego algorytmu.

AVA
źródło
link do twojego referencji jest uszkodzony
Paul Wintz
82

Sprawdź odpowiedź AVA poniżej .

Moja stara odpowiedź wydaje się błędna

SDReyes
źródło
Czy to oznacza, że ​​jeśli ilość danych do zaszyfrowania jest duża, będzie działać szybciej przy użyciu RSA?
WilliamKF
2
Nie, na odwrót. DSA jest szybsze w podpisywaniu (które matematycznie jest mniej więcej równe szyfrowaniu), więc jeśli musisz dużo szyfrować i często odszyfrowywać, DSA jest szybsze.
Henri
Wiele danych do zaszyfrowania po stronie klienta, ale są one odszyfrowane tylko raz na serwerze, więc czy DSA nadal wygrywa?
WilliamKF
30
DSA nie szyfruje. Powtarzam, DSA nie szyfruje. Oto quiz: Co oznacza „S” w DSA?
Prezydent James K. Polk
4
@GregS RSA może szyfrować, a DSA nie jest w stanie szyfrować, jest głównie kwestią terminologiczną. Nazywamy kilka różnych algorytmów RSA, z których część jest znakiem (np. RSA-PSS), część z nich szyfruje (np. RSA-OAEP). Ale każdemu algorytmowi w kryptowalutach grupowych nadaliśmy inną nazwę, nazywając jeden z algorytmów szyfrujących ElGamal encryption i jednym z algorytmów podpisu DSA.
CodesInChaos
24

Przy okazji, nie możesz szyfrować za pomocą DSA, tylko podpisuj. Chociaż są one matematycznie równoważne (mniej więcej), w praktyce nie można używać DSA jako schematu szyfrowania, a jedynie jako schemat podpisu cyfrowego.

Henri
źródło
20

W odniesieniu do man ssh-keygen, długość klucza DSA jest ograniczona do dokładnie 1024 bitów, aby zachować zgodność ze standardem NIST FIPS 186-2. Niemniej jednak teoretycznie możliwe są dłuższe klucze DSA; Standard FIPS 186-3 wyraźnie na to zezwala. Co więcej, bezpieczeństwo nie jest już gwarantowane w przypadku kluczy RSA lub DSA o długości 1024 bitów.

Podsumowując, klucz RSA 2048-bitowy jest obecnie najlepszym wyborem.

WIĘCEJ ŚRODKÓW OSTROŻNOŚCI

Ustanowienie bezpiecznego połączenia SSH to coś więcej niż wybranie technologii bezpiecznych par kluczy szyfrowania. W świetle rewelacji Edwarda Snowdena NSA trzeba być jeszcze bardziej czujnym niż to, co wcześniej uznano za wystarczające.

Aby wymienić tylko jeden przykład, równie ważne jest użycie bezpiecznego algorytmu wymiany kluczy . Oto ładny przegląd aktualnych najlepszych praktyk hartowania SSH .

Serge Stroobandt
źródło
Niektóre starsze wersje ssh-keygenpozwalają również na klucze o innych rozmiarach bitowych (ja sam używam 2048-bitowego klucza DSA wygenerowanego przy użyciu ssh-keygenRHEL).
Samveen
6

A oprócz powyższych fajnych odpowiedzi.

  • DSA używa logarytmu dyskretnego.
  • RSA używa faktoryzacji całkowitej.

RSA oznacza Ron R ivest, Adi S hamir i Leonard A dleman.

Premraj
źródło