iOS keychain 笔记

iOS keychain 笔记

以下内容,总结自 苹果官方文档

如果错误,感谢提出!

  1. keychain 是文件系统中的一个数据库

  2. iOS设备上所有app都只有同一个 keychain 可访问;除此之后还有一个iCloud keychain, 可以通过设置 keychain item(看第5点)的键 kSecAttrAccessiblekSecAttrSynchronizable,就可以被放置在 iCloud keychain 中,通过网络在不同设备中共享。

  3. keychian service API 可以通过一个接口的调用从keychain中获取或存储信息

  4. keychain的锁是跟设备被锁同步的;例如手机关闭,keychain 上锁,手机解锁 keychain 解锁

  5. keychain由keychain item组成,keychain item 由数据和一系列相关属性组成。而这些属性和 keychain item的类别有关。有些属性是所有 item 类别共有的,例如创建时间和标签(label),有些属性是各个类别特有的

  6. 属性跟数据不同,属性是非加密的,可以随时访问,即使keychain 被锁

  7. 每个 app 都只能访问自己的 keychain item,或者处于同一个 access group(需要做额外的工作) 中的其他 app 的 keychain item

  8. 通过 access group 可以在不同应用之前共享 keychain item,
    access group 包含 Keychain Access Groups(需要开启), The Application Identifier(TeamID + BundleID), Application Groups.(iOS8及以后,需要开启)。

  9. keychain item 访问的严格程度可以通过设置 kSecAttrAccessible 被控制的,
    1)When Passcode Set
    2)When Unlocked
    3)After First Unlock
    4)Always

总结:可以这么理解,keychain 就是磁盘中的数据库,每个keychain item都是数据库里面的表的一个记录,每个记录都有相关的属性,也就是表的字段。keychain service API 就是操作这个数据库的接口

你可能感兴趣的:(iOS keychain 笔记)