【发布时间】:2016-12-07 00:21:10
【问题描述】:
启用数据保护(iOS、WatchKit 扩展、tvOS)
数据保护通过以下方式为存储在磁盘上的文件增加了安全级别 您的应用程序在应用程序的容器中。数据保护使用内置 存在于特定设备上的加密硬件,用于将文件存储在 磁盘上的加密格式。您的应用需要配置为使用数据 保护。
启用数据保护
在“功能”窗格中,如果未启用数据保护,请单击 在数据保护部分切换。
默认的保护级别是完全保护,其中文件 设备锁定时已加密且无法访问。你可以 以编程方式为您创建的文件设置保护级别 应用程序,如在应用程序中使用磁盘加密保护数据中所述 iOS 编程指南。对于存储在共享容器中的文件 (在配置应用程序组中描述),设置保护级别 以编程方式。
似乎默认保护是 NSFileProtectionComplete,但我认为这是真的,如果你不启用它,我认为默认是 NSFileProtectionCompleteUntilFirstUserAuthentication。
问题 #1: 应用程序写入的文件的默认文件保护是什么?
问题 #2:
我可以更改所有文件的默认值吗?
在权利文件中启用“数据保护”并将其设置为 NSFileProtectionComplete 是否意味着应用程序中创建/存储的所有文件都使用 NSFileProtectionComplete 规则加密,而无需执行任何其他操作。 IE 是否需要启用此功能并为每个要以编程方式保护的文件设置文件保护?
我已尝试对此进行测试。我已打开数据保护(权利)和配置/应用程序。我通过 xcode 将应用程序部署到设备并抓取数据库文件以检查其 NSFileProtectionKey:
NSURL *database = [NSPersistentStore MR_urlForStoreName:@"app.sqlite"] id fileProtectionValue = [[[NSFileManager defaultManager] attributesOfItemAtPath:[database path] error:NULL] valueForKey:NSFileProtectionKey]; NSLog(@"文件保护值:%@", fileProtectionValue);
但是这仍然会吐出 'NSFileProtectionCompleteUntilFirstUserAuthentication.
我已尝试删除该应用程序并重新安装。还验证了所有配置文件均已重新下载。
打开数据保护是否会实际更改应用内所有文件的文件保护密钥。 IE 这是一个有效的测试吗?
如果不是,如何测试文件是否正确加密?
【问题讨论】:
标签: ios security encryption data-protection data-protection-class