Co jest lepsze dla kluczy GPG - RSA lub DSA?

58

ssh-keygendomyślnie tworzy klucze RSA, ale gpg --gen-keywoli DSA / ElGamal.

Który - RSA lub DSA - jest lepszy dla GPG?

grawitacja
źródło
1
Zobacz także to pytanie StackOverflow, a także moją odpowiedź na duplikat tego pytania, która omawia, dlaczego RSA jest znacznie bezpieczniejszy niż DSA, zarówno w 2010 roku, jak i ze znanymi obecnie lukami (wszystkie dotyczą DSA).
Adam Katz

Odpowiedzi:

25

RSA i DSA - nieporozumienia i przydatne informacje
zawierają kilka starszychodniesień do RSA i najnowszeodniesienie do DSA ,


W 2003 roku RSA kontra DSA Signature - Zwycięzcą jest ... - RSA .

Generalnie generowanie kluczy jest więc niezwykle szybkie dla DSA, co ma sens, jeśli rozumiesz algorytmy. Podpisywanie jest również szybsze w przypadku DSA, ale nie tak duże. Wielką siłą RSA jest weryfikacja, która jest znacznie szybsza niż DSA .

Ostatni projekt IETF: DSA z SHA-2 dla DNSSEC , wygasa 7 stycznia 2010.
Ma on dzisiaj kilka powodów do promowania DSA przez RSA.

Używanie DSA z SHA-256 w DNSSEC ma pewne zalety i wady w stosunku do używania RSA z SHA-256 przy użyciu 2048-bitowych kluczy. Podpisy DSA są znacznie krótsze niż podpisy RSA ; przy tym rozmiarze różnica wynosi 512 bitów i 2048 bitów. Na typowych platformach używających 2048-bitowych kluczy podpisywanie DSA jest około trzy razy szybsze niż w przypadku RSA, ale weryfikacja podpisów RSA jest ponad dziesięciokrotnie szybsza niż w przypadku DSA .

Siła kryptograficzna DSA jest ogólnie uważana za równoważną RSA, gdy klucz publiczny DSA i klucze publiczne RSA są tego samego rozmiaru. Taka ocena mogłaby oczywiście zmienić się w przyszłości, jeśli zostaną wykryte nowe ataki, które lepiej działają z jednym lub drugim algorytmem.

Obecnie nie są znane żadne ataki na określony zestaw parametrów DSA wybranych dla tego dokumentu. Taka ocena mogłaby oczywiście zmienić się w przyszłości.

Ale w tej chwili jest to tylko szkic .

Wszyscy uwielbiają szybkość weryfikacji RSA (!).

nik
źródło
6

Cytując dyskusję na forum :

Radzę używać klucza do podpisywania RSA (klucz „podstawowy” lub „główny”) i podklucza RSA do szyfrowania. Powodem używania RSA do podpisywania jest głównie to, że RSA pozwala na użycie większych skrótów niż DSA. DSA2 pozwala także używać większych skrótów, ale RSA jest obsługiwany przez wiele lat dłużej niż DSA2.

Myślę, że jeśli używasz go w standardowy sposób (tj. Nie szyfrujesz ogromnej ilości danych), obie strony dobrze sobie radzą.

Osobiście wybrałbym RSA, ponieważ nauczyłem się algorytmu i jest to jeden z najpiękniejszych algorytmów, jakie kiedykolwiek widziałem.

Adam Matan
źródło
4

Możliwe jest także stosowanie algorytmów SHA-2 od czasu obecnej aktualizacji DSS; ale nie mogłem dowiedzieć się, która wersja GPG następuje.

W odniesieniu do aktualnej specyfikacji DSS ( FIPS-186-3 , s. I) można użyć dowolnej funkcji skrótu określonej w SHS (FIPS-180-3, s. Iv):

DSS:

Należy stosować algorytmy podpisu cyfrowego zatwierdzone przez FIPS z odpowiednią funkcją skrótu określoną w SHS.

SHS:

Niniejszy standard określa pięć bezpiecznych algorytmów mieszających - SHA-1, SHA-224, SHA-256, SHA-384 i SHA-512 - do obliczania skondensowanej reprezentacji danych elektronicznych (wiadomości).


Na pytanie: oba algorytmy opierają się na problemach matematycznych, które nie zostały udowodnione jako bezpieczne (RSA wykorzystuje problem faktoryzacji liczb, a DSA stosuje problem logarytmu dyskretnego), nie można powiedzieć, że jeden jest bardziej bezpieczny od drugiego, ponieważ nie ten drugi żaden problem nie został rozwiązany.

Ale używając DSA z SHA-1 możesz mieć problem z bezpieczeństwem, jak już powiedział pgs .

Manuel Faux
źródło
1

Faktem jest, że prawdopodobnie nie ma to dla ciebie większego znaczenia :) W ramach przygotowań do wygenerowania pary kluczy oraz w ramach utrzymywania istniejących par kluczy - niezależnie od tego, jaką kryptografię asymetryczną wybierzesz, powinieneś: 1) sprawdzić bieżący zalecany długości kluczy 2) wybrał base / modulo, aby zoptymalizować do podpisywania lub weryfikacji - w zależności od tego, co będzie robione częściej (klucze do użycia przy wydawaniu certyfikatów serwera TLS / SSL powinny być zoptymalizowane do weryfikacji, ponieważ każda przeglądarka internetowa sprawdzi podpis ... klucze używane w oprogramowaniu do podpisywania powinny być podobnie zoptymalizowane) 3) upewnij się, że postarzałeś swoje klucze - używasz tego samego klucza do ssh-auth od kilku lat, może być czas na regenerację, nawet jeśli wybierzesz klucz rozmiar, który jest nadal rozsądny dla dzisiejszej aplikacji.

Zarówno RSA, jak i DSA zostały zasadniczo ocenione; jeśli korzystasz z niezawodnej bazy kodu (RSAREF, reklama komercyjna RSA, Mozilla / Netscape, Microsoft, OpenSSL, ...), prawdopodobnie nie obchodzi Cię, którego kryptosystemu używasz, o ile używasz go poprawnie i wykorzystujesz obecne najlepsze praktyki

Baran
źródło