Чи не небезпечно використовувати ключі SSH для входу на невідомий / скомпрометований сервер?


9

Скажімо, я надаю комусь свій відкритий ключ SSH, id_rsa.pub, і він / вона встановлює його на компрометований сервер, і мене просять увійти.

Чи передбачає процес входу в систему надсилання мого приватного ключа на компрометований сервер?

Якщо так, то зараз зловмисник має доступ до мого приватного ключа SSH, і це страшно.

Якщо ні, то чому я бачу цей рядок у виведенні ssh -vvv:

debug1: Server accepts key: pkalg ssh-rsa blen 277

Це означає, що приватний ключ був надісланий серверу, і він прийняв його.

Я нерозумію проблему?

Відповіді:


7

НІ , ваш приватний ключ НІКОЛИ не надсилається чи передається куди завгодно.

Криптографія з відкритим ключем не схожа на традиційну автентифікацію імені користувача / пароля.

  • Ваш публічний ключ - це саме те, що є публічним. Ділитися цим цілком безпечно. Надіславши публічний ключ комусь, можливо, видасть вашу особу (люди можуть знати, що це від вас, оскільки це унікальний номер), але він ніколи не може дозволити, щоб хтось інший видавав себе за себе або підтверджував автентифікацію як вас. Ви також можете розмістити свій відкритий ключ на SuperUser або на своїй веб-сторінці через звичайний HTTP; це абсолютно безпечно і абсолютно марно, якщо хтось не має вашого приватного ключа.

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

Повідомлення підписуються приватним ключем на вашому комп’ютері , перш ніж надсилатись на віддалений сервер. Отже, замість того, щоб приватний ключ надсилати на віддалений сервер, ви надсилаєте повідомлення, яке було зашифровано приватним ключем. Але ці дві речі не однакові: не можна отримати приватний ключ із підписаного повідомлення; це частина точки криптографії відкритого ключа.

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


Я розумію криптопроцес із відкритим ключем, але його бентежило повідомлення про налагодження, яке випромінювало ssh. Відповідь від @ pjc50, здається, дає впевненість, що я шукав.
Gurjeet Singh

11

Ви нерозумієте процес.

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

Якщо вам все-таки запитають пароль або ви переадресуєте X на зламаний сервер, можливий ризик безпеки.


Дякую. ssh також передає це повідомлення, debug1: Offering RSA public key: <$HOME>/.ssh/id_rsaщо дозволяє змусити думати, що приватний ключ надається спільним, навіть якщо id_rsa.pub вже надано.
Gurjeet Singh

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