2013-04-05 2 views
2

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

Каждый менеджер и пользователь имеют собственный пароль, хранящийся в базе данных.

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

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

Пожалуйста, помогите и извините меня за мой плохой английский. Спасибо заранее!

EDIT: самый простой способ - использовать hardcoded master-password для шифрования/дешифрования, но я считаю, что это очень небезопасно.

EDIT2: хорошо, я думаю, у меня есть идея: 1. генерировать уникальный ключ 2. с использованием симметричных данных шифрования шифровать с уникальным ключом (1) 3. ENCRYPT уникального ключа из (1) с пользователя пароль и сохранить его с учетными данными пользователя 4. зашифровать уникальный ключ из (1) с помощью пароля администратора и сохранить его с учетными данными менеджера

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

так что теперь проблема в том, чтобы сделать его доступным для многократного users-> user_data/менеджеры, лол

EDIT3: забыл упомянуть: пользователи создают данные один раз, а затем менеджеры используют его для внутреннего использования.

+0

Проблема с подходом, который вы указали в EDIT2, - это когда данные созданы, каждый пользователь должен будет ввести свой пароль. – sidoh

+0

@sidoh да, это так. с точки зрения пользователя будет казаться, что он создает данные и защищает их своим паролем. и даже если хакер крадет базу данных, он не может расшифровать данные пользователя, потому что пароль пользователя также хэшируется. – user1044084

+0

Справа. Однако я хочу сказать, что если вам нужно разрешить доступ к данным с использованием более одного пароля, вам всегда нужно иметь как минимум два пароля одновременно. Это звучит раздражающе для пользователей, не так ли? Каждый раз, когда пользователь создает данные, которые должен иметь диспетчер, пользователь и менеджер должны будут вводить пароли. – sidoh

ответ

1

Если вы не возражаете против запроса пароля каждый раз, когда пользователю нужен доступ к данным, вы можете использовать модуль php mcrypt. Однако обязательно сделайте свое исследование, прежде чем внедрять что-либо. Это очень легко использовать небезопасно, если вы не будете осторожны.

+0

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

+0

Это довольно сложно, и кажется, что было бы очень легко реализовать либо небезопасно, либо так трудно использовать. Вы считали, что используете один, случайно генерируемый пароль, который все пользователи могут использовать с чем-то вроде lastpass? – sidoh

+0

нет, пользователи/менеджеры не знают друг друга, и каждый может зарегистрироваться на службе, поэтому совместное использование пароля будет таким же, как обмен с хакером. – user1044084

0

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

+0

yep, AES или DES будет лучшим выбором – user1044084

Смежные вопросы