3、SIP认证机制审计:Digest认证原理与缺陷、AKAv1/v2认证机制、TLS双向认证审计、证书管理审计
聊到SIP安全,认证机制这块儿是绕不开的硬骨头。我这些年做过的审计项目里,十有八九都能在认证环节翻出点问题来。说白了,认证就是确认“你是谁”的过程,如果这一步被绕过去了,那后面的加密、授权全是白搭。
今天咱们就把SIP认证的几种主流机制掰开揉碎了讲。我会结合自己踩过的坑,告诉你哪些地方最容易出纰漏。
3.1 Digest认证:最常用,但坑最多
Digest认证是SIP里最基础的认证方式。它的原理其实不复杂:服务器给客户端一个随机数(nonce),客户端用这个随机数加上密码算出一个哈希值返回去。服务器自己也算一遍,比对一下就知道密码对不对了。
嗯,这里要注意——密码本身不会在网络上传送,传的是哈希值。这比HTTP Basic那种明文传密码的方式强多了。
核心流程:
- 客户端发请求(不带认证信息)
- 服务器返回401 Unauthorized,带上nonce和realm
- 客户端用密码+nonce算出response,重新发请求
- 服务器验证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双向认证的审计清单:
- 证书链验证:检查客户端和服务器的证书链是否完整,是否信任了自签名证书
- 主机名校验:检查CN或SAN是否匹配实际域名/IP
- 证书吊销检查:检查是否启用了CRL或OCSP
- 密码套件:检查是否禁用了弱密码套件(如RC4、3DES、CBC模式)
- TLS版本:检查是否禁用了TLS 1.0/1.1,建议只启用TLS 1.2/1.3
避坑指南:我曾经遇到一个项目,客户说他们配了TLS双向认证,结果我一抓包发现——客户端根本没配证书,只是把服务器证书验证关了。问他们为什么,答曰“配了证书太麻烦”。嗯,这种情况我见得太多了。审计时一定要抓包确认,不要只看配置文件。
3.4 证书管理审计:最容易忽视的环节
证书管理这事儿,说大不大,说小不小。但一旦出问题,就是安全事件。我见过最离谱的案例:某公司所有SIP设备用的都是同一个自签名证书,私钥就明文写在配置文件里。攻击者拿到一台设备,就等于拿到了整个网络的通行证。
证书管理审计要点:
| 审计项 | 检查内容 | 风险等级 |
|---|---|---|
| 私钥保护 | 私钥是否加密存储,权限是否最小化 | 高危 |
| 证书有效期 | 是否即将过期或已过期 | 中危 |
| 证书分发 | 是否有安全的证书分发机制 | 高危 |
| 证书撤销 | 设备下线后证书是否及时撤销 | 中危 |
| 证书轮换 | 是否有自动轮换机制 | 低危 |
我的建议:证书管理最好用PKI体系,不要图省事用自签名。如果实在要用自签名,那至少要做到:私钥加密存储、定期轮换、设备下线立即撤销。我曾经帮客户设计过一个自动化脚本,每月自动检查证书有效期,提前30天发告警。这个小工具帮他们避免了好几次证书过期导致的业务中断。
3.5 本章知识体系
下面这张图是我梳理的SIP认证机制审计的知识体系,你可以对照着看,心里有个全局观。
这张图把四种认证机制的核心要点都列出来了。你审计的时候,可以对照着逐项检查。我个人习惯是先看证书管理,因为这块儿最容易出低级错误。然后看TLS配置,最后才看应用层的Digest或AKA。
好了,这一章的内容就到这儿。记住一句话:认证是安全的第一道门,门没锁好,后面做再多加密都是白搭。
公众号:蓝海资料掘金营,微信deep3321