Не опасно ли использовать SSH-ключи для входа на неизвестный / взломанный сервер?

9

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

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

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

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

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

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

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

Гурджит Сингх
источник

Ответы:

7

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

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

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

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

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

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

allquixotic
источник
Я понимаю процесс шифрования с открытым ключом, но был сбит с толку отладочным сообщением, отправленным ssh. Ответ от @ pjc50, кажется, обеспечивает гарантию, которую я искал.
Гурджит Сингх
11

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

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

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

pjc50
источник
Спасибо. ssh также debug1: Offering RSA public key: <$HOME>/.ssh/id_rsaотправляет это сообщение, что наводит на мысль, что закрытый ключ используется совместно, хотя id_rsa.pub уже был предоставлен.
Гурджит Сингх
Публичный ключ, хорошо публичный. Вы можете дать это любому. Это дает им возможность шифровать сообщения. Закрытый ключ - это то, что позволяет вам расшифровывать сообщения. Пока вы держите свой секретный ключ при себе, вы в порядке.
Пит