9

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

Включает ли процесс входа мой личный ключ на скомпрометированный сервер?

Если да, то злоумышленник теперь имеет доступ к моему личному ключу SSH, и это страшно.

Если нет, то почему я вижу эту строку в выводе ssh -vvv:

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

Это означает, что закрытый ключ был отправлен на сервер, и он принял его.

Я неправильно понимаю проблему?

2 ответа2

11

Вы неправильно понимаете процесс.

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

Если вас попросят ввести пароль или вы переадресовываете X на скомпрометированный сервер, тогда существует потенциальная угроза безопасности.

7

НЕТ, ваш закрытый ключ НИКОГДА не "отправляется" и не передается никуда.

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

  • Ваш открытый ключ просто открытый. Совершенно безопасно поделиться этим. Отправка вашего открытого ключа кому-то может выдать вашу личность (люди могут знать, что это от вас, потому что это уникальный номер), но он никогда не позволит кому-то другому выдать себя за вас или подтвердить свою подлинность. Вы также можете опубликовать свой открытый ключ в SuperUser или на своей веб-странице по обычному HTTP; это совершенно безопасно и совершенно бесполезно, если у кого-то нет вашего личного ключа.

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .