Действительно ли шифрование базы данных менее безопасно, чем шифрование приложений?

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

Я теперь изучаю шифрование базы данных с библиотеками как ezNcrypt для MySQL, ОБЩЕГО Шифрованием, или SQLCipher.

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

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

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

6
задан benjamincarter 26 March 2012 в 17:57
поделиться

2 ответа

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

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

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

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

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

2
ответ дан 17 December 2019 в 20:28
поделиться

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

0
ответ дан 17 December 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: