Obecnie pracuję zdalnie dla wielu organizacji, które wymagają regularnego uzyskiwania dostępu do swoich serwerów w celu konserwacji i aktualizacji. Czy mogę bezpiecznie dodać mój publiczny klucz SSH RSA do .ssh/authorized_keys
pliku, aby umożliwić mi znacznie szybsze logowanie / bez konieczności wyszukiwania haseł? Działam przy założeniu, że wygenerowanie klucza prywatnego z klucza publicznego byłoby niemożliwe, ale czy mam rację w założeniu?
Idąc o krok dalej, czy pojawienie się zawartości mojego klucza publicznego RSA w Internecie wiązałoby się z jakimkolwiek zagrożeniem bezpieczeństwa? Wiem, że jeśli mój klucz prywatny zostanie uzyskany, mam duże kłopoty, ale poza tym, czy istnieją jakieś realne potencjalne zagrożenia bezpieczeństwa?
ssh
security
key-authentication
Naftuli Kay
źródło
źródło
Odpowiedzi:
Tak, odzyskanie klucza prywatnego z klucza publicznego jest niemożliwe. Gdyby było to możliwe, RSA byłby zasadniczo zepsuty, a to byłaby ważna wiadomość (złamanie RSA nie tylko złamałoby wiele zabezpieczeń komunikacji internetowej, ale także umożliwiłoby wszelkiego rodzaju oszustwa bankowe, między innymi).
Logowanie przy użyciu klucza publicznego zamiast hasła w rzeczywistości zwykle zwiększa bezpieczeństwo. Jeśli twoje hasło nie jest wystarczająco silne, może zostać brutalnie wymuszone przez atakującego o wystarczającej przepustowości. Jeśli osoba atakująca nie ma kopii pliku klucza prywatnego, klucza RSA nie można skutecznie wymusić brutalnie (klucz 1024-bitowy jest równoważny z czymś w rodzaju 160-znakowego hasła złożonego z przypadkowych liter i cyfr z rozróżnianiem wielkich i małych liter) . Ktoś, kto czuwa nad twoim ramieniem, może zobaczyć twoje hasło i hasło, ale z kluczem będzie musiał także zdobyć klucz.
Klucze prywatne nie zawsze są bezpieczniejsze niż hasła. Jeśli osoba atakująca otrzyma kopię twoich prywatnych plików kluczy (na przykład kradnąc laptopa lub nośnik kopii zapasowej), może spróbować brutalnie wymusić hasło i może to zrobić z dużą prędkością, ponieważ nie masz możliwości ograniczenia stawka (w przeciwieństwie do domysłów dotyczących hasła, które należy wykonać online). Jeśli twoje hasło jest wystarczające i natychmiast zauważysz kradzież, nadal będziesz mieć czas na unieważnienie klucza.
Klucz publiczny wprowadza element ujawnienia prywatności: jeśli ktoś wie, że użyłeś tego samego klucza publicznego do zalogowania się do A i zalogowania do B, wie, że ta sama osoba zalogowała się do A i B. Zwykłe posiadanie klucza publicznego sprawia, że jesteś podejrzany, że masz również klucz prywatny, więc tracisz anonimowość. Ale zwykle jest to niewielkie, szczególnie jeśli przechowuje się klucz w
~/.ssh
miejscu, w którym mogą go zobaczyć tylko administratorzy systemu (którzy również wiedzą, z którego adresu IP się zalogowali).Pomijając te względy bezpieczeństwa, klucz prywatny ma wiele praktycznych zalet. Nie musisz wpisywać swojego hasła tak często, a w szczególności możesz uruchamiać automatyczne skrypty, które nie wyświetlają monitu po wprowadzeniu klucza w ssh-agent itp. Nie musisz tak często wpisywać hasła, więc możesz pozwolić sobie na wyższą entropię (dłuższe, trudniejsze do wpisania). Nie musisz wpisywać swojego hasła tak często, więc istnieje mniejsze ryzyko, że zostanie ono wykradzione przez ludzkiego obserwatora lub kamerę.
źródło
Odpowiedź Gillesa jest ogólnie dobra, z wyjątkiem tego, że
Twoje klucze ssh
~/.ssh
mogą być odczytane przez dowolne oprogramowanie działające na Twoim koncie. Co jest prawdopodobnie większością uruchomionego oprogramowania. Musisz więc zaufać temu oprogramowaniu i tym, którzy go napisali.źródło