[英]How can I use file encryption when calling parent application from Watch app?
我使用openParentApplication
和handleWatchKitExtensionRequest
从Apple Watch应用程序调用我的iPhone上的父应用程序。 在主应用程序中,我使用CoreData以及addPersistentStoreWithType的以下选项addPersistentStoreWithType:
NSDictionary *options = @{
NSMigratePersistentStoresAutomaticallyOption : @YES, //
NSInferMappingModelAutomaticallyOption : @YES, //
NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"}, //
NSPersistentStoreFileProtectionKey : NSFileProtectionCompleteUnlessOpen
};
这引起了一个例外:
此NSPersistentStoreCoordinator没有持久存储(设备已锁定)。 它无法执行保存操作。
这是否意味着我既不能使用NSFileProtectionCompleteUnlessOpen
也不能使用NSFileProtectionComplete
?
我是否必须使用NSFileProtectionNone
或NSFileProtectionCompleteUntilFirstUserAuthentication
?
我想知道一种通过使用NSFileProtectionCompleteUnlessOpen
来保护我的数据的方法,并且当我的Watch应用程序使用openParentApplication
时仍然能够访问数据。
处理问题的可能方法 (但不是真正的解决方案)
NSFileProtectionCompleteUntilFirstUserAuthentication
似乎是我推荐的方式。 它确保用户必须至少自上次启动后解锁设备一次。
iOS 7和后台刷新引入了此问题。 这是为了防止物理取证分析读取未加密的数据。
来自https://security.stackexchange.com/questions/57588/iphone-ios-7-encryption-at-lock-screen的附加信息:
NSFileProtectionNone
:文件可以随时访问,即使设备被锁定; NSFileProtectionComplete
:只有在设备解锁时才能访问文件(请注意,在设备被锁定期间,仍然可以访问的文件大约有10秒的宽限期) NSFileProtectionCompleteUnlessOpen
:文件可以在设备锁定时创建,但一旦关闭,只能在设备解锁时访问; NSFileProtectionCompleteUntilFirstUserAuthentication
:仅在设备自引导后至少解锁一次后才能访问该文件。 来自Gilt的人们也在这里解释了很多关于这种行为的内容: http : //tech.gilt.com/post/67708037571/sleuthing-and-solving-the-user-logout-bug-on-ios
我想到的另一个想法是使用app group容器。 请参阅此处的问题: WatchKit SDK无法从NSUserDefaults检索数据这样,它不仅应该共享NSUserDefaults
,还应该共享相同的钥匙串。 这应该与iOS应用程序共享相同的钥匙串的方式相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.