手把手调试5G PDCP安全:用Wireshark抓包分析SecurityModeCommand与完整性校验

张开发
2026/4/21 19:41:34 15 分钟阅读

分享文章

手把手调试5G PDCP安全:用Wireshark抓包分析SecurityModeCommand与完整性校验
手把手调试5G PDCP安全用Wireshark抓包分析SecurityModeCommand与完整性校验在5G网络的实际部署和调试过程中PDCP层的安全机制是保障空口信令和数据传输安全的关键环节。作为网络工程师或协议测试人员掌握如何通过抓包工具验证PDCP安全流程的激活状态、分析完整性校验结果是定位安全上下文建立问题的必备技能。本文将聚焦于使用Wireshark工具对SecurityModeCommand信令和PDCP完整性保护机制进行实战分析帮助读者建立从理论到实践的完整认知。1. 搭建5G PDCP安全分析环境1.1 硬件与软件准备要分析5G空口信令需要准备以下基础环境测试终端支持5G SA模式的商用终端或测试UE建议使用可输出完整日志的工程模式终端基站模拟器商用测试仪表如Keysight UXM或RS CMW500或开源5G核心网OAI基站组合抓包设备高性能网卡如Intel X710支持精确时间戳和流量镜像射频前端设备如USRP B210用于空口抓包可选软件工具# Wireshark基础安装命令Ubuntu示例 sudo apt update sudo apt install -y wireshark sudo usermod -aG wireshark $USER # 将当前用户加入wireshark组1.2 Wireshark配置优化针对5G信令分析的特殊需求需要对Wireshark进行以下配置调整配置项推荐值作用说明时间显示格式相对时间便于分析信令时序协议解析深度最大32层确保完整解析NAS/AS嵌套消息着色规则自定义5G信令颜色快速识别关键消息类型内存缓存≥512MB防止大流量抓包时丢帧提示在分析SecurityModeCommand前建议先过滤出RRC连接建立过程的完整信令交换rrc.setup*2. SecurityModeCommand信令深度解析2.1 信令结构拆解SecurityModeCommand是激活AS安全的关键信令其典型结构如下RRC SecurityModeCommand ├── rrc-TransactionIdentifier ├── criticalExtensions │ └── securityModeCommand │ ├── securityConfigSMC │ │ ├── securityAlgorithmConfig │ │ │ ├── cipheringAlgorithm (nia0, nia1, nia2, nia3) │ │ │ └── integrityProtAlgorithm (nea0, nea1, nea2, nea3) │ │ └── keyToUse (master or secondary) │ └── lateNonCriticalExtension (OCTET STRING OPTIONAL) └── nonCriticalExtension (OCTET STRING OPTIONAL)关键字段说明cipheringAlgorithm指定加密算法nea0表示不加密integrityProtAlgorithm指定完整性保护算法nia0表示不保护keyToUse指示使用主密钥还是次生密钥派生PDCP密钥2.2 典型抓包案例分析观察正常安全激活流程中的信令交换时序UE → gNB: RRCSetupRequestgNB → UE: RRCSetupUE → gNB: RRCSetupCompletegNB → UE: SecurityModeCommandUE → gNB: SecurityModeComplete后续信令开始加密和完整性保护异常场景下可能出现的信令模式UE在收到SecurityModeCommand后回复SecurityModeFailuregNB未收到SecurityModeComplete导致定时器超时完整性校验失败引发的RRC重建流程3. PDCP完整性保护验证方法3.1 Wireshark中的完整性校验指示在成功解析的PDCP PDU中完整性保护状态会通过以下字段体现PDCP-LTE/NR ├── Sequence Number ├── D/C bit ├── PDU Type ├── MAC-I (Present when integrity protected) └── Data完整性验证要点SRB消息必须包含有效的MAC-I字段DRB消息根据RRC配置决定是否启用完整性保护MAC-I长度固定为4字节32bit3.2 完整性校验失败排查步骤当发现PDCP PDU被标记为Integrity check failed时建议按以下流程排查密钥一致性检查确认UE和gNB使用相同的KDF输入参数验证密钥派生过程中没有发生截断错误# 密钥派生伪代码示例 def derive_pdcp_keys(k_amf): # 输入256bit的K_AMF # 输出128bit的PDCP密钥 k_rrc_enc kdf(k_amf, RRC_ENC)[-16:] # 取后128bit k_rrc_int kdf(k_amf, RRC_INT)[-16:] return k_rrc_enc, k_rrc_intCOUNT值同步验证检查HFN同步机制是否正常工作确认SN长度配置一致12/18bit算法配置核对确保UE支持的算法列表与网络侧选择匹配特别注意nia0/nea0的特殊处理4. 高级调试技巧与实战案例4.1 加密数据包的解密分析虽然Wireshark无法直接解密用户面数据但可以通过以下方法辅助分析导出加密的PDCP PDU到文件使用测试终端的工程模式获取加密密钥和COUNT值通过外部工具进行离线解密# 使用OpenAirInterface的解密工具示例 ./nr_pdcp_decrypt -k 0123456789ABCDEF -c 0x12345678 -a nea1 -i encrypted.bin -o decrypted.bin4.2 典型问题案例分析案例1安全模式协商失败现象UE持续回复SecurityModeFailure可能原因网络选择了UE不支持的算法组合UE能力上报与实际实现不一致解决方案核对UE的SupportedAlgorithms信元检查基站算法优先级配置案例2间歇性完整性校验失败现象随机出现MAC-I mismatch错误根本原因HFN同步问题导致COUNT值不同步密钥更新流程异常调试方法对比UE和gNB的COUNT值日志检查RRC重配置过程中的密钥切换时机在实际项目中我们发现使用商用测试仪表配合Wireshark分析时合理设置触发条件可以显著提高问题定位效率。例如针对安全模式失败问题可以设置rrc.security_mode_failure过滤条件快速定位异常事件。

更多文章