您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 《第05讲-认证协议.ppt》
网络与信息安全安全基础(一)潘爱民,北京大学计算机研究所内容关于认证协议Windows平台的认证协议HTTP认证协议与身份认证相关的研究工作介绍安全层次安全的密码算法安全协议网络安全系统安全应用安全回顾:信息安全的需求保密性Confidentiality完整性Integrity系统完整性数据完整性可用性Availability真实性authenticity认证消息认证身份认证:验证真实身份和所声称身份相符的过程……认证协议基于对称密码算法的认证方案是否需要密钥分发中心(KDC)?对于协议的攻击手法认证的对象消息发送方消息本身基于公钥密码算法的认证方案公钥和身份的绑定基于对称密码算法的认证消息认证MAC码或者HMAC码前提:存在共享密钥密钥管理中心或者用一个密钥交换协议身份认证依据所知:口令、密钥,等所有:身份证、智能卡,等物理标识:指纹、笔迹、DNA,等基于口令证明是否知道口令口令的强度双向和单向认证目的:分发密钥、签名有效性,……通讯方式两方通讯一方发起通讯,另一方应答双向和单向认证有第三方介入的认证第三方为可信任方,KDC在线和离线其他情形多方认证跨域认证委托认证模型、信任模型……为什么需要认证协议本地多用户认证Login:如何管理口令远程用户认证一次性访问资源或者服务之前进行认证多次访问资源或者服务身份,获得credential利用credential访问资源或者服务认证例子:263的邮件登录认证例子:sina的邮件登录Client与Proxy-Server之间的认证Client与Proxy-Server之间认证(续)基于口令的认证+明文传输!!!Telnet远程登录逐个字母发送,明文方式POP3邮件登录Ftp服务……认证协议:设计一个协议(一)假设A和B要进行通讯,A和B有一个共享的密钥Kab,如何利用这个密钥进行认证,并且商定一个会话密钥Ks1AB:(IDA||N1)2BA:EKab[Ks,IDB,f(N1),N2)]3AB:EKs[f(N2)]这里的f函数为某个确定的运算,比如f(x)=x+1AKabB我是A告诉你Ks,以后就用它,别让别人知道好的,我用它试试,可我怎么知道你是B呢如果你知道Kab,那么你就知道Ks,我就知道你是A认证协议:设计一个协议(二)假设A和B要进行通讯,A和B与KDC各有一个共享密钥Ka和Kb,如何利用这两个密钥进行认证,并且商定一个会话密钥KsAKDC:(IDA||IDB||N1)KDCA:EKa[Ks||IDB||N1||EKb(Ks,IDA)]AB:EKb(Ks,IDA)||EKs(M)AKbB我是A,我想和B通讯KDCKa我把必要的信息告诉你我把消息给你,如果你是B,你就可以解开会话密钥Ks,由A送给B的认证信息针对认证协议的一些常见攻击手段和相应对策中间人攻击(MITM,maninthemiddle)ABE如果通讯双方没有任何先决条件,那么这种攻击总是存在的A和B的协商过程很容易受到这一类攻击对策:增加A和B之间的先决知识常见攻击和对策(二)重放攻击(replayattacks)ABE偷听者可以记录下当前的通讯流量,以后在适当的时候重发给通讯的某一方,达到欺骗的目的对策:nonce保证通讯的唯一性增加时间戳常见攻击和对策(三)字典攻击只要能够获得口令的密文形式,就可以实施字典攻击在线和离线字典攻击的有效性判断一个口令是有效的对策用户和管理员:选择好的口令协议设计:对口令的使用过程中,不要泄露口令的信息在密文中增加口令以外的额外信息常见攻击和对策(四)已知明文攻击在许多认证协议中,一方会选择一个随机数,并且明文传输这个随机数,另一方加密这个随机数,并送回来——Challenge/Response,所以偷听者可以获得已知明文/密文对对策:避免传输明文/密文对增加已知明文攻击的难度选择明文攻击在认证协议中,如果随机数的选择没有任何规则,那么中间人或者假冒方就有可能选择随机数,从而实施选择明文攻击对策随机数的选择限制认证协议中的常用技术(一)时间戳A收到一个消息,根据消息中的时间戳信息,判断消息的有效性如果消息的时间戳与A所知道的当前时间足够接近这种方法要求不同参与者之间的时钟需要同步在网络环境中,特别是在分布式网络环境中,时钟同步并不容易做到一旦时钟同步失败要么协议不能正常服务,影响可用性(availability),造成拒绝服务(DOS)要么放大时钟窗口,造成攻击的机会时间窗大小的选择应根据消息的时效性来确定认证协议中的常见技术(二)询问/应答方式(Challenge/Response)A期望从B获得一个条件首先发给B一个随机值(challenge)B收到这个值之后,对它作某种变换,得到response,并送回去A收到这个response,可以验证B符合这个条件在有的协议中,这个challenge也称为nonce可能明文传输,也可能密文传输这个条件可以是知道某个口令,也可能是其他的事情变换例子:用密钥加密,说明B知道这个密钥;简单运算,比如增一,说明B知道这个随机值常用于交互式的认证协议中分析一个协议:Kehn921A→BIDA||Na2B→KDCIDB||Nb||EKb[IDA||Na||Tb]3KDC→AEKa[IDB||Na||Ks||Tb]||EKb[IDA||Ks||Tb]||Nb4A→BEKb[IDA||Ks||Tb]||EKs[Nb]ABKDC4231关于Kehn92协议EKb[IDA||Ks||Tb]相当于一个ticket如果A要再次访问B,可以不再通过KDCA→B:EKb[IDA||Ks||Tb]||Na’B检查ticket是否在有效时间,若是,则B→A:Nb||EKs[Na]A→B:EKs[Nb’]ABKDC213Windows采用的认证方案LanManager认证(称为LM协议)早期版本NTLMv1认证协议NT4.0SP3之前的版本NTLMv2认证协议NT4.0SP4开始支持Kerberosv5认证协议Windows2000引进安全性加强LanMan认证方案可以用于共享级认证Windows9x/NT都支持由IBM开发LanMan的口令加密方案从口令——〉hash值口令变成大写把口令变成14个字符,或者截断、或者补空字符这14个字符分成两个7字符用7个字符和DES算法加密一个“magic”64位把两个64位结果拼起来,得到128位值服务器保存该128位值,作为“hashedpassword”缺陷如果口令长度在8-13位之间,则后面的7字符先破解,对前7个字符的破解可以提供某些信息建议:使用7位或者14位口令NT的口令加密方案从口令变成hash值把口令变成Unicode编码使用MD4散列算法得到128位散列值一种更好的方法是在口令上添加一些附加的信息,这样可以增加破解的难度Hash之前增加附加信息UNIX的crypt使用了附加信息黑客工具L0phtcrack下载:使用注意事项NT口令破解的一个测试结果在一台高端PC机(4个CPU)上强行破解5.5小时内破解字母-数字口令45小时破解字母-数字-部分符号口令480小时破解字母-数字-全部符号口令插:UNIX中crypt口令加密方案crypt()是一个口令加密函数,它基于DES算法。我们可以认为这是一个单向加密操作函数原型:char*crypt(constchar*key,constchar*salt);*salt是两个字符,每个字符可从[a-zA-Z0-9./]中选出来算法UNIX标准算法使用DES加密算法,用key对一个常量进行加密,获得一个13字节的密文编码输出,其中包括salt的两个字符[fromRedHatLinux6.2]Salt的作用同样的口令产生不同的密文增加了穷举空间——?建议使用更为安全的MD5算法NTLM认证过程(fromMSDN)1.用户在客户机上,提供域名、用户名和口令。系统计算口令的hash值,然后把口令丢掉2.客户把用户名以明文方式发送给服务器3.服务器产生一个128位随机数(challenge或者nonce),发送给客户4.客户用口令的hash值作为密钥,加密随机数,并把结果送回给服务器。这是应答(response)5.服务器把以下信息送给域控制器(DC):用户名、challenge和response6.域控制器利用用户名从SAM(SecurityAccountManager)数据库得到用户口令的hash值,并用此值加密challenge7.域控制器比较它自己算出来的challenge密文和客户算出来的challenge密文。如果相等的话,认证成功NTWorkstation认证协议1.C-SReqChal,CcS-CCs2.C、S计算会话密钥Ks=E(PW[9..15],E(PW[0..6],Add(Cc,Cs)))3.C:Rc=Cred(Ks,Cc)C-SAuthenticate,Rc4.S:assert(Rc==Cred(Ks,Cc))Rs=Cred(Ks,Cs),S-CRsC:assert(Rs==Cred(Ks,Cs))FromNTDomainAuthenticationKerberos认证协议Kerberos是一个经过长期考验的认证协议Kerberos替代NTLM的原因功能委托机制可传递的信任关系效率方面服务器不需要每次都与域控制器联系标准化Kerberos概要认证协议实例分析:HTTP认证协议Web应用的认证机制HTTP本身支持的认证协议SSL协议HTTP/1.1规范BasicAuthenticationDigestAccessAuthentication认证框架基本思想:challenge-response机制,服务器询问客户,客户提供认证信息指明authenticationscheme基本过程当客户请求一个被保护的资源的时候,服务器返回401(Unauthorized)应答消息应答头中包含一个域然后开始认证过程最后,如果服务器不能接受客户的credential,则应该返回一个401消息,继续下一轮的认证说明Proxy在中间必须是透明的认证框架(续)一些消息类型认证方案:auth-scheme=tokenauth-param=token=(token|quoted-string)询问:challenge=auth-scheme1*SP1#auth-param提供范围信息(域)realm=realm=realm-valuerealm-value=quoted-string客户提供认证信息credentials=auth-scheme#auth-paramBasicAuthentication认证的思想:对于每一个域(realm),客户都需要提供一个用户-ID和口令服务器检查用户-ID和口令消息challenge=“Basic”realmcredential=“Basic”basic-credentialsBasicAuthentication(续)过程服务器发出challenge,例如=“xxx(URI)客户收到之后,发送应答basic-credentials=base64-user-passbase64-user-pass=base64[4]encodingofuser-pass,exceptnotlimitedto76char/lineuser-
本文标题:《第05讲-认证协议.ppt》
链接地址:https://www.777doc.com/doc-5610894 .html