Как защитить базу данных sqlite в папке активов (с помощью шифрования)? - PullRequest
2 голосов
/ 05 марта 2012

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

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

Ответы [ 4 ]

5 голосов
/ 05 марта 2012

Конечно, вы можете сделать это. Используйте SQL-шифр .

При использовании вместо обычного android.database.sqlite.SQLiteDatabase используйте info.guardianproject.database.sqlcipher.SQLiteDatabase. Для получения дополнительной информации посмотрите этот вопрос .

1 голос
/ 10 марта 2015

Вы не можете защитить информацию, содержащуюся в приложении. Это невозможно.

  1. Злоумышленник может перевернуть весь ваш код.

  2. Злоумышленник может деобфускировать весь ваш код.

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

Особенно в таком коде:

String dbPath = this.getDatabasePath("Encrypted.db").getPath();

        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbPath,
                **DATABASEKEY**, null);

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

Ваши усилия немного замедляют атакующего.

Если вы хотите хранить конфиденциальные данные в приложении, не храните их в приложении или в каталоге данных. Разработайте свое приложение для связи с сервером, хотя это вносит целый ряд других проблем (Web App Security).

0 голосов
/ 05 марта 2012

Вы смотрели на Proguard ?

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

Подробнее о proguard .

0 голосов
/ 05 марта 2012

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

...