У меня есть веб-сервис (похожий на интернет-магазин), где пользователи сохраняют свои данные. Мне нужно зашифровать эти данные, чтобы только эти пользователи и сами пользователи могли читать эти данные.Шифрование между пользователями веб-сервиса
Каждый менеджер и пользователь имеют собственный пароль, хранящийся в базе данных.
Сначала я думал использовать RSA (общедоступные/закрытые ключи), но я не могу понять, как получить доступ к зашифрованным данным, используя разные пароли менеджеров и пользователей.
BTW: я могу предложить пользователю и менеджеру вводить пароль каждый раз, когда они пытаются получить доступ к зашифрованным данным (сравнить с хэшем в базе данных и дешифровать защищенные данные).
Пожалуйста, помогите и извините меня за мой плохой английский. Спасибо заранее!
EDIT: самый простой способ - использовать hardcoded master-password для шифрования/дешифрования, но я считаю, что это очень небезопасно.
EDIT2: хорошо, я думаю, у меня есть идея: 1. генерировать уникальный ключ 2. с использованием симметричных данных шифрования шифровать с уникальным ключом (1) 3. ENCRYPT уникального ключа из (1) с пользователя пароль и сохранить его с учетными данными пользователя 4. зашифровать уникальный ключ из (1) с помощью пароля администратора и сохранить его с учетными данными менеджера
Теперь, когда менеджер хочет получить доступ к данным, я запрашиваю его для пароля, а затем дешифрую хэш из (4), получить уникальный ключ из (1) и дешифровать безопасные данные. дешифрование от пользователя тот же: (3) -> (1) -> данные
так что теперь проблема в том, чтобы сделать его доступным для многократного users-> user_data/менеджеры, лол
EDIT3: забыл упомянуть: пользователи создают данные один раз, а затем менеджеры используют его для внутреннего использования.
Проблема с подходом, который вы указали в EDIT2, - это когда данные созданы, каждый пользователь должен будет ввести свой пароль. – sidoh
@sidoh да, это так. с точки зрения пользователя будет казаться, что он создает данные и защищает их своим паролем. и даже если хакер крадет базу данных, он не может расшифровать данные пользователя, потому что пароль пользователя также хэшируется. – user1044084
Справа. Однако я хочу сказать, что если вам нужно разрешить доступ к данным с использованием более одного пароля, вам всегда нужно иметь как минимум два пароля одновременно. Это звучит раздражающе для пользователей, не так ли? Каждый раз, когда пользователь создает данные, которые должен иметь диспетчер, пользователь и менеджер должны будут вводить пароли. – sidoh