Шифрование базы данных с помощью предоставленной пользователем парольной фразы - PullRequest
3 голосов
/ 29 ноября 2009

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

Таким образом, подход может состоять в том, чтобы пользователь вводил парольную фразу на экране входа в систему, а затем извлекал из нее ключ для шифрования данных. Конечно, транспорт будет защищен SSL.

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

Это хорошая идея, чтобы сохранить его в переменной сеанса PHP? ... он будет записан на диск на стороне сервера.

Лучше (или хуже) держать его на стороне клиента? Отбрасывая куки, я не знаю, возможно ли это, может быть, Ajax поможет?

В любом случае, как вы думаете, какой подход лучше всего подходит к этой проблеме?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 декабря 2009

Алгоритм, который вы ищете, называется PBKDF2 . Он получает ключ шифрования из пароля.

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

2 голосов
/ 29 ноября 2009

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

  1. PBE (Шифрование на основе пароля), аналогичное используемому в PKCS # 7.
  2. Функция строки в ключ Kerberos.

Вам не нужно писать код для этого. Вы можете найти реализации на них в большинстве популярных платформ, C / Java / C # и т. Д.

Во-вторых, вам нужно провести сеанс аутентификации. В противном случае у вас нет возможности узнать, кто нажимает на ссылку.

Затем вам необходимо сохранить ключ с данными сеанса входа. Это может быть база данных, сеанс PHP или даже файл cookie, если он правильно зашифрован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...