LiveGBS/LiveNVR组合实现GB35114平台端和GB35114设备端的GB35114的交互流程
概述:
GB35114是在GB28181基礎上擴展而來,增加了身份認證和數據加密。LiveNVR設備通過GB35114注冊到LiveGBS時,LiveGBS平臺端需要校驗LiveNVR設備的身份,這是單向認證。同時可選LiveNVR也檢驗LiveGBS平臺的身份,如果互相校驗就為雙向認證。注冊認證通過后,LiveNVR就可以通過GB35114注冊到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、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′,如果匹配成功,則信令認證通過,否則失敗,丟棄該信令。
總結
以上是生活随笔為你收集整理的LiveGBS/LiveNVR组合实现GB35114平台端和GB35114设备端的GB35114的交互流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TortoiseGit乌龟git添加公钥
- 下一篇: 大数据之路之交通大数据应用总体架构设计