计算机网络安全与应用技术(第2版)
上QQ阅读APP看书,第一时间看更新

3.4 公钥基础设施

公钥基础设施(Public Key Infrastructure,PKI)是经过多年研究形成的一套完整的Internet安全解决方案。它是用公钥技术和规范提供用于安全服务的具有普遍适用性的基础设施。用户可利用PKI平台提供的服务进行安全通信。公钥基础设施(PKI)提供公钥加密和数字签名服务的系统或平台,目的是通过自动管理密钥和证书,为用户建立一个安全的网络运行环境。或者说PKI是指由数字证书、证书颁发机构(Certificate Authority,CA)以及对电子交易所涉及的各方的合法性进行检查和验证的注册机构组成的一套系统。从广义上讲,所有提供公钥加密和数字签名服务的系统,都可叫作PKI系统。

PKI系统由5个部分组成:证书颁发机构、注册机构(RA)、证书库(CR)、证书申请者、证书信任方。前三部分是PKI的核心,证书申请者和证书信任方则是利用PKI进行网上交易的参与者。

PKI体系结构采用证书管理公钥,通过第三方的可信机构CA,把用户的公钥和用户的其他标识信息(如名称、E-mail等)捆绑在一起,在Internet上验证用户的身份,实现密钥的自动管理,保证网上数据的机密性、完整性。

PKI的主要功能:证书产生与发放;证书撤销;密钥备份及恢复;证书密钥对的自动更新;密钥历史档案;支持不可否认;时间戳;交叉认证;用户管理(如登录、增删等)。客户端服务:理解安全策略,恢复密钥,检验证书,请求时间戳等。PKI还支持LDAP,支持用于认证的智能卡。此外,PKI的特性融入各种应用(防火墙、浏览器、电子邮件、网络OS)也正在成为趋势。

3.4.1 数字签名

传统的签名方式有手签、指印、印章等,它可以对当事人进行认证、核准,然后与文件内容联系起来达到生效的作用。随着网络和电子商务的发展,数字签名成为网络中证明当事人的身份和数据真实性的重要方式。数字签名是邮件、文件或其他数字编码信息的发件人将他们的身份与信息绑定在一起(即为信息提供签名)的方法。它能够解决信息传输的保密性、完整性、不可否认性、交易者身份的确定性问题。数字证书和PKI结合解决电子商务中的安全问题。它通过一个单向函数对要传送的报文进行处理,得到一个用于认证报文来源并核实报文是否发生变化的一个字母数字串,用这个字母数字串来代替签名或印章,起到与书写签名或印章同样的法律效用。

数字签名可以用对称算法实现,也可以用公钥算法实现。但前者除了文件签名和文件接收者外,还需要第三方认证。而通过公钥加密算法实现,由于用秘密密钥加密文件却靠公开密钥来解密,因此这可以作为数字签名,签名者用秘密密钥加密一个签名,接收者可以用公开的密钥来解密,如果成功就能确保信息来自该公开密钥的所有者。正是由于公开密钥体制实现数字签名简单,因此目前数字签名采用较多的是公钥加密技术。数字签名的算法很多,目前广泛应用的有Hash、RSA、DSA等。

Hash签名是最主要的数字签名方法,也称为数字指纹法,它与RSA数字签名不同,这种方法把数字签名同要发送的信息紧密联系在一起,从而更适合于电子商务。单向函数是公开密钥的核心,单向函数是指已知x,很容易求得f(x),但已知f(x),却很难计算x,就如同把一个盘子打成许多碎片很容易,但要拼起来却非常困难。单向Hash函数长期以来一直在计算机科学中使用,Hash函数就是把可变长度输入串转换成固定长度输出串(叫作Hash值)的一种函数。因为Hash函数是典型的多对一的函数,所以已知Hash函数的输出,要求它的输入是很困难的。

Hash签名使用密码安全函数,如MD-5,并从文件中产生一个Hash值。这个过程把用户的密钥(从第三方得到)与文件联系在一起,再把这个文件和密钥的排列打乱,通过Hash函数产生一个Hash值,Hash值作为签名与文件一起传送,只留下密钥,接收方有密钥副本,并用它对签名进行检验。

Hash签名的主要局限是接收方必须持有用户密钥副本,还有就是也存在伪造签名的可能,另外管理这些密钥也比较麻烦。

前面已经讲过,RSA既可以用来加密数据,也可以用来身份认证,和Hash签名相比,在公钥体系中,由于生成签名的密钥只存储于用户计算机中,因而安全系数大些。用RSA或其他公钥算法进行数字签名的最大方便就是没有密钥分配问题,这个优点会随着网络越复杂、网络用户越多而越明显。

3.4.2 认证及身份验证

尽管公钥加密方法比较方便,但由于它的公钥是公开的,使它有一个很大的弱点——人们都可以假造这种公开的声明。比如,某个用户伪装成用户A,向其他参与者发出公钥,而在真正的A如果不知情,没有向其他参与者给出警告的情况下,其他参与者就会把这个人当作真正的A,而把要发送给A的信息发送给这个伪装者,这个伪装者就可以解读所有本应属于A的信息。这样,随着企业、商家在电子商务中越来越多地使用加密技术,人们都希望有一个可信的第三方,以便对有关数据进行数字认证,也即由第三方颁发公钥证书。

证书颁发机构又称为证书授证中心,是为了解决电子商务活动中交易参与的各方身份、资信的认定,维护交易活动中的安全,从根本上保障电子商务交易活动顺利进行而设立的,是受一个或多个用户信任,提供用户身份验证的第三方机构,承担公钥体系中公钥的合法性检验的责任。它在网络通信认证技术中具有特殊的地位,CA这个提供身份验证的第三方机构,通常由一个或多个用户信任的组织实体组成,比如政府部门或金融机构。在实际运作中,CA也可由大家都信任的一方担当,比如,对于商家发的购物卡,商家可自己担当CA角色。

在SET交易中,CA不仅对持卡人、商户发放证书,还要对收款的银行、网关发放证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。CA受理证书申请,根据该CA的策略验证申请人的信息,然后使用它的私钥把其数字签名应用于证书。然后,CA将该证书颁发给其主体,作为PKI内部的安全凭据。CA的功能主要有接受注册申请,处理、批准、拒绝请求,颁发证书。

RA(Registration Authority),数字证书注册审批机构。RA系统是CA的证书发放、管理的延伸。它负责证书申请者的信息输入、审核及证书发放等工作;同时,对发放的证书完成相应的管理功能。发放的数字证书可以存放于IC卡、硬盘或软盘等介质中。RA系统是整个CA得以正常运营不可缺少的一部分。

CA为了实现其功能,主要由以下3部分组成。

1)注册服务器:通过WebServer建立的站点,可为客户提供每日24小时的服务。因此客户可在自己方便的时候在网上提出证书申请和填写相应的证书申请表,免去了排队等候等烦恼。

2)证书申请受理和审核机构:负责证书的申请和审核。它的主要功能是接受客户证书申请并进行审核。

3)认证中心服务器:是数字证书生成、发放的运行实体,同时提供发放证书的管理、证书废止列表(CRL)的生成和处理等服务。其实,证书包括一个公钥加上密钥所有者的用户身份标识ID,以及由被信任的第三方签署的整个块。用户以安全的方式向公钥证书权威机构出具他的公钥并得到证书,然后用户就可以公开这个证书。任何需要用户公钥的人都可以得到此证书,并通过相关的信任签名来验证公钥的有效性。

公钥证书,简称证书,可在网络上进行身份验证并确保数据交换的安全。身份验证的含义一方面是识别——对系统所有合法用户具有识别功能,任何两个不同的用户不能有相同的标识;另一方面是鉴别——系统对访问者进行鉴别以防止非法访问者假冒。身份验证的目的就在于对信息收发方真实身份的认定和鉴别。

在PKI体系中可以采取下述某种或某几种的方式获得证书。

1)发送者发送签名信息时附加发送自己的证书;

2)单独发送证书信息的通道;

3)从访问发布证书的目录服务器获得;

4)从证书的相关实体(如RA)处获得;

使用良好的身份验证非常必要,如果一名客户通过不安全的网络连接与服务器进行通信,并且已通过了身份验证,获得了访问权,此时若有攻击者想劫持这个会话,他首先会设法使客户一方不再能继续通信,然后攻击者以该客户的身份与服务器通信,而服务器还以为他是最初建立连接的客户。这种会话劫持会给原客户或服务器方造成意想不到的损失。还有,在通信会话之间阶段和过程中对源系统进行身份验证更是十分必要的,Windows95以后的系统使用了更强的默认身份验证,最后使用的是Kerberos协议,使客户和服务器都能彼此进行身份验证。