gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:29 46 4
gpt4 key购买 nike

我正在使用 openParentApplicationhandleWatchKitExtensionRequest 从 Apple Watch 应用程序调用我 iPhone 上的父应用程序。在主应用程序中,我将 CoreData 与以下选项一起用于 addPersistentStoreWithType:

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

这导致了一个异常:

This NSPersistentStoreCoordinator has no persistent stores (device locked). It cannot perform a save operation.

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

我必须使用 NSFileProtectionNone 还是 NSFileProtectionCompleteUntilFirstUserAuthentication

我想知道一种通过使用 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


我刚刚想到的另一个想法是使用应用程序组容器。在这里查看问题:WatchKit SDK not retrieving data from NSUserDefaults这样,它不仅应该共享 NSUserDefaults,还应该共享相同的钥匙串(keychain)。这应该与 iOS 应用程序共享相同钥匙串(keychain)的方式相同。

关于ios - 从 Watch 应用程序调用父应用程序时如何使用文件加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30001100/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com