Я работаю над приложением, которое имеет некоторую уязвимую информацию. Я знаю, что для неспециалиста было бы трудно взломать iPhone для получения информации. Если я использую SQLite непосредственно, у меня есть что-то названное Шифром SQLite для шифрования / кодируют базу данных.
Есть ли так или иначе, где у меня может быть тот же способ зашифровать coredata, таким образом, он мешает хакерам входить в данные.
Кто-то может пролить некоторый свет на это?
Заранее спасибо
В Руководстве по программированию основных данных прямо говорится, что тип хранилища SQL немного более безопасен, чем XML или двоичный, но не является безопасным по своей сути - он рекомендует зашифрованный образ диска. К сожалению, на iPhone это немного сложно.
Что вы могли бы подумать, если это действительно вас беспокоит, так это создать свой собственный постоянный тип хранилища - в Руководстве есть раздел , посвященный созданию собственного атомарного хранилища, и он отсылает вас к Темы программирования атомного хранилища . Создайте хранилище, которое берет некоторый ключ из приглашения пользователя при запуске, а затем инициализируется этим ключом для целей шифрования и дешифрования. (Обратите внимание: если вы выберете этот маршрут, в справочнике класса NSPersistentStore указано, что создание подкласса NSPersistentStore напрямую не поддерживается в Core Data - вместо этого вам следует создать подкласс NSAtomicStore.)
Если кто-то использует сломанный iphone, вы ничего не можете сделать. Функции, которые вы используете для шифрования и дешифрования, можно подключить для получения используемого ключа / iv. Вы также можете делать неприятные вещи, например, делать полные дампы флеш-памяти, буфера клавиатуры и другой «отладочной» информации.
Чтобы усложнить задачу, вы можете ограничить время хранения секрета на устройстве. Храните секреты в удаленной системе и передавайте их по ssl, удаляйте их, когда они вам не нужны. Это защищает от кражи iphone, взлома, а затем сброса базы данных. Я не уверен, что это атака, которая угрожает вашему конкретному приложению.
С точки зрения "непрофессионала" (людей, которые не умеют читать? :) Тогда вам не о чем беспокоиться. У Apple есть защита, чтобы установленные приложения не могли читать / писать ресурсы друг друга.
Вы можете добавить категорию для сущности, которая переопределяет чтение и запись значений в постоянное хранилище. Затем вы можете подключить процедуры CommonCrypto
для шифрования и дешифрования этих значений с помощью закрытого и открытого ключа, когда они хранятся и извлекаются вашим приложением.