Всем привет, давно не виделись. В общем, открыли с приятелем в Омане (это страна такая на Ближнем Востоке) небольшую фирму. Занимаемся разработкой ПО, иншаАллах. Сейчас у нас идет активная дискуссия и мне нужна ваша посильная помощь. Есть у нас свое облако, где хранится конфиденциальная пользовательская информация. Информация настолько конфиденциальная, что ее нужно шифровать каким-нибудь алгоритмом с каким-нибудь ключом, с возможностью расшифровки этим же самым ключом. Вопрос в том, что пользователь не хочет запоминать отдельно логин-пароль от своего аккаунта, и ключ шифрования. Первое что приходит в голову - использовать пароль от аккаунта и для авторизации, и для шифрования данных. В общем, помимо того, что если человек забудет свой пароль (а он это обязательно сделает), то все его данные (они очень важные) превратятся в кучу мусора без пароля-ключа, есть ли какие-то еще проблемы в такой схеме? Подскажите что-нибудь, плиз, как лучше сделать при таком раскладе? По-возможности, может быть есть какие-то способы безопасно хранить данные и одновременно восстановить их при утере пароля? В общем, работа с обычными пользователями, которым свойственно все терять и забывать, и в то же время нужна обеспечить безопасность данных.
Ключ на флешку, и шифровать его при помощи пользовательского пароля. Ввел юзер пароль, при помощи его пароля дешифровался ключ на флешине, а при помощи ключа дешифровалась информация. Обычно реализуют на Java, прописывая его в требованиях к клиентской системе. Ключи можете генерировать сами, их копии хранить в надежном месте(для восстановления). Флешку с ключом клиенту передавать по защищенному каналу (своим курьером, либо лично клиенту).
Здесь нужно понимать, что если Вы можете восстановить пользователю забытый пароль/ключ, значит можете восстановить и кому-то другому (спец. службам). Если же убрать теоретическую возможность восстановления - пользователь тогда надеется только на себя. И то, и то достичь невозможно, нужно выбирать.
Как пример, можно взять систему безопасности Webmoney... E-Num, файл ключей, контрольный вопрос - который забыть невозможно...
Почитайте мою статью http://forum.antichat.ru/thread399146.html может быть пригодится, а про забытые пароли просто восстановление пароля по смс или мылу.
Пароль не планируется хранить в открытом виде. Только его SHA2-хэш. Отсюда такие вопросы. Я думаю, может быть сделать на отдельном сервере некий черный ящик, на котором все порты и все доступы будут напроч закрыты, но будет только 1 внешний API-метод, который позволяет только записать пароль и все. А прочитать данные можно только при физическом доступе к этому серверу. По-моему, достаточно логичный вариант.
Сам пароль хранить не надо, для расшифровки он не обязателен, поскольку является пасфразой, а не ключом. Храни сам ключ шифрования данных, зашифрованный секретным вопросом.
Нужно автоматическое восстановления пароля или ручное? Просто для шифрование, по любому для генерации ключа 100кратно хеширование с солью. а для проверки авторизации на сайт достаточно и SHA2.