Czy bezpiecznie jest wydać mój klucz publiczny SSH do pracy?


60

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_keyspliku, 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?


Odpowiedzi:


77

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 ~/.sshmiejscu, 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ę.


@NaftuliTzviKay W rzeczywistości jest coś, co należy rozważyć tutaj, a jest to przeoczone. Aby użyć klucza publicznego, system, z którego korzystasz, musi mieć dostęp do twojego klucza prywatnego. W porządku. Jeśli ten klucz prywatny jest przechowywany w tym systemie, jest podatny na atak, a system zdalny staje się podatny na atak. Pomagają w tym dwie rzeczy: zaszyfrowane foldery domowe i hasło do klucza. Dlatego, aby osiągnąć pełny wzrost bezpieczeństwa zapewnianego przez PKI, stracisz trochę wydajności. Ty lub Twoja organizacja musicie przeprowadzić analizę ryzyka, aby ustalić, gdzie wytyczyć granicę.
Xalorous

16

Odpowiedź Gillesa jest ogólnie dobra, z wyjątkiem tego, że

... szczególnie, jeśli przechowujesz klucz w ~ / .ssh, gdzie mogą go zobaczyć tylko administratorzy systemu (którzy również wiedzą, z którego adresu IP się zalogowałeś).

Twoje klucze ssh ~/.sshmogą 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.


2
Z tego powodu należy zawsze używać zaszyfrowanych kluczy SSH
ItalyPaleAle,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.