数据保护/ NSFileProtectionComplete – 通过entitlements.plist成功支持

我正在寻找encryption应用程序中的用户数据,NSFileProtection机制看起来非常完美。

这个问题/答案线索指向我WWDC 2011video安全的iOS应用程序,通过授权(从33分钟见),跨越应用程序设置数据保护“太好了,是真的”技巧。

所以,我尝试了这个为我的iOS 5.x +应用程序,并遇到了抱怨无效授权的问题 。

我已经通过iOSconfiguration门户为特定应用程序configuration了数据保护,并更新了我的应用程序configuration,因此理论上我应该都设置好了,但是我仍然得到错误。

如果从权利中删除特定的FileProtectionComplete设置,则应用程序运行时不会出现“无效授权”错误。

在调查中,我也看到一些民众正在拒绝他们的应用程序(在他们上传二进制文件的时候),因为这不被支持(或被弃用?)。 请注意,我具体询问数据保护,而不是存折。

在这个阶段,我在想,也许真的是,“太好了,不可能”。 所以,我即将放弃这个魔术授权标志,而是使用编程方法,添加NSFileProtectionComplete作为写入选项。

但是,在我这样做之前,任何人都可以确认他们已经能够成功地添加数据保护只是通过使用权利标志? 谢谢。

NSFileProtectionComplete不再通过授权支持。 相反,它是在configuration文件中指定的。

我的确有同样的问题。 当我尝试在设备上构build并运行时,我收到以下警告:

可执行文件被签署了无效的权利。

您的应用程序的代码签名授权文件中指定的权利不符合您的供应configuration文件中指定的权利。

(0xE8008016)。

在控制台中,它performance为这个错误:

5月6日16:18:13 XXXXX installd [54]:授权'DataProtectionClass'具有不允许的configuration文件

最终,我find了正确的设置。 您必须login到开发者平台,并在与正在使用的供应configuration文件关联的应用程序标识上启用数据保护。 看到下面的图片:

在这里输入图像说明

这对于使用configuration文件ID(即my.company.app。*)的通配符不起作用,所以必须创build一个新的完全合格的configuration文件。 它适用于我的Entitlements.plist看起来像这样:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.default-data-protection</key> <string>NSFileProtectionComplete</string> <key>get-task-allow</key> <false/> </dict> </plist> 

和我的个人资料部分看起来像这样:….

 <dict> <key>application-identifier</key> <string>xxx.my.company.app</string> <key>com.apple.developer.default-data-protection</key> <string>NSFileProtectionComplete</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>xxxxxxxx</string> </array> </dict> 

….

我已经尝试使用权利的数据保护,它工作正常。 诀窍是保持xcode项目中的权利文件条目与configuration文件相同。

具体来说,权利文件和预configurationconfiguration文件中的以下2个设置应该是相同的: – “com.apple.developer.default-data-protection” – 我将其设置为NSFileProtectionComplete。 “应用程序标识符” – 我不在标识符中使用通配符,但我认为它应该也可以。

要启用数据保护,请在Xcode的目标的Capabilities窗格中将其打开。

详细信息: 应用分发指南:添加function