Чому відкритий ключ SSH сидить на сервері, а не з клієнтом?


12

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

Відповіді:


20

Майте на увазі, що сервер НЕ має приватний та відкритий ключ, повністю відокремлений від ключа, яке ви генеруєте як користувач. Приватний ключ для сервера зазвичай зберігається в налаштуваннях сервера, а відкритий ключ передається сервером при спробі підключення. Ви клієнт порівнює відкритий ключ сервера з вашим відомим файлом_hosts. Якщо правильно використовувати, це запобігає атакам MITM.

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

Тож використовуючи свій приклад. І Боб, і Аліса мають приватні ключі та відкриті ключі. Відкриті ключі, якими було надано спільний доступ до передачі даних або як частина з'єднання, використовуються для перевірки законності даних, зашифрованих приватними ключами. Якщо клієнт не має відкритого ключа або має інший відкритий ключ, ви отримаєте страхітливе попередження. Якщо сервер не має відкритого ключа для клієнтів, вас не впустять.


1
Ага! Це має набагато більше сенсу. Я знав, що існує метод захисту від атак MITM, але я не знав, що є ще одна клавіша :) Дякую за допомогу!
Коннор Глоссер

5

Ви як користувач надаєте інформацію, яку ви є, коли ви входите в систему. Отже, для авторизації вам потрібен приватний ключ, оскільки сервер запитає всіх, хто претендує на вас (спроби увійти в систему з вашими ім'я), щоб довести це.

Як це працює, сервер надсилає вам трохи тексту, просить вас зашифрувати його та розшифрувати його відкритим ключем. Це може зробити лише людина з вашим приватним ключем.


1

Він зберігає відкритий ключ для зручності. Інакше вам доведеться створити PKI - щось подібне до SSL CA.

Ідеєю було б перевірити відбиток відкритого ключа, коли ssh-клієнт попросить вас прийняти ключ віддаленого сервера.


1

Я б сказав, що кращою аналогією є те, що відкритим ключем сервера є відкрита скринька із засувкою, яку можна закрити (але не відкрити), відкрити її може лише сервер. Справжнє питання полягає в тому, чи довіряєте ви відкритому ключу (це справді Коробка Аліси ?), Де б ви не отримали його, це публічне визначення, і саме це стосується PKI.


1

Публічний ключ - це дуже велика кількість, математично отримана з вашого приватного ключа.

Він виведений таким чином, що два числа пов'язані між собою,

але так, що приватний ключ не може виявити той, хто знає лише відкритий ключ. Публічний ключ - це те, що ви надсилаєте іншим сторонам, кому ви хочете пройти автентифікацію або кому ви хочете відправити зашифровані повідомлення. Відкритий ключ не є чутливим і не потребує захисту. Його можна поширювати публічно. babudilli98@gmail.com


1
Я не відчуваю, що у цій відповіді є щось нове порівняно з іншими відповідями, вже наданими п’ять років тому.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.