目前,身份鉴别最常用的协议有PAP、CHAP、Kerberos、X。509等。
4.3.1PAP协议
PAP(Password Authentication Protocol)允许任何拨号上网的互联网用户在拨号进入其PPP(Point-to Protocol,端到端协议)账号时,可以直接完成,而不需要进一步输入用户名和口令。但是用户需要事先配置系统中拨号上网的相关设置,使得PAP能在登录认证阶段开始时正确提供用户名和口令。
PAP的工作过程如下:当调制解调器完成连接以后,PAP立刻向服务器提供用户名和口令,这些信息预先存放在拨号器软件之中(不同的操作系统中存放的位置有所不同)。这样服务器就不再提示用户输入用户名和密码,从而直接完成登录。
PAP取代了登录脚本的方法,它的优势在于安装更加方便(PAP嵌入到Windows95之后的Windows系统中)、性能更加可靠,需要更少的更新。PAP的优点是非常明显的:首先,它简化了用户的登录过程,方便了用户的操作,而且并没有削弱安全性;其次,它取消了登录过程中的几个步骤,在一定程度上缩短了登录时间。
4.3.2CHAP协议
CHAP(Challenge-Handsnake Authentication Protocol)使用三次握手的方式,周期性地认证被认证者的身份。一旦连接建立起来,协议执行,并且可以在任意时刻重复执行。CHAP采用Challenge-Response算法,要求两个相互认证的实体事先共享一个密钥。如果需要双向认证,可以将CHAP按两个相反的方向执行两次,两次执行可以使用同一个共享密钥,但是更好的做法是使用两个不同的共享密钥。
4.3.3Kerberos认证系统
Kerberos是为TCP/IP网络设计的可信第三方认证协议。Kerberos面对的问题是:在一个开放的分布式环境中,工作站的用户希望获得分布在网络中的服务器上提供的服务;服务器应该能够限制授权用户的访问,并能对服务请求进行认证。在这种环境中的问题是:工作站如何向网络服务器证实用户的身份。网络中经常出现的威胁包括:非法用户可能访问某个特定的工作站,并假装成另一个用户在操作,非法用户还可能更改工作站的网络地址,使从这个已更改工作站发出的请示看似来自伪装的工作站;非法用户也可以窃听消息交换过程,并使用重放攻击来获得进入服务器或阻止正在进行的操作。在这些情况下未授权的用户都能够访问那些不被授权访问的服务和数据。Kerberos提供一个集中的认证服务器,其功能是实现服务器与用户之间的相互认证。换言之,网络上的Kerberos服务起着可信仲裁者的作用。Kerberos提供安全的网络认证,允许个人访问网络中的不同的机器。
Kerberos基于对称密码学,它与网络上的每个实体分别共享一个不同的密钥,是否知道密钥便是身份的证明。
1.Kerberos的目的
Kerberos需要解决的问题是:在一个公开的分布式网络中,工作站上的用户需要访问分布在网络中的服务器上的服务,所以希望服务器能够限制授权用户的访问,并能鉴别服务请求。Kerberos的解决方案是调用每项服务时都需要用户证明自己的身份,同时也需要服务器向用户证明自己的身份。
第一个有关Kerberos的公开发表的报告,列举了如下的Kerberos需求:
(1)安全:网络窃听者不能获得必要信息以假冒其他用户,并且,Kerberos应足够强壮以至于潜在的敌人无法找到它的脆弱连接;
(2)可靠:Kerberos应高度可靠,应该使用分布式服务器体系结构,并且能够使得一个系统备份另一个系统;
(3)透明:理想情况下,用户除了被要求输入口令以外应感觉不到认证的发生。
为了满足这些要求,Kerberos的总体方案是通过协议实现可信的第三方鉴别服务,假设Kerberos的协议设计得足够好,而且Kerberos服务器是安全的,那么鉴别服务就应该是安全的。
2.Kerberos模型
Kerberos模型中,实体包括客户机和服务器。客户机可以是用户,也可以是需要处理事务的独立的软件程序,例如,下载文件、发送消息、访问数据库、访问打印机等。
Kerberos系统中有一个数据库保存所有的客户的秘密密钥。需要鉴别的网络服务以及希望使用这些服务的客户机,需要向Kerberos注册秘密密钥。
由于Kerberos系统知道每个客户的秘密密钥,所以它可以向一个实体证实另一个实体的身份;然后可以产生一个会话密钥供双方通信使用;当这次会话结束后,Kerberos会自动销毁会话密钥。
在Kerberos的认证过程中,需要使用两种凭证:票据(ticket)和鉴别码(authenticator)。
票据用于客户秘密地向服务器发送自己的身份标识,同时,服务器还可以通过票据中的信息证实使用票据和发送票据的是同一个客户。客户一旦获得票据,就可以多次使用它来访问服务器,直到票据过期。
鉴别码是另外一个凭证,与票据一同发送。鉴别码用来证明票据的发送方就是票据的拥有者。每个鉴别码只能使用一次,但是客户可以根据需要产生鉴别码。鉴别码的作用是:它是以会话密钥加密的,表明发送者也知道密钥;加封的时间戳使得攻击者无法重放。
在Kerberos系统中,有两种专门的服务器用于认证:鉴别服务器(AS)和票据许可服务器(TGS)。鉴别服务器只有一个,票据许可服务器可以有多个。由于协议中使用了时间戳,所以系统中有一套同步机制。
3.Kerberos认证过程
Kerberos认证过程分为三个阶段:
(1)票据许可票据的获取。客户给Kerberos鉴别服务器发送一个消息,包含客户名和票据许可服务器。在实际实现中,一般是客户将自己的客户名输入系统,然后由注册程序发送该请求。
鉴别服务器在数据库中查找客户信息,如果客户在数据库中,鉴别服务器就为客户和TGS生成一个会话密钥,并用客户的秘密密钥加密,另外,鉴别服务器为客户产生一个票据许可票据,并用TGS的秘密密钥加密,用来让客户向TGS证明自己的身份。鉴别服务器将这两部分一起发送给客户。
客户收到后,解密第一部分,获得会话密钥,将TGT直接保存起来。这样,客户可以在TGT的有效期内向TGS证明自己的身份。
(2)请求许可票据的获取。客户必须为他想使用的每一项服务申请请求许可票据,TGS负责给每个服务器分配票据。
客户需要使用一个自己没有票据的新服务时,就将TGT和一个用会话密钥加密的鉴别码发给TGS。
TGS收到消息后,首先用自己的秘密密钥解开TGT,得到与客户的会话密钥;再用会话密钥解开鉴别码;然后比较鉴别码和票据里的信息,客户的网络地址和发送的请示地址,时间戳与当前时间是否一致,如果一致,则允许处理该请求。
TGS为客户和服务器生成一个会话密钥,并用自己和客户的会话密钥加密;然后生成一个针对该服务的请求许可票据;并用服务器的秘密密钥加密;最后将这两部分一起发给客户。客户收到后解密,获得会话密钥。
(3)服务请求。本质上,TGS也是一个服务器,所以这个阶段的消息与上一阶段非常类似。客户产生一个鉴别码,用于对服务器的会话密钥加密,连同请求许可票据一同发送给服务器。服务器解密并检查票据,鉴别码,用户地址和时间戳,无误后返回用会话密钥加密的时间戳,表明客户通过认证,可以开始使用服务。
4.3.4X。509身份认证服务
OSI目录检索服务标准X。500包括了一部分陈述认证的标准,即ISO/IEC9504-8或ITU-X。509是利用公钥密码技术对X。500的服务所提供的认证服务协议标准,利用公钥密码技术对通信的双方规定了3种认证方法。X。509为每个用户的公钥提供证书,这些用户证书由可信的证书机构CA产生,并存放在X。500目录中。关于证书的格式将在PKI一章中具体介绍,这里我们主要介绍X。500提供的认证过程。
X。509提供了三种不同的认证过程,这些认证方法都使用了公钥签名技术。假定双方已从目录中或都已经交换了双方的证书。这三个过程分别是单向认证、双向认证和三向认证。
1.单向认证
单向认证中,信息从用户A传给用户B,只需验证用户A的合法性,而不验证用户B。
单向认证只需要一次通信。用户A向用户B发送一条消息,证明自己的身份。消息内容如下:
AB:
其中时间戳包含起始时间和终止时间,用来防止报文的延迟传送;是一个现时,在一个有效期内是唯一的,B需要保存直到有效期结束;B是B的身份信息;是签名数据;最后是用B的公钥加密的会话密钥。整个报文还要由A签名,以保证完整性和可信性。
这种方式只认证了A的身份,由于使用了时间戳,需要时钟同步。
2.双向认证
双向认证进行两次单向认证,既让B验证A传输的信息,又让A验证B传输的信息。双向认证在单向认证的基础上增加了一次通信,过程如下:
第二条消息同样要由B签名。
这种方式允许双方相互认证,但是两条消息中有冗余信息。双向认证也需要时间同步。
3.三向认证
三向认证又在最后增加了一个A向B的回答。过程如下:
最后一条报文包含现时的签名备份,这样就无须检查时间戳,因为每一端都可以通过检查返回的现时来龙去脉探测重放攻击。所以三向认证不需要时钟同步,在没有同步条件时,必须采用这种方法。
“思考题”
1.为什么需要身份鉴别?
2.电子商务交易中的个人信息包括什么?
3.你认为身份鉴别的依据是什么?
4.生物识别技术有哪些?具体有什么作用?
5.常用身份鉴别的协议有哪些?
6.什么是Kerberos认证系统?