SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt

上传人:scccc 文档编号:11374280 上传时间:2021-07-31 格式:PPT 页数:23 大小:2.20MB
返回 下载 相关 举报
SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt_第1页
第1页 / 共23页
SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt_第2页
第2页 / 共23页
SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt_第3页
第3页 / 共23页
SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt_第4页
第4页 / 共23页
SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt》由会员分享,可在线阅读,更多相关《SIP安全框架之认证NTLM和Kerberosbyzhengyu课件.ppt(23页珍藏版)》请在三一文库上搜索。

1、SIP安全框架之认证NTLM和Kerberosbyzhengyu,1,SIP安全框架认证,2005-05 应用开发事业部 神州泰岳,SIP安全框架之认证NTLM和Kerberosbyzhengyu,2,Agenda,SIP安全框架包含六个方面 认证(Authentication) 授权(Authorization) 机密性(Confidentiality) 完整性(Integrality) 隐私性(Privacy) 不可否认(Non-repudiation),SIP安全框架之认证NTLM和Kerberosbyzhengyu,3,SIP安全 认证,接近于RFC2617 的认证框架 HTTP Au

2、thentication Basic and Digest Access Authentication,两种认证情形: Registrar,Redirector: 对客户端的INVITE包回应以401 Unathorized; 客户端再次INVITE请求将附带Authentication头域 Proxy: 对客户端的INVITE包回应以 407 Proxy-Authentication Required; 客户端再次INVITE请求将附带Proxy-Authentication头域,SIP安全框架之认证NTLM和Kerberosbyzhengyu,4,SIP安全 认证,MS LCS Serve

3、r支持两种认证方式: Kerberos NTLM 可以配置LCS中某一个Pool 的“Authentication Scheme”; 然后重启LCS Service以启用,SIP安全框架之认证NTLM和Kerberosbyzhengyu,5,SIP安全 认证 NTLM,最初的LM: “LAN Manager Challenge/Response ”验证机制 简称LM,易被破解。两个最显著的弱点是: 1:明文密码在计算响应前被转换为了大写字母; 2:如果明文口令最多7字节,则第二部分LM Hash总是AA D3 B4 35 B5 14 04 EE,发送了一个8字节挑战50607,客户端使用源自明

4、文口令的LM Hash,再由此计算出三个DES Key,分别对8字节挑战进行加密。LM Hash的计算办法:1:密码转换为大写字母;2:密码被补零或者截断到14个字节;3:这个字符串被分为两个7字节数值;4:从这两个数值分别计算出两个DES key;5:这两个Key去加密魔术字符串“KGS!#$%” ,得到两个8字节的字符串;6:两个字符串合为一个16字节的“LM Hash”。最终获得一个24字节响应“CA1200723C41D577AB18C764C6DEF34FA61BFA0671EA5FC8”,发送给服务器。这就是所谓响应(分成三组,总共24字节)。,如果响应与服务器的计算结果匹配,服务

5、器认为客户机拥有正确的明文口令,客户端请求连接,SIP安全框架之认证NTLM和Kerberosbyzhengyu,6,SIP安全 认证 NTLM,NTLMv2: “Windows NT LAN Manager Challenge/Response Version 2” , 简称NTLMv2,增加了使用NTLM Hash加密挑战信息的步骤。密码作为了一个private key,只有拥有该密钥的人才能产生一个特定的散列值。,发送了一个8字节挑战0 x0123456789abcdef,1:客户端计算出一个由明文口令经过MD4算法加密的16字节结果NTLM password Hash。2:大写的用户名

6、拼上大写的域名或服务器名得到一个Unicode字符串,NTLM Hash作为key,经过HMAC-MD5算法加密得到NTLMv2 Hash;3:用NTLMv2 Hash 作为key,把8字节挑战信息(连接上blob值)经过HMAC-MD5加密得到16字节数值。4:此16字节数值连接上blob值后,作为NTLM Response。发送给服务器。,服务器端从SAM中取出Password Hash,经过相同计算,如果响应与计算结果匹配,服务器认为客户机拥有正确的明文密码散列值,客户端请求连接,SIP安全框架之认证NTLM和Kerberosbyzhengyu,7,SIP安全 认证 NTLM,SIP中的

7、NTLMv2认证交互演示,SIP/2.0 401 Unauthorized : NTLM realm=SIP Communications Service, targetname= CSeq: 1 REGISTER,REGISTER sip: SIP/2.0 CSeq: 2 REGISTER Authorization: NTLM qop=auth, realm=SIP Communications Service, targetname=, gssapi-data=“ 注意: gssapi-data是空的,SIP/2.0 401 Unauthorized: NTLM opaque=8CE21

8、B68, gssapi-data=TlRMTVNTUAACAAAAAAAAADgAAADzgpjif4njfAJY.“, targetname=, realm=SIP Communications Service CSeq: 2 REGISTER服务器发送一个挑战,REGISTER sip: SIP/2.0 CSeq: 1 REGISTER,REGISTER sip: SIP/2.0 CSeq: 3 REGISTER Authorization: NTLM qop=auth, opaque=“8CE21B68”, realm=SIP Communications Service, target

9、name=, gssapi-data=“TlRMTVNTUAADAAAAGAAYAG4AAAAYABg .“客户端计算出响应,SIP/2.0 200 OK Authentication-Info: NTLM rspauth=000000296F864AAD9BD5F, srand=A10D3F20, snum=1, opaque=8CE21B68, qop=auth, targetname=, realm=SIP Communications Service CSeq: 3 REGISTER 服务器确认,SIP安全框架之认证NTLM和Kerberosbyzhengyu,8,SIP安全 认证 N

10、TLM,What is GSSAPI? GSSAPI,“Generic Security Service Application Programming Interface ”,由RFC 1508和1509定义。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,9,SIP安全 认证 NTLM,GSSAPI的MS实现版本: “Microsoft Security Support Provider Interface” 简称SSPI。 SSPI的接口分为三类: 1:Credential-management interfaces ,提供对凭证的访问: AcquireCredent

11、ialsHandle 获取引用凭证的句柄 FreeCredentialsHandle 销毁凭证句柄以及其他资源 2:Context-management interfaces ,提供方法创建或使用安全上下文: InitializeSecurityContext 通过生成一个opaque message (security token) 初始化安全上下文 DeleteSecurityContext 销毁安全上下文以及其他资源 3:Message-support interfaces :MakeSignature -基于消息和安全上下文,生成一个安全签名,SIP安全框架之认证NTLM和Kerber

12、osbyzhengyu,10,Windows中用SSPI实现的NTLM,SIP安全 认证 NTLM,SIP安全框架之认证NTLM和Kerberosbyzhengyu,11,SIP安全 认证 NTLM,我们描述一下收到服务器端发送的gssapi-data后, 客户端的开发流程:,从服务器端的SIP响应包中解析出以下四个数值: 1:realm 2: targetname 3: opaque 4: gssapi-data,targetname,MultiByteToWideChar,targetname Unicode字符串,gssapi-data,Base64:b64ToBinary,gssapi

13、-data二进制数据流,调用InitSecurityInterface得到一个指向SSPI dispatch table的指针m_pFuncs;调用SSPI的QuerySecurityPackageInfo接口方法得到安全包信息,SIP安全框架之认证NTLM和Kerberosbyzhengyu,12,SIP安全 认证 NTLM,续:,将gssapi-data二进制流填充入SecBufferDesc缓冲区中,调用SSPI的DeleteSecurityContext来销毁本地和安全上下文有关的数据结构,调用SSPI的InitializeSecurityContext接口方法,将上面填充好的SecB

14、ufferDesc缓冲区作为第7个参数,InitializeSecurityContext接口方法的第10个参数是一个输出参数,类型为SecBufferDesc,就是要发送回服务器的Challenge Response,SIP安全框架之认证NTLM和Kerberosbyzhengyu,13,SIP安全 认证 NTLM,opaque的含义:provider-specific authentication tokens 这是一个不透明的(不让外人知道其意义)数据字符串,在挑战中发送给用户。在响应中,客户端会将这个数据字符串发送回给服务器。这使得服务器可以是无状态的。如果需要在挑战和响应之间维护一些

15、状态,可以用这个参数传送状态给客户端,此后当响应回来时,再读这个状态。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,14,SIP安全 认证 NTLM,realm的含义: 与标准URL(相对于被访问服务器root)联合使用的realm值用来定义保护区域。 realm使得服务器上的被保护资源被放在特殊的保护分区内,这些区域都有各自的授权方案和(或)授权数据库。 relm值是个字符串,通常由原始服务器来分配 realm参数是强制的,在所有的挑战中都必须有。 在SIP实际应用中,它通常设置为SIP代理服务器所负责的域名。realm字串必须是全局唯一的。这个realm字串必须包含一

16、个主机名或者域名,遵循RFC3261 3.2.1节或者RFC261717的推荐。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,15,SIP安全 认证 Kerberos,What is Kerberos?,冥王的三个头的看门狗?!,Kerberos version 5 By MIT RFC 1510 ,The Kerberos Network Authentication Service (V5) Kerberos提供了在开放型网络中进行身份认证的方法,认证实体可以是用户或用户服务。这种认证不依赖宿主机的操作系统或主机的IP地址,不需要保证网络上所有主机的物理安全性,并且假

17、定数据包在传输中可被随机窃取篡改。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,16,SIP安全 认证 Kerberos,Windows Kerberos,1:输入密码之后,发送凭证,2:根据用户输入的域名,查找域控制器,3:为user A申请票据,4:验证user A,5:通过KDC的用户密码认证,返回TGT,6:使用TGT 为userA申请服务票据,7:发布一个服务票据,TGT(Ticket Granting Ticket)。用户证明自己身份的Ticket,TGT,票据,票据,8:携带服务票据访问其他服务,SIP安全框架之认证NTLM和Kerberosbyzhengy

18、u,17,SIP安全 认证 Kerberos,KDC的含义:Key Distribution Center,密钥发放中心,通常将AS和TGS统称为KDC,有时也把AS 单独称为KDC。 认证服务器, AS Authentication Server ,为用户分发TGT(Ticket Granting Ticket)的服务器。 票据授权服务器, TGS Ticket Granting Server ,为用户分发到最终目的Ticket的服务器,用户使用这个Ticket向自己要求提供服务的服务器证明自己的身份。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,18,SIP安全 认证

19、 Kerberos,Ticket的含义:一个Ticket是一个用于安全的传递用户身份所需要的信息的集合。 它不仅包含该用户的身份,而且包含其它一些相关的信息。 一般来说,它主要包括客户方Principal,目的服务方Principal,客户方IP地址,时间戳(分发该Ticket的时间),该Ticket的生存期,以及会话密钥等内容。它的格式亦用ASN.1来准确定义。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,19,SIP安全 认证 Kerberos,TGT的含义:TGT(Ticket Granting Ticket)。用户向TGS(Ticket Granting Serv

20、er)证明自己身份的Ticket。 User A发起的TGT 请求中包含了发出请求客户的使用者名称,但是不包括密码(共享的秘密)。 AS发布的TGT 包含一个纯文件部分和一个密码文件(加密的)部分。为了加密 TGT 的密码部分,AS 使用了由使用者的密码产生的加密密钥。因此,只有知道密码的使用者才能解开加密的部分。TGT 的加密部分还包含一个加密密钥,称为 对话密钥。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,20,SIP安全 认证 Kerberos,服务票据和TGT: 获得初始票据(TGT)的主要目的是在以后用它得到一个或者多个服务票据。这就是为什么初始票据被称为 票

21、据授予票据(TGT)。 服务票据是用于client与特定服务器之间的安全通信的一种手段。 TGT却并不是针对任何特定的服务器的。因此,TGT 逻辑上等于一个开放连接,它的一端是client ,而另一端是未知的。当对一个 TGT 产生一个服务票据时,另一端也就确定了。同一个 TGT 可以用于获得任意数量的服务票据。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,21,SIP安全 认证 Kerberos,Credential的含义:Ticket和与它相联系的会话密钥合在一起称为Credential。 之所以有这个概念是因为它们是客户端在向服务器证明自己的身份时必需的两样东西 在

22、一个Ticket的生存期内客户端会将这两样东西以Credential为单位保存在一个Cache文件中。,SIP安全框架之认证NTLM和Kerberosbyzhengyu,22,SIP安全 认证 Kerberos,SIP中的Kerberos认证交互演示,SIP/2.0 401 Unauthorized : Kerberos realm=SIP Communications Service, targetname=“sip/ CSeq: 1 REGISTER,REGISTER sip: SIP/2.0 CSeq: 2 REGISTER Authorization: Kerberos qop=aut

23、h, realm=SIP Communications Service, targetname=“sip/, gssapi-data=“YIIE.“,REGISTER sip: SIP/2.0 CSeq: 1 REGISTER,SIP/2.0 200 OK Authentication-Info: Kerberos rspauth=“602306., srand=“DB34., snum=1, opaque=“489F549D, qop=auth, targetname=“sip/, realm=SIP Communications Service CSeq: 2 REGISTER 服务器确认,SIP安全框架之认证NTLM和Kerberosbyzhengyu,23,我们为客户交付IT运营能力,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1