3.2 PKI系统的常用信任模型
选择信任模型(Trust Model)是构筑和运作PKI所必需的一个环节。选择正确的信任模型以及与它相应的安全级别是非常重要的,同时也是部署PKI所要做的较早的和基本的决策之一。
信任模型主要阐述了以下几个问题:
1)一个PKI用户能够信任的证书是怎样被确定的?
2)这种信任是怎样被建立的?
3)在一定的环境下,这种信任如何被控制?
为了进一步说明信任模型,首先需要阐明信任的概念。每个人对术语“信任(Trust)”的理解并不完全相同,在ITU-T推荐标准X.509规范(X.509,Section3.3.23)中给出的定义为:当实体A假定实体B严格地按A所期望的那样行动,则A信任B。从这个定义可以看出,信任涉及假设、期望和行为,这意味着信任是不可能被定量测量的,信任是与风险相联系的,并且信任的建立不可能总是全自动的。在PKI中,可以把这个定义具体化为:如果一个用户假定CA可以把任一公钥绑定到某个实体上,则他信任该CA。
本节将介绍目前常用的四种信任模型:认证机构的严格层次结构模型(Strict Hierarchy of Certification Authorities Model)、分布式信任结构模型(Distributed Trust Architecture Model)、Web模型(Web Model)和以用户为中心的信任模型(User-Centric Trust Model)。
3.2.1 认证机构的严格层次结构模型
认证机构(CA)的严格层次结构可以被描绘为一棵倒立的树,根在顶上,树枝向下伸展,树叶在下面。在这棵倒立的树上,根代表一个对整个PKI系统的所有实体都有特别意义的CA,通常叫作根CA,它充当信任的根或“信任锚”,也就是认证的起点或终点。在根CA的下面是零层或多层中介CA,也被称作子CA,因为它们从属于根CA。子CA用中间节点表示,从中间节点再伸出分支。与非CA的PKI实体相对应的树叶通常被称作终端实体或被称作终端用户。在这个模型中,层次结构中的所有实体都信任唯一的根CA。这个层次结构按如下规则建立,如图3-1所示。
图3-1 严格层次结构模型
1)根CA认证直接连接在它下面的CA。
2)每个CA都认证零个或多个直接连接在它下面的CA。
3)由倒数第二层的CA认证终端实体。
在认证机构的严格层次结构中,每个实体(包括中介CA和终端实体)都必须拥有根CA的公钥,该公钥的安装是在这个模型中为随后进行的所有通信进行证书处理的基础。因此,它必须通过一种安全的方式来完成。例如,一个实体可以通过物理途径(如信件或电话)来取得这个密钥,也可以选择通过电子方式取得该密钥,然后再通过其他机制来确认它,如将密钥的散列值用信件发送、公布在报纸上或者通过电话告之。值得注意的是,在一个多层的严格层次结构中,终端实体直接被其上层的CA认证,但是它们的信任锚是另一个不同的CA。如果是没有子CA的浅层次结构,则对所有终端实体来说,根和证书颁发者是相同的。这种层次结构被称作可信颁发者层次结构。
例如,一个持有根CA公钥的终端实体A可以通过下述方法检验另一个终端实体B的证书:假设B的证书是由CA2签发的,而CA2的证书是由CA1签发的,CA1的证书又是由根CA签发的。A(拥有根CA的公钥KR)能够验证CA1的公钥K1,因此它可以提取出可信的CA1的公钥。然后,这个公钥可以被用作验证CA2的公钥,类似地就可以得到CA2的可信公钥K2。公钥K2能够被用来验证B的证书,从而得到B的可信公钥KB。A现在就可以根据密钥的类型来使用密钥KB,例如,可用来对发给B的消息加密或者用来验证据称是B的数字签名,从而实现A和B之间的安全通信。
3.2.2 分布式信任结构模型
与在PKI系统中的所有实体都信任唯一一个CA的严格层次结构相反,分布式信任结构把信任分散在两个或多个CA上。也就是说,A把CA1作为它的信任锚,而B可以把CA2作为它的信任锚。因为这些CA都作为信任锚,因此相应的CA必须是整个PKI系统的一个子集所构成的严格层次结构的根CA(CA1是包括A在内的严格层次结构的根,CA2是包括B在内的严格层次结构的根)。
如果这些严格层次结构都是可信颁发者层次结构,那么该总体结构被称作完全同位体结构,因为所有的CA实际上都是相互独立的同位体(在这个结构中没有子CA属于分布式的)。另一方面,如果所有的严格层次结构都是多层结构,那么最终的结构就被称为“满树结构”。事实上,根CA之间是同位体,但是每个根又是一个或多个子CA的上级。另外,具有若干个可信颁发者层次结构和若干个多层树型结构的混合结构也是可能的。一般说来,完全同位体结构部署在某个组织内部,而满树结构和混合结构则是在原来相互独立的PKI系统之间进行互联的结果。尽管“PKI网络”一词用得越来越多(特别是对满树结构和混合结构),但是对等根CA的互联过程通常被称为“分布式交叉认证”。
3.2.3 Web模型
Web模型是在万维网(WWW)上诞生的,而且依赖于流行的浏览器,如Microsoft公司的Internet Explorer。在这种模型中,许多CA的公钥被预装在标准的浏览器上。这些公钥确定了一组浏览器用户最初信任的CA。尽管这组根密钥可以被用户修改,然而几乎没有普通用户对PKI和安全问题能精通到可以进行这种修改的程度。
这种模型初看似乎与分布式信任结构模型相似,但从根本上讲,它更类似于认证机构的严格层次结构模型。因为在实际上,浏览器厂商起到了根CA的作用,而与被嵌入的密钥相对应的CA就是它所认证的CA,当然这种认证并不是通过颁发证书实现的,而只是物理地把CA的密钥嵌入浏览器。
Web模型在方便性和简单互操作性方面有明显的优势,但是也存在许多安全隐患。例如,因为浏览器的用户自动地信任预安装的所有公钥,所以只要这些根CA中有一个是“坏的”,安全性将被完全破坏。A将相信任何声称是B的证书都是B的合法证书,即使它实际上只是由其公钥嵌入浏览器中的“坏的CA”签署的挂在B名下的C的公钥。所以,A就可能无意间向C透露机密或接受C伪造的数字签名。这种假冒能够成功的原因是:A一般不知道收到的证书是由哪一个根密钥验证的。在嵌入其浏览器中的多个根密钥中,A可能只认可所给出的一些CA,但并不了解其他CA。然而在Web模型中,A的软件平等而无任何疑问地信任这些CA,并接受它们中任何一个签署的证书。
当然,在其他信任模型中也可能出现类似情况。例如,在分布式信任结构模型中,A或许不能认可一个特定的CA,但是其软件在相关的交叉认证是有效的情况下,会信任该CA所签署的证书。在分布式信任结构中,A在PKI安全方面明确地相信其局部CA“做正确的事”,例如,与可信的其他CA进行交叉认证等。而在Web模型中,A通常是因为与安全无关的原因而取得浏览器的,因此,从安全观点来看,没有任何理由相信这个浏览器是在信任“正确的”CA。
另外一个安全隐患是没有实用的机制来撤销嵌入浏览器中的根密钥。如果发现一个根密钥是“坏的”,或者与根的公钥相应的私钥被泄密了,要使全世界数百万个浏览器都自动地废止该密钥的使用是不可能的,这是因为无法保证通报的报文能到达所有的浏览器,而且即使报文到达了浏览器,浏览器也没有处理该报文的功能。因此,从浏览器中去除坏密钥需要全世界的每个用户都同时采取明确的动作,否则,一些用户将是安全的,而其他用户仍处于危险之中。但是,这样一个全世界范围内的同时动作是不可能实现的。
最后,该模型还缺少有效的方法在CA和用户之间建立合法协议,该协议的目的是使CA和用户共同承担责任。因为,浏览器可以自由地从不同站点下载,也可以预装在操作系统中;CA不知道它的用户是谁,并且一般用户对PKI也缺乏足够的了解,因此不会主动与CA直接接触。这样。所有的责任最终或许都会由用户承担。
3.2.4 以用户为中心的信任模型
在以用户为中心的信任模型中,每个用户自己决定信任哪些证书。通常,用户的最初信任对象包括用户的朋友、家人或同事,但是否信任某证书则被许多因素决定。
著名的安全软件PGP最能说明以用户为中心的信任模型的原理。在PGP中,一个用户通过担当CA(签署其他实体的公钥)并使其公钥被其他人所认证来建立或参加所谓的“信任网”。例如,当A收到一个据称属于B的证书时,他将发现这个证书是由他不认识的D签署的,但是D的证书是由他认识并且信任的C签署的。在这种情况下,A可以决定信任B的密钥,即信任从C到D再到B的密钥链,也可以决定不信任B的密钥,即认为“未知的”B与“已知的”C之间的“距离太远”。
由于要依赖于用户自身的行为和决策能力,因此以用户为中心的模型在技术水平较高和利害关系高度一致的群体中是可行的,但是在一般的群体中是不现实的,因为它的许多用户有极少或者没有安全及PKI的概念。而且,这种模型一般不适合用在贸易、金融或政府环境中,因为在这些环境下,通常希望或需要对用户的信任实行某种控制,显然这样的信任策略在以用户为中心的模型中是不可能实现的。