繁体   English   中英

从Watch应用程序调用父应用程序时如何使用文件加密?

[英]How can I use file encryption when calling parent application from Watch app?

我使用openParentApplicationhandleWatchKitExtensionRequest从Apple Watch应用程序调用我的iPhone上的父应用程序。 在主应用程序中,我使用CoreData以及addPersistentStoreWithType的以下选项addPersistentStoreWithType:

NSDictionary *options = @{
        NSMigratePersistentStoresAutomaticallyOption : @YES,    //
        NSInferMappingModelAutomaticallyOption : @YES,          //
        NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"}, //
        NSPersistentStoreFileProtectionKey : NSFileProtectionCompleteUnlessOpen
    };

这引起了一个例外:

此NSPersistentStoreCoordinator没有持久存储(设备已锁定)。 它无法执行保存操作。

这是否意味着我既不能使用NSFileProtectionCompleteUnlessOpen也不能使用NSFileProtectionComplete

我是否必须使用NSFileProtectionNoneNSFileProtectionCompleteUntilFirstUserAuthentication

我想知道一种通过使用NSFileProtectionCompleteUnlessOpen来保护我的数据的方法,并且当我的Watch应用程序使用openParentApplication时仍然能够访问数据。

处理问题的可能方法 (但不是真正的解决方案)

  • 有两个文件(例如,SQL数据库),其中一个是加密的,另一个不是。 后者只存储Watch应用程序所需的数据。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM