Czy używanie kluczy SSH do logowania na nieznanym / zagrożonym serwerze nie jest niebezpieczne?
9
Powiedzmy, że udostępniam komuś mój publiczny klucz SSH, id_rsa.pub, a on / ona instaluje go na zagrożonym serwerze i zostałem poproszony o zalogowanie się.
Czy proces logowania wymaga wysłania mojego klucza prywatnego do zainfekowanego serwera?
Jeśli tak, osoba atakująca ma teraz dostęp do mojego prywatnego klucza SSH, co jest przerażające.
Jeśli nie, to dlaczego widzę ten wiersz w danych wyjściowych ssh -vvv:
debug1: Server accepts key: pkalg ssh-rsa blen 277
Oznacza to, że klucz prywatny został wysłany na serwer i zaakceptował go.
Twój klucz publiczny jest właśnie taki - publiczny. Udostępnianie go jest całkowicie bezpieczne. Wysyłanie komuś klucza publicznego może ujawnić twoją tożsamość (ludzie mogą wiedzieć, że to od ciebie, ponieważ jest to unikalny numer), ale nigdy nie może pozwolić, aby ktoś inny podszył się pod Ciebie lub uwierzytelnił się jako Ty. Równie dobrze możesz opublikować swój klucz publiczny na SuperUser lub na swojej stronie internetowej przez zwykły HTTP; jest całkowicie bezpieczny i całkowicie bezużyteczny, jeśli ktoś nie ma twojego klucza prywatnego.
Twój klucz prywatny jest właśnie taki - prywatny. Znajduje się tylko w systemach, które posiadasz i którym ufasz (mam nadzieję), i zawsze powinien być szyfrowany hasłem odblokowującym dla maksymalnego bezpieczeństwa, na wypadek, gdyby ktoś uzyskał fizyczny dostęp do systemu, w którym jest przechowywany. Klucz prywatny nigdy nie jest przesyłany przez odpowiednio zaimplementowany program bezpieczeństwa, który działa zgodnie z zasadami kryptografii klucza publicznego. Oznacza to, że jeśli nie masz programu w systemie lokalnym, który został przejęty i jest w stanie odczytać Twój klucz prywatny (a klucz prywatny nie jest zaszyfrowany hasłem), Twój klucz prywatny jest zawsze bezpieczny.
Wiadomości są podpisywane za pomocą klucza prywatnego na komputerze , zanim zostaną wysłane na zdalny serwer. Zamiast wysyłać klucz prywatny na zdalny serwer, wysyłasz wiadomość, która została zaszyfrowana za pomocą klucza prywatnego. Ale te dwie rzeczy nie są takie same: nie można uzyskać klucza prywatnego z podpisanej wiadomości; jest to część kryptografii klucza publicznego.
Krótko mówiąc, nawet jeśli wrogi atakujący otrzyma Twój klucz publiczny i wiadomości podpisane przez Twój klucz prywatny, nadal nie będzie w stanie uzyskać Twojego rzeczywistego klucza prywatnego, a zatem nie będzie mógł podszyć się pod twoje poświadczenia ani użyć twojego klucza prywatnego do uwierzytelnienia „jako ty".
Rozumiem proces crypo klucza publicznego, ale został zdezorientowany przez komunikat debugowania wysłany przez ssh. Odpowiedź z @ pjc50 wydaje się zapewniać pewność, której szukałem.
Gurjeet Singh,
11
Nie rozumiesz tego procesu.
Klucz nie jest wysyłany, a raczej „wyzwanie” jest konstruowane przez szyfrowanie czegoś za pomocą klucza publicznego, który można odszyfrować tylko odpowiednim kluczem prywatnym.
Jeśli zostaniesz poproszony o podanie hasła lub przekierujesz X na zaatakowany serwer, istnieje potencjalne zagrożenie bezpieczeństwa.
Dzięki. ssh również emituje ten komunikat, debug1: Offering RSA public key: <$HOME>/.ssh/id_rsaco sprawia, że można myśleć, że klucz prywatny jest współdzielony, mimo że plik id_rsa.pub został już udostępniony.
Gurjeet Singh,
Klucz publiczny jest bardzo publiczny. Możesz dać to każdemu. To daje im możliwość szyfrowania wiadomości. Klucz prywatny pozwala odszyfrować wiadomości. Tak długo, jak trzymasz swój klucz prywatny dla siebie, nic ci nie jest.
ssh
. Odpowiedź z @ pjc50 wydaje się zapewniać pewność, której szukałem.Nie rozumiesz tego procesu.
Klucz nie jest wysyłany, a raczej „wyzwanie” jest konstruowane przez szyfrowanie czegoś za pomocą klucza publicznego, który można odszyfrować tylko odpowiednim kluczem prywatnym.
Jeśli zostaniesz poproszony o podanie hasła lub przekierujesz X na zaatakowany serwer, istnieje potencjalne zagrożenie bezpieczeństwa.
źródło
debug1: Offering RSA public key: <$HOME>/.ssh/id_rsa
co sprawia, że można myśleć, że klucz prywatny jest współdzielony, mimo że plik id_rsa.pub został już udostępniony.