Шифрование данных пользователей в веб-приложениях

StackOverflow https://stackoverflow.com/questions/39772

Вопрос

Некоторые веб-приложения, такие как Google Docs, хранят данные, созданные пользователями.Данные, которые могут быть прочитаны только их владельцем.А может, и нет?

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

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

Это было полезно?

Решение

Если шифрование / дешифрование выполняется на сервере, вы никак не сможете убедиться, что открытый текст не сброшен куда-нибудь в какой-нибудь файл журнала или тому подобное.

Вам нужно выполнить шифрование / дешифрование внутри браузера, используя JavaScript / Java / ActiveX или что-то еще.Как пользователь, вы должны доверять клиентской части веб-службы в том, что она не будет отправлять обратно на сервер информацию в незашифрованном виде.

Карл

Другие советы

Я думаю, что Карл прибил его по голове, но я хотел сказать, что на любом веб-сайте, если вы предоставляете ему какую-либо конфиденциальную / личную / привилегированную информацию, вы должны иметь определенный уровень доверия, и это ответственность поставщика услуг за установление этого доверия. Это один из тех вопросов, которые задавались много раз по всему Интернету с момента его создания, и он будет расти только до тех пор, пока на всех наших отпечатках не будут закодированы наши собственные сертификаты SSL, и даже тогда нам придется задавать вопрос «Как я узнаю, что палец все еще прикреплен к пользователю?».

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

Но основная проблема остается той же: если кто-то с достаточными правами может получить доступ к данным (скажем, взломал ваш сервер), вы потерялись. Если бы у нас было достаточно времени и сил, все могло быть сломано. Это просто вопрос времени.

Но я думаю, что алгоритмы и приложения, такие как GPG / PGP и подобные, очень хорошо известны и могут быть реализованы таким образом, чтобы защищать веб-приложения и поддерживать удобство использования на уровне, который может обрабатывать средний пользователь.

изменить . Я хочу узнать, какие @Carl и Unkwntech и добавьте свое заявление: если вы не доверяете самому сайту, не передавайте личные данные. Это еще до того, как кто-то взломает их серверы ...; -)

- Спросил Аурон:Как вы генерируете ключ для клиента для шифрования / дешифрования данных?Где вы храните этот ключ?

Ну, ключ обычно является производным от некоторого пароля, выбранного пользователем.Вы не сохраняете его, вы доверяете пользователю запомнить его.Что вы можете сохранить, так это, возможно, некоторое значение соли, связанное с этим пользователем, например, для повышения безопасности от атак rainbow-table.

Криптографию трудно понять правильно ;-) Я бы рекомендовал взглянуть на исходный код для AxCrypt - Шифрование и для Секретики- автономный клиент.

Карл

Нет, вы не можете использовать пароли, но вы можете использовать хэши паролей. Тем не менее, Документы Google предназначены для общего доступа, поэтому такой метод потребует сохранения копии документа для каждого пользователя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top