Подтвердить что ты не робот

Как работает защита данных iOS

У меня есть быстрый вопрос:

Я загрузил приложение iOS, которое использует класс NSFileProtectionComplete для защиты файла sqlite, который содержит конфиденциальную информацию.

Согласно документации безопасности iOS (http://images.apple.com/ipad/business/docs/iOS_Security_May12.pdf), когда устройство (iPhone/iPad) сопряжено с ноутбуком, ноутбук получает сумку с условным депонированием с мобильного устройства. Клавиатура содержит все ключи класса, необходимые для дешифрования информации на устройстве.

Однако я заметил, что когда я подключаю устройство к ноутбуку и использую iExplorer для просмотра файловой системы, файл sqlite доступен только тогда, когда устройство разблокировано. Когда телефон заблокирован (все еще спарен), файл не читается. Файлы, которые не используют NSFileProtectionComplete, могут быть просмотрены, когда устройство заблокировано.

Если сумка для депонирования содержит все ключи класса для дешифрования информации, почему я должен разблокировать устройство для доступа к нему через iExplorer?

Я использую iOS 6.0 на iPad3 и использовал инструмент ios-dataprotection (https://github.com/ciso/ios-dataprotection) для определения используемого класса защиты данных по файлам.

Приложение iOS: AccountVault
Файл: PointMinder.sqlite

Любая помощь будет оценена.

Спасибо.

4b9b3361

Ответ 1

Из файла документации, который вы связали:

Полная защита (NSFileProtectionComplete): ключ класса защищенный ключом, полученным из пароля пользователя и устройства UID. Вскоре после того, как пользователь заблокирует устройство (10 секунд, если требуется Установка пароля немедленно), ключ расшифрованного класса отбрасывается, делая все данные в этом классе недоступными до тех пор, пока пользователь снова вводит пароль.

Поэтому устройство следует разблокировать, если вы хотите получить доступ к этим файлам. Вот как это сделал Apple.

Изменить: найдено в разделе "Взлом и безопасность приложений iOS":

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

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

Клавиши класса защиты хранятся в условном депонировании, известном как keybag. Клавиатура содержит основные ключи класса шифрованного ключа защиты, а также другие ключи к системным файлам на устройстве. Системный ключ-ключ шифруется с использованием другого ключа шифрования с именем BAGI, который также хранится в стираемом хранилище NAND. Всякий раз, когда пользователь аутентифицируется для соответствия определенной политике защиты, зашифрованные ключи в сумке могут быть дешифрованы.

Итак, ключи для этих файлов передаются, но зашифрованы. Когда вы вводите свой пароль, ОС расшифровывает этот ключ, а затем его можно использовать для дешифрования файлов, защищенных им.

Ответ 2

Это работает для меня только для баз данных SQLite только в моем приложении, а не для моих других ресурсов, как я надеялся. НО, у меня были те же проблемы, которые все еще были доступны для доступа к базам данных после блокировки устройства и ожидания нескольких минут, когда iExplore все еще открыт, а устройство все еще подключено. Если я отсоединяю iPad и подключаюсь обратно, iExplore вынужден обновлять, я думаю, и тогда я НЕ мог бы обращаться к базам данных. Так что не уверен, что у него просто есть старая "незашифрованная" информация о базе данных в памяти или что.