Почему открытый ключ SSH находится на сервере, а не на клиенте?
Я не совсем понимаю теорию хранения открытых ключей на сервере. В аналогии с открытым / закрытым ключами для блокировки, Алиса хранит закрытый ключ, в то время как открытый ключ передается Бобу. Казалось бы, сервер играет роль lockbox, так почему же он содержит открытый ключ?
5 ответов
Имейте в виду, что сервер имеет закрытый и открытый ключ, который полностью отделен от пары ключей, которую вы генерируете как пользователь. Закрытый ключ для сервера обычно хранится вместе с конфигурацией сервера, а открытый ключ передается сервером при попытке подключения. Ваш клиент сравнивает открытый ключ сервера с вашим файлом known_hosts. При правильном использовании это предотвращает атаки MITM.
У вас есть закрытый ключ для вашей личной учетной записи. Серверу нужен ваш открытый ключ, чтобы он мог подтвердить, что ваш закрытый ключ для учетной записи, которую вы пытаетесь использовать, авторизован.
Итак, используя ваш пример. И Боб, и Алиса имеют закрытые ключи и открытые ключи. Открытые ключи, которые были переданы ранее или как часть соединения, используются для проверки законности данных, зашифрованных с помощью закрытых ключей. Если у клиента нет открытого ключа или другой открытый ключ, вы получите страшное предупреждение. Если на сервере нет открытого ключа клиента, вы не сможете войти.
Вы, как пользователь, являетесь тем, кто предоставляет информацию, которой вы являетесь, когда вы входите в систему. Поэтому для авторизации вам нужен закрытый ключ, потому что сервер будет спрашивать любого, кто притворяется вами (пытается войти в систему с вашим имя), чтобы доказать это.
Это работает так, что сервер отправляет вам немного текста, просит вас зашифровать его и расшифровать с помощью вашего открытого ключа. Только человек с вашим закрытым ключом может сделать это.
Открытый ключ - это очень большое число, математически полученное из вашего личного ключа.
Он получен таким образом, что два числа связаны между собой,
но так, что закрытый ключ не может быть обнаружен тем, кто знает только открытый ключ. Открытый ключ - это то, что вы отправляете другим сторонам, которым вы хотите аутентифицировать себя или кому вы хотите отправлять зашифрованные сообщения. Открытый ключ не является конфиденциальным и не нуждается в защите. Это может быть распространено публично. babudilli98@gmail.com
Я бы сказал, что лучшая аналогия заключается в том, что открытый ключ сервера - это открытый запираемый ящик с защелкой, которую вы можете закрыть (но не открыть), только сервер может открыть ее. Реальный вопрос заключается в том, доверяете ли вы открытому ключу (действительно ли это ящик Алисы?), Где бы вы ни брали его, он по определению является открытым, и в этом суть PKI.
Он содержит открытый ключ для удобства. В противном случае вам нужно создать PKI - что-то похожее на SSL CA.
Идея состоит в том, чтобы проверить отпечаток открытого ключа, когда клиент ssh попросит вас принять ключ удаленного сервера.