Jaka jest różnica między id_rsa.pub a id_dsa.pub?

Odpowiedzi:

64

id_rsa.pubi id_dsa.pubsą kluczami publicznymi dla id_rsai id_dsa.

Jeśli pytasz w odniesieniu do SSH, id_rsato jest klucz RSA i może być używany z protokołem SSH 1 lub 2, podczas gdy id_dsajest to klucz DSA i może być używany tylko z protokołem SSH 2. Oba są bardzo bezpieczne, ale DSA wydaje się być standard w dzisiejszych czasach (zakładając, że wszyscy twoi klienci / serwery obsługują SSH 2).

Aktualizacja: Odkąd to napisano, wykazano, że DSA jest niepewne. Więcej informacji w odpowiedzi poniżej.

Mike Pelley
źródło
Muszę się z tym nie zgodzić. Obecnie (i choć w mniejszym stopniu, także w 2010 r., Kiedy to opublikowano), 1024 bity (największy rozmiar klucza dostępny dla DSA) jest uważane za zbyt słabe. Dlatego RSA jest lepszą opcją. Co do SSH v1: 10 lat temu nie uważałem tego za bezpieczne.
Adam Katz
3
@AdamKatz DSA obsługuje od 2009 roku klucze 2048-bitowe i 3072-bitowe (zgodnie z FIPS 186-3 ). Większość klientów / serwerów ssh obsługuje większe klucze DSA, w tym OpenSSH i PuTTY. Większość generatorów kluczy obsługuje również większe klucze DSA, ale ssh-keygen z OpenSSH nadal nie obsługuje (nawet jeśli zarówno ssh, jak i sshd tak). W systemie Linux można generować większe klucze DSA przy użyciu OpenSSL, jak opisano w tym poście na blogu .
Mike Pelley
1
Ciekawy! Nie wiedziałem o tym, a to z pewnością pomaga wyrównać pole między nimi (chociaż brak obsługi OpenSSH jest dość obciążający). Mimo to nie powiedziałbym, że DSA jest standardem (teraz lub w 2010 roku), podczas gdy RSA jest absolutnie (i przechodzimy na systemy krzywych eliptycznych, takie jak Ed25519).
Adam Katz
46

SSH korzysta z publicznych / prywatnych par klucz , więc id_rsajest twoja RSA klucz prywatny (na podstawie liczb pierwszych), który jest bardziej bezpieczny niż id_dsa DSA klucza prywatnego (na podstawie wykładników). Chroń swoje klucze prywatne i udostępniaj szeroko klucze swoje id_rsa.pubi id_dsa.pubpubliczne.

DSA jest niepewne

DSA ma parametr, który można zgadnąć, jeśli generator liczb losowych na komputerze jest poniżej par, co ujawni Twój tajny klucz. ECDSA (aktualizacja krzywej eliptycznej DSA) jest podobnie podatna na ataki . Nawet przy dobrych liczbach losowych DSA ma inne problemy z siłąPDF (można je również znaleźć w Diffie-Hellman ).

OpenSSH tworzy niezabezpieczone klucze 1024-bitowe ( obejście ) i teraz domyślnie wyłącza DSA .

Jeśli to możliwe, używaj Ed25519

Kryptografia krzywych eliptycznych zapewnia większą złożoność przy mniejszych rozmiarach kluczy. Ed25519 (oparty na złożoności krzywych eliptycznych modelowanych na płaszczyźnie ) jest preferowaną implementacją ze względu na zakładany brak ingerencji (ujawnione dokumenty pokazują, że NSA w USA osłabia standardy kryptograficzne ).

Niestety Ed25519 jest wciąż dość nowy i wymaga OpenSSH 6.5 lub GnuPG 2.1 (zobacz pełną listę ).

Użyj RSA z 4096 bitami, gdy Ed25519 jest niedostępny

Klucze RSA o wielkości 4096 bitów powinny mieć złożoność porównywalną do Ed25519.

Ed25519 jest nadal preferowany od RSA z powodu obawy, że RSA może być podatny na te same obawy co do siły, co DSA, chociaż oczekuje się, że zastosowanie tego exploita do RSA będzie znacznie trudniejsze.

Adam Katz
źródło
2
Tylko jedna korekta: DSA obsługuje klucze 2048-bitowe i 3072-bitowe od 2009 r. (Zgodnie z FIPS 186-3 ). Więcej informacji w moim komentarzu powyżej.
Mike Pelley
2
Infosec SE ma miłą odpowiedź na to pytanie, która się pogłębia. Cytuje rozmowę Black Hat 2013, która sugeruje, że DSA nie jest już bezpieczne, nawet przy większych rozmiarach kluczy.
Adam Katz
2
Zaktualizowałem tę odpowiedź, aby była bardziej wyczerpująca na temat problemów z DSA. Jest teraz bardziej szczegółowy niż (równie ważna) odpowiedź Infosec SE. Jeszcze więcej szczegółów pojawia się, gdy najedziesz kursorem myszy na niektóre linki.
Adam Katz,
1
Ten post bardzo mnie nauczył, potrzebuje dużo więcej głosów.
liljoshu
2

rsa jest uważany za bezpieczniejszy.

Już nie (maj 2020 dziesięć lat później), z OpenSSH 8.2 , jak zgłoszone przez Julio

Powiadomienie o wycofaniu w przyszłości

Obecnie możliwe jest 1 wykonanie ataków z wybranym prefiksem na algorytm skrótu SHA-1 za mniej niż 50 000 USD.
Z tego powodu w najbliższej przyszłości będziemy wyłączać algorytm podpisu klucza publicznego „ssh-rsa”, który domyślnie zależy od SHA-1 .

(Zobacz „ SHA-1 to Shambles: pierwsza kolizja prefiksu wybranego na SHA-1 i zastosowanie do sieci zaufania PGP ” Leurent, G and Peyrin, T (2020))

Ten algorytm jest niestety nadal szeroko stosowany, pomimo istnienia lepszych alternatyw, będąc jedynym pozostałym algorytmem podpisu klucza publicznego określonym w oryginalnych dokumentach RFC SSH.

Lepsze alternatywy obejmują:

  • Algorytmy podpisu RFC8332 RSA SHA-2 rsa-sha2-256 / 512.
    Algorytmy te mają tę zaletę, że używają tego samego typu klucza co „ ssh-rsa”, ale używają bezpiecznych algorytmów mieszania SHA-2.
    Są one obsługiwane od wersji OpenSSH 7.2 i są już używane domyślnie, jeśli obsługują je klient i serwer.

  • Algorytm podpisu ssh-ed25519.
    Jest obsługiwany w OpenSSH od wersji 6.5.

  • Algorytmy ECDSA RFC5656: ecdsa-sha2-nistp256 / 384/521.
    Są one obsługiwane przez OpenSSH od wersji 5.7.

Aby sprawdzić, czy serwer używa słabego algorytmu klucza publicznego ssh-rsa do uwierzytelniania hosta, spróbuj się z nim połączyć po usunięciu ssh-rsaalgorytmu z listy dozwolonych ssh (1):

ssh -oHostKeyAlgorithms=-ssh-rsa user@host

Jeśli weryfikacja klucza hosta nie powiedzie się i nie są dostępne żadne inne obsługiwane typy kluczy hosta, należy zaktualizować oprogramowanie serwera na tym hoście.

Przyszłe wydanie OpenSSH UpdateHostKeysdomyślnie umożliwi klientowi automatyczną migrację do lepszych algorytmów.
Użytkownicy mogą rozważyć ręczne włączenie tej opcji .

VonC
źródło
-8

Jeden używa DSA, a drugi RSA .

Yann Ramin
źródło
zakładając, że używasz tylko domyślnych nazw (które logicznie wygląda na to), theatrus uderzył to prosto w głowę.
David Larrabee
Nie odpowiedziałeś na prawdziwą część pytania: co jest bezpieczniejsze. Głosowanie przeciw, ponieważ była to najwyższa odpowiedź. Nie musi.
akauppi