LiveGBS/LiveNVR组合实现GB35114平台端和GB35114设备端的GB35114的交互流程

news2025/7/28 6:07:04

概述:

GB35114是在GB28181基础上扩展而来,增加了身份认证和数据加密。LiveNVR设备通过GB35114注册到LiveGBS时,LiveGBS平台端需要校验LiveNVR设备的身份,这是单向认证。同时可选LiveNVR也检验LiveGBS平台的身份,如果互相校验就为双向认证。注册认证通过后,LiveNVR就可以通过GB35114注册到LiveGBS平台了,之后平台向设备发起的信令请求也都需要进行加密认证。

  • 注册认证

注册认证分只有平台校验设备的单向认证,以及相互校验的双向认证。

  1. 单向认证(LiveNVR设备注册到LiveGBS)

1、LiveNVR向LiveGBS服务器发送REGISTER请求。增加Authorization头字段,Authorization的值为Capability,携带参数algorithm、keyversion。参数algorithm的值分为四部分,中间以分号分割。第一部分定义为“A”,为非对称算法描述,取值为设备支持的非对称算法/模式/填充方式,多种算法之间用逗号分隔。例如:A:SM2;第二部分定义为“H”,为杂凑算法描述,取值为设备支持的杂凑算法,多种算法之间用逗号分隔。例如:H:SM3;第三部分定义为“SM3”,为对称算法的描述,取值为设备支持的对称算法/模式/填充方式,多种算法之间用逗号分隔。例如:S:SM1/OFB/PKCS5,SM1/CBC/PKCS5,SM4/OFB/PKCS5,SM4/CBC/PKCS5。第四部分定义为“SI”,为签名算法的描述。例如:SI:SM3-SM2。keyversion为密钥版本号。

2、LiveGBS服务器产生随机数R1,向LiveNVR发送一个挑战响应401,响应的消息头域WWW-Authenticate取值为为UnIDirection,用来携带验证LiveGBS服务器身份的数据。携带参数random1、algorithm。random1取值为R1。algorithm 的值为LiveGBS服务器使用的安全算法。3、LiveNVR收到401 响应后,得到random1和algorithm 的值。产生随机数R2;用LiveNVR私钥对random2+ random1+LiveGBS服务器ID 做数字签名,得到结果sign1。LiveNVR重新向LiveGBS服务器发送REGISTER 请求,Authorization 取值为UnIDirection,携带random1、random2、serverid、sign1、algorithm。random2为LiveNVR产生的随机数R2,random1为LiveGBS服务器产生的随机数R1,serverid 为LiveGBS服务器设备ID,sign1 为用LiveNVR私钥对random2+random1+LiveGBS服务器ID 做数字签名后的结果,algorithm 为采用的安全算法。4.LiveGBS服务器收到请求后,校验LiveNVR签名的有效性(是否被验证过);校验R1有效性(只能1次+时效性);校验LiveGBS服务器ID 与自身是否相符;用设备证书校验sign1签名结果;校验成功,证明LiveNVR身份合法。用LiveNVR公钥对VKEK 加密做Base64编码后得到cryptkey,向LiveNVR发送成功响应200 OK消息,携带cryptkey参数、algorithm 参数。如果校验失败则发送拒绝服务应答。LiveNVR收到200 OK后用LiveNVR私钥解密cryptkey,即可获得VKEK 的值。

具体流程如图1:LiveNVR为具有安全功能的前端设备,LiveGBS为具有安全功能的LiveGBS。

图1、单向认证流程图

  1. 双向认证:

1、LiveNVR向LiveGBS发送REGISTER请求,消息头域中携带LiveNVR的安全能力。增加Authorization头字段,Authorization的值为Capability,携带参数algorithm、keyversion。参数algorithm 的值分为四部分,中间以分号分割。第一部分定义为“A”,为非对称算法描述,取值为设备支持的非对称算法/模式/填充方式,多种算法之间用逗号分隔。例如:A:SM2;第二部分定义为“H”,为杂凑算法描述,取值为设备支持的杂凑算法,多种算法之间用逗号分隔。例如:H:SM3;第三部分定义为“SM3”,为对称算法的描述,取值为设备支持的对称算法/模式/填充方式,多种算法之间用逗号分隔。例如:S:SM1/OFB/PKCS5,SM1/ECB/PKCS5。第四部分定义为“SI”,为签名算法的描述。例如:SI:SM3-SM2。keyversion为密钥版本号。

2、LiveGBS服务器产生随机数R1,向LiveNVR发送一个挑战响应401,响应的消息头域WWW-Authenticate取值为为BIDirection,用来携带验证LiveGBS服务器身份的数据。携带参数random1、algorithm。random1取值为R1。algorithm 的值为LiveGBS服务器使用的安全算法。

3、 LiveNVR收到401 响应后,得到random1和algorithm 的值。产生随机数R2;用LiveNVR私钥对random2+ random1+LiveGBS服务器ID做数字签名,得到结果sign1。LiveNVR 重新向LiveGBS发送REGISTER请求,Authorization取值为Bidirection,携带random1、random2、serverid、sign1、algorithm。random2为LiveNVR产生的随机数R2,random1为LiveGBS服务器产生的随机数R1,serverid为LiveGBS服务器设备ID,sign1 为用LiveNVR 私钥对random2+random1+LiveGBS服务器ID做数字签名后的结果algorithm 为采用的安全算法。

4、LiveGBS服务器收到请求后,校验LiveNVR签名的有效性(是否被验证过);校验R1有效性(只能1次+时效性);校验LiveGBS服务器ID与自身是否相符;用设备证书校验sign1签名结果;校验成功,证明LiveNVR 身份合法。用LiveNVR 公钥对VKEK 加密得到cryptkey,用管理平台私钥对random1+random2+DeviceID+cryptkey做数字签名,得到结果sign2。向LiveNVR发送成功响应200 OK消息,携带random2、random1、DeviceID、sign2、algorithm。cryptkey 参数。random2为LiveNVR产生的随机数R2,random1为LiveGBS服务器产生的随机数R1,DeviceID为LiveNVR的ID,cryptkey为LiveNVR 公钥对VKEK 加密结果经Base64 编码后的值,sign2 为用管理平台私钥对random1+random2+DeviceID+cryptkey做数字签名后的结果,algorithm为采用的安全算法。LiveNVR 收到200 OK后,校验LiveGBS服务器签名的有效性(是否被验证过);校验R2有效性(只能1次+时效性);校验DeviceID与自身是否相符;用LiveGBS服务器证书校验sign2签名结果;校验成功,证明LiveGBS服务器身份合法。用LiveNVR私钥解密cryptkey,即可获得VKEK 的值。如果校验失败则发送拒绝服务应答。

图2、双向认证流程图

二、信令认证

1、信令发送方发送信令前,需要对信令消息头域中的METHOD、From、To、Call-ID、Date、密钥和消息体做杂凑运算,得到结果1,并将结果1作为Note字段的参数nonce的值,本次使用的杂凑算法作为Note字段的参数algorithm 的值。

2、信令发送方将信令发至信令接收方。

3、信令接收方接收信令,比对Date 与当前时间,如果时间之差在有效区间内则提取METHOD、From、To、Call-ID,Date、消息体、结果1、杂凑算法,使用杂凑算法对METHOD、From、To、Call-ID,Date、密钥和消息体做杂凑运算,得到结果1′,匹配结果1和结果1′。如果匹配成功,则信令认证通过,否则认证失败,丢弃该信令并终止该信令会话过程。

4、若信令接收方对收到的信令认证通过,则生成响应信令,并将即将发出的信令消息中的METHOD、From、To、Call-ID,Date、密钥、消息体做杂凑运算,得到结果2。

5、得到结果2作为Note字段的参数nonce的值,本次使用的杂凑算法作为Note字段的参数algorithm 的值,将响应信令发送给信令发送方。

6、信令发送方接收到响应信令,提取METHOD、From、To、Call-ID,Date、消息体、结果2,比对Date与当前时间,如果时间之在差在有效区间内,则将这些参数和密钥一起做杂凑运算,得到结果2′,匹配结果2和2′,如果匹配成功,则信令认证通过,否则失败,丢弃该信令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Howto] Pytorch Window GPU 环境配置

注: how to 系列只有基本的操作,不涉及原理,类似于操作手册。 Linux,MacOS和Window配置方法差不多,就是环境变量的修改方式不太一样,就不单独说明了。 1. 确定Pytorch版本 估计像我一样的初学者&#xf…

关于commonjs、AMD、UMD、ESM以及ts模块之间的使用差异

commonjs 特点:一个文件就是一个模块,拥有独立的作用域,适用于服务端不适合浏览器端。导出模块内部数据通过module.exports或exports对象默认导出: // true const a 1 const b 2 module.exports {a, b }或者 // true const …

【跨境电商卖家】Instagram营销初学者指南(二):方法与技巧

关键词:跨境电商卖家、instagram营销 1.为 Instagram营销设定目标 在你开始在 Instagram 上发帖之前,问问你自己(或你的团队)一件事:你为什么在 Instagram 上?尽管该平台很受欢迎,但您的回答不…

linux笔记(6):东山哪吒D1H显示HDMI测试-命令行调试

文章目录1.测试流程和结果2.测试过程详解2.1 挂载测试工具1.2 设置参数1.2.1设置name1.2.2选择命令1.2.3 设置命令参数1.3开启显示3.还没搞清楚怎么在应用中显示字符测试开发板的HDMI输出。 参考文档:全志官方文档。 1.测试流程和结果 测试结果: 2.测…

如何实现一键全选

利用复选框的激活、非激活实现一键全选功能 效果展示 前置准备 投票列表素材 具体步骤 添加素材 制作列表复选框 制作一件全选按钮 创建复选框相关行为触发器 制作一键全选触发器 步骤分解 添加素材 拖拽 图片组件 到 根容器 选中 图片组件 铺满父级容器 点击 检查面板 中的 …

一种新的群体智能优化算法:麻雀搜索算法(SSA)(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

C++中函数调用的整个过程内存堆栈分配详解

函数调用过程中:实参将值拷贝给函数的形参,而函数的形参相当于一个生存周期位于函数 内部的局部变量,函数内部的内存操作也只是将拷贝到形参的值进行操作,形参在函数结束 后会被栈自动回收释放(形参在栈中分配),这就是…

Spring Security如何防止会话固定攻击

在春季安全课程的这篇文章中,我们将研究春季安全会话固定以及如何防止春季应用程序中的会话劫持。 春季安全会话固定 会话固定是一种非常常见且最常见的攻击类型,恶意攻击者可以通过访问站点来创建会话,然后诱使其他用户使用相同的会话登录…

副业是刚需?分享几个程序员接外包私活的网站

经常看到某某程序员接了个项目开发,工作之余轻轻松松赚了钱还顺带提升了技术;或者看到某大佬又发表了一篇程序员技术提升稿件,阅读点赞收藏三连发,这个月的零花钱又不愁了...但自己只是一名普普通通的程序员,能找到这样…

Golang入门笔记(10)—— 闭包 closure

先看一段代码,脱离代码讲闭包,太干了。 package mainimport "fmt"func main() {a : Adder()fmt.Println(a(1))fmt.Println(a(2))fmt.Println(a(3)) }func Adder() func(int) int { // 累加器:这里从10开始累加var sum int 10retu…

linux时区相关

背景:用linux自带的时间接口函数读取时间的时候,发现有时候时间与北京时间不符合,经过研究发现:时间 UTC时间时区带来的偏移。操作方法:timedatectl list-timezones可看支持的时区改时区方法有如下两种: l…

【LeetCode 每日一题】15. 三数之和

01 题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元…

【数据结构】链表LinkedList

1.ArrayList的缺陷 2.单链表的实现 3.LinkedList的使用(模拟实现) 我们之前介绍过ArrayList了,它的底层是数组,数组是一段连续的空间,当我们想要插入或者删除数据的时候,插入元素,就要让插入位置…

用树莓派PICO做一个桌面时钟超详细教程!

用树莓派PICO做一个可显示时间和温湿度的桌面时钟一、概述二、材料准备1、树莓派PICO2、DHT11温湿度传感器3、DS1302时钟模块(选用)4、SSD1306屏幕5、其他材料三、开始1、连线2、写程序(1)使用内置RTC函数实现的时钟(2…

2.11 教你一套怎么建立自己的选题素材库的方法【玩赚小红书】

一、自身定位延伸选题库 建立选题库,前提先确定自身定位,然后发散性思维延展。如我们做母婴博主,接下来就要想,母婴用户会关注什么,自然会想到到宝宝吃喝玩乐、妈妈保养、产后修复、婆媳关系等等内容。若我们只做宝宝…

这才是,真彩虹预染蛋白Markers

做WB的小伙伴都知道,现市面上各种“多彩”Marker的产品有很多,但是真正拿到手上的,可能是各种各样的(见图1),咱也不清楚哪个是真的... 现在小编告诉你,经典的彩虹Marker长这样(见图2)&#xff1…

WebDAV之葫芦儿·派盘+读出通知

读出通知 支持webdav方式连接葫芦儿派盘。 手机各种推销通知太多,如何避免那些繁琐的通知内容,做出一键就能够阅读重要通知的最佳体验,帮助您更加快速和便捷的体验到那些应用内容?推荐大家使用读出通知。 读出通知APP可以设置接收通知的app,还可以用耳机操作,操作简单…

avalanche 少量tcp长连接持续构建HTTP请求测试

最近测试项目,测试要求使用少量tcp长连接连接,持续打HTTP请求,到测试结束。 分别用思博伦测试仪和supernova测试仪进行实现。 思博伦测试仪实现 测试仪基本运行流程:Loads配置任何形式bandwidth,connection&#xf…

SpringBoot项目本机和Linux环境部署

文章目录一. 本机环境下打包与运行二. Linux下部署SpringBoot项目2.1 Linux环境配置2.2 配置数据库2.3 运行程序一. 本机环境下打包与运行 项目进行打包 2. 本机环境下运行SpringBoot程序 控制台进入SpringBoot项目jar包所在的文件夹,运行下面指令即可 java -jar […

[附源码]java毕业设计企业招标系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…