我一直无法在官方文档中找到明确的答案。是由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 保护,使之无用如果恢复到不同的设备。