Как защитить файл базы данных Android?

У меня проблема. Я использую файл xyz.db, который хранится в папке активов. Я копирую все данные из xyz.db в базу данных приложения, которая хранится в data/data/com.xyz/abc.sqlite в папке хранилища. Теперь я хочу защитить файл xyz.db актива. Т.к. его можно легко извлечь из apk реверс-инжинирингом. Пожалуйста, помогите мне защитить файл базы данных моей папки активов.


person Community    schedule 08.11.2016    source источник
comment
Проверьте технику, связанную с шифрованием базы данных. Как SQLCiphe.   -  person Akshay    schedule 08.11.2016
comment
Загляните на сайт guardsquare.com/dexguard, который может шифровать ресурсы и расшифровывать время выполнения рекламы.   -  person Aegis    schedule 08.11.2016
comment
@Philliphe, я тоже плыву в той же лодке. Не могли бы вы сообщить мне, какие шаги / подход лучше всего сработали для вас? В соответствии с вашим подходом моя БД загружается некоторыми данными, которые я не хочу раскрывать. Есть ли способ защитить эту БД. Я видел проблему с SQLCipher, так как нам нужно указать фразу-пароль. Не могли бы вы сообщить мне, что вам помогло?   -  person Uday    schedule 26.06.2018


Ответы (3)


Вы можете выполнить следующее, чтобы относительно затруднить доступ к данным в БД.

  1. Защищенный паролем ZIP-файл, содержащий базу данных, которая должна быть извлечена во время выполнения.
  2. Зашифруйте файл с помощью симметричного ключа и снова расшифруйте его во время выполнения.
  3. Используйте sqlcipher, который выполняет шифрование данных в состоянии покоя.

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

person PravinCG    schedule 08.11.2016

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

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

Надеюсь, я был достаточно чистым

person user2543740    schedule 08.11.2016

Помните о безопасности

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

Still: Вы никогда не должны полагаться на то, что данные в базе данных защищены от посторонних глаз. Любые конфиденциальные данные должны быть зашифрованы. Очень конфиденциальные данные вообще не должны храниться на устройстве. Имейте в виду, что если устройство будет потеряно, любой неправильный искатель устройства может получить доступ к файлу базы данных, а также к вашему приложению. На корневом устройстве все файлы могут быть прочитаны. Такие приложения, как SQLite Editor, упрощают чтение даже конфиденциальных данных, если они не зашифрованы:

  • В тех случаях, когда конфиденциальность данных имеет первостепенное значение, вы должны вернуться к защищенным службам или заставить пользователя вводить секрет каждый раз перед шифрованием и сохранением данных или их чтением и дешифрованием соответственно. источник
person Real73    schedule 08.11.2016