Keychain Services Concepts

it2022-05-05  227

KSC(Keychain Services Concepts)提供了管理安全敏感数据(keys(bytes用于对数据加解密),password,certificates,text strings)的方案,。

Keychain像一个container,只能同时被一个用户locked;OS X里,某个用户的几个相互信任的Apps可以通过同一个master password来同享一个Keychain,这样该用户在使用这些Apps的时候,只需要unlock keychain container一次,系统为每个用户创建一个名叫login.keychain的default keychain也就是login keychain ;iOS 里,每个App只能使用自己的Keychain container,这样需要访问Keychain container时候,甚至不用Unlock keychain container操作;iPhone里,keychain container的权限是由对App签名的provisioning profile决定的,所以程序升级时候最好使用同一个provisioning profile.

一个Keychain container可以有多个(KI)keychain item,每个item有多个attributes.一个KI根据自身的数据类型决定了它是不是需要加密,例如一个存放password的KI是需要加密的;然后存放certificate的KI是可以不加密的,因为certificate数据本身是已经加密了。基于以上解释,KI的类型有:Internet passwords,generic passwords。OS X里,加密的KI在locked时候被请求访问的时候,系统会弹出框让用户输入用户名密码;而非加密KI甚至在locked时,用户也可以随时访问。iOS里,基本没有用户概念,相对的是程序App,每个App对自己的KIs是有绝对权利的,但是其他程序的KIs无权访问。

iOS里,对KI进行操作(CRUD)是通过一个k-v的dictionary(一种数据结构)来实现的。具体这个k-v的dictionary里面该放哪些数据是由KI的类型决定的。基本的一个search操作的dictionary由四个K-V组成:KI的类型(class,例如Internet passwords,加密的公私钥);KI的数据(data,例如标签(label),创建日期(date));用于优化搜索的数据,例如证书的issuing或者email地址;查询返回值类型,例如返回的KI放在一个dictionary里或者一个引用地址)。

 

 

 

转载于:https://www.cnblogs.com/jimagic/archive/2013/05/25/3099210.html

相关资源:英文原版-Advanced Mac OS X Programming The Big Nerd Ranch Guide 1st Edition

最新回复(0)