В настоящее время я размышлял о базе данных паролей, управляемой через Интернет, с несколькими учетными записями и логинами / паролями, хранящимися в движке базы данных, таком как MySQL или Oracle. Каждый пароль должен быть доступен только для некоторых пользователей:
Пользователь A входит в систему, создает новую регистрационную информацию и ставит несколько флажков, чтобы сделать эту информацию доступной для Пользователя B и Пользователя C. Пользователь D и E не должен ее видеть.
Мои первые мысли:
Пароли хранятся в зашифрованном виде в базе данных.
Основная проблема здесь, конечно, в том, что если у вас есть доступ к серверу, вы можете посмотреть скрипт и определить алгоритм дешифрования, с помощью которого вы сможете дешифровать все сохраненные пароли одновременно.
Итак, я подумал, что каждый пользователь получает мастер-пароль для инструмента паролей, который является частью алгоритма шифрования / дешифрования (пользователь вводит этот мастер-пароль и входит в систему со своими учетными данными). Это имело то преимущество, что третье лицо не могло просто взглянуть на сценарии, чтобы увидеть, как они расшифровываются именно так, как он должен был знать мастер-пароль. Но, конечно же, пользователи с очень ограниченным доступом могут дешифровать все пароли, поскольку они знают главный пароль.
Итак, в основном мой вопрос: как можно создать базу данных многопользовательских паролей, которая не просто легко взломается при просмотре простых источников, если кто-то получит доступ к серверу? Можно ли как-то сделать дешифрование зависимым от логинов пользователя, который может официально видеть пароль?
Спасибо за любые намеки на это!
Обратите внимание, чтобы прояснить ситуацию:
Он предназначен для базы данных паролей, где хранятся учетные данные для входа в различные приложения, и пользователи могут войти в систему и посмотреть, какие учетные данные они должны использовать для этих приложений. Как инструменты менеджера паролей, как 1Password и так далее. Это просто простая таблица поиска с именем пользователя / паролем, она не должна вставлять или взаимодействовать со сторонними приложениями.