《认证与证书》PPT课件.ppt

上传人:wuy****n92 文档编号:80490680 上传时间:2023-03-23 格式:PPT 页数:93 大小:699KB
返回 下载 相关 举报
《认证与证书》PPT课件.ppt_第1页
第1页 / 共93页
《认证与证书》PPT课件.ppt_第2页
第2页 / 共93页
点击查看更多>>
资源描述

《《认证与证书》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《认证与证书》PPT课件.ppt(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、认证与证书典型的认证应用n1Kerberos认证认证nKerberos认证服务是由麻省理工学院的Project Athena针对分布式环境的开放式系统开发的认证机制。Kerberos提供了一种在开放式网络环境下(无保护)进行身份认证的方法,它使网络上的用户可以相互证明自己的身份。n它已被开放软件基金会(OSF)的分布式计算环境(DCE),以及许多网络操作系统供应商所采用。n常用的有两个版本:第4版和第5版。其中版本5更正了版本4中的一些安全缺陷。Kerberos认证nAthena的计算环境由大量的匿名工作站和相对较少的独立服务器组成。服务器提供例如文件存储、打印、邮件等服务,工作站主要用于交互

2、和计算。我们希望服务器能够限定仅能被授权用户访问,能够验证服务的请求。在此环境中,存在如下3种威胁:n(1)用户可以访问特定的工作站并伪装成该工作站用户。n(2)用户可以改动工作站的网络地址伪装成其它工作站。n(3)用户可以根据交换窃取消息,并使用重放攻击来进入服务器。Kerberos认证n在这样的环境下,Kerberos认证身份不依赖主机操作系统的认证、不信任主机地址、不要求网络中的主机保持物理上的安全。在整个网络中,除了Kerberos服务器外,其他都是危险区域,任何人都可以在网络上读取、修改、插入数据。n解决的问题:认证、数据完整性、保密性作为一种认证协议n特点q基于口令的认证协议q利用

3、对称密码技术建立起来的认证协议q可伸缩性可适用于分布式网络环境q环境特点nUser-to-server authenticationn密钥存储方案认证协议:设计一个协议(一)n假设A和B要进行通讯,A和B有一个共享的密钥Kab,如何利用这个密钥进行认证,并且商定一个会话密钥KsABKab好的,我用它试试,可我怎么知道你是B呢告诉你Ks,以后就用它,别让别人知道我是A如果你知道Kab,那么你就知道Ks,我就知道你是A认证协议:设计一个协议(二)n假设A和B要进行通讯,A和B与KDC各有一个共享密钥Ka和Kb,如何利用这两个密钥进行认证,并且商定一个会话密钥KsAKDC:(IDA|IDB)KDCA

4、:EKaKs|IDB|EKb(Ks,IDA)AB:EKb(Ks,IDA)|EKs(M)AKbB我是A,我想和B通讯KDCKa我把必要的信息告诉你我把消息给你,如果你是B,你就可以解开会话密钥Ks,由A送给B的认证信息针对认证协议的一些常见攻击手段和相应对策n中间人攻击(MITM,man in the middle)ABEu如果通讯双方没有任何先决条件,那么这种攻击总是存在的uA和B的协商过程很容易受到这一类攻击u对策:u增加A和B之间的先决知识常见攻击和对策(二)n重放攻击(replay attacks)ABEu偷听者可以记录下当前的通讯流量,以后在适当的时候重发给通讯的某一方,达到欺骗的目的

5、u对策:u保证通讯的唯一性u增加时间戳常见攻击和对策(三)n字典攻击q只要能够获得口令的密文形式,就可以实施字典攻击q在线和离线q字典攻击的有效性n判断一个口令是有效的n对策q用户和管理员:选择好的口令q协议设计:对口令的使用过程中,不要泄露口令的信息在密文中增加口令以外的额外信息常见攻击和对策(四)n已知明文攻击q在许多认证协议中,一方会选择一个随机数,并且明文传输这个随机数,另一方加密这个随机数,并送回来Challenge/Response,所以偷听者可以获得已知明文/密文对q对策:n避免传输明文/密文对n增加已知明文攻击的难度n选择明文攻击q在认证协议中,如果随机数的选择没有任何规则,那

6、么中间人或者假冒方就有可能选择随机数,从而实施选择明文攻击q对策n随机数的选择限制认证协议中的常用技术(一)n时间戳qA收到一个消息,根据消息中的时间戳信息,判断消息的有效性n如果消息的时间戳与A所知道的当前时间足够接近q这种方法要求不同参与者之间的时钟需要同步n在网络环境中,特别是在分布式网络环境中,时钟同步并不容易做到n一旦时钟同步失败q要么协议不能正常服务,影响可用性(availability),造成拒绝服务(DOS)q要么放大时钟窗口,造成攻击的机会q时间窗大小的选择应根据消息的时效性来确定认证协议中的常见技术(二)n询问/应答方式(Challenge/Response)qA期望从B获

7、得一个条件n首先发给B一个随机值(challenge)nB收到这个值之后,对它作某种变换,得到response,并送回去nA收到这个response,可以验证B符合这个条件q在有的协议中,这个challenge也称为noncen可能明文传输,也可能密文传输q这个条件可以是知道某个口令,也可能是其他的事情n变换例子:用密钥加密,说明B知道这个密钥;简单运算,比如增一,说明B知道这个随机值q常用于交互式的认证协议中n假设:我去邮件服务器申请邮件,服务程序必须能验证我是我所申明的那人n笨办法:服务器让我输入口令(那么每个服务器必须知道用户的口令,如果网络有成千个用户,那么每个服务器就要知道成千条口令

8、,如果想改变口令,就必须联系所有服务器,通知它们修改口令等)解决:每个用户知道自己的口令每个服务器也知道自己的口令引入一个认证服务器AS(Authentication Server),它知道所有的口令,包括用户和服务器,并将口令保存在一个单独的中央数据库中,且AS和每台服务器共享惟一的密钥。例简单的认证对话n()用户向AS请求认证,必须告诉AS使用哪个服务n()AS请用户证明身份,用户将密码送给ASn()AS将密码与数据库中的密码想比较,如果相等,则通过验证n(注:AS不能将邮件服务的密码给用户,否则下次用户想再次使用邮件服务时,就可以绕过AS了)n()AS给用户一张票,票里有用户名,并且用邮

9、件服务器的密码加密n()用户向邮件服务器提出请求,并用票来证明自己的身份n()服务器用自己的密码来解开票,如果能正确解密,并得到用户的名字,将这个名字与随票一起送上的用户名进行比较,相同则通过验证。n问题:当服务解密票据时,如何知道它是被正确地解密的呢?n解决:应该在票据里包含有服务的名字当解开票后,通过找到自己的名字来判断解密的正确性。票(用户名服务器名)用服务器的口令加密n问题:假设AS在将用户的票传给用户过程中,被截取了,或复制了,然后伪造成用户,并用窃取的票向邮件服务器提出请求,则服务被盗用了。n解决:票用户名用户地址服务器名因为伪造的工作站用户名相同,而网络地址不匹配。n(1)C A

10、S:IDc|Pc|IDsn(2)AS C:Ticketn(3)C S:IDc|Ticket Ticket=EksIDc|ADc|IDs 其中:C=客户机 AS=认证服务器 S=服务器 IDc=C上用户的标识符 IDs=S的标识符 Pc=C上用户的口令 ADc=C的网络地址 Ks=AS和S共享的加密密钥|=连接 更加安全的认证对话n问题:()用户每次想要得到服务都要取一张新票()当用户每次向AS认证时,密码以明文形式在网络上传输,如果口令被窃取,就可以伪造此用户来使用任何服务了。n解决的目标:()用户口令只输入一次()口令不能在网络上进行明文传输n解决的方法:引入票据授权TGS(Ticket-G

11、ranting Server)服务器n()用户与AS通讯,用户向AS证明自己的身份,并取得一张票据授权票,现在用户想从邮件服务器上取邮件,但没有邮件服务器的票,所以用户要用“票据授权”票去取邮件服务的票。n不需要使用口令去取新的服务票,票据授权票可以重复使用。n()用户取票据授权时,用户不将口令送给AS,只是送用户名。AS用用户名去查找用户口令,然后将票据授权票的包用用户的口令去加密。用户用自己的口令去解开包,就可以得到票据授权的票了。n问题:n假设用户已在用一个不安全的工作站,在用户登录各种服务后,无意中在退出时留下了这些票,假设被人登录了工作站,并发现了这些票,就可以骗取服务,并将票拷走,

12、永远使用它们。n解决:写一个程序,在用户退出时将票销毁。n但销毁不是一个好的办法:因为当用户登录到工作站时,有人打开一个监视网络并拷贝别人服务票据的程序并拷贝一份用户的票,当用户退出并离开,将它的工作站地址调整为用户刚登录时的地址,就可以欺骗服务器了。(因为它已有了用户名,用户地址,票据)n解决:票不能永远合法,给每张票一个有效期n票用户名用户地址服务名有效期时间戳n(1)C AS:IDc|IDtgsn(2)AS C:EkcTickettgsn(3)C TGS:IDc|IDc|IDv|Tickettgsn(4)TGS C:Ticketsn(5)C S:IDc|TicketsnTickettgs

13、=EktgsIDc|ADc|IDtgs|TS1|Lifetime1nTickets=EksIDc|ADc|TS2|Litetime2n如果S能解开票,则说明票来自TGS,因为只有TGS和S共享KS,可以防止有人伪造假票。n检查票是否在有效期内,如果过期,则服务拒绝,可以阻止使用旧票或偷来的票来骗取服务。n测试票的用户名和地址是否匹配请求者的用户名和地址,如果测试失败,则说明使用了别有 票。n问题:n(1)如果名字和地址匹配,证明了什么,什么也没有,因为票可以被偷走,用户名和网络地址都可以被改变,票也可以在有效期内被盗用(如果票的有效期为个小时,那么用户在使用了个小时后提前退出了,那个小时就有可

14、能被盗用有效期内被盗用)。n(2)服务不能确定票的发送者是不是合法用户,服务之所以无法判断是因为它没有与用户共享一个秘密。n(3)票据授予票据的生存期,如果短,则需要重复输入口令,如果长,则对手可能重放攻击。n(4)要求服务器向用户认证自己,伪造的服务器将会充当真的服务器,捕获来自用户的信息,而拒绝提供真正的服务。n解决:nKerberos认证n为了减轻每个服务器的负担,Kerberos把身份认证的任务集中在身份认证服务器上。nKerberos的认证服务任务被分配到两个相对独立的服务器:认证服务器AS(Authenticator Server)和票据许可服务器TGS(Ticket Granti

15、ng Server),它们同时连接并维护一个中央数据库存放用户口令、标识等重要信息。n整个Kerberos系统由四部分组成:AS,TGS,Client,Server。Kerberos认证nKerberos使用两类凭证:票据(ticket)和鉴别码(authenticator)。该两种凭证均使用私有密钥加密,但加密的密钥不同。Kerberos认证nTicket用来安全的在认证服务器和用户请求的服务之间传递用户的身份,同时也传递附加信息用来保证使用ticket的用户必须是Ticket中指定的用户。Ticket一旦生成,在生存时间指定的时间内可以被client多次使用来申请同一个server的服务。

16、nAuthenticator则提供信息与Ticket中的信息进行比较,一起保证发出Ticket的用户就是Ticket中指定的用户。Authenticator只能在一次服务请求中使用,每当client向server申请服务时,必须重新生成Authenticator。Kerberos认证n这里我们首先介绍Kerberos认证版本4的内容,在叙述中我们使用以下记号:Kerberos版本4认证过程 n用户c请求服务s的整个Kerberos认证协议过程如下。n(1)C请求票据许可票据n(2)AS发放票据许可票据 和C,TGS间会话密钥n(3)C请求服务器票据n(4)TGS发放服务器票据 和C,S间会话密

17、钥n(5)C请求服务n(6)S提供服务器认证信息 以上是Kerberos V4过程的简要描述,详细过程分为以下3个阶段,共6步。Kerberos认证框图认证框图n(1)C请求票据许可票据n用户得到票据许可票据的工作在登录工作站时进行。登录时用户被要求输入用户名,输入后系统会向认证服务器AS以明文方式发送一条包含用户和TGS服务两者名字的请求。nC AS:IDC|IDtgs|TS1nIDC是工作站的标识,其中的时间戳是用来防回放攻击的。Kerberos版本4认证过程 n(2)AS发放票据许可票据和会话密钥n认证服务器检查用户是否有效,如果有效,则随机产生一个用户用来和TGS通信的会话密钥Kc,t

18、gs,然后创建一个票据许可票据Tickettgs,票据许可票据中包含有用户名,TGS服务名,用户地址,当前时间,有效时间,还有刚才创建的会话密钥。票据许可票据使用Ktgs加密。认证服务器向用户发送票据许可票据和会话密钥Kc,tgs,发送的消息用只有用户和认证服务器知道的Kc来加密,Kc的值基于用户的密码。Kerberos版本4认证过程 nAS C:EKcKc,tgs|IDtgs|TS2|Lifetime2|Tickettgsn这里:nTickettgs=EKtgsKc,tgs|IDc|ADc|IDtgs|TS2|Lifetime2nLifetime与Ticket相关联,如果太短需要重复申请,太

19、长会增加重放攻击的机会。Kerberos版本4认证过程 AS发送的报文 n(3)C请求服务器票据n用户工作站收到认证服务器回应后,就会要求用户输入密码,将密码转化为DES密钥Kc,然后将认证服务器发回的信息解开,将票据和会话密钥保存用于以后的通信,为了安全性用户密码和密钥Kc则被删掉。Kerberos版本4认证过程 n当用户的登录时间超过了票据的有效时间时,用户的请求就会失败,这时系统会要求用户重新申请票据Tickettgs。用户可以查看自己所拥有的令牌的当前状态。n一个票据只能申请一个特定的服务,所以用户必须为每一个服务s申请新的票据,用户可以从TGS处得到票据Tickets。n用户首先向T

20、GS发出申请服务器票据的请求。请求信息中包含s的名字,上一步中得到的请求TGS服务的加密票据Tickettgs,还有用会话密钥加密过的Authenticator信息。nC TGS:IDs|Tickettgs|AuthenticatorcnTickettgs=EKtgsKc,tgs|IDc|ADc|IDtgs|TS2|Lifetime2 Authenticatorc=Ekc,tgsIDc|ADc|TS3 Kerberos版本4认证过程 用户向服务器申请服务的报文 n(4)TGS发放服务器票据和会话密钥nTGS得到请求后,用私有密钥Ktgs和会话密钥Kc,tgs解开请求得到Tickettgs和Au

21、thenticatorc的内容,根据两者的信息鉴定用户身份是否有效。如果有效,TGS生成用于c和s之间通信的会话密钥Kc,s,并生成用于c申请得到s服务的票据Tickets,其中包含c和s的名字,c的网络地址,当前时间,有效时间和刚才产生的会话密钥。票据Tickets的有效时间是票据Tickettgs剩余的有效时间和所申请的服务缺省有效时间中最短的时间。nTgs最后将加密后的票据Tickets和会话密钥Kc,s用用户和TGS之间的会话密钥Kc,tgs加密后发送给用户。用户c得到回答后,用Kc,tgs解密,得到所请求的票据和会话密钥。nTGS C:Ekc,tgsKc,s|IDs|TS4|Tick

22、etsn这里:这里:Tickets=EKsKc,s|IDc|ADc|IDs|TS4|Lifetime4 Kerberos版本4认证过程 n(5)C请求服务n用户申请服务s的工作与(3)相似,只不过申请的服务由TGS变为s。n用户首先向s发送包含票据Tickets和Authenticatorc的请求,s收到请求后将其分别解密,比较得到的用户名,网络地址,时间等信息,判断请求是否有效。用户和服务程序之间的时钟必须同步在几分钟的时间段内,当请求的时间与系统当前时间相差太远时,认为请求是无效的,用来防止重放攻击。nC S:Tickets|Authenticatorcn这里:这里:Tickets=EKs

23、Kc,s|IDc|ADc|IDs|TS4|Lifetime4 Authenticatorc=Ekc,sIDc|ADc|TS5 Kerberos版本4认证过程 n(6)S提供服务器认证信息n当C也想验证S的身份时,S将收到的时间戳加1,并用会话密钥Kc,s加密后发送给用户,用户收到回答后,用会话密钥解密来确定S的身份。nS C:Ekc,sTS5+1n通过上面六步之后,用户C和服务S互相验证了彼此的身份,并且拥有只有C和S两者知道的会话密钥Kc,s,以后的通信都可以通过会话密钥得到保护。Kerberos版本4认证过程 Kerberos版本5nKerberos版本5对Kerberos只做了两处改变:

24、n(1)因为意识到验证器用少于五分钟的有效期不足以防止攻击者进行重演。Kerberos版本5中,验证器真正只能用一次,因为服务器用“重演缓冲区”保存了最近一次提交的验证器的信息。如果攻击者试图截取验证器并重用它,“重演缓冲区”会发现验证器已经被提交了。n(2)改变了Kerberos送给用户的票的时候,票不再用用户的口令加密。因为它已经用票据授权服务的口令加过密了。票据授权服务的票被用来获取其它票的时候,它直接就被传输了。因此票不需要再用用户的口令加密一次。nKerberos版本5认证过程:n在下面所述的认证过程中,我们用以下的记号:nTimes-时间标志:表明票据的开始使用时间、截止使用时间等

25、;nNonce-随机数:用于保证信息总是最新的和防止重放攻击;nRealm-在大型网络中,可能有多个Kerberos形成分级Kerberos体制,Realm表示用户C所属的领域;nOptions-用户请求的包含在票据中的特殊标志。nADx-X的网络地址。Kerberos版本5认证过程 n用户C从AS获得访问TGS的票据Ttgsn(1)C AS:IDCIDtgsTimesOptionsNonce1RealmCn(2)AS C:IDCRealmCTickettgsEKC(KC,tgsTimesNonce1RealmtgsIDtgs)n其中:Tickettgs=EKtgs(KC,tgsIDCADCT

26、imesRealmCFlags)nTicket中的Flags字段支持更多的功能。n用户C从TGS获得访问Server的票据Tickets Kerberos版本5认证过程 n(3)C TGS:OptionsIDsTimesNonce2TickettgsAuthenticatorCn(4)TGS C:RealmCIDCTicketSEKC,tgs(KC,STimesNonce2RealmSIDS)n其中:AuthenticatorC=EKC,tgs(IDCRealmCTS1)nTicketS=EKS(FlagsKC,SRealmCIDCADCTimes)n用户C将TicketS提交给Server,

27、获得服务n(5)C S:OptionsTicketSAuthenticatorCn(6)S C:EKC,S(TS2SubkeySeq)n其中:AuthenticatorC=EKC,S(IDCRealmCTS2SubkeySeq)Subkey和Seq均为可选项,Subkey指定此次会话的密钥,若不指定Subkey则会话密钥为KC,S;Seq为本次会话指定的起始序列号,以防止重传攻击。Kerberos版本5认证过程 n消息(1)、(3)、(5)在两个版本中是基本相同的。第5版删除了v4中消息(2)、(4)的票据双重加密;增加了多重地址;用开始可结束时间替代有效时间;并在鉴别码里增加了包括一个附加密

28、钥的选项;nV4只支持DES(数据加密标准)算法,V5采用独立的加密模块,可用其它加密算法替换;Kerberos版本5认证过程 nV4版里,为防止重放攻击,nonce由时间戳实现,这就带来了时间同步问题。即使利用网络时间协议(Network Time Protocol)或国际标准时间(Coordinated universaltime)能在一定程度上解决时间同步问题,但网络上关于时间的协议并不安全。nV5 版允许nonce可以是一个数字序列,但要求它唯一。由于服务器无法保证不同用户的nonce不冲突,偶然的冲突可能将合法用户的服务器申请当作重放攻击而拒之门外。nKerberos协议具有以下的一

29、些优势:n(1)与授权机制相结合;n(2)实现了一次性签放的机制,并且签放的票据都有一个有效期;n(3)支持双向的身份认证;n(4)支持分布式网络环境下的域间认证。Kerberos协议的优势 Kerberos协议的安全分析n在Kerberos认证机制中,也存在一些安全稳患。Kerberos机制的实现要求一个时钟基本同步的环境,这样需要引入时间同步机制,并且该机制也需要考虑安全性,否则攻击者可以通过调节某主机的时间实施重放攻击(Replay Attack)。在Kerberos系统中,Kerberos服务器假想共享密钥是完全保密的,如果一个入侵者获得了用户的密钥,他就可以假装成合法用户。攻击者还可

30、以采用离线方式攻击用户口令。如果用户口令被破获,系统将是不安全的。又如,如果系统的login程序被替换,则用户的口令会被窃取。Kerberos的一个完整服务范围由一个Kerberos服务器、多个客户机和多个服务器构成,并且满足以下两个要求:Kerberos服务器必须在它的数据库中存有所有用户的ID和口令的杂凑值,所有用户都已向Kerberos服务器注册。Kerberos服务器必须与每一服务器有共享的密钥,所有服务器都已向Kerberos服务器注册。Kerberos区域与多区域的Kerberos 满足以上两个要求的Kerberos的一个完整服务范围称为Kerberos的一个区域。网络中隶属于不同

31、行政机构的客户和服务器则构成不同的区域,一个区域的用户如果希望得到另一个区域中的服务器的服务,则还需满足以下第个要求。每个区域的Kerberos服务器必须和其他区域的服务器有共享的密钥,且两个区域的Kerberos服务器已彼此注册。Kerberos区域与多区域的Kerberos 多区域的Kerberos服务还要求在两个区域间,第1个区域的Kerberos服务器信任第2区域的Kerberos服务器对本区域中用户的认证,而且第2区域的服务器也应信任第1区域的Kerberos服务器。下图是两个区域的Kerberos服务示意图,其中区域A中的用户希望得到区域B中服务器的服务。为此,用户通过自己的客户机

32、首先向本区域的TGS申请一个访问远程TGS(即区域B中的TGS)的票据许可票据,然后用这个票据许可票据向远程TGS申请获得服务器服务的服务许可票据。具体描述如下:Kerberos区域与多区域的Kerberos两个区域的两个区域的Kerberos服务服务 客户向本地AS申请访问本区域TGS的票据 AS向客户发放访问本区域TGS的票据 客户向本地TGS申请访问远程TGS的票据许可票据 TGS向客户发放访问远程TGS的票据许可票据 客户向远程TGS申请获得服务器服务的服务许可票据 远程TGS向客户发放服务许可票据 客户申请远程服务器的服务 客户向本地AS申请访问本区域TGS的票据:CAS:IDCID

33、tgsTS1。AS向客户发放访问本区域TGS的票据:ASC:EKCKc,tgsIDtgsTS2lifetime2Tickettgs。客户向本地TGS申请访问远程TGS的票据许可票据:CTGS:IDtgsremTickettgsAuthenticatorc。TGS向客户发放访问远程TGS的票据许可票据:TGSC:EKc,tgsKc,tgsremIDtgsremTS4Tickettgsrem。Kerberos区域与多区域的Kerberos 客户向远程TGS申请获得服务器服务的服务许可票据:CTGSrem:IDvremTickettgsremAuthenticatorc。远程TGS向客户发放服务许可

34、票据:TGSC:EKc,tgsremKc,vremIDvremTS6Ticketvrem。客户申请远程服务器的服务:CVrem:TicketvremAuthenticatorc。Kerberos区域与多区域的Kerberos 对有很多个区域的情况来说,以上方案的扩充性不好,因为如果有N个区域,则必须有N(N-2)/2次密钥交换才可使每个Kerberos区域和其他所有的Kerberos区域能够互操作,当N很大时,方案变得不现实。Kerberos区域与多区域的Kerberos 认证业务与证书X.509 认证业务n如果每个想要为某些资料做签名的人,都到CA那里申请各种不同类型的证书,那么管理各种不同

35、的证书格式很快就成为一个问题。n为了解决这个问题,ITU(国际电信同盟)设计并批准了一个专门针对证书格式的标准。该标准被称为X.509,现在已经广泛应用于Internet上,自从1988年首次被标准化以来,它已经经历了三个版本。X.509作为定义目录业务的X.500系列的一个组成部分,是由ITU建议的,这里所说的目录实际上是维护用户信息数据库的服务器或分布式服务器集合,用户信息包括用户名到网络地址的映射和用户的其他属性。X.509定义了X.500目录向用户提供认证业务的一个框架,目录的作用是存放用户的公钥证书。X.509还定义了基于公钥证书的认证协议。由于X.509中定义的证书结构和认证协议已

36、被广泛应用于S/MIME、IPSec、SSL/TLS以及SET等诸多应用过程,因此X.509已成为一个重要的标准。X.509 认证业务 X.509的基础是公钥密码体制和数字签字,但其中未特别指明使用哪种密码体制(建议使用RSA),也未特别指明数字签字中使用哪种杂凑函数。X.509 认证业务1.证书的格式 用户的公钥证书是X.509的核心问题,证书由某个可信的证书发放机构CA建立,并由CA或用户自己将其放入目录中,以供其他用户方便地访问。目录服务器本身并不负责为用户建立公钥证书,其作用仅仅是为用户访问公钥证书提供方便。X.509中公钥证书的一般格式如下图(a)所示,证书中的数据域有:证书X.50

37、9的证书格式和证书吊销列表的证书格式和证书吊销列表 版本号 默认值为第1版。如果证书中需有发放者惟一识别符或主体惟一识别符,则版本号一定是2,如果有一个或多个扩充项,则版本号为3。顺序号 为一整数,由同一CA发放的每一证书的顺序号是惟一的。签字算法识别符 签署证书所用的算法及相应的参数。发放者名称 指建立和签署证书的CA名称。有效期 包括证书有效期的起始时间和终止时间两个数据项。X.509 证书格式 主体名称 指证书所属用户的名称,即这一证书用来证明持有秘密钥用户的相应公开钥。主体的公开钥信息 包括主体的公开钥、使用这一公开钥的算法的标识符及相应的参数。发放者惟一识别符 这一数据项是可选用的,

38、当发放者(CA)的名称被重新用于其他实体时,则用这一识别符来惟一标识发放者。主体惟一识别符 这一数据项也是可选用的,当主体的名称被重新用于其他实体时,则用这一识别符来惟一地标识主体。扩充域 其中包括一个或多个扩充的数据项,仅在第3版中使用。X.509 证书格式签字 CA用自己的秘密钥对上述域的杂凑值签字的结果,此外,这个域还包括签字算法标识符。X.509中使用以下表示法来定义证书:CAA=CAV,SN,AI,CA,TA,A,AP 其中YX表示证书发放机构Y向用户X发放的证书,YI表示I链接上Y对I的杂凑值的签字。X.509 证书格式n例2.证书的获取CA为用户产生的证书应有以下特性:其他任一用

39、户只要得到CA的公开钥,就能由此得到CA为该用户签署的公开钥。除CA以外,任何其他人都不能以不被察觉的方式修改证书的内容。因为证书是不可伪造的,因此放在目录后无需对目录施加特别的保护措施。X.509 证书获取 如果所有用户都由同一CA为自己签署证书,则这一CA就必须取得所有用户的信任。用户证书除了能放在目录中以供他人访问外,还可以由用户直接发给其他用户。用户B得到用户A的证书后,可相信用A的公开钥加密的消息不会被他人获悉,还相信用A的秘密钥签署的消息是不可伪造的。如果用户数量极多,则仅一个CA负责为用户签署证书就有点不现实,因为每一用户都必须以绝对安全(指完整性和真实性)的方式得到CA的公开钥

40、,以验证CA签署的证书。因此在用户数目极多的情况下,应有多个CA,每一CA仅为一部分用户签署证书。X.509 证书获取 设用户A已从证书发放机构X1处获取了公钥证书,用户B已从X2处获取了证书。如果A不知X2的公开钥,他虽然能读取B的证书,但却无法验证X2的签字,因此B的证书对A来说是没有用处的。然而,如果两个CA X1和X2彼此间已经安全地交换了公开钥,则A可通过以下过程获取B的公开钥:A从目录中获取由X1签署的X2的证书,因A知道X1的公开钥,所以能验证X2的证书,并从中得到X2的公开钥。A再从目录中获取由X2签署的B的证书,并由X2的公开钥对此加以验证,然后从中得到B的公开钥。X.509

41、 证书获取 以上过程中,A是通过一个证书链来获取B的公开钥,证书链可表示为X1X2X2B 类似地,B能通过相反的证书链获取A的公开钥,表示为X2X1X1A。以上证书链中有两个证书,N个证书的证书链可表示为X1X2X2X3 XNBX.509 证书获取 此时任意两个相邻的CA Xi和Xi+1已彼此间为对方建立了证书,对每一CA来说,由其他CA为这一CA建立的所有证书都应存放于目录中,并使用户知道所有证书相互之间的连接关系,从而可获取另一用户的公钥证书。X.509建议将所有CA以层次结构组织起来。X.509 证书获取下图 是X.509的CA层次结构的一个例子,其中的内部结点表示CA,叶结点表示用户。

42、用户A可从目录中得到相应的证书以建立到B的以下证书链:XWWVVYYZZB并通过该证书链获取B的公开钥。类似地,B可建立以下证书链以获取A的公开钥:ZYYVVWWXXAX.509 证书获取X.509的层次结构的层次结构3.证书的吊销 每一证书都有一有效期,然而有些证书还未到截止日期就会被发放该证书的CA吊销,这是由于用户的秘密钥有可能已被泄露,或者该用户不再由该CA来认证,或者CA为该用户签署证书的秘密钥有可能已泄露。为此每一CA还必须维护一个证书吊销列表CRL(certificate revocation list),其中存放所有未到期而被提前吊销的证书,包括该CA发放给用户和发放给其他CA

43、的证书。CRL还必须经该CA签字,然后存放于目录以供他人查询。X.509 证书吊销 CRL中的数据域包括发放者CA的名称、建立CRL的日期、计划公布下一CRL的日期,以及每一被吊销的证书数据域,而被吊销的证书数据域包括该证书的顺序号和被吊销的日期。因为对一个CA来说,他发放的每一证书的顺序号是惟一的,所以可用顺序号来识别每一证书。每一用户收到他人消息中的证书时,都必须通过目录检查这一证书是否已被吊销。为避免搜索目录引起的延迟以及由此而增加的费用,用户自己也可维护一个有效证书和被吊销证书的局部缓存区。X.509 证书吊销X.509认证n X.509是个重要的标准,除了定义证书结构外,它还定义了基

44、于使用公开密钥证书的可选认证协议。该协议基于公开密钥加密体制,每个用户拥有一对密钥:公开密钥和秘密密钥。按照双方交换认证信息的不同,可以分为单向单向认证认证、双向认证双向认证和三向认证三向认证三种不同的方案。一路单向认证、二路双向认证和三路双向认证 X.509的认证过程的认证过程n(1)一路单向认证nA B:A|Sa(Ta|Ra|B|Eb(Ya)n这里Sa()是A的签名,Eb()是使用B的公开密钥进行的加密,Eb(Ks)是可选项。A、B是A、B的标识。Yx是用户x的数据。nRa临时值。A生成不会重复的数字Ra,Ra用来检测重放攻击并且也用来防止伪造。Ta是一个时戳。Ta包括一个或者两个以下数据

45、:标志产生的时间和有效时间。nB取得A的公钥,并验证A的证书的有效性。使用A的公钥验证签名,并验证数据的完整性。验证在A发送过来的信息中,指明的接收用户是不是B。验证发送过来的时戳是不是当前时间。作为可选的步骤,可以验证Ra有没有重复。x.509 一路单向认证n证实了下列内容:n()用户A的身份和消息是由A产生的n()消息是供B使用的。n()消息的完整性和原始性n(这个消息没有发送多次等)x.509 二路双向认证n(2)二路双向认证nA B:A|Sa(Ta|Ra|B|Eb(Ya)nB A:Sb(Tb|Rb|A|Ra|Ea(Yb)nEb(Kab)、Ea(Kba)是可选项。双向认证不仅实现了B认证

46、A,也实现了A认证B。双向认证是在单向认证的基础上,B再向A作出应答,以证明:B的身份、应答消息是由B产生的;应答的意欲接收者是A;应答消息是完整的和新鲜的。应答消息中包括由A发来的一次性随机数rA(以使应答消息有效)、由B产生的时戳tB和一次性随机数rB。与单向认证类似,应答消息中也可包括其他附加信息和由A的公开钥加密的会话密钥。n()用户A的身份和消息是由A产生的n()消息是供B使用的。n()消息的完整性和原始性n(这个消息没有发送多次等)n增加以下认证内容n()B的身份和应答消息是由B产生的n()消息是供A使用的n()应答消息的完整性的原始性 x.509 三路双向认证n(3)三路双向认证

47、nA B:A|Sa(Ta|Ra|B|Eb(Ya)nB A:Sb(Tb|Rb|A|Ra|Ea(Yb)nA B:Sa(Rb|B)在上述双向认证完成后,A再对从B发来的一次性随机数签字后发往B,即构成第三向认证。三向认证的目的是双方将收到的对方发来的一次性随机数又都返回给对方,因此双方不需检查时戳只需检查对方的一次性随机数即可检查出是否有重放攻击。在通信双方无法建立时钟同步时,就需使用这种方法。n攻击者对B重放消息A|Sa(Ta|Ra|B|Eb(Ya),由于B不对时戳进行验证,B不会发现是旧的消息nB选取新的随机数Rb,发送消息Sb(Tb|Rb|A|Ra|Ea(Yb),攻击者截获该消息,并利用B的公钥获得Rb。攻击者为了获得Sa(Rb),他给A发送消息让A开始对攻击者进行认证。认证结束的时候,攻击者获得A发来的Sa(Rb)。n攻击者利用获得的Sa(Rb)冒充A成功。x.509 认证协议的攻击

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁