Является ли шифрование базы данных менее безопасным, чем шифрование приложений? - PullRequest
6 голосов
/ 07 июля 2010

Я получаю данные и использую aes или blowfish для шифрования их перед сохранением в базе данных, поэтому шифрование выполняется на уровне приложения.Если кто-то украдет базу данных, данные будут относительно безопасными, если только они не украли приложение (где ключ хранится / доступен).

Сейчас я изучаю шифрование базы данных с помощью таких библиотек, как ezNcrypt для MySQL , Encryption-GENERAL или SQLCipher .

Но я не совсем понимаю, как работает шифрование базы данных.Если приложение передает только необработанные неизмененные данные в базу данных, и база данных каким-то образом дешифрует сами данные, не сделает ли это шифрование на уровне базы данных менее безопасным, если база данных была украдена, поскольку украли 100% компонента шифрования?

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

Может быть, я не совсем понимаю, как база данных ...расшифровка уровня работает.

Ответы [ 2 ]

2 голосов
/ 07 июля 2010

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

Итак, настоящий вопрос сводится к тому, как вы храните свой ключ:

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

* Я говорю в основном потому, что технически ключ все еще доступен в виде открытого текста где-то в ОЗУ. Но это гораздо сложнее, чем то, что хранится на диске (несмотря на перестановку памяти).

Что касается MySQL, вы можете найти эту тему полезной.

0 голосов
/ 07 июля 2010

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

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