IOS钥匙串Keychain浅析

无色 2019年8月3日14:33:47 评论 174

根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用keychain来保存WiFi密码,VPN凭证等。它是一个SQLite数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的。

比如在Mac的LaunchPad中,就有一个钥匙串访问,打开就可以看到存储有很多重要的信息:

开发者通常会希望能够利用操作系统提供的功能来保存凭证(credentials)。而不是把他们(凭证)保存到NSUserDefaults,plist文件等地方。保存这些数据的原因是开发者不想用户每次都要登陆,因此会把认证信息保存到设备上的某个地方并且在用户每次打开应用的时候用这些数据自动登陆。Keychain的信息是存在于每一个App的沙盒之外的。

     下面我们来看一看Keychain有哪些功能:

(1)在应用间利用Keychain共享数据

我们可以把Keychain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add,update,get,delete.这四个操作。对于每一个应用来说,Keychain都有两个访问区,私有区和公共区。私有区是一个sandbox,本程序存储的任何数据对其他程序不可见。而想要在将存储的内容放在公共区,需要先声明公共区的名称,官方文档管这个名称叫:“keychain access group”,声明的方法是一个plist文件。

(2)保存私密信息

iOS的 keychain服务提供了一种安全的保存私密信息额方式,相对于NSUserDefaults和文件保存等一般方式,Keychain保存更为安全,而且Keychain里保存的信息不会因App被删除而丢失。所以在重装App之后,Keychain里的数据还能使用。

github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

无色

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: