Защитить базу данных sqlite от загрузки

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

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

Кто-нибудь знает, как это сделать, и есть ли лучшее решение?
Я использую Core Data, но не могу расшифровать атрибуты NSString, я могу расшифровать только NSData, но создать sqlite db с данными непросто ( BLOB) поля, содержащие текстовую зашифрованную строку.

Спасибо!


person ndman    schedule 05.10.2012    source источник
comment
Как создается ваша база данных? Это просто ресурс .db, связанный с вашим приложением? Вы скачиваете с сервера? Вы генерируете его с помощью приложения (записываете его с помощью приложения)? По сути, какое программное обеспечение отвечает за запись конфиденциальных данных в базу данных? Приложение iOS или какое-то другое программное обеспечение?   -  person Nate    schedule 06.10.2012
comment
Спасибо Нейт! Я использую Core Data с предварительно загруженной базой данных sqlite. Лучше всего было бы экспортировать csv из FileMaker и импортировать в таблицы sqlite (но при выполнении только этой процедуры, очевидно, все данные не зашифрованы). Приложению нужно только прочитать данные из этого объекта. Возможно, в будущем приложение сможет записывать простые данные в другой объект. Любые идеи? Большое спасибо!   -  person ndman    schedule 06.10.2012


Ответы (1)


Может быть, я нашел решение!

Я пробую этот код на iOS5 и iOS6, и он отлично работает. Теперь я могу зашифровать NSString с помощью личного ключевого слова и получить NSString (с кодировкой AES256 и Base64). На самом деле код нуждается в небольшой модификации для работы с ARC.

https://github.com/dev5tec/FBEncryptor.git

Если кто-то найдет лучшее решение, пожалуйста, напишите здесь.

Для наилучшего решения может быть очень полезно, если есть способ экспортировать зашифрованные поля в данные csv из FileMaker или другого и импортировать в sqlite db. Таким образом, мы можем предварительно загрузить sqlite db в Core Data. Приложение может расшифровать поля только тогда, когда представление должно отображаться на экране.

person ndman    schedule 06.10.2012