SecCourse-04安全基础(一)_第1页
SecCourse-04安全基础(一)_第2页
SecCourse-04安全基础(一)_第3页
SecCourse-04安全基础(一)_第4页
SecCourse-04安全基础(一)_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、潘爱民,北京大学计算机研究所潘爱民,北京大学计算机研究所u关于认证协议关于认证协议uWindows平台的认证协议平台的认证协议uHTTP认证协议认证协议u与身份认证相关的研究工作介绍与身份认证相关的研究工作介绍u保密性Confidentialityu完整性Integrity系统完整性数据完整性u可用性Availabilityu真实性 authenticity认证消息认证身份认证:验证真实身份和所声称身份相符的过程uu基于对称密码算法的认证方案基于对称密码算法的认证方案是否需要密钥分发中心是否需要密钥分发中心(KDC)?对于协议的攻击手法对于协议的攻击手法认证的对象认证的对象消息发送方消息发送方

2、消息本身消息本身u基于公钥密码算法的认证方案基于公钥密码算法的认证方案公钥和身份的绑定公钥和身份的绑定u消息认证消息认证MAC码或者码或者HMAC码码前提:存在共享密钥前提:存在共享密钥密钥管理中心密钥管理中心或者用一个密钥交换协议或者用一个密钥交换协议u身份认证身份认证依据依据所知:口令、密钥,等所知:口令、密钥,等所有:身份证、智能卡,等所有:身份证、智能卡,等物理标识:指纹、笔迹、物理标识:指纹、笔迹、DNA,等等基于口令基于口令证明是否知道口令证明是否知道口令口令的强度口令的强度双向和单向认证双向和单向认证目的:分发密钥、签名有效性,目的:分发密钥、签名有效性,u两方通讯两方通讯一方发

3、起通讯,另一方应答一方发起通讯,另一方应答双向和单向认证双向和单向认证u有第三方介入的认证有第三方介入的认证第三方为可信任方,第三方为可信任方,KDCu在线和离线在线和离线u其他情形其他情形多方认证多方认证跨域认证跨域认证委托认证模型、信任模型委托认证模型、信任模型u本地多用户认证本地多用户认证Login:如何管理口令如何管理口令u远程用户认证远程用户认证一次性一次性访问资源或者服务之前进行认证访问资源或者服务之前进行认证多次访问资源或者服务多次访问资源或者服务身份,获得身份,获得credential利用利用credential访问资源或者服务访问资源或者服务uTelnet远程登录远程登录逐个

4、字母发送,明文方式逐个字母发送,明文方式uPOP3邮件登录邮件登录uFtp服务服务uu假设假设A和和B要进行通讯,要进行通讯,A和和B有一个共享的密有一个共享的密钥钥Kab,如何利用这个密钥进行认证,并且商定如何利用这个密钥进行认证,并且商定一个会话密钥一个会话密钥Ks1 AB: (IDA|N1)2 BA: EKabKs,IDB,f(N1),N2)3 AB: EKsf(N2) 这里的这里的f函数为某个确定的运算,比如函数为某个确定的运算,比如f(x)=x+1AKabB我是A告诉你Ks,以后就用它,别让别人知道好的,我用它试试,可我怎么知道你是B呢如果你知道Kab,那么你就知道Ks,我就知道你是

5、Au假设假设A和和B要进行通讯,要进行通讯,A和和B与与KDC各有一个共享密钥各有一个共享密钥Ka和和Kb, 如何利用这两个密钥进行认证,并且商定一个如何利用这两个密钥进行认证,并且商定一个会话密钥会话密钥KsAKDC: (IDA|IDB|N1)KDCA: EKaKs|IDB|N1|EKb(Ks,IDA)AB: EKb(Ks,IDA)|EKs(M)AKbB我是A,我想和B通讯KDCKa我把必要的信息告诉你我把消息给你,如果你是B,你就可以解开会话密钥Ks,由A送给B的认证信息u中间人攻击中间人攻击(MITM, man in the middle)ABEu如果通讯双方没有任何先决条件,那么这种攻

6、如果通讯双方没有任何先决条件,那么这种攻击总是存在的击总是存在的uA和和B的协商过程很容易受到这一类攻击的协商过程很容易受到这一类攻击u对策:对策:u增加增加A和和B之间的先决知识之间的先决知识u重放攻击重放攻击(replay attacks)ABEu偷听者可以记录下当前的通讯流量,以后在适当的时候偷听者可以记录下当前的通讯流量,以后在适当的时候重发给通讯的某一方,达到欺骗的目的重发给通讯的某一方,达到欺骗的目的u对策:对策:unonceu保证通讯的唯一性保证通讯的唯一性u增加时间戳增加时间戳u字典攻击字典攻击只要能够获得口令的密文形式,就可以实施只要能够获得口令的密文形式,就可以实施字典攻击

7、字典攻击在线和离线在线和离线字典攻击的有效性字典攻击的有效性判断一个口令是有效的判断一个口令是有效的u对策对策用户和管理员:选择好的口令用户和管理员:选择好的口令协议设计:对口令的使用过程中,不要泄露协议设计:对口令的使用过程中,不要泄露口令的信息口令的信息在密文中增加口令以外的额外信息在密文中增加口令以外的额外信息u已知明文攻击已知明文攻击在许多认证协议中,一方会选择一个随机数,并且明在许多认证协议中,一方会选择一个随机数,并且明文传输这个随机数,另一方加密这个随机数,并送回文传输这个随机数,另一方加密这个随机数,并送回来来Challenge/Response,所以偷听者可以获得已知明文所以

8、偷听者可以获得已知明文/密文对密文对对策:对策:避免传输明文避免传输明文/密文对密文对增加已知明文攻击的难度增加已知明文攻击的难度u选择明文攻击选择明文攻击在认证协议中,如果随机数的选择没有任何规则,那在认证协议中,如果随机数的选择没有任何规则,那么中间人或者假冒方就有可能选择随机数,从而实施么中间人或者假冒方就有可能选择随机数,从而实施选择明文攻击选择明文攻击对策对策随机数的选择限制随机数的选择限制u时间戳时间戳A收到一个消息,根据消息中的时间戳信息,收到一个消息,根据消息中的时间戳信息,判断消息的有效性判断消息的有效性如果消息的时间戳与如果消息的时间戳与A所知道的当前时间足够接近所知道的当

9、前时间足够接近这种方法要求不同参与者之间的时钟需要同步这种方法要求不同参与者之间的时钟需要同步在网络环境中,特别是在分布式网络环境中,时钟在网络环境中,特别是在分布式网络环境中,时钟同步并不容易做到同步并不容易做到一旦时钟同步失败一旦时钟同步失败要么协议不能正常服务,影响可用性要么协议不能正常服务,影响可用性(availability),造成拒绝服务造成拒绝服务(DOS)要么放大时钟窗口,造成攻击的机会要么放大时钟窗口,造成攻击的机会时间窗大小的选择应根据消息的时效性来确定时间窗大小的选择应根据消息的时效性来确定u询问询问/应答方式应答方式(Challenge/Response)A期望从期望从

10、B获得一个条件获得一个条件首先发给首先发给B一个随机值一个随机值(challenge)B收到这个值之后,对它作某种变换,得到收到这个值之后,对它作某种变换,得到response,并送回去并送回去A收到这个收到这个response,可以验证可以验证B符合这个条件符合这个条件在有的协议中,这个在有的协议中,这个challenge也称为也称为nonce可能明文传输,也可能密文传输可能明文传输,也可能密文传输这个条件可以是知道某个口令,也可能是其这个条件可以是知道某个口令,也可能是其他的事情他的事情变换例子:用密钥加密,说明变换例子:用密钥加密,说明B知道这个密钥知道这个密钥;简单运算,比如增一,说明

11、简单运算,比如增一,说明B知道这个随机值知道这个随机值常用于交互式的认证协议中常用于交互式的认证协议中u1 A BIDA|Nau2 B KDC IDB|Nb | EKbIDA | Na | Tbu3 KDC A EKaIDB|Na |Ks| Tb | EKbIDA | Ks | Tb | Nbu4 A B EKbIDA | Ks | Tb | EKs Nb ABKDC4231uEKbIDA | Ks | Tb相当于一个相当于一个ticketu如果如果A要再次访问要再次访问B,可以不再通过可以不再通过KDCA B:EKbIDA | Ks | Tb | NaB检查检查ticket是否在有效时间,若

12、是,则是否在有效时间,若是,则B A:Nb |EKsNa A B:EKsNbABKDC213uLanManager认证认证(称为称为LM协议协议)早期版本早期版本uNTLM v1 认证协议认证协议NT 4.0 SP3之前的版本之前的版本uNTLM v2 认证协议认证协议NT 4.0 SP4开始支持开始支持uKerberos v5认证协议认证协议Windows 2000引进引进安全性加强u可以用于共享级认证可以用于共享级认证uWindows 9x/NT都支持都支持u由由IBM开发开发u从口令从口令hash值值口令变成大写口令变成大写把口令变成把口令变成14个字符,或者截断、或者补空字符个字符,或

13、者截断、或者补空字符这这14个字符分成两个个字符分成两个7字符字符用用7个字符和个字符和DES算法加密一个算法加密一个“magic ”64位位把两个把两个64位结果拼起来,得到位结果拼起来,得到128位值位值服务器保存该服务器保存该128位值,作为位值,作为“hashed password”u缺陷缺陷如果口令长度在如果口令长度在8-13位之间,则后面的位之间,则后面的7字符先破解字符先破解,对前,对前7个字符的破解可以提供某些信息个字符的破解可以提供某些信息u建议:使用建议:使用7位或者位或者14位口令位口令u从口令变成从口令变成hash值值把口令变成把口令变成Unicode编码编码使用使用M

14、D4散列算法散列算法得到得到128位散列值位散列值u一种更好的方法是在口令上添加一些附加的信息,一种更好的方法是在口令上添加一些附加的信息,这样可以增加破解的难度这样可以增加破解的难度Hash之前增加附加信息之前增加附加信息UNIX的的crypt使用了附加信息使用了附加信息u黑客工具黑客工具L0phtcrack下载:下载:使用注意事项使用注意事项u在一台高端在一台高端PC机机(4个个CPU)上强行破解上强行破解5.5小时内破解字母小时内破解字母-数字口令数字口令45小时破解字母小时破解字母-数字数字-部分符号口令部分符号口令480小时破解字母小时破解字母-数字数字-全部符号口令全部符号口令uc

15、rypt()是一个口令加密函数,它基于是一个口令加密函数,它基于DESDES算法。我们可算法。我们可以认为这是一个单向加密操作以认为这是一个单向加密操作u函数原型:函数原型:char *crypt(const char *key, const char *salt);*salt是两个字符,每个字符可从是两个字符,每个字符可从a-zA-Z0-9./中选出来中选出来u算法算法UNIX标准算法使用标准算法使用DES加密算法,用加密算法,用key对一个常量进行加密对一个常量进行加密,获得一个,获得一个13字节的密文编码输出,其中包括字节的密文编码输出,其中包括salt的两个字符的两个字符from Re

16、d Hat Linux 6.2uSalt的作用的作用同样的口令产生不同的密文同样的口令产生不同的密文增加了穷举空间增加了穷举空间?u建议使用更为安全的建议使用更为安全的MD5算法算法u用户在客户机上,提供域名、用户名和口令。系统计算用户在客户机上,提供域名、用户名和口令。系统计算口令的口令的hash值,然后把口令丢掉值,然后把口令丢掉u客户把用户名以明文方式发送给服务器客户把用户名以明文方式发送给服务器u服务器产生一个服务器产生一个128位随机数位随机数(challenge或者或者nonce),发送给客户发送给客户u客户用口令的客户用口令的hash值作为密钥,加密随机数,并把结果值作为密钥,加

17、密随机数,并把结果送回给服务器。这是应答送回给服务器。这是应答(response)u服务器把以下信息送给域控制器服务器把以下信息送给域控制器(DC):用户名、用户名、challenge和和responseu域控制器利用用户名从域控制器利用用户名从SAM(Security Account Manager)数据库得到用户口令的数据库得到用户口令的hash值,并用此值加值,并用此值加密密challengeu域控制器比较它自己算出来的域控制器比较它自己算出来的challenge密文和客户算密文和客户算出来的出来的challenge密文。如果相等的话,认证成功密文。如果相等的话,认证成功uC-S Req

18、Chal,Cc S-C Cs uC、S计算会话密钥计算会话密钥 Ks = E(PW9.15,E(PW0.6,Add(Cc,Cs) uC: Rc = Cred(Ks,Cc) C: Rc = Cred(Ks,Cc) C-S Authenticate, RcC-S Authenticate, RcuS: assert(Rc = Cred(Ks,Cc) S: assert(Rc = Cred(Ks,Cc) Rs = Cred(Ks,Cs), Rs = Cred(Ks,Cs), S-C Rs S-C Rs C: assert(Rs = Cred(Ks,Cs)C: assert(Rs = Cred(Ks,

19、Cs)From From NT Domain AuthenticationuKerberos是一个经过长期考验的认证协是一个经过长期考验的认证协议议uKerberos替代替代NTLM的原因的原因功能功能委托机制委托机制可传递的信任关系可传递的信任关系效率方面效率方面服务器不需要每次都与域控制器联系服务器不需要每次都与域控制器联系标准化标准化uWeb应用的认证机制应用的认证机制HTTP本身支持的认证协议本身支持的认证协议SSL协议协议uHTTP/1.1规范规范Basic AuthenticationDigest Access Authenticationu基本思想:基本思想:challenge-

20、response机制,服务器机制,服务器询问客户,客户提供认证信息询问客户,客户提供认证信息指明指明authentication schemeu基本过程基本过程当客户请求一个被保护的资源的时候,服务器返回当客户请求一个被保护的资源的时候,服务器返回401(Unauthorized)应答消息应答消息应答头中包含一个域应答头中包含一个域然后开始认证过程然后开始认证过程最后,如果服务器不能接受客户的最后,如果服务器不能接受客户的credential,则应则应该返回一个该返回一个401消息,继续下一轮的认证消息,继续下一轮的认证u说明说明Proxy在中间必须是透明的在中间必须是透明的u一些消息类型一些

21、消息类型认证方案:认证方案: auth-scheme = tokenauth-scheme = token auth-param = token = ( token | quoted-string ) 询问:询问: challenge = auth-scheme 1*SP 1#auth-param提供范围信息提供范围信息( (域域) ) realm = realm = realm-valuerealm = realm = realm-value realm-value = quoted-string 客户提供认证信息客户提供认证信息 credentials = auth-scheme #aut

22、h-param u认证的思想:对于每一个域认证的思想:对于每一个域(realm),客户客户都需要提供一个用户都需要提供一个用户-ID和口令和口令服务器检查用户服务器检查用户-ID和口令和口令u消息消息challenge = “Basic” realmcredential = “Basic” basic-credentialsu过程过程服务器发出服务器发出challenge,例如例如: Basic realm=“xxx(URI) 客户收到之后,发送应答客户收到之后,发送应答basic-credentials = base64-user-passbase64-user-pass = user-pa

23、ss = userid : passworduserid = *password = *TEXT例如,如果用户例如,如果用户id为为aladdin,口令为口令为“open sesame”,则消息如下则消息如下Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ= u特点:特点:转换到字符集,而不是字符集的编码转换到字符集,而不是字符集的编码目标字符集包括目标字符集包括65个可打印字符,其中一个个可打印字符,其中一个用于用于padding,其他的可用其他的可用6位表达位表达不包括控制字符,所以不怕传输过程中被滤不包括控制字符,所以不怕传输过程中被滤掉掉没

24、有使用没有使用“-”字符,避免与字符,避免与RFC 822冲突冲突u转换:转换:3个个8位位=24位位4个个6位,每个位,每个6位转换到位转换到一个字符,最终得到一个字符,最终得到4个字符,如果用个字符,如果用ASC码码来表达,则为来表达,则为4个字节个字节u编码时,按编码时,按2424位进行处理,到最后可能出位进行处理,到最后可能出现三种情况:现三种情况:最后一组正好是最后一组正好是2424位,则无需特殊处理位,则无需特殊处理最后一组是最后一组是1616位,则前两个位,则前两个6 6位组按正常情形位组按正常情形处理,剩下的处理,剩下的4 4位补上两位位补上两位0 0,当作一组编码,当作一组编

25、码,然后再补上一个,然后再补上一个= =最后一组是最后一组是8 8位,则第一个位,则第一个6 6位组正常处理,位组正常处理,剩下剩下2 2位补上位补上4 4位位0 0,当作一组编码,然后,再,当作一组编码,然后,再补上两个补上两个= =作为输出。作为输出。u仍然基于一个简单的仍然基于一个简单的challenge-response结构结构u但是它用一个但是它用一个nonce值作为值作为challengeu应答是一个应答是一个hash值值(缺省缺省MD5算法算法),包括,包括用户名、口令、用户名、口令、nonce值、值、HTTP方法、以及被请求的方法、以及被请求的URIu好处好处口令不在网上传输口

26、令不在网上传输uHash值的编码值的编码HEX编码编码每四位变成对应的每四位变成对应的16进制字符进制字符u口令的初始分发没有规定口令的初始分发没有规定 challenge = Digest digest-challengechallenge = Digest digest-challenge digest-challenge = 1#( realm | domain | nonce | digest-challenge = 1#( realm | domain | nonce | opaque | stale | algorithm | opaque | stale | algorithm

27、| qop-options | auth-param ) qop-options | auth-param ) domain = domain = URI ( 1 domain = domain = URI ( 1* *SP URI ) SP URI ) URI = absoluteURI | abs_path URI = absoluteURI | abs_path nonce = nonce = nonce-value nonce = nonce = nonce-value nonce-value = quoted-string nonce-value = quoted-string op

28、aque = opaque = quoted-string opaque = opaque = quoted-string stale = stale = ( true | false ) stale = stale = ( true | false ) algorithm = algorithm = ( MD5 | MD5-sess | algorithm = algorithm = ( MD5 | MD5-sess | token ) token ) qop-options = qop = 1#qop-value qop-options = qop = 1#qop-value qop-va

29、lue = auth | auth-int | token qop-value = auth | auth-int | token credentials = Digest digest-responsecredentials = Digest digest-response digest-response = 1#( username | realm | nonce | digest-uri digest-response = 1#( username | realm | nonce | digest-uri | response | algorithm | cnonce | | respo

30、nse | algorithm | cnonce | opaque | message-qop | opaque | message-qop | nonce-count | auth-param ) nonce-count | auth-param ) username = username = username-value username = username = username-value username-value = quoted-string username-value = quoted-string digest-uri = uri = digest-uri-value d

31、igest-uri = uri = digest-uri-value digest-uri-value = request-uri ; As specified by HTTP/1.1 digest-uri-value = request-uri ; As specified by HTTP/1.1 message-qop = qop = qop-value message-qop = qop = qop-value cnonce = cnonce = cnonce-value cnonce = cnonce = cnonce-value cnonce-value = nonce-value

32、cnonce-value = nonce-value nonce-count = nc = nc-value nonce-count = nc = nc-value nc-value = 8LHEX nc-value = 8LHEX response = response = request-digest response = response = request-digest request-digest = 32LHEX request-digest = 32LHEX LHEX = 0 | 1 | 2 | 3 | LHEX = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |

33、 4 | 5 | 6 | 7 | 8 | 9 | a | b | 8 | 9 | a | b | c | d | e | f c | d | e | f AuthenticationInfo = Authentication-Info : auth-infoAuthenticationInfo = Authentication-Info : auth-info auth-info = 1#(nextnonce | message-qop auth-info = 1#(nextnonce | message-qop | response-auth | cnonce | response-auth

34、 | cnonce | nonce-count ) | nonce-count ) nextnonce = nextnonce = nonce-value nextnonce = nextnonce = nonce-value response-auth = rspauth = response-digest response-auth = rspauth = response-digest response-digest = response-digest = * *LHEX LHEX u可用于双向认证可用于双向认证u客户请求一个文档,没有包含客户请求一个文档,没有包含Authorizati

35、on头,则服务头,则服务器响应器响应 HTTP/1.1 401 UnauthorizedHTTP/1.1 401 Unauthorized : Digest : Digest realm=testreal, realm=testreal, qop=auth,auth-int, qop=auth,auth-int, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, opaque=5ccc069c403ebaf9f0171e9517f40e41 opaque=5ccc069c403

36、ebaf9f0171e9517f40e41u然后客户提示用户输入用户名和口令,并生成一个新的请求,其中然后客户提示用户输入用户名和口令,并生成一个新的请求,其中包含包含Authorization头头 Authorization: Digest username=Mufasa,Authorization: Digest username=Mufasa, realm=testreal, realm=testreal, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, uri=/di

37、r/index.html, uri=/dir/index.html, qop=auth, qop=auth, nc=00000001, nc=00000001, cnonce=0a4f113b, cnonce=0a4f113b, response=6629fae49393a507c4ef1, response=6629fae49393a507c4ef1, opaque=5ccc069c403ebaf9f0171e9517f40e41 uBasic Authentication,最严重的问题最严重的问题口令不加密传输口令不加密传输如果允许用户选择口令,则会波及到其他的系统如果允许用户选择口令,则会波及到其他的系统碰到假冒的服务器碰到假冒的服务器uDigest Authentication安全性不如基于公钥的机制安全性不如基于公钥的机制总比没有好总比没有好安全性强于安全性强于Basic authentication不提供保密性不提供保密性一定程度的完整性一定程度的完整性u重放攻击重放攻击重放攻击是否有意义重放攻击是否有意义因为因为digest中包含了中包含了URI的信息的信息只对当前文档只对当前文档有效有效利用利用ip地址、时间信息、地址、时间信息、nonce、etag信息等可信息等可以减弱重放攻击的危害性以减弱重放

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论