使用iOS"受保护的除非打开"加密关闭文件会发生什么?

Ric*_*ble 6 security ios

Apple的文档说明如下:

保护除非打开.文件已加密.设备锁定时无法访问已关闭的文件.设备解锁后,您的应用可以打开并使用该文件.如果用户打开了文件并锁定了设备(例如,通过按下睡眠按钮),您的应用程序可以继续访问该文件.

启用商店技术

并且:

完成除非已经打开.该文件已加密.设备锁定时无法访问已关闭的文件.用户解锁设备后,您的应用可以打开文件并使用它.但是,如果用户在文件打开时锁定设备,您的应用可以继续访问它.指定NSDataWritingFileProtectionCompleteUnlessOpen选项(NSData)或NSFileProtectionCompleteUnlessOpen属性(NSFileManager).

使用磁盘加密保护数据

这似乎是一个很好的选择,允许我完成文件上的任何剩余工作,然后自己关闭它.文档没有说明文件关闭时会发生什么.例如,当:

  1. 用户打开应用程序并打开app中的文件
  2. 用户锁定设备(文件因未打开而保持不受保护)
  3. App会对文件执行剩余操作
  4. 应用程序关闭文件

现在,文件是否受保护,因为它现在已关闭?或者可以重新开放吗?

cob*_*bal 3

它使用公钥来确保在设备解锁之前无法打开文件。

\n\n
\n

受保护除非打开
\n (NSFileProtectionCompleteUnlessOpen) : 设备锁定时可能需要写入某些\n 文件。一个很好的例子是在后台下载邮件附件。这种行为是通过使用非对称椭圆曲线加密(ECDH over Curve25519)来实现的。除了通常的每个文件密钥之外,数据保护还会生成文件公钥/私钥对。共享秘密是使用文件\xe2\x80\x99s 私钥和\n Protected except Open 类公钥计算的,其相应的私钥\n 受用户\xe2\x80\x99s 密码和设备的保护UID。每个文件的密钥都包含有此共享密钥的哈希值,并与文件\xe2\x80\x99s 公钥一起存储在文件\xe2\x80\x99s 元数据中;然后相应的私钥将从内存中擦除。文件关闭后,每个文件的密钥也会从内存中擦除。要再次打开文件,将使用受保护的\n 重新创建共享密钥,除非 Open 类\xe2\x80\x99s 私钥和文件\xe2\x80\x99s 临时公钥;\n 使用其哈希值解开每个文件的密钥,然后使用该密钥解密文件。

\n
\n\n

来自http://images.apple.com/iphone/business/docs/iOS_Security_Oct12.pdf(第10页)

\n

  • 哇,这是一个复杂的解释;)引用说“一旦文件关闭,每个文件的密钥也会从内存中擦除”。这意味着文件关闭后,它会受到保护,并且在设备解锁之前无法重新打开? (3认同)