nullSIP安全框架
认证SIP安全框架
认证郑 昀
2005-05
应用开发事业部
神州泰岳
http://www.ultrapower.com.cnAgendaAgendaSIP安全框架包含六个方面
认证(Authentication)
授权(Authorization)
机密性(Confidentiality)
完整性(Integrality)
隐私性(Privacy)
不可否认(Non-repudiation)SIP安全 – 认证SIP安全 – 认证接近于RFC2617 的认证框架
HTTP Authentication Basic and Digest Access Authentication两种认证情形:
Registrar,Redirector:
对客户端的INVITE包回应以401 Unathorized;
客户端再次INVITE请求将附带Authentication头域
Proxy:
对客户端的INVITE包回应以
407 Proxy-Authentication Required;
客户端再次INVITE请求将附带Proxy-Authentication头域SIP安全 – 认证SIP安全 – 认证MS LCS Server支持两种认证方式:
Kerberos
NTLM
可以配置LCS中某一个Pool
的“Authentication Scheme”;
然后重启LCS Service以启用SIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLM最初的LM:
“LAN Manager Challenge/Response ”验证机制
简称LM,易被破解。两个最显著的弱点是:
1:明文密码在计算响应前被转换为了大写字母;
2:如果明文口令最多7字节,则第二部分LM Hash总是"AA D3 B4 35 B5 14 04 EE"发送了一个8字节挑战"0001020304050607" 客户端使用源自明文口令的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字节)。 如果响应与服务器的计算结果匹配,服务器认为客户机拥有正确的明文口令 客户端请求连接SIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLMNTLMv2:
“Windows NT LAN Manager Challenge/Response Version 2” , 简称NTLMv2,增加了使用NTLM Hash加密挑战信息的步骤。密码作为了一个private key,只有拥有该密钥的人才能产生一个特定的散列值。发送了一个8字节挑战"0x0123456789abcdef" 1:客户端计算出一个由明文口令经过MD4算法加密的16字节结果—NTLM password Hash。 2:大写的用户名拼上大写的域名或服务器名得到一个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安全 – 认证 – NTLMSIP安全 – 认证 – NTLMSIP中的NTLMv2认证交互演示SIP/2.0 401 Unauthorized
WWW-Authenticate: NTLM realm="SIP Communications Service", targetname="helen.add.ultrapower.com.cn"
CSeq: 1 REGISTERREGISTER sip:add.ultrapower.com.cn SIP/2.0
CSeq: 2 REGISTER
Authorization: NTLM qop="auth", realm="SIP Communications Service", targetname="helen.add.ultrapower.com.cn",
gssapi-data="“
注意: gssapi-data是空的SIP/2.0 401 Unauthorized WWW-Authenticate: NTLM opaque="8CE21B68", gssapi-data="TlRMTVNTUAACAAAAAAAAADgAAADzgpjif4njfAJY….“,
targetname="helen.add.ultrapower.com.cn", realm="SIP Communications Service"
CSeq: 2 REGISTER 服务器发送一个挑战REGISTER sip:add.ultrapower.com.cn SIP/2.0
CSeq: 1 REGISTER REGISTER sip:add.ultrapower.com.cn SIP/2.0
CSeq: 3 REGISTER
Authorization: NTLM qop="auth", opaque=“8CE21B68”, realm="SIP Communications Service", targetname="helen.add.ultrapower.com.cn", gssapi-data=“TlRMTVNTUAADAAAAGAAYAG4AAAAYABg …..“ 客户端计算出响应SIP/2.0 200 OK
Authentication-Info: NTLM rspauth="01000000000000000296F864AAD9BD5F", srand="A10D3F20", snum="1", opaque="8CE21B68", qop="auth", targetname="helen.add.ultrapower.com.cn", realm="SIP Communications Service"
CSeq: 3 REGISTER
服务器确认SIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLMWhat is GSSAPI?
GSSAPI,“Generic Security Service Application Programming Interface ”,由RFC 1508和1509定义。
SIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLMGSSAPI的MS实现版本:
“Microsoft Security Support Provider Interface”
简称SSPI。
SSPI的接口分为三类:
1:Credential-management interfaces ,提供对凭证的访问:
AcquireCredentialsHandle – 获取引用凭证的句柄
FreeCredentialsHandle – 销毁凭证句柄以及其他资源
2:Context-management interfaces ,提供
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
创建或使用安全上下文:
InitializeSecurityContext –通过生成一个opaque message (security token) 初始化安全上下文
DeleteSecurityContext –销毁安全上下文以及其他资源
3:Message-support interfaces : MakeSignature --基于消息和安全上下文,生成一个安全签名SIP安全 – 认证 – NTLMWindows中用SSPI实现的NTLMSIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLM我们描述一下收到服务器端发送的gssapi-data后,
客户端的开发流程:从服务器端的SIP响应包中解析出以下四个数值:
1:realm
2: targetname
3: opaque
4: gssapi-datatargetnameMultiByteToWideChartargetname Unicode字符串gssapi-dataBase64::b64ToBinarygssapi-data 二进制数据流调用InitSecurityInterface得到一个指向SSPI dispatch table的指针m_pFuncs;调用SSPI的QuerySecurityPackageInfo接口方法得到安全包信息SIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLM续:将gssapi-data二进制流填充入SecBufferDesc缓冲区中调用SSPI的DeleteSecurityContext来销毁本地和安全上下文有关的数据结构调用SSPI的InitializeSecurityContext接口方法,将上面填充好的SecBufferDesc缓冲区作为第7个参数InitializeSecurityContext接口方法的第10个参数是一个输出参数,类型为SecBufferDesc,就是要发送回服务器的Challenge ResponseSIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLMopaque的含义: provider-specific authentication tokens
这是一个不透明的(不让外人知道其意义)数据字符串,在挑战中发送给用户。在响应中,客户端会将这个数据字符串发送回给服务器。这使得服务器可以是无状态的。如果需要在挑战和响应之间维护一些状态,可以用这个参数传送状态给客户端,此后当响应回来时,再读这个状态。 SIP安全 – 认证 – NTLMSIP安全 – 认证 – NTLMrealm的含义: 与
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
URL(相对于被访问服务器root)联合使用的realm值用来定义保护区域。
realm使得服务器上的被保护资源被放在特殊的保护分区内,这些区域都有各自的授权
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
和(或)授权数据库。
relm值是个字符串,通常由原始服务器来分配
realm参数是强制的,在所有的挑战中都必须有。
在SIP实际应用中,它通常设置为SIP代理服务器所负责的域名。realm字串必须是全局唯一的。这个realm字串必须包含一个主机名或者域名,遵循RFC3261 3.2.1节或者RFC2617[17]的推荐。SIP安全 – 认证 – KerberosSIP安全 – 认证 – KerberosWhat is Kerberos?冥王的三个头的看门狗?!Kerberos version 5 By MIT
RFC 1510 ,The Kerberos Network Authentication Service (V5)
Kerberos提供了在开放型网络中进行身份认证的方法,认证实体可以是用户或用户服务。这种认证不依赖宿主机的操作系统或主机的IP地址,不需要保证网络上所有主机的物理安全性,并且假定数据包在传输中可被随机窃取篡改。SIP安全 – 认证 – KerberosSIP安全 – 认证 – KerberosWindows Kerberos1:输入密码之后,发送凭证2:根据用户输入的域名,查找域控制器3:为user A申请票据 4:验证user A5:通过KDC的用户密码认证,返回TGT6:使用TGT 为userA申请服务票据7:发布一个服务票据TGT(Ticket Granting Ticket)。用户
证明
住所证明下载场所使用证明下载诊断证明下载住所证明下载爱问住所证明下载爱问
自己身份的TicketTGT票据票据8:携带服务票据访问其他服务SIP安全 – 认证 – KerberosSIP安全 – 认证 – KerberosKDC的含义: Key Distribution Center,密钥发放中心,通常将AS和TGS统称为KDC,有时也把AS 单独称为KDC。
认证服务器, AS
Authentication Server ,为用户分发TGT(Ticket Granting Ticket)的服务器。
票据授权服务器, TGS
Ticket Granting Server ,为用户分发到最终目的Ticket的服务器,用户使用这个Ticket向自己要求提供服务的服务器证明自己的身份。 SIP安全 – 认证 – KerberosSIP安全 – 认证 – KerberosTicket的含义: 一个Ticket是一个用于安全的传递用户身份所需要的信息的集合。
它不仅包含该用户的身份,而且包含其它一些相关的信息。
一般来说,它主要包括客户方Principal,目的服务方Principal,客户方IP地址,时间戳(分发该Ticket的时间),该Ticket的生存期,以及会话密钥等内容。它的格式亦用ASN.1来准确定义。 SIP安全 – 认证 – KerberosSIP安全 – 认证 – KerberosTGT的含义: TGT(Ticket Granting Ticket)。用户向TGS(Ticket Granting Server)证明自己身份的Ticket。
User A发起的TGT 请求中包含了发出请求客户的使用者名称,但是不包括密码(共享的秘密)。
AS发布的TGT 包含一个纯文件部分和一个密码文件(加密的)部分。为了加密 TGT 的密码部分,AS 使用了由使用者的密码产生的加密密钥。因此,只有知道密码的使用者才能解开加密的部分。TGT 的加密部分还包含一个加密密钥,称为 对话密钥。 SIP安全 – 认证 – KerberosSIP安全 – 认证 – Kerberos服务票据和TGT: 获得初始票据(TGT)的主要目的是在以后用它得到一个或者多个服务票据。这就是为什么初始票据被称为 票据授予票据(TGT)。
服务票据是用于client与特定服务器之间的安全通信的一种手段。
TGT却并不是针对任何特定的服务器的。因此,TGT 逻辑上等于一个开放连接,它的一端是client ,而另一端是未知的。当对一个 TGT 产生一个服务票据时,另一端也就确定了。同一个 TGT 可以用于获得任意数量的服务票据。 SIP安全 – 认证 – KerberosSIP安全 – 认证 – KerberosCredential的含义: Ticket和与它相联系的会话密钥合在一起称为Credential。
之所以有这个概念是因为它们是客户端在向服务器证明自己的身份时必需的两样东西.
在一个Ticket的生存期内客户端会将这两样东西以Credential为单位保存在一个Cache文件中。 SIP安全 – 认证 – KerberosSIP安全 – 认证 – KerberosSIP中的Kerberos认证交互演示SIP/2.0 401 Unauthorized
WWW-Authenticate: Kerberos realm="SIP Communications Service", targetname=“sip/helen.add.ultrapower.com.cn"
CSeq: 1 REGISTERREGISTER sip:add.ultrapower.com.cn SIP/2.0
CSeq: 2 REGISTER
Authorization: Kerberos qop="auth", realm="SIP Communications Service", targetname=“sip/helen.add.ultrapower.com.cn",
gssapi-data=“YIIE…..“REGISTER sip:add.ultrapower.com.cn 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/helen.add.ultrapower.com.cn", realm="SIP Communications Service"
CSeq: 2 REGISTER
服务器确认我们为客户交付IT运营能力 我们为客户交付IT运营能力