您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 《第06讲-Kerberos认证协议.ppt》
网络与信息安全安全基础(二)潘爱民,北京大学计算机研究所内容Kerberos协议Kerberos中ticket的flagKerberos实现MITReleaseWin2kKerberosIPSec简介Kerberos认证协议历史80年代中期是MIT的Athena工程的产物版本前三个版本仅用于内部第四版得到了广泛的应用第五版于1989年开始设计RFC1510,1993年确定标准Kerberos解决的问题认证、数据完整性、保密性作为一种认证协议特点基于口令的认证协议利用对称密码技术建立起来的认证协议可伸缩性——可适用于分布式网络环境环境特点User-to-serverauthentication密钥存储方案Kerberos协议中一些概念Principal(安全个体)被认证的个体,有一个名字(name)和口令(password)KDC(Keydistributioncenter)是一个网络服务,提供ticket和临时的会话密钥Ticket一个记录,客户可以用它来向服务器证明自己的身份,其中包括客户的标识、会话密钥、时间戳,以及其他一些信息。Ticket中的大多数信息都被加密,密钥为服务器的密钥Authenticator一个记录,其中包含一些最近产生的信息,产生这些信息需要用到客户和服务器之间共享的会话密钥Credentials一个ticket加上一个秘密的会话密钥KerberosModel基本的ticket交换Client-KDCc(客户的id),s(服务器的id),n(nonce)KDC-Client{Kc,s,n}Kc,{Tc,s}KsClient-Server{Ac}Kc,s,{Tc,s}Ks基本的ticket交换的问题客户个体密钥Kc的频繁使用Kc的使用对于用户尽可能透明可伸缩性方案引入TGS(Ticket-grantingserver)附加的ticket交换引入TGS(Ticket-grantingservice)两种ticketTGT:{Tc,tgs}KtgsServiceticket:{Tc,s}Ks支持可伸缩性的两个概念TGSTicket-grantingserviceRealm(域)与domain的区别?每一个安全个体都与一个realm相联系从安全性意义上来,是指信任边界Kerberos中ticket示意图Kerberos消息(1)Client-AuthenticationServer(KDC)Options:KDCOptionsIDc:principal’snameRealmc:client’srealmIDtgs:TGS’snameTimes(from,till,rtime)Nonce1可选的扩展信息Kerberos消息(2)AuthenticationServer(KDC)-ClientRealmcIDcTickettgsEncryptedData(withKc)Kc,tgsTimes(LastReq,Key-expiration*,Authtime,Starttime*,Endtime,Renew-till*)Nonce1RealmtgsIDtgsTickettgs信息EncryptedwithKtgsFlagsKc,tgsRealmcIDcADcTimesKerberos消息(3)C-TGSOptions:KDCOptionsIDv:Server’snameTimes(from*,till,rtime*)Nonce2TickettgsAuthenticatorcAuthenticatorEncryptedwithKc,tgsIDcRealmcTS1用途是服务器可用来认证Ticket的有效性TS可告诉服务器客户机当前的时间Kerberos消息(4)TGS-CRealmcIDcTicketvEncryptedData(withKc,tgs)Kc,vTimesNonce2RealmvIDvTicketv信息EncryptedwithKvFlagsKc,vRealmcIDcADcTimesKerberos消息(5)C-ServerOptionsTicketvAuthenticatorcAuthenticaor:EncryptedwithKc,vRealmcIDcTS2SubkeySeq#Kerberos消息(6)Server-C(optional)仅用于双向认证EncryptedData(withKc,v)TS2SubkeySeq#Ticket交换中的flagsINITIAL是由AS发出的ticketRENEWABLE告诉TGS,当这个ticket过期之后,它可以用来获得一个新的ticketMAY-POSTDATE告诉TGS,以后可以根据这个ticket(TGT),发出一个postdate的ticketPOSTDATED表示这个ticket已经被postdatedticket中的flags(续)INVALIDTicket已经无效,用之前必须先使它有效PROXIABLE告诉TGS,根据所出示的ticket,发出一个地址不同的新ticketPROXY表示这是一个proxyticketFORWARDABLE告诉TGS,根据这个TGT,发出一个地址不同的新ticketFORWARDED表明这个ticket是一个forwardedticketINITIAL表明一个ticket是由AS发出的有的应用服务要求客户必须知道password,那么它可以要求只接受包含INITIAL标记的ticket例如,修改口令的应用服务PRE-AUTHENT&HW-AUTHENTAS可以要求在发出ticket之前,先认证客户,因此,客户必须提供一个预认证数据块,比如,包含随机数、时间戳,等,然后用客户的私钥加密如果客户没有提供AS所要求的预认证数据,则AS返回一个KDC_ERR_PREAUTH_FAILE消息如果AS在认证的时候,要求硬件认证支持,则可以指定HW-AUTHEN标记RENEWABLE如果一个ticket设置了RENEWABLE,则它包含两个过期时间一个是当前ticket的过期时间另一个是最终的过期时间客户可以请求一个新的ticket,只要在最终的过期时间之内,TGS都可以发出新的ticket,其中过期时间往后延长好处如果一个ticket被偷,TGS可以拒绝发出新的ticketPOSTDATED和INVALID客户可以先用MAY-POSTDATE向AS请求一个TGT然后,客户利用这个TGT,可以申请一些同时包含POSTDATED和INVALID的tickets,用于以后的会话过程客户在使用之前,通过VALIDATEoption,先请求TGS使INVALIDticket有效用处:比如在一个处理时间很长的任务中PROXIABLE和PROXYPROXIABLE告诉TGS,根据所出示的ticket,发出一个地址不同的新ticketPROXY表示这是一个proxyticket用处允许客户把一个proxy传递给server,让这个proxy代替自己完成特定的任务原理通过网络地址来认证客户FORWARDABLE&FORWARDED告诉TGS,根据这个TGT,发出一个地址不同的新ticketFORWARDED表明这个ticket是一个forwardedticket其实也是proxy的一种情形可以完全代替客户的身份一个用途在跨域认证的时候,客户可以把这样的ticket出示给其他域的TGS,这使得客户可以访问其他域的服务器Cross-realm认证Kerberos4支持跨realm认证Cross-realm认证(续)Kerberos5支持跨realm认证提供了可伸缩能力Kerberos数据库KDC必需一个数据库,保存以下基本信息Name:principal’sidentifierKey:principal’ssecretkeyP_kvno:principal’skeyversionMax_life:maximumlifetimeforticketsMax_renewable_life:其他的扩展fields数据库的实现取决于具体的Kerberos实现,它可以与KDC位于不同的服务器,但是要保证安全性Kerberos:数据完整性和私有性完整性对每一个包计算检验和,并加密HMAC算法私有性既然客户和服务器已经有了共享随机密钥,那么私有性就很容易保证Kerberos中加密算法规范具体的算法可以在参数中指定NULLEncryptionsystemDESinCBCmodewithaCRC-32checksumDESinCBCmodewithaMD4checksumDESinCBCmodewithaMD5checksum……关于Kerberos的一些讨论重放攻击Cachingauthenticators时间服务口令猜测攻击数据加密算法的分离……参考:Bel90.S.M.BellovinandM.Merritt,‘‘LimitationsoftheKerberosAuthenticationSystem,’’ComputerCommunicationsReview20(5),pp.119-132(October1990).Kerberos的实现——MITreleaseMIT提供了完整的Kerberos实现目前的最新版本为1.2源码开放是其他厂商的重要参考支持各种平台(包括Windows)同时提供了各种工具(k系列)kadmin管理Kerberos数据库,功能有显示principal的属性获得principal列表增加、删除或者修改principal修改口令策略管理Kadmin举例shell%kadminkadmin:getprincjennifer/rootPrincipal:jennifer/root@ATHENA.MIT.EDUKeyversion:3Maximumlife:1day00:00:00Maximumrenewablelife:7days00:00:00Masterkeyversion:1Expires:MonJan1822:14:07EDT2038Passwordexpires:MonSep1914:40:00EDT1996Passwordlastchanged:MonJan3102:06:40EDT1996Lastmodified:byjoeadmin/admin@ATHENA.MIT.EDUonWedJul1318:27:08EDT1996Attributes:DISALLOW_FORWARDABLE,DISALLOW_PROXIABLE,REQUIRES_HW_AUTHSalttype:DEFAULTkadmin:kdb5_util功能把kerberos数据库dump出来恢复kerberos数据库创建或者删除一个kerberos数据库kinitkinit获得一个ticket例如shell%kinitPasswordforjennifer@ATHENA.MIT.EDU:--[Typejennifer'spasswordhere.]shell%如果口令不正确,则:shell%kinitPasswordforjennifer@ATHENA.MIT.EDU:--[Typethewrongpasswordhere.]kinit:Passwordincorrectshell%klist列出所有的tick
本文标题:《第06讲-Kerberos认证协议.ppt》
链接地址:https://www.777doc.com/doc-6150395 .html