Выбор пароля и сохранение пароля и закрытого ключа

В моей компании мы разрабатываем продукт на базе процессора ARM. Мы используем Buildroot, чтобы создать для него систему Linux.

Для целей отладки / обслуживания доступ по SSH будет разрешен через Ethernet, а устройство будет иметь UART для последовательного TTY. Продукт будет продаваться компаниям, и, скорее всего, только рабочие будут иметь физический доступ к устройству.

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

  • Пароль: какой пароль пользователя мы должны выбрать? Выбор одного пароля для всех не кажется хорошей идеей. Если кто-то узнает этот пароль, у него будет доступ ко всем нашим устройствам, и мы не сможем их обновить, поскольку они отключены. Нам вообще нужно выбирать пароль? Есть ли другое безопасное решение, не использующее пароли? Что-то похожее на SSH-ключи, может быть ...
  • Закрытый ключ SSH: я собираюсь создать пару ключей и добавить открытый ключ в файл authorized_keys всех устройств. Таким образом, любой член нашей компании, который должен заниматься обслуживанием, может импортировать закрытый ключ на свой компьютер и иметь прямой доступ ко всем устройствам. Но как мы могли бы сохранить этот закрытый ключ, чтобы сохранить его в разумной безопасности (и не потерять его)?

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

Некоторые вещи, которые я думал о ключах SSH:

  • Запишите это в бумагу и храните в нашем офисе: мне это очень не нравится, потому что я не верю, что это не потеряно, не уничтожено ...
  • Сохранение его в нашем частном репозитории Git в Bitbucket: мне он не очень нравится, потому что тем же людям, у которых есть доступ к репозиторию, должно быть разрешено иметь закрытый ключ, но я не знаю, насколько я должен доверять облачный сервис для этого

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


person naggety    schedule 09.04.2018    source источник


Ответы (1)


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

В зависимости от фактического использования ваших устройств вы можете выбрать один из нескольких относительно безопасных вариантов:

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

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

Тем не менее, оба из них требуют единовременной настройки устройства у клиента.

person Gabor Lengyel    schedule 09.04.2018
comment
Я понимаю с точки зрения безопасности, но это не решает проблему: нам нужен доступ к устройствам для отладки / обслуживания. Клиент никогда не будет использовать этот пароль и ключ, они им не нужны и вероятно, они не хотят этого, и, вероятно, они не будут бережно хранить его. Кроме того, один и тот же клиент будет покупать много устройств, поэтому ни им, ни нам бесполезно заставлять их сохранять сотни паролей и ключей и отслеживать, какое устройство соответствует каждому паролю и ключу. - person naggety; 10.04.2018
comment
@naggety Ну, все дело в риске. Если ваша компания потеряет мастер-ключ, ваша компания несет ответственность. Если ваш клиент потеряет собственный ключ, все в порядке. Когда вам понадобится доступ для техобслуживания, они могут предоставить вам пароль, который они должны изменить впоследствии. Если вы хотите пойти на гораздо больший риск, вы также можете сохранить для них эти секреты, но последствия будут довольно далеко идущими. Например, что, если клиентская инфраструктура взломана через ваше устройство, ущерб исчисляется миллионами долларов, и оказывается, что пароль для устройства был украден у вашей компании? - person Gabor Lengyel; 10.04.2018
comment
Думаю, я полностью понимаю, что вам нужно, но потенциальный риск кажется слишком большим и ненужным. - person Gabor Lengyel; 10.04.2018