3、SIP认证机制审计:Digest认证原理与缺陷、AKAv1/v2认证机制、TLS双向认证审计、证书管理审计

聊到SIP安全,认证机制这块儿是绕不开的硬骨头。我这些年做过的审计项目里,十有八九都能在认证环节翻出点问题来。说白了,认证就是确认“你是谁”的过程,如果这一步被绕过去了,那后面的加密、授权全是白搭。

今天咱们就把SIP认证的几种主流机制掰开揉碎了讲。我会结合自己踩过的坑,告诉你哪些地方最容易出纰漏。

3.1 Digest认证:最常用,但坑最多

Digest认证是SIP里最基础的认证方式。它的原理其实不复杂:服务器给客户端一个随机数(nonce),客户端用这个随机数加上密码算出一个哈希值返回去。服务器自己也算一遍,比对一下就知道密码对不对了。

嗯,这里要注意——密码本身不会在网络上传送,传的是哈希值。这比HTTP Basic那种明文传密码的方式强多了。

核心流程:

  1. 客户端发请求(不带认证信息)
  2. 服务器返回401 Unauthorized,带上nonce和realm
  3. 客户端用密码+nonce算出response,重新发请求
  4. 服务器验证response,通过则放行

我在项目中遇到过一种情况:某厂商的SIP服务器为了“提升性能”,把nonce设成了固定值。你想想看,nonce如果固定了,那攻击者只要抓到一次认证报文,就能直接重放攻击。这跟没认证有啥区别?

Digest认证的常见缺陷:

缺陷类型 风险描述 审计要点
Nonce重用 nonce固定或可预测,导致重放攻击 检查nonce是否每次不同,是否包含时间戳
弱密码字典攻击 哈希值可离线破解,弱密码秒破 检查密码复杂度策略,建议12位以上
Realm未校验 攻击者可伪造realm诱导客户端 检查客户端是否校验realm值
qop缺失 缺少qop字段时,无法防止报文篡改 检查是否强制要求qop=auth或qop=auth-int

避坑指南:我曾经审计过一个VoIP网关,发现它只校验了Authorization头,却没校验报文体的完整性。攻击者完全可以篡改SDP里的IP地址,把媒体流劫持到自己的服务器上。所以,我建议一定要用qop=auth-int,它连报文体会一起哈希,防篡改。

3.2 AKAv1/v2认证:3G/4G网络的选择

AKA(Authentication and Key Agreement)认证机制,说白了就是3GPP那帮人搞出来的东西。它跟Digest最大的区别在于:AKA是基于共享密钥和序列号的,安全性更高。

AKAv1和AKAv2的区别,我简单说一下:

  • AKAv1:基于Milenage算法,需要SIM卡或USIM卡支持。服务器和客户端各持一份密钥K,通过随机数RAND和序列号SQN生成认证向量。
  • AKAv2:改进了密钥派生机制,支持更大的认证向量集,抗重放能力更强。

实际项目中,AKA认证多用于IMS(IP多媒体子系统)网络。我记得有一次帮运营商做安全审计,发现他们的AKA实现里序列号管理有问题——SQN回绕了之后,居然还能通过认证。这会导致什么后果?攻击者只要拿到一次认证向量,就能无限重放。

审计要点:检查AKA实现中SQN的管理策略。正常情况下,SQN应该单调递增,且服务器端要维护每个用户的SQN状态。如果发现SQN可以回绕或重置,那就是高危漏洞。

3.3 TLS双向认证审计:别只配了单向

很多人觉得配了TLS就安全了,其实不然。TLS分单向认证和双向认证。单向认证只验证服务器证书,客户端不需要提供证书。这在Web场景下够用,但在SIP场景下,我建议用双向认证。

为什么?因为SIP服务器需要确认客户端的身份。如果只用单向TLS,那任何人都能建立加密通道,然后继续用Digest认证。但Digest认证的缺陷我们刚才说了,容易被重放或破解。

TLS双向认证的审计清单:

  1. 证书链验证:检查客户端和服务器的证书链是否完整,是否信任了自签名证书
  2. 主机名校验:检查CN或SAN是否匹配实际域名/IP
  3. 证书吊销检查:检查是否启用了CRL或OCSP
  4. 密码套件:检查是否禁用了弱密码套件(如RC4、3DES、CBC模式)
  5. TLS版本:检查是否禁用了TLS 1.0/1.1,建议只启用TLS 1.2/1.3

避坑指南:我曾经遇到一个项目,客户说他们配了TLS双向认证,结果我一抓包发现——客户端根本没配证书,只是把服务器证书验证关了。问他们为什么,答曰“配了证书太麻烦”。嗯,这种情况我见得太多了。审计时一定要抓包确认,不要只看配置文件。

3.4 证书管理审计:最容易忽视的环节

证书管理这事儿,说大不大,说小不小。但一旦出问题,就是安全事件。我见过最离谱的案例:某公司所有SIP设备用的都是同一个自签名证书,私钥就明文写在配置文件里。攻击者拿到一台设备,就等于拿到了整个网络的通行证。

证书管理审计要点:

审计项 检查内容 风险等级
私钥保护 私钥是否加密存储,权限是否最小化 高危
证书有效期 是否即将过期或已过期 中危
证书分发 是否有安全的证书分发机制 高危
证书撤销 设备下线后证书是否及时撤销 中危
证书轮换 是否有自动轮换机制 低危

我的建议:证书管理最好用PKI体系,不要图省事用自签名。如果实在要用自签名,那至少要做到:私钥加密存储、定期轮换、设备下线立即撤销。我曾经帮客户设计过一个自动化脚本,每月自动检查证书有效期,提前30天发告警。这个小工具帮他们避免了好几次证书过期导致的业务中断。

3.5 本章知识体系

下面这张图是我梳理的SIP认证机制审计的知识体系,你可以对照着看,心里有个全局观。

SIP认证机制审计知识体系 Digest认证 原理:nonce + 密码哈希 缺陷:nonce重用、弱密码、qop缺失 审计重点:nonce随机性、密码策略 加固建议:强制qop=auth-int 使用强随机数生成nonce AKAv1/v2认证 原理:共享密钥 + 序列号 v1:Milenage算法,需SIM卡支持 v2:改进密钥派生,抗重放更强 审计重点:SQN管理、密钥存储 常见问题:SQN回绕、认证向量泄露 TLS双向认证 原理:双方证书互相验证 审计清单:证书链、主机名、吊销 密码套件、TLS版本 常见问题:只配单向、证书不验证 加固建议:禁用TLS 1.0/1.1 证书管理 私钥保护:加密存储、最小权限 有效期:定期检查,提前告警 分发机制:安全传输,防篡改 撤销机制:设备下线即撤销 轮换机制:自动化,减少人工 四大认证机制,环环相扣,缺一不可

这张图把四种认证机制的核心要点都列出来了。你审计的时候,可以对照着逐项检查。我个人习惯是先看证书管理,因为这块儿最容易出低级错误。然后看TLS配置,最后才看应用层的Digest或AKA。

好了,这一章的内容就到这儿。记住一句话:认证是安全的第一道门,门没锁好,后面做再多加密都是白搭。


公众号:蓝海资料掘金营,微信deep3321