Безопасно ли выдавать мой открытый ключ SSH для работы?

60

В настоящее время я работаю удаленно для ряда организаций, которым требуется регулярный доступ к их серверам для обслуживания и обновлений. Безопасно ли для меня добавить свой открытый SSH-ключ RSA в .ssh/authorized_keysфайл, чтобы я мог войти намного быстрее / без необходимости поиска паролей? Я действую в предположении, что было бы невозможно создать закрытый ключ из открытого, но прав ли я в своем предположении?

Если сделать еще один шаг вперед, возникнет ли какая-либо угроза безопасности при публикации содержимого моего открытого ключа RSA в Интернете? Я знаю, что если мой личный ключ получен, у меня много проблем, но кроме этого есть ли какие-нибудь реальные угрозы безопасности?

Нафтули Кей
источник
2
Немного связано: лучше ли использовать открытый ключ для входа в SSH, чем сохранять пароль?
Жиль "ТАК - перестань быть злым"

Ответы:

77

Да, невозможно восстановить закрытый ключ из открытого ключа. Если бы это было возможно, RSA был бы в корне сломлен, и это было бы важной новостью (взлом RSA не только нарушил бы безопасность интернет-коммуникаций, но и допустил бы все виды банковского мошенничества, среди прочего).

Вход в систему с открытым ключом вместо пароля фактически повышает безопасность. Если ваш пароль недостаточно надежен, он может быть взломан злоумышленником с достаточной пропускной способностью. Если у злоумышленника нет копии вашего файла закрытого ключа, ключ RSA фактически не может быть взломан (1024-битный ключ эквивалентен чему-то вроде 160-символьного пароля, состоящего из случайных букв и цифр с учетом регистра) , Кто-то, кто следит за вашим плечом, может увидеть ваш пароль и ключевую фразу, но с ключом ему также понадобится получить ключ.

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

Открытый ключ вводит элемент защиты конфиденциальности: если кто-то знает, что вы использовали один и тот же открытый ключ для входа в A и для входа в B, он знает, что один и тот же человек вошел в A и B. Просто владение открытым ключом делает вас подозреваемый, что у вас также есть закрытый ключ, поэтому вы теряете некоторую анонимность. Но это обычно незначительно, особенно если вы просто храните ключ, ~/.sshчтобы его могли видеть только системные администраторы (которые также знают, с какого IP-адреса вы вошли в систему).

Помимо этих соображений безопасности, закрытый ключ имеет много практических преимуществ. Вам не нужно вводить свой пароль так часто, и, в частности, вы можете запускать автоматические сценарии, которые не запрашивают вас, когда вы ввели ключ в ssh-agent или тому подобное. Вам не нужно вводить свой пароль так часто, чтобы вы могли сделать его более энтропийным (длиннее, сложнее для ввода). Вам не нужно вводить свой пароль так часто, поэтому существует меньший риск того, что он будет подслушан наблюдателем или камерой.

Жиль "ТАК - перестань быть злым"
источник
@NaftuliTzviKay На самом деле есть что-то, что следует учитывать здесь, которое упускается из виду. Чтобы использовать ваш открытый ключ, система, от которой вы собираетесь работать, должна иметь доступ к вашему личному ключу. Все в порядке. Если этот закрытый ключ хранится в этой системе, он уязвим, а удаленная система становится уязвимой. В этом могут помочь две вещи: зашифрованные домашние папки и пароль для вашего ключа. Следовательно, чтобы добиться полного повышения безопасности, обеспечиваемого PKI, вы потеряете некоторую эффективность. Вы или ваша организация должны провести анализ рисков, чтобы определить, где провести черту.
Ксалори
16

Ответ Жиля в целом хороший, кроме

... особенно если вы просто храните ключ в ~ / .ssh, где его могут видеть только системные администраторы (которые также знают, с какого IP-адреса вы вошли в систему).

Ваши ключи ssh ~/.sshтакже могут быть прочитаны любым программным обеспечением, работающим под вашей учетной записью. Который, вероятно, большая часть программного обеспечения, которое вы запускаете. Поэтому вы должны доверять этому программному обеспечению и тем, кто его написал.

Стивен Блотт
источник
2
По этой причине вы всегда должны использовать зашифрованные ключи SSH
ItalyPaleAle