Разумно ли иметь несколько ключей SSH?

44

До сих пор я создал отдельный ключ SSH для каждого сервера, на который мне нужно войти (для каждой цели, чтобы быть более точным). Я сделал это из соображений безопасности, как разные пароли к разным сайтам.

Действительно ли наличие нескольких ключей SSH повышает безопасность? Все они используются с одного компьютера, находятся в одном и том же файле ~ / .ssh, большинство даже имеют одну и ту же фразу-пароль.

Итак ... я должен отказаться от всей системы и просто использовать один ключ SSH для всего?

[ОБНОВЛЕНИЕ 2015-08-05] Github публикует ваш открытый ключ, и ваш SSH-клиент может отправлять все ваши открытые ключи на каждый сервер, в зависимости от конфигурации , таким образом, если вы заинтересованы в том, чтобы сторонний SSH-сервер знал вашу личность при подключении , вы должны использовать несколько ключей SSH, хотя, на мой взгляд, это параноик.

Леонид Шевцов
источник
Этот вопрос может лучше соответствовать информационной безопасности .
Геррит

Ответы:

25

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

Spiff
источник
20
Я думаю, что есть веские причины иметь отдельные ключи, и это не будет пустой тратой времени. В случае скомпрометированного ключа риск с этим уменьшается. Пароль должен быть разным для каждого ключа, я согласен.
jfmessier
Разумно ли иметь разные пары ключей на разных машинах? Как разные экземпляры ОС VirtualBox?
Сантош Кумар
1
Этот ответ игнорирует концепцию глубокоэшелонированной защиты, поскольку он полагается на «ваш закрытый ключ, который вы храните на своей машине». Рассмотрим, например, что произойдет, если ваш ноутбук будет украден, когда ssh-agent (один из) использует ваш закрытый ключ (-ы). Если у вас есть несколько ключей, то все те, которые были зашифрованы, безопасны. Я бы не назвал это пустой тратой времени.
Джон Бентли
34

В конечном итоге это зависит от вас. Вам необходимо оценить вашу модель угрозы. Насколько вероятно, что один из ваших ключей будет взломан? Если один ключ будет взломан, насколько вероятно, что другие ключи будут взломаны? Каковы последствия компрометации ваших ключей? Какова стоимость (включая время) управления несколькими ключами?

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

heavyd
источник
7
+1 за «оценку модели угрозы». Это только точка.
слеске
21

Нет, это не пустая трата времени, чтобы использовать более одного ключа.

Больше разнообразия == меньше риска.

Это утверждение Спиффа неверно.

Дело в том, что открытый ключ предоставляет доступ владельцу закрытого ключа и никому другому.

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

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

Мошенник перенаправляет вызовы вашему агенту и может подключаться ко всем сайтам, для которых у вас загружены ключи . С разными ключами загружен один ключ -> один сайт в опасности .

Я говорю хорошо для вас, вы выбрали конфиденциальность других людей из-за своей собственной лени.

PS Мораль этой истории заключается в том, чтобы быть осторожным с переадресацией

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

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

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

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

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

$ ssh-keygen -t rsa -b 4096 -C 'With_OR_Without_Passwd'
Generating public/private rsa key pair.
Enter file in which to save the key (/Your/HomeDir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

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

Объединяя , использовать ли несколько пар ключей SSH и вводить или нет дополнительный пароль , у нас есть по крайней мере четыре пути. И давайте предположим, что все пары ключей и configфайл хранятся в ~/.ssh/.

Теперь давайте не будем рассматривать безопасность в первую очередь.

В следующей таблице дан простой рейтинг безопасности (большее число означает более безопасный):

Security     Ways to go
   1         One   SSH key-pair  (NO passwd)
   1         Multi SSH key-pairs (NO passwd)
   2         One   SSH key-pair  (WITH passwd)
   2         Multi SSH key-pairs (WITH passwd) (SAME passwd)
   3         Multi SSH key-pairs (WITH passwd) (DIFF passwds)

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

Тогда не будем думать об удобстве .

Но больше пар ключей и больше паролей также делают нашу жизнь менее удобной, в следующей таблице дан простой рейтинг безопасности (большее число означает более безопасный):

Convenient  Security  Ways to go
   5           1      One   SSH key-pair  (NO passwd)
   4           2      One   SSH key-pair  (WITH passwd)
   3           1      Multi SSH key-pairs (NO passwd)
   2           2      Multi SSH key-pairs (WITH passwd) (SAME passwd)
   1           3      Multi SSH key-pairs (WITH passwd) (DIFF passwds)

Таким образом, в общей ситуации, если нам приходится одновременно идти на компромисс с безопасностью и удобством , мы можем умножить две оценки, и, возможно, одна пара ключей SSH (WITH passwd) будет хорошей для выбора.

YaOzI
источник