可修改鉴权密码的SIP安全认证方法转让专利

申请号 : CN201110155781.8

文献号 : CN102215235B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 于涌川谢赛赛余春暄綦慧

申请人 : 北京工业大学

摘要 :

本发明是一种可修改鉴权密码SIP安全认证方法。本发明通过注册消息传输鉴权密码修改信息,并且增加了用户代理客户端对用户代理服务器端的身份认证。在整个认证流程中,主要的参数均通过128位AES加密算法进行了加密,保证了系统的安全性。经过修改后的SIP安全认证流程,体现了可交互性并提高了整体的安全性。

权利要求 :

1.一种可修改鉴权密码的SIP安全认证方法,其特征在于该方法包括以下步骤:

1)用户代理客户端UAC向用户代理服务器端UAS发送携带有UAC认证参数的消息以及设定的密码修改状态;

2)用户代理服务器端UAS根据用户代理客户端UAC认证参数、用户名、UAS的URL地址、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法加密UAS认证参数和UAS所管辖域的域名,得到的值作为应答消息的一部分传输给用户代理客户端UAC,同时用户代理服务器端UAS根据密码修改状态生成密码修改序列号作为应答消息的一部分传输给用户代理客户端UAC;

3)用户代理客户端UAC根据UAC认证参数、用户名、UAS的URL地址、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法解密得到UAS认证参数和UAS所管辖域的域名,若解密得到的UAS所管辖域的域名与应答消息中UAS所管辖域的域名相同,则用户代理客户端UAC对用户代理服务器端UAS的身份认证通过,否则,认证失败;

4)用户代理客户端UAC根据步骤3)中得到的UAS认证参数、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到UAC应答参数,作为请求消息的一部分传输给用户代理服务器端UAS;

5)用户代理客户端UAC根据步骤3)中得到的UAS认证参数、密码修改序列号、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法加密新鉴权密码和密码修改序列号,作为请求消息的一部分传输给用户代理服务器端UAS;

6)用户代理服务器端UAS根据UAS认证参数、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,并将此值与UAC应答参数进行比较,若相同,则用户代理服务器端UAS对用户代理客户端UAC的身份认证通过,否则,认证失败;

7)用户代理服务器端UAS根据UAS认证参数、密码修改序列号、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法解密用户代理客户端UAC传输过来的新鉴权密码,得到的值为新鉴权密码和密码修改序列号,比较密码修改序列号的值,若相同,则将鉴权密码修改为新鉴权密码,否则,鉴权密码仍为旧鉴权密码。

2.如权利要求1所述的方法,其特征在于,所述方法还包括:

用户代理客户端UAC向用户代理服务器端UAS进行身份认证失败时,向用户代理服务器端UAS发送认证失败消息;

用户代理服务器端UAS向用户代理客户端UAC进行身份认证失败时,向用户代理客户端UAC发送认证失败消息。

3.如权利要求1所述的方法,其特征在于,所述方法还包括:

用户代理服务器端UAS修改鉴权密码失败时,应向用户代理客户端UAC返回鉴权密码修改失败消息;

在鉴权密码修改失败后,用户代理客户端UAC需要进行鉴权处理时,用户代理服务器端UAS按照旧鉴权密码进行鉴权。

说明书 :

可修改鉴权密码的SIP安全认证方法

技术领域

[0001] 本发明涉及网络通讯技术领域,具体涉及一种可修改鉴权密码的SIP安全认证方法。

背景技术

[0002] SIP是一个C/S协议,SIP呼叫建立功能依靠各类实体完成。请求由SIP发送实体,即UAC(User Agent Client,用户代理客户端)完成,应答由UAS(User Agent Server,用户代理服务器端)完成。
[0003] 传统的SIP安全认证流程如图1所示,主要分为以下几个步骤:
[0004] (1)UAC发送REGISTER #1(注册)消息。
[0005] (2)UAS发送401 Unauthorized(未鉴权)消息
[0006] UAS向UAC返回一个包含了nonce和realm参数的401 Unauthorized消息,作为UAS向UAC发起的挑战。其中nonce是服务器产生的一个随机数,realm通常指服务器所管辖的域的域名。
[0007] (3)UAC发送REGISTER #2(注册)消息
[0008] 收到消息后,UAC根据自己的用户名(username)、密码(password)、UAS的URI(Uniform Resource Identifier,统一资源标志符)以及收到的nonce和realm参数通过MD5(Message Digest Algorithm,消息摘要算法)散列化,生成一个response值包含在REGISTER #2中发送给UAS。
[0009] (4)UAS发送200 OK消息
[0010] UAS根据UAC的用户名在数据库中提取对应的用户密码,检验nonce值正确之后,同样通过MD5算法对username,password,URI,nonce,realm散列化得到一个值,与REGISTER #2中的response值进行比较,若相等,则UAC注册成功。
[0011] 传统认证流程中存在两个主要问题:一是鉴权密码无法修改,二是认证仅限于UAS对UAC的身份认证,没有UAC对UAS的身份认证,由此带来了可交互性差、认证易遭攻击的缺陷。

发明内容

[0012] 本发明的目的在于提供一种可修改鉴权密码的SIP安全认证方法,确定了UAC对UAS的身份认证,同时可选择对UAC的鉴权密码进行修改,完善了SIP的安全认证流程。
[0013] 本发明的主体思路是:UAC向UAS发出挑战信息,UAS应答并向UAC发出挑战信息,UAC对UAS进行身份认证并对UAS的挑战信息作出应答,UAS对UAC进行身份认证;同时UAS在验证UAC旧鉴权密码合法的前提下可根据UAC发出的鉴权密码修改信息修改UAC的鉴权密码。
[0014] 本发明采取的具体技术方案如下:
[0015] 所述挑战信息包括UAC认证参数、UAS应答参数、UAS认证参数、UAC应答参数。
[0016] 所述鉴权密码修改信息包括密码修改状态、密码修改序列号、旧鉴权密码、新鉴权密码。
[0017] UAC向UAS发送携带有UAC认证参数的消息,以及设定的密码修改状态;UAS收到消息后对UAC认证参数及UAS认证参数按一定方式进行处理,并将处理后的值作为应答消息的一部分返回给UAC,同时UAS根据密码修改状态生成密码修改序列号作为应答消息的一部分返回给UAC;UAC将上述处理后的值进行分析,比较相应参数,以实现对UAS身份的认证,并且对UAS的认证参数结合旧鉴权密码生成UAC应答参数,同时将新鉴权密码传输给UAS;UAS根据UAC的回应验证UAC身份后,修改旧鉴权密码为新鉴权密码。
[0018] 所述按一定方式处理,指的是UAS根据UAC认证参数、用户名、UAS的URL(地址)、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法加密UAS认证参数和UAS所管辖域的域名。
[0019] 所述将处理后的值进行分析,指的是UAC根据UAC认证参数、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法解密得到UAS认证参数和UAS所管辖域的域名。
[0020] 所述比较相应参数,以实现对UAS身份的认证,指的是比较分析所得UAS所管辖域的域名与SIP消息中的UAS所管辖域的域名,若相同,则认证通过,否则,认证失败。
[0021] 所述对UAS的认证参数结合旧鉴权密码生成UAC应答参数,指的是UAC根据UAS认证参数、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,此值即为UAC应答参数。
[0022] 所述新鉴权密码,指的是UAC根据UAS认证参数、密码修改序列号、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法加密新鉴权密码后生成的值。
[0023] 所述UAS根据UAC的回应验证UAC身份,指的是UAS根据UAS认证参数、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,并将此值与UAC应答参数进行比较,若相同,则认证通过,否则,认证失败。
[0024] 所述修改旧鉴权密码为新鉴权密码,指的是UAS根据UAS认证参数、密码修改序列号、用户名、UAS的URL、旧鉴权密码用MD5算法序列化得到一个值,并将该值作为密钥采用128位AES算法解密UAC传输过来的新鉴权密码,得到的值即为新鉴权密码。用户代理客户端UAC向用户代理服务器端UAS进行身份认证失败时,向用户代理服务器端UAS发送认证失败消息;
[0025] 用户代理服务器端UAS向用户代理客户端UAC进行身份认证失败时,向用户代理客户端UAC发送认证失败消息。
[0026] 所述方法还包括:
[0027] 用户代理服务器端UAS修改鉴权密码失败时,应向用户代理客户端UAC返回鉴权密码修改失败消息;
[0028] 在鉴权密码修改失败后,用户代理客户端UAC需要进行鉴权处理时,用户代理服务器端UAS按照旧鉴权密码进行鉴权。
[0029] 用户代理客户端(UAC)不需要进行鉴权密码修改时,设定密码修改状态为不修改,用户代理服务器端(UAS)不进行鉴权密码修改。
[0030] 本发明实现了UAC与UAS身份的双向认证,一定程度上弥补了认证流程中易遭受攻击的缺陷,同时可以设定参数的值决定是否修改鉴权密码,提高了认证流程的可交互性。

附图说明

[0031] 图1传统认证流程图
[0032] 图2可修改鉴权密码的SIP安全认证流程图

具体实施方式

[0033] 下面结合附图对本发明作进一步说明:
[0034] 首先,为了完成对服务器的身份认证以及鉴权密码的修改的要求,需要对部分SIP消息的格式进行增添:
[0035] 1)对REGISTER #1消息添加新的头字段″Authenticate-Pwreset″,报文格式为[0036] Authenticate-Pwreset:nonce=″nonce1″,
[0037] passwordstate=″passwordstate″
[0038] 其中:nonce为包含时间戳信息的随机数串,即UAC认证参数,passwordstate为密码修改状态。若申请修改密码,passwordstate值为reset;若不做修改,此值为maintain。
[0039] 2)对401 Unauthorized消息头字段为″WWW-Authenticate″的报文,修改为:
[0040] WWW-Authenticate:realm=″realm″,nonce=″nonce1″,
[0041] encryptresponse=″encryptresponse″,
[0042] changenumberial=″numberial″,
[0043] Digest algorithm=MD5
[0044] 其中:encryptresponse为加密后的(nonce2+realm)值,nonce2即UAS应答参数。changenumberial为服务器应答修改密码请求而产生的序列号,即密码修改序列号。
[0045] 3)对REGISTER #2消息头字段为Authorization的报文,修改为:
[0046] Authorization:Digest username=″username″,
[0047] realm=″realm″,
[0048] nonce=″nonce1″,
[0049] response=″response″,
[0050] passwordnew=″passwordnew″
[0051] 其中:response为UAC应答参数;passwordnew值为加密后的(passwordnew +numberial),即新鉴权密码。
[0052] 然后是整个流程的详细实现过程,如图2所示:
[0053] 1)UAC发送REGISTER #1消息
[0054] UAC生成nonce1,并且令passwordstate=reset。
[0055] 2)服务器端发送401 Unauthorized消息
[0056] ①服务器端收到REGISTER #1消息后生成nonce2值,根据用户名查找对应的password,用MD5算法计算出Key=F[password,(nonce1,username,uri)][0057] ② 用Key 作 为 密 钥,加 密 (nonce2+realm)作 为encryptresponse值,即encryptresponse=Ekey(nonce2+realm)。
[0058] ③检测passwordstate值,若为“reset”,则生成一个随机序列值numberial,,令changenumberial=numberial;若为“maintain”,则changenumberial=0。nonce=nonce1。
[0059] 3)客户端发送REGISTER #2消息
[0060] ①计算Key’=F[password,(nonce1,username,uri)]
[0061] ②根据头字段“WWW-Authenticate”中的encryptresponse值以及Key’,解密得到(nonce2+realm)=Dkey’(encryptresponse),由于realm对客户端是可知的,可以通过比较realm值对服务器进行身份认证,同时也得到了nonce2值。
[0062] ③计算response=F[password,(nonce2,username,uri)]。
[0063] ④计算Key1=F{nonce2,[numberial,(password,username,uri)]},用Key1作为密钥加密新密码与收到的序列值,passwordNew=Ekey1(numberial+passwordNew)。若不需要修改密码,则passwordNew=null。nonce=nonce1。
[0064] 4)服务器发送200OK消息
[0065] ①计算response’=F[password,(nonce2,username,uri)]。与消息中的response值比较,对客户端身份进行认证。
[0066] ②计算Key1’=F{nonce2,[numberial,(password,username,uri)]},用Key1’解密passwordNew,得到(numberial+passwordNew)=Dkey1’(passwordNew),比较numberial值,若相等,则修改鉴权密码为passwordNew。
[0067] ③若passwordNew=null,不进行密码修改。
[0068] 补充说明:
[0069] a、消息发送过程中,nonce赋值始终为nonce1值。
[0070] b、(nonce2+realm)及(numberial+passwordNew中的’+’是指前后两个值以一定的规则相联系而成为一个新的值,这个规则由客户端和服务器端事先约好,可以是异或,也可以是单纯的连接,等等。
[0071] c、F:用MD5算法进行散列化的函数。
[0072] d、Ekey:用密钥key进行AES加密的函数;
[0073] Dkey:用密钥key进行AES解密的函数。
[0074] e、MD5散列化后数据长度为128位,故采用的是128位AES算法。