Можно ли делиться файлом с закрытым ключом между несколькими компьютерами / службами?

110

Итак, мы все знаем, как использовать открытый ключ / закрытый ключ с использованием SSH и т. Д. Но как лучше всего их использовать / использовать повторно? Должен ли я держать их в безопасном месте навсегда? Я имею в виду, мне нужна была пара ключей для доступа к GitHub. Я создал пару с нуля и некоторое время использовал ее для доступа к GitHub. Затем я отформатировал свой жесткий диск и потерял эту пару. В общем, я создал новую пару и настроил GitHub для использования моей новой пары. Или это то, что я не хочу потерять?

Мне также понадобилась пара открытых / закрытых ключей для доступа к системам нашей компании. Наш администратор попросил у меня мой открытый ключ, и я сгенерировал новую пару и передал его ему. Как правило, лучше создать новую пару для доступа к разным системам или лучше иметь одну пару и использовать ее повторно для доступа к разным системам? Точно так же лучше создать две разные пары и использовать одну для доступа к системам наших компаний из дома, а другую - для доступа к системам с работы, или лучше просто иметь одну пару и использовать ее из обоих мест?

Behrang
источник
Это не является прямым ответом на ваш вопрос, но желательно также иметь пароли для каждого ключа. В идеале, отдельные парольные фразы для каждого ключа (используйте менеджер паролей). Причина в следующем: если секретный ключ скомпрометирован (ноутбук был украден, компьютер взломан), то у вас есть некоторое время, прежде чем ключ может быть взломан, и вы можете заменить открытый ключ на всех машинах, на которых он есть До того, как ваш атакующий может. Источник: help.ubuntu.com/community/SSH/OpenSSH/…
Ксандор Шифер,

Ответы:

86

У вас обязательно должны быть отдельные закрытые ключи для каждого источника . В основном это означает, что обычно должна быть одна копия каждого закрытого ключа (не считая резервных копий). Можно использовать один и тот же закрытый ключ с близкородственного компьютера в ситуациях, когда взлом одного дает вам доступ к другому (например, если они принадлежат друг другу shosts.equiv). Не используйте один и тот же закрытый ключ на компьютерах в разных сферах (например, дома и на работе), никогда не разделяйте закрытый ключ между двумя пользователями и никогда не делите закрытый ключ между ноутбуком и любой другой машиной.

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

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

Я могу думать о двух исключениях из общего правила одного закрытого ключа для источника:

  • Если у вас есть пароль без пароля, который дает доступ только к определенной команде на определенном компьютере (например, механизм автоматического резервного копирования или уведомления), этот ключ должен отличаться от общего ключа доступа к оболочке.
  • Если некоторые машины периодически подключаются, у вас может быть старый закрытый ключ вместе с новым закрытым ключом, пока вы не сможете закончить развертывание нового ключа.
жилль
источник
5
Вот как я всегда использовал свою пару ключей. Я не понял, почему GitHub выступал за создание новой пары ключей в их инструкциях по настройке. Я проигнорировал это и использовал мою стандартную пару ключей. Я предполагаю, что они консервативны.
toolbear74
Итак, вы говорите: «Не используйте один и тот же закрытый ключ на машинах в разных сферах», но что, если DNS разрешит данное имя хоста на любой машине в зависимости от вашего местоположения? Без совместного использования закрытого ключа я получаю предупреждения или сбои при попытке выполнить ssh или rsync с этим именем хоста, потому что ssh запутывается из-за наличия двух отдельных ключей для одного и того же имени хоста.
Майкл
@Michael Я не понимаю, какая у вас проблема с пользовательскими ключами в описываемом вами сценарии, о чем эта тема. SSH может запутаться в ключах хоста , но, как пользователь, вы видите, что это открытый ключ хоста, а не приватный ключ хоста, и разделение секретного ключа хоста опасно - я бы рекомендовал, если хосты полностью эквивалентны (избыточность в случае неудачи одного из них) и, вероятно, даже тогда.
Жиль
Ах хорошо. Кажется, что между ними нет четкого различия, и просто предполагается, что вы знаете, о чем идет речь.
Майкл
1
@JSBach Наличие отдельных ключей для каждой области позволяет вам определять более мелкие разрешения (ключ, хранящийся в области низкой безопасности A, разрешен для использования между компьютерами A, но вход в B требует более строгого коэффициента аутентификации) и позволяет отозвать их отдельно (область A была скомпрометирована, но я все еще могу войти в C из B). Единый вход - это тот случай, когда вы входите в систему с самым высоким уровнем безопасности, а затем вы можете войти в другое место. Я не знаю, какие риски они видят при наличии нескольких ключей на пользователя. Это будет тема для информационной безопасности .
Жиль
4

Я не знаю, как лучше, но я могу сказать, какой у меня путь.

Как системный администратор я использую разные ключи для доступа к каждому серверу / службе от имени пользователя root. Таким образом, если ключ утерян или скомпрометирован, я ограничиваю риск одним сервером, и мне не нужно обновлять все мои сервисы новыми ключами.

Говоря о пользователях, я использую разные ключи для каждого из них. С помощью этого ключа пользователь может получить доступ к услуге, которая ему нужна как непривилегированный пользователь. Таким образом, я могу легко предоставить или отменить доступ к отдельным службам для каждого пользователя. Если пользователь потеряет свой ключ, я могу удалить его из всех сервисов и ограничить риск несанкционированного доступа.

MariusPontmercy
источник
+1 Я собираюсь поговорить с моим боссом о новой политике использования ключей ;-) для каждого сервера / службы звучит даже более безопасно, чем для каждой сети
Diskilla
1

Я полагаю, что вы можете использовать закрытый ключ где угодно, если вы добавите на него фразу-пароль, то есть, если вы хотите поделиться своим закрытым ключом с несколькими компьютерами, скажем, ноутбук 1, 2, рабочий стол 1, 2, все будет в порядке.

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

Грант Скайуокер
источник
1
Прочитайте лучший ответ здесь. Ты делаешь это неправильно. Дело не в том, что вы не можете сделать это таким образом, но вы не должны.
PhilT
2
Не могу понять, почему все отрицательные. Университетские сети (например) часто имеют сетевой домашний каталог, поэтому один и тот же закрытый ключ используется пользователем везде, даже на ноутбуках, которые вам дают. Пока вы не копируете его в незашифрованном виде через Интернет, тогда я думаю, что это хорошо, если вы понимаете риск. Чертовски удобнее и так, не нужно добавлять свой открытый ключ в 2000 разных мест только потому, что вы вошли на другой компьютер.
Асфанд Кази
Проголосовал, потому что вы не должны терять репутацию за этот ответ. Это личное предпочтение, очевидно, использование отдельного ключа для каждой услуги и машины в конечном итоге дает вам больше контроля, но иногда это просто пустая трата времени в зависимости от вашего варианта использования.
Дэниел Дьюхерст
0

В моей компании мы используем эти ключи для каждого конкретного пользователя. Это означает второй случай. У пользователя есть свой собственный ключ, и он используется для каждой машины, которую он использует для подключения к системе компании. Мое мнение - использовать один ключ для одной системы. Это означает, что вы используете этот ключ на каждом компьютере, который вам нужен для подключения к конкретным сетям. Для вашего случая это будет один ключ для GitHub и один ключ для системы компании. Так что, если ваш админ спросит вас снова, я бы дал ему тот же ключ, что и в прошлый раз. не новый. Но я не знаю, существует ли общая политика использования этих ключей, и с тех пор я делаю это неправильно. Это конечно возможно ;-)

Diskilla
источник
0

Сгенерированный вами открытый ключ предназначен для всех. Это позволит им: а) проверить подлинность б) зашифровать для вас

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

Открытый ключ - это ваша личность для других. Так что нет проблем / лучше использовать одну пару ключей для всего, по крайней мере там, где вы не хотите использовать явную новую идентификацию, чтобы другие не знали, что это вы.

Kissaki
источник
3
Спасибо, но ваш ответ, в основном, не связан с моим вопросом. Смотрите ответ @ Diskilla.
Бехранг