2016-04-27 126 views
5

我一直无法在官方文档中找到明确的答案。是由iTunes/iCloud备份的钥匙串密码?

kSecAttrAccessible是否会影响类kSecClassGenericPassword的keychain项目的备份行为?

只有kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly明确声明该项目未备份。 AFAICS,kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly使其明确的唯一原因是因为它是有设计的。

这是否意味着无论是否备份kSecClassGenericPassword都是一个实现细节,并且可以更改此类主题?

参考
(用于强调自己的亮点)

iPhone钥匙扣备份
在iOS系统中,应用程序始终有权访问自己的钥匙串项目,并没有访问任何其他应用程序的项目。系统为钥匙串生成自己的密码,并将密钥存储在设备上,以使其无法被任何应用程序访问。 当用户备份iPhone数据时,会备份钥匙串数据,但钥匙串中的秘密在备份中保持加密状态。钥匙串密码不包含在备份中。因此,iPhone上的钥匙串中存储的密码和其他秘密不能被有权访问iPhone备份的人使用。出于这个原因,使用iPhone上的钥匙串来存储可用于登录到安全网站的密码和其他数据(例如cookie)是非常重要的。 https://developer.apple.com/library/ios/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html

关于在iTunes
加密备份以保护您的iPhone,iPad或iPod touch的备份在iTunes中,您可以使用密码保护和加密。 iTunes中的加密备份功能锁定并编码您的数据。 加密的备份的iTunes包括某些信息,其他备份不会:

  • 你保存的密码
  • Wi-Fi设置
  • 网站历史
  • 健康数据

https://support.apple.com/en-gb/HT205220

关于iCloud和iTunes中的备份 iTunes备份
iTunes备份包括几乎所有设备的数据和设置。一个iTunes备份不包括:

  • 活动,健康和钥匙扣数据(要备份这些内容,你需要在iTunes中使用的加密备份。

https://support.apple.com/en-gb/HT204136

IOS安全
的iOS 9.0或更高版本
2015年9月

iCloud云备份
当用户的钥匙串数据库备份到iCloud,但它仍然保护由UID纠结的密钥。这允许钥匙串仅被恢复到它所来源的相同设备,并且这意味着没有其他人(包括Apple)可以读取用户的钥匙串项目。

https://www.apple.com/business/docs/iOS_Security_Guide.pdf

钥匙扣数据保护
其他钥匙串类有一个“只此设备”配对,备份期间从设备被复制时,它总是有UID 保护,使之无用如果恢复到不同的设备。

回答

1

是否kSecAttrAccessible影响如何在钥匙链上的物品类别kSecClassGenericPassword的 备份或不行为?

是的。

我在您发布的各种引用中看不到任何重大矛盾。无论如何,在这种情况下,我建议您根据iOS安全性文档中的语句决定您的 决定。

这是否意味着无论是kSecClassGenericPassword备份还是 都不是实施细节,并且因此可能会更改?

我认为可以肯定地说备份的确切机制是 可能会有变化。不过,我预计任何此类更改都会继续遵守xxxThisDeviceOnly标志。分享和欣赏
-

奎因
苹果开发者关系,开发者技术支持,核心操作系统/硬件

参考“爱斯基摩人!”:https://forums.developer.apple.com/thread/45940(需要苹果开发者账号)