Шифрование данных с помощью Core Data в iOS - PullRequest
6 голосов
/ 13 марта 2012

Мне просто нужно подтверждение.

Правильно ли говорить, что на iPhone 3GS и выше любые данные, записанные в файловую систему, шифруются с использованием аппаратного шифрования? Просто создав файл XXX.sqlite в файловой системе, данные, хранящиеся в нем, уже зашифрованы.

Также для дополнительной безопасности NSFileProtectionComplete предоставляется?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 01 апреля 2014
[_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:@{ NSPersistentStoreFileProtectionKey : NSFileProtectionComplete } error:&error]
7 голосов
/ 28 марта 2012

Нет, это не правильно.Вам нужно будет включить шифрование в файле sqlite.Добавьте следующее после создания persistentStoreCoordinator:

// Make sure the database is encrypted when the device is locked
NSDictionary *fileAttributes = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey];
if (![[NSFileManager defaultManager] setAttributes:fileAttributes ofItemAtPath:[storeURL path] error:&error]) {
    // Deal with the error
}
3 голосов
/ 17 июля 2012

Нет, ваше предположение неверно.

Из документации класса NSPersistentStoreCoordinator:

Значением по умолчанию является NSFileProtectionCompleteUntilFirstUserAuthentication для всех приложений, созданных на iOS версии 5.0 или после нее.Значением по умолчанию для всех более старых приложений является NSFileProtectionNone.

Чтобы включить NSFileProtectionComplete, необходимо добавить NSPersistentStoreFileProtectionKey с NSFileProtectionComplete к параметрам NSDictionary при вызове addPersistentStoreWithType: URL-адрес:.

Имейте в виду, что это шифрование файлов включается только тогда, когда пользователь установил код доступа.

...