как зашифровать существующую базу данных в папке с ресурсами Android Studio
Я прочитал много руководств и тем о SqlCipher, но я не понимал, что именно мне делать! У меня есть готовая база данных в папке с активами. Моя база данных содержит около 4 таблиц и 5000 записей. Я хочу сделать ее более безопасной. Как я могу это сделать? Может ли кто-нибудь помочь мне с этой проблемой? Поскольку я новичок в Android, мне нужно пошаговое решение. На данный момент я использую библиотеку sqliteasset.SQLiteAssetHelper для чтения базы данных из папки ресурсов.
1 ответ
Не тратьте время разработки на шифрование данных на стороне клиента - данных, которые должны быть доступны приложению в автоматическом режиме (т. Е. Расшифровываются приложением без ввода пользователем какого-либо пароля).
Вот объяснение моего заявления:
Предположим, вам удалось защитить (зашифровать) свою базу данных с помощью некоторого ключа шифрования, и приложение при запуске должно прочитать все зашифрованные данные. Это означает, что ваше приложение должно иметь встроенный ключ, необходимый для расшифровки. И любой человек с минимальными знаниями в области обратной инженерии может извлечь ключ и базу данных из вашего apk-файла и расшифровать его.
Когда вы разрабатываете механизм безопасности для защиты данных, один из первых вопросов, на который вам нужно ответить:
- Сколько времени потребуется злоумышленнику, чтобы открыть данные? Если ваш ответ примерно такой: "Потребуется 10000 лет для грубой силы моей защиты", то ваша защита, вероятно, в порядке.
Но прямо сейчас вы пытаетесь реализовать безопасность через неизвестность, и это работает. Решительный человек может легко извлечь ключ шифрования из вашего собственного кода и расшифровать вашу базу данных практически в кратчайшие сроки.
Когда вы проектируете архитектуру клиент-сервер, есть только один способ защитить коммерческую тайну - разместить все, что важно, на стороне сервера.
Если ваше клиентское приложение полагается на некоторую конфиденциальную бизнес-информацию (например, вызов некоторых платных API с вашим собственным ключом API), то ваше приложение имеет дефект дизайна.
Если ваше приложение полагается на информацию, которая не является конфиденциальной для бизнеса, то нет смысла шифровать эту информацию.