MGCP /H.248 鉴权认证

MGCP /H.248 鉴权认证

鉴权概述和基本算法

MGCP/H.248鉴权概述

MGCP协议没有涉及安全认证的标准。对于网络应用终端客户或运营商来说都不安全的盗号隐患。
解决这问题,国标和各厂家有各自标准。目前看到的资料比较少,总体上是通过扩展协议,完成MG与MGC交互。简单引入MD5算法加密密码,避免密码明文暴露在网络中。更复杂的就引入DH协商共享KEY。通过研究总结如下:
H.248/MGCP鉴权基本原理算法一:
H.248和MGCP鉴权基本原理相似,都是利用Diffie-Hellman协商一个公共的秘密,并以此作为相互之间信任的依据。
Diffie-Hellman密钥交换是利用离散对数的特征:一个大质数p,以及一个底数g。已知一个特定的值y,求指数x,如下所示:
y =gx mod p
其中,mod是"求余"的意思。模指数很容易便可计算出来,但假若想通过一次离散对数运算恢复原来的指数,却是异常艰难的。

H.248/MGCP鉴权基本原理算法二:

软交换MGC发给MG鉴权请求Authreq ,Authreq = MD5(内容未知)

MG 回复MGC Authoc,MD5(内容未知)
在软交换端比较Authoc是否正确。

问题分析
1)Diffie-Hellman算法的本身很简单,实现比较复杂,因为大数运算溢出处理。所以要引入大数运算库。
我参考了开源的算法库,用来移植。
参考资源:
http://math.libtomcrypt.org
2)MD5算法资源较多我就不列。有需要的话,请留留言。
3)MGCP协议栈
需要扩展的信号有三个
Auth/Authreq 请求信号
Auth/Authoc  事件
Auth/dh
参数也有三个
X-EA
X-RANDOM
X-DH
X-AUTH

下面是我利用的资料希望对你有帮助。

参考资料《中国电信MGCP 协议测试规范》

RSIP 65577*@mg.whaterver.netMGCP 1.0 NCS 1.0
RM: restart
X-EA:1
X-RANDOM:b1bdd81eb1bdd81eb1bdd81eb1bdd81e
X-DH: dc91ee 616ea 7ab4e82dc0e 42325baf3469d146270bd185b7e4bb0d 607fea
b 24de8975e0b1bcdd21e29b321802115b30ca 14effe768593b6fec6fff6fd7d788bf
X-AUTH: 38d972fedc 6594b

RQNT 268435562*@mg.whaterver.netMGCP 1.0
X: 15
R: auth/authoc
S: auth/dh(EBC 599282516167DE 0BDFDEB421BACA2470FF9FC 846BC4E 14E 3EC1
E86B 6DEFD1E449BE9017D 6B5BFF76EFCDD 758AA 8B29ACD 841746ED18CFD), auth/authreq
(D567D 15485E5E07020DED6BB, 1,0B95627084321AFCA422B 7718FE218)

解决方法(华为模式) 
现在资料:
---------------------------------------------------------------------------------------------------
Tx:
RSIP 925595073aaln/*@iad108.01.kdwl.nanchang.comMGCP 1.0
RM:restart
---------------------------------------------------------------------------------------------------
Rx:
200 925595073 OK
---------------------------------------------------------------------------------------------------
Rx:
RQNT 879300970aaln/1@iad108.01.kdwl.nanchang.comMGCP 1.0
X:1600000d
R:AUTH/authoc
S:AUTH/authreq( 4cc 8540762e36222b08ca4305)
---------------------------------------------------------------------------------------------------
Tx:
200 879300970 OK
---------------------------------------------------------------------------------------------------
Tx:
NTFY 2aaln/1@iad108.01.kdwl.nanchang.comMGCP 1.0
O:auth/authoc(2e7e4dfee0b66af 8ffd57ce7eaf63d)
X:1600000d
---------------------------------------------------------------------------------------------------
Rx:
200 2 OK

以下内容是我的猜想:

软交换MGC发给MG鉴权请求Authreq ,Authreq = MD5(MGCKey+Rand())
MG 回复MGC Authoc, Authoc =MD5(Autheq+MgId+Ki)
在软交换端比较Authoc是否正确。
处理流程:

解决方法2(参考《中国电信MGCP 协议测试规范》)
现有资料:
注册请求(带认证字段)

MGC 响应MG 的注册请求(带认证字段)流程解释:
1) MG 向MGC 发RSIP 命令(带通配符),启动方式为restart;命令中还带有四个用于
认证的"X-"字段:用于数字签名的数字串MGAUTH、算法ID、随机数Rand 和用于
DH 交换的A。
MG 事先产生一个随机数Rand,同时MG 再产生一个用于DH 交换的私人数字a,计算
得到A=gamod(P)。通过计算得到MG 的数字签名:
MGAUTH=MD5(Ki + MGID + A + Rand);
2) MGC 收到RSIP 命令后,首先计算MGRES= MD5(Ki + MGID + A + Rand)。
如果MGAUTH = MGRES,则对MG 的认证通过,否则拒绝。认证通过后,MGC 再产生
一个用于DH 交换的私人数字b,计算
B=gbmod(P) 得到共享的鉴权密钥KEY-MGC= Abmod(P)=gabmod(P),并再产生
一个随机数Rand,进而计算得到:
MGCAUTH=MD5(KEY-MGC + Ki + B + Rand)
3) MGC 下发检测摘机RQNT 命令;同时MGC 把B 下传给MG,同时下传的还有
MGCAUTH、算法ID 和随机数Rand。 MG 得到B,MGCAUTH 后,首先计算得到共享的
鉴权密钥 KEY-MG= Bamod(P)=gabmod(P), 进而计算得出 : MGCRES=MD5
(KEY-MG + Ki + B + Rand)
如果MGCAUTH = MGCRES,则说明是一个合法的MGC 发过来的信息。
4) 发送对MGC 的回应消息。
MGC 发起认证鉴权
1. MGC 向MG 发起定期鉴权;
2. MG 回响应。
流程解释:
1) MGC 定期向MG 发送RQNT 命令进行鉴权,命令中带有MGC 产生的随机数Rand
以及共享密钥KEY-MGC 对其加密生成的结果,同时还带有算法ID。如采用MD5 加密,
则加密结果为MD5(KEY-MG + Rand);
2) MG 回响应;
3) MG 用NTFY 中的[ObservedEvents]向MGC 回送鉴权应答,应答中带有用共享密钥
KEY-MG 加密的两项:MGID 及随机数Rand(为MGC 所带的),同时命令中还带有算
法ID。如采用MD5 加密,则加密结果为MD5(KEY-MG + MGID + Rand);
4) MGC 回响应。

消息示例如下:
1.MGC 向MG 发起鉴权
RQNT 268435462*@DomainNameMGCP 1.0
X: 14
R: auth/authoc
S: auth/authreq(C45565B 3BCB419FA194232EF ,1,010B 29333D47515B 79838D97)
2.MG 回送命令响应
200 268435462 Ok
3.MG 向MGC 回送鉴权应答
NTFY 65578*@DomainNameMGCP 1.0
X: 14
O: auth/authoc(122daa 8b9155bb 0726aec15ba,1)
4.MGC 回送命令响应
200 65578 OK

MGCP /H.248 鉴权认证相关推荐

  1. Onvif协议学习:7、鉴权认证

    Onvif协议学习:7.鉴权认证 文章目录 Onvif协议学习:7.鉴权认证 1.前言 2.ONVIF哪些接口需要认证 3.如何认证 4.安装OpenSSL 5.实现认证 6.特别注意 原文链接:ht ...

  2. Python 技术篇-百度语音API鉴权认证获取Access Token实例演示

    百度语音官方鉴权认证文档 下面来为大家进行鉴权认证获取Access Token的演示: 首先需要创建自己的个人语音应用,在应用列表里进行创建. 百度语音个人应用列表 然后用这个应用里的 API Key ...

  3. aka鉴权 ims_ims 注册鉴权认证过程

    移动通信的安全问题正越来越多地受到关注.2G网络主要传输语音业务,采用的是单向的用户认证方案,即网络能够验证用户身份是否合法,而用户无法确认其所连接的网络服务是否可靠.然而,3G网络将会演变成一个覆盖 ...

  4. .Net Core使用Ocelot网关(二) -鉴权认证

    前言 上一章.Net Core使用Ocelot网关(一) -负载,限流,熔断,Header转换 已经简单的介绍了ocelot的使用了,但是网关暴露的接口如果什么人都能访问的话安全性就太低啦.所以我们需 ...

  5. 核心网upf作用_高性能5G核心网,动力从何而来? 核心网,是整个通信网络的大脑,是不可或缺的重要组成部分。 网络的管理控制、鉴权认证等关键功能,主要由核心网负责。核心网的... - 雪球...

    来源:雪球App,作者: 鲜枣课堂,(https://xueqiu.com/7282046183/152278945) 核心网,是整个通信网络的大脑,是不可或缺的重要组成部分. 网络的管理控制.鉴权认 ...

  6. 大数据Hadoop之——Zookeeper鉴权认证(Kerberos认证+账号密码认证)

    文章目录 一.Zookeeper概述与安装 二.Zookeeper Kerberos 鉴权认证 1)Kerberos安装 2)创建用户并生成keytab鉴权文件(前期准备) 3)独立zookeeper ...

  7. ims 注册鉴权认证过程

    摘要:IP多媒体子系统(IMS)作为3G网络的核心控制平台,其安全问题正面临着严峻的挑战.IMS的接入认证机制的实现作为整个IMS安全方案实施的第一步,是保证IMS系统安全的关键.基于认证和密钥协商( ...

  8. Docker Registry部署镜像私有仓库及鉴权认证

    文章目录 一.Docker Registry是什么? 二.Docker Registry部署私有仓库 2.1.Docker Registry安装 2.2.Docker Registry配置 2.3.启 ...

  9. 发现一款java鉴权认证框架sa-token(目前好像坑还很多)

    我们先看一下官网介绍,sa-token有什么功能 链接: 官网地址 主要是Shiro.Security配置繁琐,这个简单易上手 这是他的大致功能点,今天我们搞点基础的 springBoot 集成sa- ...

最新文章

  1. 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
  2. 互联网架构为什么要做服务化
  3. 车道线检测--Towards End-to-End Lane Detection: an Instance Segmentation Approach
  4. java中集合的模型特点_Java 学习笔记(十四)集合
  5. opencv中vc14和vc15的区别?
  6. 几个常见的Python面试题分享,帮你顺利求职
  7. dietlibc中的strcpy算法浅析
  8. Redis集群~StackExchange.Redis(10月6号版1.1.608.0)连接Twemproxy支持Auth指令了
  9. 【高校宿舍管理系统】第十章 缺勤管理、报修管理、来访人员管理以及公告管理
  10. poj 1151 hdu 1542 Atlantis 线段树扫描线(详细讲解)
  11. FFmpeg 基本用法
  12. 【图频处理】基于matlab GUI界面环图像处理与音乐播放系统【含Matlab源码 185期】
  13. esp8266接入小度语音,小度音箱控制,附开源app控制
  14. 华为笔试题——去除重复的数字
  15. 那些年,我们一起做过的KNX智能化控制经典案例!
  16. Go语言程序开发之ARM开发环境搭建
  17. 十年后的我们会是什么样的呢,二十年后的我国 会是什么样呢
  18. 同一工作组计算机无法查看,win7系统在同一个工作组看不到其他电脑怎么回事?...
  19. Attention-guided Context Feature Pyramid Network for Object Detection
  20. Flink实战(八十五):flink-sql使用(十二)Flink 与 hive 结合使用(四)Hive Read Write

热门文章

  1. Gos ——BIOS与继承者MBR
  2. JAVA中用流进行文件分割
  3. ERR_SPDY_PROTOCOL_ERROR错误解决
  4. React 10分钟快速入门
  5. html block属性,css display block属性的意思、作用和效果
  6. 【学习进度】截至2022.9.6,已学习的C++知识
  7. MFC界面开发工具BCG v31.1 - 控件功能增强
  8. ShareSDK 常见问题
  9. 《MySQL 入门教程》第 06 篇 备份与恢复
  10. android 开机向导加载过程,开机向导启动流程分析