【问题标题】:What is the default file protection on iOS and how to change itiOS 上的默认文件保护是什么以及如何更改它
【发布时间】:2016-12-07 00:21:10
【问题描述】:

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

启用数据保护(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


【解决方案1】:

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

根据Apple's docs(第16页),它是NSFileProtectionCompleteUntilFirstUserAuthenticationnew docs here

这是未分配给数据保护类的所有第三方应用数据的默认类。

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

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

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

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

如果需要,您还可以指定文件特定的属性。


更多测试信息:https://stackoverflow.com/a/40044841/308315

【讨论】:

【解决方案2】:

如果您在应用级别添加(即通过签名和功能添加数据保护功能),您可以参考https://developer.apple.com/library/archive/qa/qa1798/_index.html 了解如何验证权利。

在此引用部分内容:

  1. 在 Xcode 中提交应用时检查分发构建权限

Xcode 在“摘要”窗格中显示分发版本的权利 在提交工作流程中。这是你最后的机会 直观地确保您的应用程序包含预期的权利 在提交您的应用以供审核之前。

  1. 创建 .ipa 文件以检查 iOS 应用商店提交的权利

除了 Xcode 的权利预览之外,您还可以查看 通过首先创建和提交 iOS 应用商店的权利 检查 .ipa 文件。以下步骤概述了要执行的过程 这个。

制作可检查的 .ipa 文件

  1. 在 Xcode 管理器中,而不是 提交到 iOS App Store,为 Enterprise 或 Ad-Hoc 保存 部署。这将创建 .ipa 文件的本地副本 提交到 App Store。
  2. 当被要求选择配置时 要签名的配置文件,选择您使用的相同分发配置文件 提交到 App Store 时。截取您选择的屏幕截图 (command-shift-3),以便您稍后可以验证此步骤。中 提交,这个截图将是你唯一的记录 识别用于签署应用的配置文件。
  3. 要求保存时 包,取消选中 Save for Enterprise Distribution,然后保存 .ipa 文件。

检查 .ipa 文件的权利

  1. 找到 .ipa 文件并将其扩展名更改为 .zip。
  2. 展开 .zip 文件。这 将生成一个包含您的 .app 包的 Payload 文件夹。
  3. 使用 用于检查 .app 包上的权利的 codesign 工具,如下所示: $ codesign -d --entitlements :- "Payload/YourApp.app"哪里 YourApp.app 是 .app 包的实际名称。
  4. 使用安全 检查应用程序嵌入式配置的权利的工具 个人资料:$ security cms -D -i "Payload/YourApp.app/embedded.mobileprovision" YourApp.app 所在的位置 您的 .app 包的实际名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2020-10-14
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2011-10-21
    • 2012-05-30
    相关资源
    最近更新 更多