SecCourse-05安全基础.ppt
网络与信息安全安全基础(二),潘爱民,北京大学计算机研究所http:/,内容,Kerberos协议Kerberos中ticket的flagKerberos实现MIT ReleaseWin2k KerberosIPSec简介,Kerberos认证协议,历史80年代中期是MIT的Athena工程的产物版本前三个版本仅用于内部第四版得到了广泛的应用第五版于1989年开始设计RFC 1510,1993年确定标准Kerberos解决的问题认证、数据完整性、保密性,作为一种认证协议,特点基于口令的认证协议利用对称密码技术建立起来的认证协议可伸缩性可适用于分布式网络环境环境特点User-to-server authentication密钥存储方案,Kerberos协议中一些概念,Principal(安全个体)被认证的个体,有一个名字(name)和口令(password)KDC(Key distribution center)是一个网络服务,提供ticket和临时的会话密钥Ticket一个记录,客户可以用它来向服务器证明自己的身份,其中包括客户的标识、会话密钥、时间戳,以及其他一些信息。Ticket 中的大多数信息都被加密,密钥为服务器的密钥Authenticator一个记录,其中包含一些最近产生的信息,产生这些信息需要用到客户和服务器之间共享的会话密钥Credentials一个ticket加上一个秘密的会话密钥,Kerberos Model,基本的ticket交换Client-KDCc(客户的id),s(服务器的id),n(nonce)KDC-ClientKc,s,nKc,Tc,sKsClient-ServerAcKc,s,Tc,sKs,基本的ticket交换的问题,客户个体密钥Kc的频繁使用Kc的使用对于用户尽可能透明可伸缩性方案引入TGS(Ticket-granting server),附加的ticket交换,引入TGS(Ticket-granting service)两种ticketTGT:Tc,tgsKtgsService ticket:Tc,sKs,支持可伸缩性的两个概念,TGSTicket-granting serviceRealm(域)与domain的区别?每一个安全个体都与一个realm相联系从安全性意义上来,是指信任边界,Kerberos中ticket示意图,Kerberos消息(1),Client-Authentication Server(KDC)Options:KDCOptionsIDc:principals nameRealmc:clients realmIDtgs:TGSs nameTimes(from,till,rtime)Nonce1可选的扩展信息,Kerberos消息(2),Authentication Server(KDC)-ClientRealmcIDcTickettgsEncryptedData(with Kc)Kc,tgsTimes(LastReq,Key-expiration*,Authtime,Starttime*,Endtime,Renew-till*)Nonce1RealmtgsIDtgs,Tickettgs信息,Encrypted with KtgsFlagsKc,tgsRealmcIDcADcTimes,Kerberos消息(3),C-TGSOptions:KDCOptionsIDv:Servers nameTimes(from*,till,rtime*)Nonce2TickettgsAuthenticatorc,Authenticator,Encrypted with Kc,tgsIDcRealmcTS1用途是服务器可用来认证Ticket的有效性TS可告诉服务器客户机当前的时间,Kerberos消息(4),TGS-CRealmcIDcTicketvEncryptedData(with Kc,tgs)Kc,vTimesNonce2RealmvIDv,Ticketv信息,Encrypted with KvFlagsKc,vRealmcIDcADcTimes,Kerberos消息(5),C-ServerOptionsTicketvAuthenticatorcAuthenticaor:Encrypted with Kc,vRealmcIDcTS2SubkeySeq#,Kerberos消息(6),Server-C(optional)仅用于双向认证EncryptedData(with Kc,v)TS2SubkeySeq#,Ticket交换中的flags,INITIAL是由AS发出的ticketRENEWABLE告诉TGS,当这个ticket过期之后,它可以用来获得一个新的ticketMAY-POSTDATE告诉TGS,以后可以根据这个ticket(TGT),发出一个postdate的ticketPOSTDATED表示这个ticket已经被postdated,ticket中的flags(续),INVALIDTicket已经无效,用之前必须先使它有效PROXIABLE告诉TGS,根据所出示的ticket,发出一个地址不同的新ticketPROXY表示这是一个proxy ticketFORWARDABLE告诉TGS,根据这个TGT,发出一个地址不同的新ticketFORWARDED表明这个ticket是一个forwarded ticket,INITIAL,表明一个ticket是由AS发出的有的应用服务要求客户必须知道password,那么它可以要求只接受包含INITIAL标记的ticket例如,修改口令的应用服务,PRE-AUTHENT&HW-AUTHENT,AS可以要求在发出ticket之前,先认证客户,因 此,客户必须提供一个预认证数据块,比如,包含随机数、时间戳,等,然后用客户的私钥加密如果客户没有提供AS所要求的预认证数据,则AS返回一个KDC_ERR_PREAUTH_FAILE消息如果AS在认证的时候,要求硬件认证支持,则可以指定HW-AUTHEN标记,RENEWABLE,如果一个ticket设置了RENEWABLE,则它包含两个过期时间一个是当前ticket的过期时间另一个是最终的过期时间客户可以请求一个新的ticket,只要在最终的过期时间之内,TGS都可以发出新的ticket,其中过期时间往后延长好处如果一个ticket被偷,TGS可以拒绝发出新的ticket,POSTDATED和INVALID,客户可以先用MAY-POSTDATE向AS请求一个TGT然后,客户利用这个TGT,可以申请一些同时包含POSTDATED和INVALID的tickets,用于以后的会话过程客户在使用之前,通过VALIDATE option,先请求TGS使INVALID ticket有效用处:比如在一个处理时间很长的任务中,PROXIABLE和PROXY,PROXIABLE告诉TGS,根据所出示的ticket,发出一个地址不同的新ticketPROXY表示这是一个proxy ticket用处允许客户把一个proxy传递给server,让这个proxy代替自己完成特定的任务原理通过网络地址来认证客户,FORWARDABLE&FORWARDED,告诉TGS,根据这个TGT,发出一个地址不同的新ticketFORWARDED表明这个ticket是一个forwarded ticket其实也是proxy的一种情形可以完全代替客户的身份一个用途在跨域认证的时候,客户可以把这样的ticket出示给其他域的TGS,这使得客户可以访问其他域的服务器,Cross-realm认证,Kerberos 4支持跨realm认证,Cross-realm认证(续),Kerberos 5支持跨realm认证提供了可伸缩能力,Kerberos数据库,KDC必需一个数据库,保存以下基本信息Name:principals identifierKey:principals secret keyP_kvno:principals key versionMax_life:maximum lifetime for ticketsMax_renewable_life:其他的扩展fields数据库的实现取决于具体的Kerberos实现,它可以与KDC位于不同的服务器,但是要保证安全性,Kerberos:数据完整性和私有性,完整性对每一个包计算检验和,并加密HMAC算法私有性既然客户和服务器已经有了共享随机密钥,那么私有性就很容易保证,Kerberos中加密算法规范,具体的算法可以在参数中指定NULL Encryption systemDES in CBC mode with a CRC-32 checksumDES in CBC mode with a MD4 checksumDES in CBC mode with a MD5 checksum,关于Kerberos的一些讨论,重放攻击Caching authenticators时间服务口令猜测攻击数据加密算法的分离,参考:Bel90.S.M.Bellovin and M.Merritt,Limitations of the Kerberos Authentication System,Computer Communications Review 20(5),pp.119-132(October 1990).,Kerberos的实现MIT release,MIT提供了完整的Kerberos实现目前的最新版本为1.2源码开放是其他厂商的重要参考支持各种平台(包括Windows)同时提供了各种工具(k系列),kadmin,管理Kerberos数据库,功能有显示principal的属性获得principal列表增加、删除或者修改principal修改口令策略管理,Kadmin举例,shell%kadminkadmin:getprinc jennifer/rootPrincipal:jennifer/rootATHENA.MIT.EDUKey version:3Maximum life:1 day 00:00:00Maximum renewable life:7 days 00:00:00Master key version:1Expires:Mon Jan 18 22:14:07 EDT 2038Password expires:Mon Sep 19 14:40:00 EDT 1996Password last changed:Mon Jan 31 02:06:40 EDT 1996Last modified:by joeadmin/adminATHENA.MIT.EDUon Wed Jul 13 18:27:08 EDT 1996Attributes:DISALLOW_FORWARDABLE,DISALLOW_PROXIABLE,REQUIRES_HW_AUTHSalt type:DEFAULTkadmin:,kdb5_util,功能把kerberos数据库dump出来恢复kerberos数据库创建或者删除一个kerberos数据库,kinit,kinit获得一个ticket例如,shell%kinitPassword for jenniferATHENA.MIT.EDU:-Type jennifers password here.shell%如果口令不正确,则:shell%kinitPassword for jenniferATHENA.MIT.EDU:-Type the wrong password here.kinit:Password incorrectshell%,klist,列出所有的tickets,shell%klistTicket cache:/tmp/krb5cc_ttypaDefault principal:jenniferATHENA.MIT.EDUValid starting Expires Service principal06/07/96 19:49:21 06/08/96 05:49:19 krbtgt/ATHENA.MIT.EDUATHENA.MIT.EDU06/07/96 20:22:30 06/08/96 05:49:19 host/daffodil.mit.eduATHENA.MIT.EDU06/07/96 20:24:18 06/08/96 05:49:19 krbtgt/FUBAR.ORGATHENA.MIT.EDU06/07/96 20:24:18 06/08/96 05:49:19 host/trillium.fubar.orgATHENA.MIT.EDUshell%,kpasswd,修改口令,shell%kpasswdOld password for david:-Type your old password.New Password for david:-Type your new password.Verifying,please re-enter New Password for david:-Type the new password again.Password changed.shell%,Kerberos应用:telnet,shell%telnet daffodil.mit.eduTrying 128.0.0.5.Connected to daffodil.mit.edu.Escape character is.NetBSD/i386(daffodil)(ttyp3)login:davidPassword:-david types his password hereLast login:Fri Jun 21 17:13:11 from trillium.fubar.orgCopyright(c)1980,1983,1986,1988,1990,1991,1993,1994 The Regents of the University of California.All rights reserved.NetBSD 1.1:Tue May 21 00:31:42 EDT 1996Welcome to NetBSD!shell%,Kerberos应用:rlogin,shell%rlogin daffodil.mit.edu-l davidPassword:-david types his password hereLast login:Fri Jun 21 10:36:32 from:0.0Copyright(c)1980,1983,1986,1988,1990,1991,1993,1994 The Regents of the University of California.All rights reserved.NetBSD 1.1:Tue May 21 00:31:42 EDT 1996Welcome to NetBSD!shell%,Kerberos应用:ftp,shell%ftp daffodil.mit.eduConnected to daffodil.mit.edu.220 daffodil.mit.edu FTP server(Version 5.60)ready.334 Using authentication type GSSAPI;ADAT must followGSSAPI accepted as authentication typeGSSAPI authentication succeededName(daffodil.mit.edu:jennifer):232 GSSAPI user jenniferATHENA.MIT.EDU is authorized as jennifer230 User jennifer logged in.Remote system type is UNIX.Using binary mode to transfer files.ftp protect private200 Protection level set to Private.ftp cd jennifer/MAIL250 CWD command successful.ftp get RMAIL227 Entering Passive Mode(128,0,0,5,16,49)150 Opening BINARY mode data connection for RMAIL(361662 bytes).226 Transfer complete.361662 bytes received in 2.5 seconds(1.4e+02 Kbytes/s)ftp quitshell%,其他Kerberos命令,kdestroyrshksurcp,Kerberos配置文件,krb5.conf,Kerberos配置信息,例如,libdefaults ticket_lifetime=600 default_realm=ATHENA.MIT.EDU default_tkt_enctypes=des3-hmac-sha1 des-cbc-crc default_tgs_enctypes=des3-hmac-sha1 des-cbc-crcrealms ATHENA.MIT.EDU=kdc=kerberos.mit.edu kdc=kerberos-1.mit.edu kdc=kerberos-2.mit.edu admin_server=kerberos.mit.edu default_domain=mit.edu FUBAR.ORG=kdc=kerberos.fubar.org kdc=kerberos-1.fubar.org admin_server=kerberos.fubar.org domain_realm.mit.edu=ATHENA.MIT.EDU mit.edu=ATHENA.MIT.EDU,Kerberos配置文件,kdc.conf,KDC的配置,例如,kdcdefaults kdc_ports=88realms ATHENA.MIT.EDU=kadmind_port=749 max_life=10h 0m 0s max_renewable_life=7d 0h 0m 0s master_key_type=des3-hmac-sha1 supported_enctypes=des3-hmac-sha1:normal des-cbc-crc:normal des-cbc-crc:v4 kdc_supported_enctypes=des3-hmac-sha1:normal des-cbc-crc:normal des-cbc-crc:v4 logging kdc=FILE:/usr/local/var/krb5kdc/kdc.log admin_server=FILE:/usr/local/var/krb5kdc/kadmin.log,Kerberos缺省端口配置,ftp 21/tcp#Kerberos ftp and telnet use thetelnet 23/tcp#default portskerberos 88/udp kdc#Kerberos V5 KDCkerberos 88/tcp kdc#Kerberos V5 KDCklogin 543/tcp#Kerberos authenticated rloginkshell 544/tcp cmd#and remote shellkerberos-adm 749/tcp#Kerberos 5 admin/changepwkerberos-adm 749/udp#Kerberos 5 admin/changepwkrb5_prop 754/tcp#Kerberos slave propagationeklogin 2105/tcp#Kerberos auth.&encrypted rloginkrb524 4444/tcp#Kerberos 5 to 4 ticket translator,Kerberos协议的实现MS版本,Kerberos代替Windows NT的NT LM认证协议,是Win2000的默认认证协议,也是Windows 2000分布式安全服务的一部分与Windows 2000的目录服务集成在一起Kerberos数据库是AD的一部分与系统的授权数据信息结合在一起对MIT Kerberos作了扩展,也不完全兼容,Win2k Kerberos的实现形式,形式:Security Service Provider(SSP)Security Support Provider Interface(SSPI)对上层应用透明,Win2k Kerberos的Ticket结构,Ticket交换,登录,访问远程服务,Win2k Kerberos Delegation,Server S代表客户申请一个新的ticket利用ticket的FORWARD标志特性,Win2k Kerberos跨域认证,关于Win2k Kerberos,功能实现了可传递的域信任关系实现了服务的delegation与其他的系统服务之间的集成兼容性问题与MIT采用的默认算法不同,不过,可以协商MIT使用DES,MS使用RC4口令的散列算法不同MIT使用一个string-to-key算法,MS使用MD4授权域信息不兼容安全个体的映射关系,IPSec,网络层安全性着眼:真实性(认证)、完整性和保密性好处:对于应用层透明可以针对链路,也可以针对最终用户可以实现在防火墙或者路由器上弥补IPv4在协议设计时缺乏安全性考虑的不足IETF成立专门的WG标准化IPSec目前已有一系列的RFC和Internet Draft文档结构复杂,IP Security示意图,IPSec的应用,通过Internet建立分支机构通过Internet远程访问企业内部网络合作伙伴之间通过Internet建立信任关系也可用于电子商务应用IPSec最常见的应用VPN,IPSec的内容,协议包括两大部分AH:Authentication HeaderESP:Encapsulating Security Payload密钥管理(Key Management)SA(Security Association)ISAKMP定义了密钥管理框架IKE是目前正式确定的密钥交换协议,SA(Security Association),基本概念是发送者和接收者两个IPSec系统之间的一个简单的单向逻辑连接,是与给定的一个网络连接或一组网络连接相关联的安全信息参数集合因为SA是单个方向的,所以,对于一个双向通信,则需要两个SASA与IPSec系统中实现的两个数据库有关安全策略数据库安全关联数据库,AH(Authentication Header),为IP包提供数据完整性和认证功能利用MAC码实现认证,双方必须共享一个密钥认证算法由SA指定两种认证模式:传输模式:不改变IP地址,插入一个AH隧道模式:生成一个新的IP头,把AH和原来的整个IP包放到新IP包的净荷数据中,AH两种模式示意图,ESP(Encapsulating Security Payload),提供保密功能,也可以提供认证服务将需要保密的用户数据进行加密后再封装到IP包中,ESP只认证ESP头之后的信息认证算法也由SA指定也有两种模式:传输模式和隧道模式,ESP两种模式示意图,经认证的数据,经加密的数据,(1)传输模式,参考资料,书William Stallings,Cryptography and network security:principles and practice,Second Edition文章RFC 1510Bel90.S.M.Bellovin and M.Merritt,Limitations of the Kerberos Authentication System,Computer Communications Review 20(5),pp.119-132(October 1990).John T.Kohl,B.Clifford Neuman,Theodore Y.Tso,“The Evolution of the Kerberos Authentication Service”,Proceedings of the Spring 1991 EurOpen ConferenceB.Clifford Neuman and Theodore Tso,“Kerberos:An Authentication Service for Computer Networks”,IEEE Communications Magazine,Volume 32,Number 9,pages 33-38,September 1994.David Chappel,“Exploring Kerberos,the Protocol for distributed security in Windows 2000”,Microsoft systems Journal,Aug.1999Web站点http:/web.mit.edu/kerberos/www/,