Как безопасно хранить пароль в базе данных?

Мне интересно, как создать инструмент для хранения паролей для моей компании на основе PHP или NodeJS. В настоящее время мы храним пароли в KeePass, но это не подходит для обмена паролями между сотрудниками.

Нам нужно хранить пароли, а не хеш. Я просто ищу хорошие практики, как хранить пароли в безопасном режиме. Как зашифровать пароль? Существуют ли открытые инструменты для шифрования паролей?

-2

Решение

Делать это правильно не для новичка / слабонервных.

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

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru