IPSec SA安全联盟
目前IMS中在UE与P-CSCF之间唯一的安全机制为IPSecSA,由于IPSecSA的建立是基于AKA鉴权获取的密钥,每次重新认证过程都需要建立新的SA,所以在UE与P-CSCF之间就需要建立新的IPSecSA对。
一、首次注册时SA的建立
UE初始Register请求及P-CSCF的401响应是在没有任何保护的情况下传递,通过这两个消息完成安全机制协商并确定使用IPSec(协商流程参见《安全机制协商》小节)。之后的数据处理报文在IP层以下都被加密处理。报文格式如下图:
这里协商了一组SA端口:
-
受保护的UE客户端端口6001
-
受保护的UE服务端端口6002
-
受保护的P-CSCF客户端端口7001
-
受保护的P-CSCF服务端端口7002
在第一个Register处理时,双方还没有建立好SA,还是基于原端口进行收发,在安全机制协商完成后,双方开始基于协商到受保护端口进行收发,同时还需要根据信令路由走向,将Via、Contact、Route等路由关键URL的端口设置成对应的受保护端口。
-
UE port-c与P-CSCF port-s用于UE向P-CSCF发送SIP请求/响应
-
P-CSCF port-c与UE port-s用于P-CSCF向UE发送SIP请求/响应
这组SA的建立都需要使用共享密钥,P-CSCF的密钥是在注册过程中从S-CSCF的401响应获取的,UE的密钥是在注册过程中从401响应的nonce中提取的。参考《AKA鉴权》小节。
IPSecSA是一个比较复杂的安全协议,详细的SA加密机制目前没有去了解,有兴趣的同事可以查找IPSec协议进行深入了解。
二、注册刷新的SA建立
注册刷新情况下,SA重新协商,UE与P-CSCF就需要建立新的IPSecSA对,包含新的SPI值和新的受保护的客户端端口,但不更新受保护的服务端端口(参见《注册刷新的协商处理》小节)。
建立流程同首次注册SA建立相同,一但新的SA建立成功,就需要丢弃以前的SA,因为UE永远不需要同时处理两组以上的SA。
三、SA的生命周期
在进行认证过程中,新的SA还属于临时SA,临时SA组的生命周期为4分钟,保证认证过程可以完成。在认证成功后,新SA组的生命周期为协商的注册刷新时间加上30秒。
参考资料
《中国电信IMS网络SIP协议总体技术要求》
《IMS-移动领域的IP多媒体概念和服务》