当钥匙串被锁定时,哪些钥匙串属性不可访问?

时间:2016-09-25 18:53:47

标签: ios security cocoa-touch keychain

可以存储在iOS钥匙串中的5 types of keys

  • kSecClassGenericPassword
  • kSecClassInternetPassword
  • kSecClassCertificate
  • kSecClassKey
  • kSecClassIdentity

每种键类型都支持不同的属性集。目前还不清楚哪些属性是"公共"并且暴露于锁定的钥匙串,而不是。

我是否应该假设锁定的钥匙串可以暴露以下所有内容?

没有我的app-group权利的应用程序可以查看我的钥匙串项目的属性吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

所有属性都被视为公开。钥匙串中唯一的秘密是数据(即您使用属性检索的内容)。见Keychain Services Programming Guide: Structure of a Keychain

  

注意:与数据不同,项目的属性不被视为机密,因此从不加密。即使钥匙串被锁定,也可以随时阅读它们。

实际上,我相信在iOS(而不是macOS)中有时甚至属性(所有属性)都被加密(例如在第一次解锁之前),但你不应该依赖于此。如果数据是秘密,则它应该是钥匙串数据,而不是属性。但请记住,您无法搜索数据....因为它是加密的....您只能搜索属性。 iOS不会一次解密整个钥匙串。它通常只是解密它需要的部分。有关这方面的所有详细信息,请参阅iOS Security Guide