Android: как защитить данные в базе данных SQLite?

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

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

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

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

спасибо.

4 ответов


root доступ для всех и безопасность являются взаимоисключающими.

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

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

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

обновление: хранение ключей API в Android, достаточно ли обфустикации? довольно похожая проблема-речь идет о защите ключей API, но это та же ситуация в отношении ваших опций.


sqlcipher для Android может помочь здесь.

https://guardianproject.info/code/sqlcipher/


Я думаю, что на основе вашего требования лучший метод использует согласованность данных, например, MD5 оценка и время, а затем положить счет и время и MD5 в таблицу, то каждый раз, желая использовать эту строку БД проверить MD5 оценки и времени, если один в БД и тот, который рассчитывается одинаковы, строка непротиворечива в противном случае он был взломан!


вы можете найти свое счастье в файлах настроек Look здесь