как зашифровать существующую базу данных в папке с ресурсами Android Studio

Я прочитал много руководств и тем о SqlCipher, но я не понимал, что именно мне делать! У меня есть готовая база данных в папке с активами. Моя база данных содержит около 4 таблиц и 5000 записей. Я хочу сделать ее более безопасной. Как я могу это сделать? Может ли кто-нибудь помочь мне с этой проблемой? Поскольку я новичок в Android, мне нужно пошаговое решение. На данный момент я использую библиотеку sqliteasset.SQLiteAssetHelper для чтения базы данных из папки ресурсов.

1 ответ

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

Вот объяснение моего заявления:

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

Когда вы разрабатываете механизм безопасности для защиты данных, один из первых вопросов, на который вам нужно ответить:

  • Сколько времени потребуется злоумышленнику, чтобы открыть данные? Если ваш ответ примерно такой: "Потребуется 10000 лет для грубой силы моей защиты", то ваша защита, вероятно, в порядке.

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

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

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

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

Другие вопросы по тегам