Почему открытый ключ SSH находится на сервере, а не на клиенте?

12

Я не совсем понимаю теорию хранения открытых ключей на сервере. В аналогии с защищенным хранилищем государственных / частных ключей, чтобы разблокировать Алиса окна, Алиса держит закрытый ключ , а открытый ключ распространяется Бобу. Казалось бы, сервер играет роль lockbox, так почему же он содержит открытый ключ?

Коннор Глоссер
источник

Ответы:

20

Имейте в виду, что сервер имеет закрытый и открытый ключ, который полностью отделен от пары ключей, которую вы генерируете как пользователь. Закрытый ключ для сервера обычно хранится вместе с конфигурацией сервера, а открытый ключ передается сервером при попытке подключения. Ваш клиент сравнивает открытый ключ сервера с вашим файлом known_hosts. При правильном использовании это предотвращает атаки MITM.

У вас есть закрытый ключ для вашей личной учетной записи. Серверу нужен ваш открытый ключ, чтобы он мог подтвердить, что ваш закрытый ключ для учетной записи, которую вы пытаетесь использовать, авторизован.

Итак, используя ваш пример. И Боб, и Алиса имеют закрытые ключи и открытые ключи. Открытые ключи, которые были переданы ранее или как часть соединения, используются для проверки законности данных, зашифрованных с помощью закрытых ключей. Если у клиента нет открытого ключа или другой открытый ключ, вы получите страшное предупреждение. Если на сервере нет открытого ключа клиента, вы не сможете войти.

Zoredache
источник
1
Ага! Это имеет гораздо больше смысла. Я знал, что есть метод защиты от атак MITM, но я не знал, что есть еще одна пара ключей :) Спасибо за помощь!
Коннор Глоссер
5

Вы, как пользователь, являетесь тем, кто предоставляет информацию, которой вы являетесь, когда вы входите в систему. Поэтому для авторизации вам нужен закрытый ключ, потому что сервер будет запрашивать любого, кто притворяется вами (пытается войти в систему с вашим имя), чтобы доказать это.

Это работает так, что сервер отправляет вам немного текста, просит вас зашифровать его и расшифровать с помощью вашего открытого ключа. Только человек с вашим закрытым ключом может сделать это.

Каир
источник
1

Он содержит открытый ключ для удобства. В противном случае вам нужно создать PKI - нечто похожее на SSL CA.

Идея состоит в том, чтобы проверить отпечаток открытого ключа, когда клиент ssh попросит вас принять ключ удаленного сервера.

Мирча Вуцовичи
источник
1

Я бы сказал, что лучшая аналогия состоит в том, что открытый ключ сервера - это открытый запираемый ящик с защелкой, которую вы можете закрыть (но не открыть), только сервер может открыть ее. Реальный вопрос заключается в том, доверяете ли вы открытому ключу (действительно ли это ящик Алисы ?), Где бы вы ни брали его, он по определению является открытым, и это то, чем занимается PKI.

Helvick
источник
1

Открытый ключ - это очень большое число, математически полученное из вашего личного ключа.

Он получен таким образом, что два числа связаны между собой,

но так, что закрытый ключ не может быть обнаружен тем, кто знает только открытый ключ. Открытый ключ - это то, что вы отправляете другим лицам, которым вы хотите аутентифицировать себя или кому вы хотите отправлять зашифрованные сообщения. Открытый ключ не является конфиденциальным и не нуждается в защите. Это может быть распространено публично. babudilli98@gmail.com

Дилли Бабу
источник
1
Я не чувствую, что в этом ответе есть что-то новое по сравнению с другими ответами, уже предоставленными пять лет назад.
kasperd