什么是iOS上的默认文件保护以及如何更改它

时间:2016-12-07 00:21:11

标签: ios security encryption data-protection

在这里阅读:(https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html

  

启用数据保护(iOS,WatchKit Extension,tvOS)

     

数据保护为存储在磁盘上的文件增加了一定程度的安全性   你的应用程序在应用程序的容器中。数据保护使用内置功能   特定设备上存在的加密硬件,用于存储文件   磁盘上的加密格式。您的应用需要配置为使用数据   保护。

     

启用数据保护

     

在“功能”窗格中,如果未启用“数据保护”,请单击“保护”   切换数据保护部分。

     

默认保护级别是完整保护,即文件   当设备被锁定时,它们被加密并且不可访问。您可以   以编程方式设置您的文件创建的文件的保护级别   应用程序,如在应用程序中使用磁盘加密保护数据中所述   iOS编程指南。对于存储在共享容器中的文件   (在配置应用程序组中描述),设置保护级别   编程。

似乎默认保护是NSFileProtectionComplete,但我不认为这是真的,我认为如果你不启用它,默认是NSFileProtectionCompleteUntilFirstUserAuthentication。

问题#1: 应用程序编写的文件的默认文件保护是什么?

问题#2:
我可以更改所有文件的默认值吗?

在权利文件中启用“数据保护”并将其设置为NSFileProtectionComplete是否意味着应用程序中创建/存储的所有文件都使用NSFileProtectionComplete规则进行加密,而不执行任何其他操作。 IE是否需要启用此功能并为要以编程方式保护的每个文件设置文件保护?

我试过测试一下。我已打开数据保护(权利)和配置/应用程序。我通过xcode将应用程序部署到设备并抓取数据库文件以检查其NSFileProtectionKey:

NSURL * database = [NSPersistentStore MR_urlForStoreName:@“app.sqlite”] id fileProtectionValue = [[[NSFileManager defaultManager] attributesOfItemAtPath:[数据库路径]错误:NULL] valueForKey:NSFileProtectionKey]; NSLog(@“文件保护值:%@”,fileProtectionValue);

然而,这仍然会出现'NSFileProtectionCompleteUntilFirstUserAuthentication。

我试图删除该应用并重新安装。还验证了所有配置文件都已重新下载。

启用数据保护是否会实际更改应用内所有文件的文件保护锁。 IE是一个有效的测试吗?

如果不是,我该如何测试文件是否正确加密?

1 个答案:

答案 0 :(得分:0)

  

问题#1:应用程序编写的文件的默认文件保护是什么?

Apple's docs(第16页),它是NSFileProtectionCompleteUntilFirstUserAuthentication

  

这是未分配给Data Protection类的所有第三方应用程序数据的默认类。

  

问题2:我可以更改所有文件的默认值吗?

是的,在Apple开发人员中心的配置文件/应用ID权利中。

  

请记住,文件保护是在创建时继承的,因此如果您希望整个文件系统层次结构使用此模式,您可以在创建它时在该层次结构的根目录中设置它,并且内部的所有内容都将从那里获取它

通过https://forums.developer.apple.com/thread/91557#276303

然后,您可以根据需要指定特定于文件的属性。

有关测试的其他信息:https://stackoverflow.com/a/40044841/308315