发明名称 一种基于IPSec穿越NAT的IP多媒体子系统接入安全保护方法
摘要 本发明公开了一种基于IPSec穿越NAT的IP多媒体子系统接入安全保护方法,在原有的IMS AKA认证机制的基础上,在UE与P-CSCF之间进行注册信息交互过程中增加支持NAT能力的协商、NAT设备的发现以及实施NAT穿越的功能使得IMS接入过程能够穿越NAT,并且有良好的兼容性。
申请公布号 CN1697452A 申请公布日期 2005.11.16
申请号 CN200510076825.2 申请日期 2005.06.17
申请人 中兴通讯股份有限公司 发明人 李睿;田峰;陈剑勇
分类号 H04L29/06;H04L9/32 主分类号 H04L29/06
代理机构 北京中博世达专利商标代理有限公司 代理人 张岱
主权项 1.一种基于IPSec穿越NAT的IP多媒体子系统接入安全保护方法,其特征在于,所述方法是在现有IMS AKA认证流程上对于相关报文和处理进行修改,具体如下:(1)IMS AKA认证过程中UE发送给P-CSCF的初始SIP注册消息增加可选项参数VID_U和HASH_ul;如果VID_U为某一特定值时,表示其具有穿越NAT的能力;HASH_ul为UE计算本地的hash值,HASH_ul=HASH(UE_SIP_addr|UE_local_IPaddr|UE_local_Port),UE_SIP_addr为UE的SIP地址,UE_local_IPaddr为UE本地的IP地址,UE_local_Port为UE本地的端口信息;(2)P-CSCF对接收到的初始的SIP注册消息需要处理;处理过程如下:a.根据VID_U信息判断UE是否支持NAT穿越;如果支持NAT穿越,则进行下一步操作;b.根据接收到报文,计算HASH_pp,HASH_pp为P-CSCF计算对端的hash值,HASH_pp=HASH(UE_SIP_addr|P-CSCF_Peer_IPaddr|P-CSCF_Peer_Port),P-CSCF_Peer_IPaddr为P-CSCF根据接收到UE发送来到数据包提取UE的IP地址,P-CSCF_Peer_Port为P-CSCF根据接收到UE发送来的数据包提取UE的端口值;然后与UE发送来的HASH_ul进行比较,如果相同,则表示UE前面没有NAT设备;如果不相同,则表示UE前面有NAT设备;(3)认证过程中P-CSCF发送给UE的认证挑战消息增加可选项参数VID_P、HASH_pl和HASH_pp;如果VID_P为某一特定值时,则表示P-CSCF具有穿越NAT的能力;HASH_pl为P-CSCF计算的本地的hash值,HASH_pl=HASH(UE_SIP_addr|P-CSCF_Local_IPaddr|P-CSCF_Local_Port),P-CSCF_Local_IPaddr为P-CSCF本地使用的IP地址,P-CSCF_Local_Port为P-CSCF本地使用的端口值;(4)UE对接收到P-CSCF发送来的认证挑战消息进行处理。处理过程如下:a.根据VID_P信息判断P-CSCF是否支持NAT穿越;如果支持NAT穿越,则进行下面操作;b.UE将本地保存的HASH_ul与接收到的HASH_pp进行相比较,如果相同,则UE知道其前面没有NAT设备;如果不相同,则UE知道其前面有NAT设备;c.UE根据接收到的报文计算HASH_up,HASH_up为UE计算对端的hash值,HASH_up=HASH(UE_SIP_addr|UE_Peer_IPaddr|UE_Peer_Port),UE_Peer_IPaddr为UE根据接收到P-CSCF发送来到数据包提取P-CSCF的IP地址,UE_Peer_Port为UE根据接收到P-CSCF发送来的数据包提取P-CSCF的端口值;然后与接收到的HASH_pl相比较,如果相同,则表示P-CSCF前面没有NAT设备;如果不相同,则表示P-CSCF前面存在NAT设备;(5)认证过程中UE发送给P-CSCF的认证回复信息增加参数HASH_up、VID_U、HASH_ul、VID_P、HASH_pl和HASH_pp;HASH_up用来告知对方其前面是否存在NAT设备;如果UE前面有NAT设备,则还需要发送OA_ul和OA_up;OA_ul为UE本地使用的IP地址,OA_up为UE记录的对端IP地址;如果UE前面没有NAT设备,则不需要发送OA_ul和OA_up;(6)认证过程中UE给P-CSCF的认证回复信息的发送;如果UE前面有NAT设备,为了保证IPSec通道穿越NAT,此IPSec数据包需要采用UDP封装模式发送给P-CSCF;外层封装的UDP报头的源和目的端口都必须使用4500;IPSec数据包内部SIP消息使用的UDP报头的checksum必须设置为0;如果UE前面没有NAT设备,则IPSec数据包不需要采用UDP封装模式;(7)P-CSCF对接收到的认证回复信息进行处理,处理过程如下:a.将此报文中接收到的VID_U、HASH_ul、VID_P、HASH_pl和HASH_pp分别与在P-CSCF上保存的对应参数一一进行比较,如果相同,表示前两条交互的报文没有发生篡改,则跳到下一步执行;否则,表示前两条交互的报文被篡改,则注册过程中断;b.如果UE前面有NAT设备,则保存OA_ul和OA_up参数,否则,不保存;c.P-CSCF根据其本地IP地址、本地使用的端口和其他参数进行hash计算,运算结果与HASH_up相比较,如果相同,则可知其前面没有NAT设备;如果不相同,则可知其前面存在NAT设备;(8)认证过程中P-CSCF发送给UE的认证成功消息增加可选项参数OA_pl和OA_pp,OA_pl为P-CSCF本地使用的IP地址,OA_pp为P-CSCF记录的对端IP地址;如果P-CSCF前面有NAT设备,则在此报文中需要发送OA_pl和OA_pp;如果P-CSCF前面没有NAT设备,则OA_pl和OA_pp不需要在此报文中发送。(9)认证过程中P-CSCF给UE的认证成功消息的发送,具体发送形式有三种情况:第一种,如果UE和P-CSCF前面都没有NAT设备,则此IPSec数据包安装原来的方式发送给UE,第二种,如果UE前面有NAT设备,P-CSCF前面没有NAT设备,则此IPSec数据包需要采用UDP封装模式发送给UE,外层封装的UDP报头的源端口为4500,目的端口为UE经过NAT转换后的端口,IPSec数据包内部SIP消息使用的UDP报头的checksum必须设置为0;第三种,如果P-CSCF前面有NAT设备,则此IPSec数据包需要采用UDP封装模式发送给UE,外层封装的UDP报头的源和目的端口都为4500。IPSec数据包内部SIP消息使用的UDP报头的checksum必须设置为0;(10)UE对接收到的认证成功消息进行处理,如果P-CSCF前面有NAT设备,则记录OA_pl和OA_pp;(11)注册成功后,如果UE和P-CSCF之间存在NAT设备,则所有的IPSec数据包都必须采用UDP封装,NAT设备之后的实体在向对方发送IPSec数据包时,采用UDP封装的源和目的端口都为4500,IPSec数据包内部SIP消息使用的UDP报头的checksum不需要设置为0;并且不时地向对方发送NAT-Keepalive报文,该报文包含单字节0xFF,并采用UDP封装,UDP报头中源和目的端口都采用4500,checksum设置为0。
地址 518057广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦A座6层