1、身份认证及其应用身份认证及其应用 1 引言引言 2 身份认证的方法身份认证的方法 3 第三方认证第三方认证 4 X.509 5 数字证书数字证书 6 验证证书验证证书 7 CA系统结构系统结构第1页,共136页。1 引引 言言 从对计算机系统或网络的一般访问过程来看,身份认证是用户获得访问权限的第一步。如果用户身份得不到系统的认可,即授权,他就无法进入该系统并进而访问系统资源。从这个意义来讲,身份认证是安全防御的第一道防线,它是防止非授权用户或进程进入计算机系统的有效安全保障措施。第2页,共136页。身份认证即身份识别与验证(Identification and Authentication,
2、简称I&A),是计算机安全的重要组成部分,它是大多数访问控制的基础,也是建立用户审计能力的基础。访问控制通常要求计算机系统能够识别和区分用户,而且通常是基于最小特权原理(Least Privilege Theorem)(系统中的每个主体执行授权任务时,仅被授予完成任务所必需的最小访问权限)。用户审计要求计算机系统上的各种活动与特定的个人相关联,以便系统识别出各用户。第3页,共136页。2 身份认证的方法身份认证的方法 识别是用户向系统提供声明身份的方法;验证则是建立这种声明有效性的手段。计算机系统识别用户依赖的是系统接收到的验证数据。这样验证就面临着这些考验:收集验证数据问题、安全地传输数据问
3、题以及怎样知道使用计算机系统的用户就是当初验证通过的用户问题。目前用来验证用户身份的方法有:第4页,共136页。用户知道什么(Something the User Knows)(秘密,如口令、个人身份号码(PIN)、密钥等)用户拥有什么(Something the User Possesses)(令牌,如ATM卡或智能卡等)用户是谁(Something the User is)(生物特征,如声音识别、手写识别或指纹识别等)第5页,共136页。2.1 基于用户知道什么的身份认证 最普通的身份认证形式是用户标识(ID)和口令(Password)的组合,如图1所示。这种技术仅仅依赖于用户知道什么的事
4、实。通常采用的是基于知识的传统口令技术,但也有其它技术,如密钥。第6页,共136页。用户输入名字和口令 客户发送名字和口令Web 服务器 服务器使用口令来认证用户身份 服务器对已经认证用户进行授权图1 基于用户名和口令的身份认证第7页,共136页。通常,口令系统的运作需要用户输入用户标识和口令(或PIN码)。系统对输入的口令与此前为该用户标识存储的口令进行比较。如果匹配,该用户就可得到授权并获得访问权。口令的优点:口令作为安全措施已经很长时间并成功地为计算机系统提供了安全保护。它已经集成到很多操作系统中,用户和系统管理员对它非常熟悉。在可控环境下管理适当的话,口令系统可提供有效的安全保护。第8
5、页,共136页。口令存在的问题:口令系统的安全依赖于口令的保密性,而用户为了方便记忆而在设置口令时常使用姓名拼音、生日、电话号码等,这样口令就会很容易地被猜出。另外只要用户访问一个新的服务器,都必须提供新口令。第9页,共136页。2.2 基于用户拥有什么的身份认证 尽管某些身份认证技术是完全基于用户拥有什么,但是它在一定程度上还是和基于用户知道什么的技术结合在一起的,这种结合比单一地采用一种技术的安全性大大提高了(见图2)。通常,基于用户拥有什么的身份认证技术使用的是令牌,这里介绍两种令牌:记忆令牌和智能卡。第10页,共136页。用户输入私钥口令Web 服务器 客户发送证书和身份证明 服务器利
6、用证书和身份证明验证用户身份 客户获得私钥并用它产生身份证明(数字签名)服务器对已经验证用户进行访问授权图2 基于数字证书的身份认证第11页,共136页。记忆令牌只存储信息,不对信息进行处理,令牌上信息的读取和写入是用专门的读/写设备来完成的。记忆令牌的最通用形式是磁卡(就像信用卡背面一样有一条磁条)。通常,用于计算机认证的记忆令牌是ATM卡,它是采用用户拥有什么(卡)和用户知道什么(身份识别码)的组合。记忆令牌的优点在于:当它和身份识别码一起使用时比单独使用口令的机制更安全,因为攻击者很难获得这样的令牌以进入计算机系统。但是它也面临一些问题:需要专门的读取器;令牌的丢失问题等等。第12页,共
7、136页。智能卡通过在令牌中采用集成电路以增加其功能。同样智能卡还需要用户提供身份识别码或口令等基于用户知道的知识的认证手段。智能卡一般因其采用的物理特性、接口、协议的不同而不同。根据物理特性不同,智能卡分为信用卡型智能卡(内嵌微处理器)和类似计算器、钥匙、便携式物体的智能卡。对于接口来说,一般有人工接口和电子接口两种,人工接口多采用显示器或键盘式,而电子接口多采用专门的读写器。智能卡所采用的认证协议有静态的口令交换协议、动态口令生成协议、提问应答式协议等。第13页,共136页。2.3 基于用户是谁的身份认证 这种机制采用的是生物特征识别技术,它采用的是用户独特的生理特征来认证用户的身份。这些
8、生理特征包括生理属性(如指纹、视网膜识别等)和行为属性(如声音识别、手写签名识别等)。这些技术已经应用到了计算机的登录程序中。虽然这种技术比前两种认证技术有着更好的安全性,但是这种技术还不是很成熟,而且实际使用过程中的稳定性不是很好,并且费用很高,有待于进一步的研究和开发,以便能广泛地应用于身份认证中。第14页,共136页。3 第三方认证第三方认证 所谓第三方认证就是在相互不认识的实体之间提供安全通信。最早实现第三方认证的是Kerberos认证系统,它的诞生为分布式系统的I&A提供了一种第三方认证机制。另一个第三方认证系统是基于X.509数字证书的。第15页,共136页。Kerberos的缺点
9、是它在实体之间的I&A仅依靠密钥技术,或对称密码系统。近年来,Kerberos的扩充也支持了X.509认证。X.509标准是由国际标准化组织(International Standards Organization,ISO)开发的许多标准中的一部分,其目标就是要解决分布式计算的安全问题。X.509认证是基于公开密钥,或者非对称密码系统的,它克服了Kerberos存在的问题。第16页,共136页。3.1 Kerberos概述 Kerberos是为TCP/IP网络设计的可信第三方认证协议。网络上的Kerberos服务器起着可信仲裁者的作用。Kerberos可提供安全的网络鉴别,允许个人访问网络中不
10、同的机器。Kerberos基于对称密码学(采用的是DES,但也可用其它算法替代),它与网络上的每个实体分别共享一个不同的秘密密钥,是否知道该秘密密钥便是身份的证明。第17页,共136页。Kerberos最初是在麻省理工学院(MIT)为Athena项目而开发的,Kerberos模型是基于Needham和Schroeder1提议的可信第三方协议。Kerberos的设计目标2就是提供一种安全、可靠、透明、可伸缩的认证服务。在Kerberos模型中,主要包括以下几个部分:客户机、服务器、认证服务器(Authentication Server)和票据授予服务器(Ticket-Granting Serve
11、r)。其组成如图3所示。第18页,共136页。域认证和资源访问AuthenticationService(AS)TicketGrantingService(TGS)请求一张TGS票据返回TGT给客户发送TGT,请求应用服务器的票据返回应用服务器票据Kerberos客户端 给应用服务器发送会话票据(可选)发送身份确认消息给客户应用服务器密钥分发中心(KDC)图3 Kerberos组成第19页,共136页。Kerberos有一个所有客户和自己安全通信所需的秘密密钥数据库(KDC),也就是说,Kerberos知道每个人的秘密密钥,故而它能产生消息,向每个实体证实另一个实体的身份。Kerberos还能
12、产生会话密钥,只供一个客户机和一个服务器(或两个客户机之间)使用,会话密钥用来加密双方的通信消息,通信完毕,会话密钥即被销毁。Kerberos使用DES加密。Kerberos第4版提供非标准的鉴别模型,该模型的弱点是它无法检测密文的某些改变。Kerberos第5版使用CBC模式。第20页,共136页。3.2 Kerberos V4认证消息对话 Kerberos身份认证进程的处理过程。(1)在客户登录到本地工作站以后,客户向认证服务器(AS)发送一个服务请求,请求获得指定应用服务器的“凭证”(Credentials)(如图4所示的消息),所获凭证可直接用于应用服务器或票据授予服务器(TGS)。C
13、 AS:IDc|IDtgs|TS1 该消息包含客户ID以及票据授予服务器的ID和时间戳。第21页,共136页。(2)认证服务器(AS)以凭证作为响应,并用客户的密钥加密(如图4所示的消息)凭证。凭证由下面几部分组成:票据授予服务器“票据”(Ticket);临时加密密钥Kc,tgs(称为会话密钥)。AS C:EKcKc,tgs|IDtgs|TS2|Lifetime2|TickettgsTickettgsEKtgsKc,tgs|IDv|ADc|IDtgs|TS2|Lifetime2第22页,共136页。其中,票据Tickettgs用AS和TGS之间的共享密钥EKtgs加密,从而确保客户和其它对手无
14、法修改其内容。为了防止对手以后再次使用票据来欺骗TGS,票据还包含了时间戳以及生命周期(票据的合法时间段)。EKc是指用客户同AS共享的口令来加密该凭证,确保只有正确的客户才能恢复凭证。Lifetime2是该凭证的生命周期。(3)拥有了票据和会话密钥,客户C就做好了向TGS服务器靠近的准备。客户向TGS服务器发送消息请求获得访问某个特定应用服务器的票据Ticketv(如图4所示的消息)。第23页,共136页。客户 登录用户名口令长期对称密钥(LTSK)缓存 AS_REQEU(LTSK)(Authenticator),Username AS_REPEKDC(TGT),EU(SK)TGS_REQE
15、KDC(TGT),ESKAuthenticator),AppSrv TGS_REPEAppSrv(Ticket),ESK(C-K)(SKC-A)AuthenticationService(AS)TicketGrantingService(TGS)(KDC)AppServ AP_REQEAppSrv(Ticket),ESKC(Authenticator)AP_REPESKC-A(time stamp1)图示:LTSK:长期对称密钥 SK:会话密钥 E:加密 C:客户 K:KDC A:AppSrv图4 Kerberos认证消息交换过程 第24页,共136页。C TGS:IDv|Tickettgs|
16、AuthenticatorcAuthenticatorcEKc,tgsIDc|ADc|TS3TickettgsEKtgsKc,tgs|IDv|ADc|IDtgs|TS2|Lifetime2 该消息包含了身份验证器(Authenticatorc),它包括了C用户的ID和地址以及时间戳。与票据不同的是,票据可以重复使用,而身份验证器只能使用一次,而且生命周期很短。TGS可以用与AS共享的密钥解密票据。这个票据指出已经向用户C提供了会话密钥Kc,tgs。然后TGS可以检查身份验证器来证明客户的名称和地址是否与票据中的名称和接受消息的地址相同。如果都相同,TGS可以确保票据的发送方是票据的真正拥有者。
17、第25页,共136页。(4)TGS服务器返回应用服务器票据以应答(如图4所示的消息)客户请求。TGS C:EKc,tgsKc,v|IDv|TS4|Ticketv Ticketv=EKvKc,v|IDc|ADc|IDv|TS4|Lifetime4 此消息已经用TGS和C共享的会话密钥进行了加密,它包含了C和服务器V共享的会话密钥Kc,v,V的ID和票据的时间戳。票据本身也包含了同样的会话密钥。现在C就拥有了V可重用的票据授予的票据。当C出具此票据时,如消息5所示,它就发出了身份验证码。应用服务器可以解密票据,恢复会话密钥并解密身份验证码。第26页,共136页。(5)客户将该Ticket(包含了客
18、户的身份证明和会话密钥的拷贝,这些都以服务器的密钥加密)传送给应用服务器(如图4所示的消息)。C V:Ticketv|AuthenticatorcTicketv=EKvKc,v|IDc|ADc|IDv|TS4|Lifetime4AuthenticatorcEKc,vIDc|ADc|TS5第27页,共136页。(6)现在客户和应用服务器已经共享会话密钥,如果需要互相验证身份,服务器可以发送消息进行响应,以证明自己的身份。服务器返回身份验证码中的时间戳值加1,再用会话密钥进行加密,C可以将消息解密,恢复增加1后的时间戳。因为消息是由会话密钥加密的,所以,C能够保证只有V才能创建它。消息的内容向C保
19、证它不是以前的应答。V C:EKc,vTS5+1 共享的会话密钥还可用于加密双方进一步的通信或交换加密下一步通信用的单独子会话密钥。第28页,共136页。在上述六个消息当中,消息和只在用户首次登录系 统时使用。消息和在用户每次申请某个特定应用服务器的服务时使用。消息则用于每个服务的认证。消息可选,只用于互相认证。第29页,共136页。3.3 Kerberos基础结构和交叉领域认证 当一个系统跨越多个组织时,就不可能用单个认证服务器实现所有的用户注册,相反,需要多个认证服务器,各自负责系统中部分用户和服务器的认证。我们称某个特定认证服务器所注册的用户和服务器的全体为一个领域(Realm)。交叉域
20、认证允许一个委托人(Principal)向注册在另外一个域的服务器验明自己的身份。第30页,共136页。要支持交叉领域认证,Kerberos必须满足以下三个条件:(1)Kerberos服务器在数据库中必须拥有所有用户ID和所有参与用户口令哈希后的密钥。所有用户都已经注册到Kerberos服务器。(2)Kerberos服务器必须与每个服务器共享保密密钥。所有的服务器已经注册到Kerberos服务器。(3)不同领域的Kerberos服务器之间共享一个保密密钥。这两个Kerberos服务器要互相注册。第31页,共136页。一个Kerberos客户(委托人)为了向远程领域验证自己的身份,首先需要从本地
21、认证服务器(AS)获得一张远程领域的票据授予票(Ticket Granting Ticket)。这就要求委托人所在的本地认证服务器同验证人所在的远程领域认证服务器共享一个保密密钥(条件(3)。然后委托人使用该票据授予票据从远程认证服务器交换票据信息。远程认证服务器利用共享的交叉域保密密钥来验证来自外来领域的票据授予票据的有效性。如果有效,向委托人发放新票据和会话密钥。交叉领域之间的认证流程如图5所示。第32页,共136页。AuthenticationService(AS)TicketGrantingService(TGS)请求本地TGS的票据给客户返回TGT发送TGT,并请求获得远程TGS的票
22、据返回远程TGS的票据AuthenticationService(AS)TicketGrantingService(TGS)请求用于远程应用服务器的票据返回远程应用服务器TGTKerberos客户端.向应用服务器请求服务应用服务器领域A领域BKerberos 基础结构和交叉域认证图5 交叉领域认证第33页,共136页。3.4 Kerberos 版本5 Kerberos V5在RFC1510中定义。下面只对版本5所做的改进进行简单描述。版本5在两个方面解决了版本4的局限性:环境缺陷和技术缺陷。因为版本4在设计之初是在雅典娜项目背景下的,并没有考虑通用环境下的身份认证问题,从而导致了环境缺陷。(1
23、)加密系统的相关性:版本4需要使用DES,DES的出口管制和DES的强度都成了问题所在,在版本5中,可以用加密类型标识符进行标记,所以可以使用任何一种加密技术。第34页,共136页。(2)Internet协议相关性:版本4中只能使用IP地址,而版本5中网络地址可以使用类型和长度进行标记,允许使用任何类型的网络地址。(3)消息字节顺序:版本4中发送字节顺序由发送方自定,版本5中所有的消息结构都用抽象语法标记1号(Abstract Syntax Notation No 1)和基本编码规则(Basic Encoding Rules)进行定义。(4)票据的生命周期:版本4中生命周期的数值编码为8位数(
24、以5分钟为单位),所以其最大生命周期为285=1280分钟。这对某些应用来说太短。在版本5中,票据包括显式的开始时间和结束时间,允许票据具有任意生命周期。第35页,共136页。(5)身份验证转发:版本5支持多跳(multi-hop)交叉领域认证,允许密钥的层次共享。也就是说,每个领域同其子女和父母共享一个密钥。例如,xidian.edu领域同edu领域共享一把密钥,同时,edu领域还和zju.edu,xjtu.edu,nwu.edu等领域共享一把密钥。如果xidian.edu同xjtu.edu之间没有共享密钥可用,来自xidian.edu的客户huxidian.edu要向xjtu.edu域进行
25、身份认证,可以首先通过xidian.edu领域获得一张来自edu领域的票据授予票据,第36页,共136页。然后利用该票据授予票据从edu认证服务器获得xjtu.edu领域的票据授予票据,最终获得注册到xjtu.edu认证服务器的某应用服务器票据。最后的票据内记录了所有经过的中间领域,最末尾的服务器决定是否信任这些领域。第37页,共136页。除了环境缺陷外,版本4自身还存在一些技术缺陷。这些缺陷主要有:(1)双重加密:前面的消息和消息中,提供给客户的票据加密了两次,第一次用目标服务器的密钥,第二次用客户机知道的保密密钥。实际上,第二次的加密是浪费计算资源,完全没有必要。(2)PCBC加密:版本4
26、中的加密利用了非标准的DES模式。这种模式已经证明对涉及到密文块互相交换的攻击是薄弱的。版本5提供了显式的完整性机制,允许用标准的CBC方式进行加密。第38页,共136页。(3)会话密钥:每个票据都包括一个会话密钥,客户机用它来加密要发送给票据相关服务的身份验证码,而且,客户机和服务器还可以用会话密钥来保护会话中传送的消息。但是,因为可以重复使用同样的票据来获得特定的服务,所以要冒一定的风险:对手可能重放发送给客户机和服务器的老会话中的消息。在版本5种,客户机和服务器可以协商出一个子会话密钥,只在一次连接中使用,每次客户机的新访问都需要一个新的子会话密钥。第39页,共136页。(4)口令攻击:
27、两种版本对密钥攻击来说都很脆弱。AS对发送给客户机的消息都用密钥进行加密,而该密钥都是以用户共享的口令为基础的。对手可以捕获该消息,然后采用口令穷举法进行攻击。第40页,共136页。4 X.509 认证即证明、确认个体的身份。传统的认证方式多采用面对面的方式,或者以一些如笔迹、习惯动作及面貌等生理特征来辨识对方,而在互联网逐渐深入每个人生活之中的今天,每一位网络用户都可以运用网络来进行各种活动,对于认证的需求也更是大大地提高。为了在开放网络上实现远程的网络用户身份认证,ITU于1988年制定了认证体系标准:“开放性系统互连目录服务:认证体系X.509”。第41页,共136页。X.509作为定义
28、目录业务的X.500系列的一个组成部分,是由ITUT建议的,这里所说的目录实际上是维护用户信息数据库的服务器或分布式服务器集合,用户信息包括用户名到网络地址的映射和用户的其它属性。X.509定义了X.500目录向用户提供认证业务的一个框架,目录的作用是存放用户的公钥证书。X.509还定义了基于公钥证书的认证协议。由于X.509中定义的证书结构和认证协议已被广泛应用于S/MIME、IPSec、SSL/TLS以及SET等诸多应用过程,因此X.509已成为一个重要的标准。第42页,共136页。X.509的最初发布日期是1988年,1993年对初稿进行了修订,1995年发布了第三版。X.509的基础是
29、公钥密码体制和数字签名,但其中未特别指明使用哪种密码体制(建议使用RSA),也未特别指明数字签名中使用哪种哈希函数。1988年公布的第一版中描述了一个建议的哈希,但由于其安全性问题而在第二版中去掉了。第43页,共136页。在X.509中,对于认证推出了“简单认证”及“强认证”两种不同安全度的认证等级,并且描述了公开密钥证书格式、证书管理、证书路径处理、目录数据树结构及密钥产生,并提到如何将认证中心之间交叉认证的证书储存于目录中,以减少证书验证时必须从目录服务中获得的证书信息的量。第44页,共136页。X.509主要内容包括:简单认证(Simple Authentication)程序:在此部分,
30、X.509建议了安全度较低的身份认证程序,此部分所定义的验证程序使用最常见的口令(Password)认证的技术来识别通信双方。只要用户可以提供正确的口令,就认为他/她是合法用户。该认证体系仅能提供较简单、有限的保护,以防止未授权的存取访问。第45页,共136页。强认证(Strong Authentication)程序:该程序提出了一个高安全度的身份认证机制。其验证程序是使用公开密钥密码学的技术来识别通信双方。强认证可分为“单向的”、“双向的”及“三向的”三种认证方式,分别提供不同安全层次的安全认证。对于公开密钥证书的使用有详细的定义,以强化其认证能力。密钥及证书管理:因为强认证程序中需要公开密
31、钥密码系统的支持来实现其认证目的,这部分内容就是针对密钥以及证明密钥正确性的证书管理。第46页,共136页。证书扩充及证书吊销列表扩充(Certificate and CRL Extensions):由于1988年版的X.509中对于证书及证书吊销列表的定义并不是很完善,所以在1995年,针对这些问题,提出X.509修正案,对这两部分作了一些修正与补充,以弥补旧版X.509的不足,最终于1997年6月将这两部分合二为一,为最新版的X.509文件。第47页,共136页。4.1 认证协议简单认证过程 X.509所提出的简单认证方式,与一般常见的UNIX系统基于口令的认证方式类似。它是根据每位用户所
32、提供的用户名以及一个只有收、发双方知道的用户密码来实现安全程度较低的认证程序的。X.509提供的简单认证有下列三种运行方式:(1)用户将其口令及用户ID未做任何加密保护,直接以明文方式传送给接收端。(2)用户将其个人口令、用户ID、一个随机数和/或时间戳在经过一单向函数保护后,传送至接收瑞。第48页,共136页。(3)用户用上面第(2)种方式所述的方法,先经一次单向函数保护所有数据,然后再连同另一组随机数和/或时间戳,再经过第二次的单向函数保护后,传送至接收端。简单验证中的认证方式并未以加密的方式保护口令及用户ID,最多只使用单向函数的保护,非常容易实现,可以提供安全需求较低的封闭区域的认证。
33、以下内容将描述这三种认证方式。第49页,共136页。其中,方法一认证程序的执行步骤如图6所示,详细的执行步骤如下所述:(1)由用户A将其用户代号及口令送至接收端B。(2)接收端B将A送来的口令及用户代号送至目录服务器,目录服务器比对先前A储存在此的口令。(3)目录服务器响应B是否接受A为合法的用户。(4)B回复A是否为合法的用户。第50页,共136页。AB ID,PASSWD目录 图6 口令及用户代号认证 第51页,共136页。这种认证方式的主要缺陷在于明文传输用户代号和口令。在第二及第三两种认证方式中,发方A送至收方B的信息内容都经过单向函数运算的杂凑值,将此杂凑值经网络传给对方,密码的明文
34、不会出现在网络上,如图7所示。第52页,共136页。AA的口令t1Aq1At2Af1f2q2A受保护数据1受保护数据2A:用户代号;tA:时间戳;qA:随机数图7 第二种认证方法第53页,共136页。第二种方法所描述的认证方式如图7中的“受保护数据l”所示的杂凑运算(其中,f1及f2为单向函数),可以表示为受保护数据1=f1(t1A,q1A,A,A的口令)发送方A所送出的数据=(t1A,q1A,A,受保护数据1)第54页,共136页。此方法将用户的口令以单向函数保护起来,不会在传输时直接暴露在网络上,且包含时间戳、随机数等数据,每次传输的认证信息都不相同,可以降低遭受重放攻击的风险。其实施程序
35、如图8所示,详细描述如下:第55页,共136页。(1)当A要获得B的认证时,先产生“发送方A所送出的数据”,然后通过网络传送至收方B。在B收到“发送方A所送出的数据”时,根据此组数据可以找出A先前存于此的口令,再将收到的t1A,q1A执行与A相同的动作(即f1(t1A,q1A,A,A的口令),比较其运算的结果是否与“受保护数据1”一样,若两值相同则承认A是合法的用户。(2)B回复A是否为合法的用户。第56页,共136页。AB图8 实施步骤第57页,共136页。对于第三种方法所描述的认证方式而言,其对于密码保护的方式如图7中的受保护数据2所示,用数学式写为受保护数据1=f1(t1A,q1A,A,
36、A的口令)受保护数据2=f2(t2A,q2A,受保护数据1)发方A所送出的数据=(t1A,q1A,t2A,q2A,受保护数据2)第58页,共136页。其实施程序如图8所示,详细描述如下:(1)当A要获得B的认证时,先产生“发方A所送出的数据”后,通过网络传送至收方B。在B收到“发方A所送出的数据”时,根据此组数据可以找出A先前存于此的口令,然后利用收到的tlA、q1A、t2A、q2A,执行与A相同的动作,比较其运算结果是否与“受保护数据2”一样,若两值相同则承认A是合法的用户。第59页,共136页。(2)B回复A是否为合法的用户。在第二及第三两种认证方法中,因为用户的口令并不直接送到网络上,而
37、是经单向函数f1及f2的运算后,再送到网络,所以即使在网络上被攻击者拦截到,因为有单向函数的保护,仍然很难反推出用户口令。且在以单向函数保护的运算过程中,又加入了时间戳和随机数一起运算,所以攻击者若将信息重发,虽然可以通过验证,但因“时间戳”是记录送方送出的时间,若是与收方收到的时间相差得太多,可以确定是攻击者的重发,欲假冒合法用户,应该予以拒绝,如此可以防止重放攻击。第60页,共136页。第二种方法与第三种方法对于口令的保护所使用的概念完全一样,都是用单向函数保护用户口令,而第三种方法中使用两次单向函数运算,是用以增加秘密信息的隐蔽度和增加攻击者破解的困难度的。另外,在X.509中有说明,第
38、三种方法中的两次单向函数的算法,不一定要不同,这并没有强制规定,可以随应用系统的需要自由使用。第61页,共136页。简单认证程序在安全性的考虑上比较简单,只可以让收方B认证发方A为合法用户,无法让发方A也可以认证收方B,达到收发双方相互认证的安全程度。所以简单认证程序比较适合在较封闭的区域内使用。若是在一般的开放性系统中,面对广域网络,“简单认证”在安全的需求上就嫌不足了,应该有更强的认证方式,以保证远程认证的正确性。在X.509中定义的“强认证”即可以达到更强的认证目的。第62页,共136页。4.2 认证协议强认证程序 X.509以公开密钥密码的技术能够让通信双方容易共享密钥的特点,并利用公
39、钥密码系统中数字签名的功能,强化网络上远程认证的能力,定义出强认证程序,以达到所谓“强认证”的目的。第63页,共136页。当网络用户面对因特网时,若想在网络上做秘密的通信,以传统密码学而言,通信双方必须先共享一把密钥,这种先决条件在目前互联网环境上要实现并不容易。1976年,由Diffie及Hellman两位密码学者所提出的公开密钥概念很有效的解决了传统密码学上网络共享密钥的问题,从而让网络上的通信双方可以很容易地实现秘密通信。在此之后,随着Knapsack、RSA及ELGamal等公开密钥密码系统的提出,更增加了公开密钥系统的实用性,但相对的也衍生出另一问题,就是网络上密钥的确认问题。第64
40、页,共136页。试想,在图9中,当网络用户Bob自网络上获得一把宣称是另一用户Alice的公开密钥时,Bob如何相信这把公开密钥是属于Alice的?在网络环境下,无法真正看到对方,直接拿到对方的公钥,任意一个用户(如图9的Cherry)都可能仿冒Alice传送假的公开密钥给Bob,让Bob误以为他所通信的对方就是A,而实际上Bob是与另一不知名的攻击者通信。此种攻击法之所以能够成功,究其原因在于用户的公钥并未与用户的身份紧密相结合。公钥必须让他人可以辨别、验证且无法伪造,同时又与个人的身份相结合,这样才可以有效防止此类攻击的发生。第65页,共136页。AliceCherryAlice的公钥Al
41、ice的公钥Bob图9 公钥的伪造第66页,共136页。目前最常使用来防止上述攻击法的机制是所谓的认证中心(Certificate Authority,CA)技术,它是通过为每位网络用户签发电子证书来防止这类攻击的。此方法如图10所示,以类似传统大使馆颁发、登记公民签证的方式,由大家所相信的公正第三者或认证机构(CA)以数字签名的技术,将每一个用户的公钥与个人的身份数据签署成电子证书(以下简称证书)。第67页,共136页。当用户收到他人的证书之后,可以经过一定的验证程序,确定所收到的证书无误,确信此证书内所含的公开密钥、身份数据及其它相关内容确实是证书上声称的主体(Subject)的,而不是其
42、它主体用户的。如此可将用户身份与用户的公钥紧密地结合在一起,让攻击者无法伪冒他人,传送假的公钥欺骗其它网络用户。第68页,共136页。AliceCherryAlice的公钥Bob图10 证书和公钥第69页,共136页。这种利用公正的第三者帮我们认证用户公钥的方式,可以将用户必须认证网络上每一个用户公钥的问题,缩减到只需认证用户所信任的公正第三方的公钥正确性的问题,大大增加了公开密钥的实用性。在X.509中提到的证书必须符合下列两个特点:(1)所有可取得认证中心公钥的用户,可以认证任何由该认证中心签发的证书。(2)除认证中心本身以外,其它任何人修改证书的动作都会被察觉、检测出来。第70页,共13
43、6页。由于证书有上述的两个特点,我们可以直接把证书放到证书目录服务中,让用户自由访问存取,不需再使用其它额外的措施保护它,而数字签名的技术恰好合乎上述两种特性。认证中心会以自己的私钥为用户签发证书,而当用户拿到证书之后,可以使用认证中心的公钥验证所获得的证书的正确性,进而相信证书中所含的信息是正确的,进而相信证书所含的公钥是正确的。第71页,共136页。在X.509中,认证中心对一些用户的相关数据,例如,用户姓名、用户识别码、公钥的内容、签发者的身份数据以及其它用户的相关数据,以认证中心的密钥,运用数字签名技术生成一个数字签名,之后将用户的有关数据、认证中心的签名算法与数字签名,合成一个电子文
44、件,就是所谓的数字证书。第72页,共136页。5 数数 字字 证证 书书 数字证书包含用户身份信息、用户公钥信息以及证书发行机构对该证书的数字签名信息。证书发行机构的数字签名可以确保证书信息的真实性,用户公钥信息可以保证数字信息传输的完整性,用户的数字签名可以保证数字信息的不可抵赖性。第73页,共136页。数字证书是各类终端实体和最终用户在网上进行信息交流及商务活动的身份证明,在电子交易的各个环节,交易的各方都需验证对方数字证书的有效性,从而解决相互间的信任问题。用户的数字证书是X.509的核心,证书由某个可信的证书发放机构CA建立,并由CA或用户自己将其放入公共目录中,以供其它用户访问。目录
45、服务器本身并不负责为用户创建公钥证书,其作用仅仅是为用户访问公钥证书提供方便。第74页,共136页。X.509中,数字证书的一般格式如图11所示,本章附录给出了数字证书的样例,证书中的数据域有:(1)版本号:若默认,则为第一版。如果证书中需有发行者惟一识别符(Initiator Unique Identifier)或主体惟一识别符(Subject Unique Identifier),则版本号为2,如果有一个或多个扩充项,则版本号为3。第75页,共136页。(2)序列号:为一整数值,由同一CA发放的每个证书的序列号是惟一的。(3)签名算法识别符:签署证书所用的算法及相应的参数。(4)发行者名称
46、:指建立和签署证书的CA名称。(5)有效期:包括证书有效期的起始时间和终止时间。第76页,共136页。版本号(Version)序列号算法参数发行者名称起始时间终止时间主体名称算法参数公开密钥发行者惟一识别符主体惟一识别符扩充域算法参数签名第一版第二版第三版所有版X.509 证书签名主体的公钥信息有效期签名算法识别符算法参数发行者名称本次修改时间下次修改时间序列号吊销日期顺序号吊销日期算法参数签名签名算法识别符已吊销证书已吊销证书签名证书吊销列表图11 X.509的证书和证书吊销列表格式 第77页,共136页。(6)主体名称:指证书所属用户的名称,即这一证书用来证明私钥用户所对应的公开密钥。(7
47、)主体的公开密钥信息:包括主体的公开密钥、使用这一公开密钥的算法的标识符及相应的参数。(8)发行者惟一识别符:这一数据项是可选的,当发行者(CA)名称被重新用于其它实体时,则用这一识别符来惟一标识发行者。第78页,共136页。(9)主体惟一识别符:这一数据项也是可选的,当主体的名称被重新用于其它实体时,则用这一识别符来惟一地识别主体。(10)扩充域:其中包括一个或多个扩充的数据项,仅在第三版中使用。(11)签名:CA用自己的秘密密钥对上述域的哈希值进行数字签名的结果。此外,这个域还包括签名算法标识符。第79页,共136页。X.509中使用以下表示法来定义证书:CAA=CA V,SN,AI,CA
48、,TA,A,AP 其中,YX表示证书发放机构Y向用户X发放的证书,YI表示Y对I的哈希值签名,它由I和附加的加密哈希码构成。第80页,共136页。5.1 证书的获取 CA为用户产生的证书应有以下特性:(1)其他任一用户只要得到CA的公开密钥,就能由此得到CA为该用户签署的公开密钥。(2)除CA以外,任何其它人都不能以不被察觉的方式修改证书的内容。因为证书是不可伪造的,因此无需对存放证书的目录施加特别的保护。第81页,共136页。如果所有用户都由同一CA为其签署证书,则这一CA就必须取得所有用户的信任。用户证书除了能放在目录中供他人访问外,还可以由用户直接把证书发给其它用户。用户B得到A的证书后
49、,可相信用A的公开密钥加密的消息不会被他人获悉,还相信用A的秘密密钥签署的消息是不可伪造的。第82页,共136页。如果用户数量极多,则仅一个CA负责为用户签署证书就有点不现实,通常应有多个CA,每个CA为一部分用户发行、签署证书。设用户A已从证书发放机构X1处获取了公开密钥证书,用户B已从X2处获取了证书。如果A不知X2的公开密钥,则他虽然能读取B的证书,但却无法验证用户B证书中X2的签名,因此B的证书对A来说是没有用处的。然而,如果两个CA:X1和CA:X2彼此间已经安全地交换了公开密钥,则A可通过以下过程获取B的公开密钥:第83页,共136页。(1)A从目录中获取由X1签署的X2的证书X1
50、X2,因A知道X1的公开密钥,所以能验证X2的证书,并从中得到X2的公开密钥。(2)A再从目录中获取由X2签署的B的证书X2B,并由X2的公开密钥对此加以验证,然后从中得到B的公开密钥。以上过程中,A是通过一个证书链来获取B的公开密钥的,证书链可表示为X1X2X2B第84页,共136页。类似地,B能通过相反的证书链获取A的公开密钥,表示为X2X1X1A以上证书链中只涉及两个证书,同样有N个证书的证书链可表示为X1X2X2X3 XNB第85页,共136页。此时,任意两个相邻的CA Xi和Xi+1已彼此间为对方建立了证书,对每一CA来说,由其它CA为这一CA建立的所有证书都应存放于目录中,并使用户