公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于
公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。
PKI的发展
美国的PKI建设过程经历了1996年之前的无序、1996—2002年间以FBCA为核心的体系搭建、2003之后
策略管理和体系建设并举的三个阶段。1996年以前,很多政府部门自建PKI系统,例如
美国邮政服务部门、
社会安全部门、
美国国防部、能源部、美国商标与知识产权局等。1996年美国提出联邦桥接计划,2001年正式公布,计划最终建立一个覆盖美国80个机构、19个部的PKI以保护
电子政府的
通信安全。
美国联邦PKI体系主要由联邦的桥认证机构(Federal Bridge CA,FBCA)、首级认证机构(Principal CA,PCA)和次级认证机构(Subordinate CA,SCA)等组成。联邦PKI的
体系结构中没有采用根CA,而采用了首级CA。
这是因为在美国,
信任域的结构是多种多样的,美国联邦PKI体系结构可以支持分级(树状)维构、
网状结构和信任列表等。联邦的桥CA是联邦PKI体系中的核心组织,是不同信任域之间的桥梁,主要负责为不同信任域的首级CA颁发交叉认证的证书,建立各个信任域的担保等级与联邦CA的担保等级之间的映射关系,更新交叉
认证证书,发布交叉认证证书注销
黑名单。但是联邦的桥CA不要求一个机构在与另一个机构发生信任关系时必须述循联邦PKI所确定的这种映射关系,而是可以采用它认为合适的映射关系确定彼此之间的信任。
欧洲在PKI
基础建设方面也成绩显著。已颁布了93/1999EC法规,强调技术中立、
隐私权保护、国内与国外相互认证以及无歧视等原则。为了解决各国PKI之间的
协同工作问题,它采取了一系列措施:积极资助相关研究所、大学和企业研究PKI
相关技术;资助PKI
互操作性相关
技术研究,并建立CA网络及其顶级CA。并于2000年10月成立了欧洲桥CA指导委员会,于2001年3月23日成立了欧洲桥CA。
我国的PKI技术从1998年开始起步,政府和各有关部门对PKI产业的发展给予了高度重视。2001年PKI技术被列为“
十五”
863计划信息安全主题重大项目,并于同年10月成立了
国家863计划信息安全基础设施研究中心。国家电子政务工程中明确提出了要构建PKI体系。我国已全面推动PKI技术研究与应用。2004年8月28日,十届全国人大常委会第十一次会议28日表决通过了
电子签名法,规定
电子签名与手写签名或者盖章具有同等的
法律效力。这部法律的诞生极大地推动了我国的PKI建设。
1998年国内第一家以实体形式运营的上海CA中心(SHECA)成立,此后,PKI技术在我国的商业银行、政府采购以及网上购物中得到了广泛应用。国内的CA机构大致可分为区域型、行业型、商业型和企业型四类,并出现了得安科技、创原世纪、国创科技、吉大正元、国瑞数码等一批PKI
服务提供商。
PKI系统组成
一个典型的PKI系统包括PKI策略、软
硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。
PKI安全策略
建立和定义了一个组织信息安全方面的指导方针,同时也定义了
密码系统使用的
处理方法和原则。它包括一个组织怎样处理密钥和有价值的信息,根据风险的级别定义安全控制的级别。
证书机构CA
证书机构CA是PKI的信任基础,它管理公钥的整个
生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(
CRL)确保必要时可以废除证书。
注册机构RA
注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。它主要完成收集用户信息和确认用户身份的功能。这里指的用户,是指将要向认证中心(即CA)申请数字证书的客户,可以是个人,也可以是集团或团体、某政府机构等。注册管理一般由一个独立的注册机构(即RA)来承担。它接受用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书。注册机构并不给用户
签发证书,而只是对用户进行
资格审查。因此,RA可以设置在直接面对客户的
业务部门,如银行的营业部、机构认识部门等。当然,对于一个规模较小的PKI
应用系统来说,可把注册管理的职能由认证中心CA来完成,而不设立独立运行的RA。但这并不是取消了PKI的注册功能,而只是将其作为CA的一项功能而已。PKI
国际标准推荐由一个独立的RA来完成注册管理的任务,可以增强应用系统的安全。
证书发布系统
证书发布系统负责证书的发放,如可以通过用户自己,或是通过
目录服务器发放。目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。
PKI的应用
PKI的应用非常广泛,包括应用在web服务器和浏览器之间的通信、
电子邮件、
电子数据交换(EDI)、在Internet上的信用卡交易和虚拟私有网(
VPN)等。
通常来说,CA是证书的签发机构,它是PKI的核心。众所周知,构建密码
服务系统的核心内容是如何实现
密钥管理。
公钥体制涉及一对密钥(即私钥和公钥),私钥只由用户独立掌握,无须在网上传输,而公钥则是公开的,需要在网上传送,故公钥体制的密钥管理主要是针对公钥的管理问题,较好的方案是
数字证书机制。
相关标准
PKI的标准可分为两个部分:一类用于定义PKI,而另一类用于PKI的应用,下面主要介绍定义PKI的标准。
ASN.1
基本编码规则的规范——X.209(1988)。ASN.1是描述在网络上传输
信息格式的
标准方法。它有两部分:第一部分(ISO 8824/ITU X.208)描述信息内的数据、
数据类型及序列格式-也就是数据的语法;第二部分(ISO8825/ITU X.209)描述如何将各部分数据组成消息,也就是数据的基本编码规则。这两个协议除了在PKI体系中被应用外,还被广泛应用于通信和计算机的其他领域。
目录服务系统标准——X.500(1993)。X.500是一套已经被
国际标准化组织(ISO)接受的
目录服务系统标准,它定义了一个机构如何在全局范围内共享其名字和与之相关的对象。X.500是
层次性的.其中的
管理域(机构、分支、部门和工作组)可以提供这些域内的用户和
资源信息。在PKI体系中,X.500被用来标识一个实体。该实体可以是机构、组织、个人或一台服务器。
X.500被认为是实现目录服务的最佳途径,但X.500的实现需要较大的投资,并且比其他方式速度慢;但其优势是具有
信息模型、多功能和开放性。
LDAP轻量级目录访问协议一LDAP V3。
LDAP规范(RFCl487)简化了笨重的X.500
目录访问协议,并且在功能性、
数据表示、编码和传输方面部进行了相应的修改,1997年.LDAP第3版本成为互联网标准。IDAP V3已经在PKI体系中被广泛应用于证书
信息发布、CRL。信息发布、CA政策以及与信息发布相关的各个方面。
数字证书标准 X.509(1 993)。X.5(19是南
国际电信联盟(ITU—T)制定的数字证书标准、在X.500确保用户名称唯一性的基础上.X.509为X.500用户名称提供了通信实体的鉴别机制并规定了
实体鉴别过程中广泛适用的证书语法和
数据接口。X.509的最初版本公布于l 988年,由用户
公开密钥和
用户标识符组成此外还包括
版本号、
证书序列号、CA
标识符、
签名算法标识、签发者名称、证书有效期等信息。这一标准的最新版本是X.509 V3,该版数字证书提供了一个扩展信息字段.用来提供更多的灵活性及特殊应用环境下所需的信息传送。
OCSP在线证书状态协议。OCSP(OnIine Certificate Status Protocol)是
IETF颁布的用于检查数字证书在某一交易时刻是否仍然有效的标准。该标准提供给PKI用户一条方便快捷的数字证书状态查询通道.使PKI体系能够更有效、更安全地在各个领域中被广泛应用。
PKCS系列标准。PKCS是南美
RSA数据安全公司及其合作伙伴制定的一组
公钥密码学标准,其中包括证书申请、
证书更新、证书作废表发布、扩展证书内容以及数字签名、
数字信封的格式等方面的一系列相关协议。
信任模型
实际
网络环境中不可能只有一个CA.多个认证机构之间的
信任关系必须保证原有的PKI户不必依赖和信任专一的CA,否则将无法进行扩展、管理和包含。
信任模型建立的目的是确保一个认证机构签发的证书能够被另一个认证机构的用户所信任。常见的信任模型包括以下四种:
严格层次信任模型
严格层次信任模型是一个以主从CA
关系建立的分级PKl结构,它可以描绘为一棵倒转的树,在这棵树上,根代表一个对整个PKI域内的所有实体都有特别意义的CA:根CA,在根CA的下面是多层子CA,与非CA的PKI实体相对应的树叶通常被称作
终端用户。
在严格层次信任模型中,上层CA为下层颁发证书,所有的实体都信任根CA,以根CA作为信任点。信任关系是单向的,上层CA可以而且必须认证下层CA,但下层CA不能认证上层CA,根CA通常不直接为终端用户颁发证书而只为子CA颁发证书。两个不同的终端用户进行交互时,双方都提供自己的证书和数字签名,通过根CA来对证书进行
有效性和真实性的认证。只要找到一条从根CA到一个证书的认证路径,就可以实现对证书的验证。
分布式信任模型
与严格层次信任模型中的所有实体都信任唯一CA相反,分布式信任模型把信任分布在两个或多个CA上,在分布式信任模型中,CA间存在着
交叉认证。因为存在多个信任点,单个CA安全性的削弱不会影响到整个PKI。因此该信任模型具有更好的灵活性但其路径发现比较困难,因为从终端用户到信任点建立证书的路径是不确定的。
以用户为中心的信任模型
在以用户为中心的信任模型中,每个用户自己决定信任哪些证书和拒绝哪些证书,没有可信的第三方作为CA,用户就是自己的根CA。通常,用户的信任对象一般为关系密切的用户。
以用户为中心的信任模型具有安全性高和用户
可控性强的优点.但是其使其范闱较小,因为要依赖用户自身的行为和
决策能力,这在技术水平较高的群体中是可行的,而在一般的群体中是不现实的。
交叉认证模型
交叉认证是一种把以前无关的CA连接在一起的机制.可以使得它们各自终端用户之间的安全通信成为可能.有两种类型的交叉认证:域内交叉认证和域间交叉认证。
安全服务
PKI的应用非常广泛,其为网上金融、
网上银行、
网上证券、电子商务、电子政务等网络中的
数据交换提供了完备的安全服务功能。PKI作为安全基础设施,能够提供
身份认证、
数据完整性、数据
保密性、数据
公正性、
不可抵赖性和
时间戳六种安全服务。
身份认证
由于网络具有
开放性和
匿名性等特点,非法用户通过一些技术手段假冒他人身份进行网上欺诈的门槛越来越低,从而对
合法用户和系统造成极大的危害。身份认证的实质就是证实被认证对象是否真实和是否有效的过程,被认为是当今
网上交易的基础。在PKI体系中,
认证中心(Certification Authority,
CA)为系统内每个合法用户办一个网上身份认证,即
身份证。
数据完整性
数据的
完整性就是防止非法篡改信息,如修改、复制、插入、删除等。在交易过程中,要确保交易双方接收到的数据与原数据完全一致,否则交易将存在
安全问题。如果依靠观察的方式来判断数据是否发生过改变,在大多数情况下是不现实的。在
网络安全中,一般使用
散列函数的方法(
Hash函数,也称
密码杂凑函数)来保证通信时数据的完整性。通过
Hash算法我们将任意长度的数据通过变换为长度固定的
数字摘要(
消息认证码,MAC),并且
原始数据中任何一位的改变都将会在相同的计算条件下产生截然不同的数字摘要。
这一特性使得人们很容易判断原始数据是否发生非法篡改,从而很好地保证了数据的完整性和
准确性。PKI系统主要采用的
散列算法有
SHA一1和MD一5。
数据保密性
数据的保密性就是对需要保护的数据进行加密,从而保证信息在传输和
存储过程中不被未授权人获取。在PKl系统中,所有的保密性都是通过密码技术实现的。
密钥对分为两种,一种称作加密密钥对,用作加解密;另一种称作签名密钥对,用作签名。一般情况下,用来加解密的密钥对并不对实际的大量数据进行加解密,只是用于协商
会话密钥,而真正用于大量数据加解密的是会话密钥。
在实际的
数据通信中,首先
发送方产生一个用于实际
数据加密的
对称算法密钥,此密钥被称为会话密钥,用此密钥对所需处理的数据进行加密。然后,发送方使用接收方加密密钥对应的
公钥对会话密钥进行加密,连同经过加密处理的数据一起传送给接收方。接收方收到这些信息后,首先用自己加密密钥对中的
私钥解密会话密钥,然后用会话密钥对实际数据进行解密。
数据公正性
PKI中支持的公正性是指数据认证。也就是说,公证人要证明的是数据的正确性,这种公正取决于
数据验证的方式,与公正服务和一般社会公证人提供的服务是有所不同的。在PKI中,被验证的数据是基于对原数据
Hash后数字摘要的
数字签名、公钥在数学上的正确性和私钥的
合法性。
不可抵赖性
不可抵赖性保证参与双方不能否认自己曾经做过的事情。在PKI系统中,不可抵赖性来源于数字签名。由于用户进行数字签名的时候.签名私钥只能被
签名者自己掌握,系统中的其他实体不能做出这样的签名,因此,在私钥安全的假设下签名者就不能否认自己做出的签名。保护签名私钥的安全性是不可抵赖问题的基础。
时间戳服务
时间戳也叫安全时间戳,是一个可信的时间权威,使用一段可以认证的数据来表示。
PKl中权威时间源提供的时间并不需要正确,仅仅需要用户作为一个参照“时间”,以便完成基于PKI的
事务处理,如时间A发生在时间B的前面等。一般的PKI系统中都设置一个时钟统一PKI时间。当然也可以使用时间官方事件源所提供的时间,其实现方法是从网中这个时钟位置获得安全时间,要求实体在需要的时候向这些权威请求在数据上盖上时间戳。一份文档上的时间戳涉及对时间和文档内容的
哈希值的签名,权威的签名提供了数据的真实性和完整性。一个PKI系统中是否需要实现时间戳服务,完全依照应用的需求来决定。
数字签名
由于单一的、独一无二的私钥创建了签名,所以在被签名数据与私钥对应的实体之间可以建立一种联系,这种联系通过使用实体公钥验证签名来实现。如果
签名验证正确,并且从诸如可信实体签名的
公钥证书中知道了用于验证签名的公钥对应的实体,那么就可以用数字签名来证明被数字签名数据确实来自证书中标识的实体。
因此,PK的数字签名服务分为两部分:签名生成服务和签名验证服务。签名生成服务要求能够访问签名者的私钥,由于该私钥代表了签名者,所以是
敏感信息,必须加以保护。如果被盗,别人就可以冒充签名者用该密钥签名。因此,签名服务通常是安全
应用程序中能够安全访问签名私钥的那一部分。相反,签名验证服务要开放一些,公钥一旦被可信签名者签名,通常就被认为是
公共信息。验证服务接收签名数据、签名、公钥或公钥证书,然后检查签名对所提供的数据是否有效。它返回验证成功与否的标识。