Keychain介绍
Keychain Services 是 macOS 和 iOS 都提供一种安全的存储敏感信息的工具,比如用户访问应用程序/网站 服务器的口令。此外,用于认证的证书,密钥,和身份信息,也可以存储在Keychain中,Keychain Services 的安全机制保证了存储这些敏感信息不会被窃取。
Keychain的特点
- 数据并不存放在App的Sandbox中,即使删除了App,资料依然保存在keychain中。如果重新安装了app,还可以从keychain获取数据
- keychain的数据可以通过group方式,让程序可以在App间共享。不过得要相同TeamID
- keychain的数据是经过加密的
Keychain的结构
如上图,每一个keyChain的组成如图,整体是一个字典结构.
- kSecClass key 定义属于哪一种类型的keyChain(通用密码、互联网密码、证书、密钥和身份)
- 不同的类型包含不同的Attributes,这些attributes定义了这个item的具体信息
- 每个item可以包含一个密码项来存储对应的密码
Keychain可以包含任意数量的keychain item(keychain item称为SecItem,但它是存储在CFDictionary中的).每一个keychain item包含数据和一组属性。SecItem有五类:通用密码、互联网密码、证书、密钥和身份。在大多数情况下,我们用到的都是通用密码
在macOS中,当keychain被锁的时候加密的item没办法访问,如果你想要该问被锁的item,就会弹出一个对话框,需要你输入对应keychain的密码。当然,未有密码的keychain你可以随时访问。但在iOS中,你只可以访问你自已的keychain items
参考:https://blog.csdn.net/u013712343/article/details/120439495