Хорошо, теперь я зашифровал свои данные, где мне спрятать ключ? - PullRequest
9 голосов
/ 22 января 2009

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

В лучшем случае это похоже на скачок скорости. Какие еще решения доступны?

Ответы [ 7 ]

5 голосов
/ 22 января 2009

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

Это тот случай, когда Боб и Ева - одно и то же лицо, вы хотите предоставить Бобу доступ, но не дать Еве увидеть его.

Это DRM, он не работает.

3 голосов
/ 22 января 2009

Читать в хранилищах ключей.

3 голосов
/ 22 января 2009

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

Обычно архитектура для таких вещей выглядит следующим образом:

  • База данных
  • Сервер
  • Клиент

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

2 голосов
/ 22 января 2009

Храните ключи в контейнере CSP. Рассмотрим Java CSP здесь .

Это самый безопасный способ ИМО. Но вы также можете сохранить ключ в файле, который защищен операционной системой с использованием какого-либо ACL.

2 голосов
/ 22 января 2009

Требовать от пользователя ввести пароль для доступа к своим данным. Хоронить ключ в коде - это безопасность по незаметности.

1 голос
/ 22 января 2009

требует от пользователя входа в систему с использованием надежного пароля; использовать пароль в качестве ключа для алгоритма симметричного шифрования для расшифровки асимметричного ключа базы данных

держать ключ БД в защищенной памяти во время работы приложения (если это вариант)

0 голосов
/ 22 января 2009

Зашифруйте ключ (используя DPAPI), поместите его в файл, поместите ACL в этот файл и т. Д. *

...