Dlaczego klucz publiczny SSH znajduje się na serwerze, a nie z klientem?

12

Nie do końca rozumiem teorię przechowywania kluczy publicznych na serwerze. W analogii skrytki kluczy publicznych / prywatnych, aby odblokować Alicji pole, Alice posiada klucz prywatny, podczas gdy klucz publiczny jest rozprowadzany do Boba. Wydawałoby się, że serwer pełni rolę skrytki, więc dlaczego trzyma klucz publiczny?

Connor Glosser
źródło

Odpowiedzi:

20

Należy pamiętać, że serwer NIE ma klucza prywatnego i publicznego, który jest całkowicie niezależny od pary kluczy generowanych jako użytkownik. Klucz prywatny dla serwera jest zwykle przechowywany wraz z konfiguracją serwera, a klucz publiczny jest przesyłany przez serwer podczas próby połączenia. Klient porównuje klucz publiczny serwera z plikiem znanego_hosta. Prawidłowe użycie zapobiega atakom MITM.

Masz klucz prywatny do swojego konta osobistego. Serwer potrzebuje twojego klucza publicznego, aby mógł sprawdzić, czy twój klucz prywatny do konta, którego próbujesz użyć, jest autoryzowany.

Korzystając z twojego przykładu. Zarówno Bob, jak i Alice mają klucze prywatne i klucze publiczne. Klucze publiczne, które zostały udostępnione wcześniej lub jako część połączenia, są wykorzystywane do weryfikacji danych zaszyfrowanych kluczami prywatnymi. Jeśli klient nie ma klucza publicznego lub ma inny klucz publiczny, otrzymasz przerażające ostrzeżenie. Jeśli serwer nie ma klucza publicznego klienta, nie zostaniesz wpuszczony.

Zoredache
źródło
1
Aha! To ma o wiele większy sens. Wiedziałem, że istnieje metoda ochrony przed atakami MITM, ale nie wiedziałem, że istnieje inna para kluczy :) Dzięki za pomoc!
Connor Glosser
5

Ty, jako użytkownik, podajesz informacje, którymi jesteś, gdy się logujesz. Aby uzyskać autoryzację, potrzebujesz klucza prywatnego, ponieważ serwer zapyta każdego, kto udaje, że jesteś tobą (próbuje zalogować się przy użyciu imię), aby to udowodnić.

Działa to tak, że serwer wysyła ci trochę tekstu, prosi o zaszyfrowanie go i odszyfrowanie za pomocą klucza publicznego. Może to zrobić tylko osoba posiadająca Twój klucz prywatny.

Kair
źródło
1

Dla wygody posiada klucz publiczny. W przeciwnym razie musisz utworzyć PKI - coś podobnego do SSL CA.

Pomysł polegałby na sprawdzeniu odcisku palca klucza publicznego, gdy klient ssh poprosi o zaakceptowanie klucza zdalnego serwera.

Mircea Vutcovici
źródło
1

Powiedziałbym, że lepszą analogią jest to, że kluczem publicznym serwera jest otwarta skrytka z zatrzaskiem, który można zamknąć (ale nie otworzyć), tylko serwer może go otworzyć. Prawdziwe pytanie brzmi: czy ufasz kluczowi publicznemu (czy to naprawdę pudełko Alicji ?), Skądkolwiek go otrzymujesz, jest on z definicji publiczny i na tym właśnie polega PKI.

Helvick
źródło
1

Klucz publiczny to bardzo duża liczba, matematycznie wyprowadzona z klucza prywatnego.

Wyprowadza się go w taki sposób, że te dwie liczby są połączone,

ale tak, aby klucz prywatny nie mógł zostać odkryty przez nikogo, kto zna tylko klucz publiczny. Klucz publiczny jest tym, co wysyłasz do innych podmiotów, którym chcesz się uwierzytelnić lub do których chcesz wysłać zaszyfrowane wiadomości. Klucz publiczny nie jest wrażliwy i nie musi być chroniony. Może być rozpowszechniany publicznie. [email protected]

Dilli Babu
źródło
1
Wydaje mi się, że w tej odpowiedzi nie ma nic nowego w porównaniu z innymi odpowiedziami udzielonymi już pięć lat temu.
kasperd