Защита CoreData SQLite - PullRequest
       8

Защита CoreData SQLite

0 голосов
/ 24 декабря 2009

Мне нравится использовать CoreData и модель их сущностей в моих проектах.

Мне нужно знать, как безопасно хранить базу данных sqllite в Iphone. Как все знают, когда Iphone сломался с джейлбрейком, у него есть навигационная система, это означает, что для меня, кого-то или кого-то легко открыть или скопировать в другое окружение мой sqllite db. Как мне защитить мою базу данных от этих проблем?

Спасибо

Ответы [ 3 ]

1 голос
/ 24 декабря 2009

Ответ жирным шрифтом.

Если они взломали ваш iphone и хотят украсть данные, они, вероятно, смогут расшифровать все, что вы там положили; это особенно верно, если данные имеют какое-либо значение. Чтобы использовать шифрование в этом сценарии, вашему приложению придется каким-то образом хранить пароль, если только вы не ожидаете, что пользователь будет вводить его каждый раз с помощью клавиатуры iphone - что с точки зрения юзабилити является большим «нет». Я предлагаю вам положиться на доступ к барикадам и удаленной очистке, предоставляемой Apple.

Если вы собираетесь полагаться на 4-значный пин-код яблок в качестве пароля - то есть, чтобы сбалансировать удобство использования ... хорошо, что только 10 000 комбинаций ... не очень безопасно.

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

- редактировать: дальнейшее обсуждение -

Если бы я ожидал, что содержимое будет зашифровано мобильным способом, я бы ожидал, что у пользователя содержимого будет флешка с содержимым на нем и защищенный ноутбук / нетбук с работающим на нем чем-то вроде truecrypt.

0 голосов
/ 25 декабря 2009

Вы беспокоитесь о том, что кто-то, кто украл телефон, получил информацию? Или человек, которому принадлежит телефон, получает доступ к файлам, которые содержит ваше приложение?

Если это не пользователь, есть меры предосторожности, которые вы можете принять, например, представление пароля каждый раз (подсказка: пользователи будут его ненавидеть, и ваше приложение получит все 1-звездочные отзывы).

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

0 голосов
/ 24 декабря 2009

Я не знал, что телефон может быть взломан без согласия пользователя?

На iPhone 3GS все данные, хранящиеся на телефоне, зашифрованы.

Я не знаю, что вы храните, но, возможно, все в порядке с Apple.

Вы читали это? http://images.apple.com/iphone/business/docs/iPhone_Security_Overview.pdf

Если у вас на самом деле менее 10000 записей, и они имеют небольшой размер, например, короткую строку или две, то вы можете просто использовать NSDictionary / NSArray с 10000 элементов в памяти по цене 10 тыс. 2,5 МБ памяти, что не так много. Если запросы будут простыми, то вам вообще не нужен sql. Просто просмотрите все записи по каждому запросу.

Вы можете хранить NSDictionary в виде незашифрованного файла, защищенного паролем, при этом пользователь вводит пароль при каждом запуске.

...