Czy jeden jest bezpieczniejszy od drugiego?
Odpowiedzi:
id_rsa.pub
i id_dsa.pub
są kluczami publicznymi dla id_rsa
i id_dsa
.
Jeśli pytasz w odniesieniu do SSH
, id_rsa
to jest klucz RSA i może być używany z protokołem SSH 1 lub 2, podczas gdy id_dsa
jest 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.
SSH korzysta z publicznych / prywatnych par klucz , więc
id_rsa
jest 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.pub
i id_dsa.pub
publiczne.
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łą (można je również znaleźć w Diffie-Hellman ).
OpenSSH tworzy niezabezpieczone klucze 1024-bitowe ( obejście ) i teraz domyślnie wyłącza DSA .
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ę ).
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.
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-rsa
algorytmu 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
UpdateHostKeys
domyślnie umożliwi klientowi automatyczną migrację do lepszych algorytmów.
Użytkownicy mogą rozważyć ręczne włączenie tej opcji .
Tak, rsa jest uważane za bezpieczniejsze.
W październiku 2014 OpenSSH 7 (domyślnie w Ubuntu 16.04LTS) wyłączył domyślną obsługę DSA. Potraktuj to jako silny znak, że DSA nie jest już zalecaną metodą.
https://www.gentoo.org/support/news-items/2015-08-13-openssh-weak-keys.html