王 鑫,海 軍,湯 凱,杜 鵬,晏 亮
(北京科東電力控制系統(tǒng)有限責任公司,北京 100192)
傳統(tǒng)數(shù)據(jù)采集網(wǎng)關是基于標準的SSL,IPSec安全協(xié)議,握手過程中需要交換大量的數(shù)據(jù)包,在移動網(wǎng)絡信號不穩(wěn)定的情況下容易導致采集終端無法連接平臺。傳統(tǒng)的通信協(xié)議一般采用IEC 60870-5-104,IEC 60870-5-101,Modbus等一對一結對協(xié)議,采集網(wǎng)關將數(shù)據(jù)分發(fā)給不同的業(yè)務應用,解決比較復雜的一發(fā)多收情形。傳統(tǒng)網(wǎng)關的高并發(fā)模型一般采用select,IOCP或epoll模型,難以支持超大量級的并發(fā)進程。基于商密SM9算法的分布式數(shù)據(jù)采集網(wǎng)關依托“大云物移智”等新型互聯(lián)網(wǎng)技術,可實現(xiàn)具備海量數(shù)據(jù)接入能力、高并發(fā)、安全可靠的數(shù)據(jù)采集網(wǎng)關。
2016年國家密碼管理局正式發(fā)布了SM9密碼算法標準。該算法可以將任意的具有唯一性的標識數(shù)據(jù)(如物聯(lián)網(wǎng)對象標識、生物特征、安全控制策略等)生成標識公私密鑰對,進行密碼運算,包括加解密、簽名驗簽。目前,SM9標識密碼算法技術憑借其技術優(yōu)勢,在政企單位、各行業(yè)中得到廣泛應用。
消息隊列遙測傳輸(message queuing telemetry transport,MQTT)最早是IBM開發(fā)的一個即時通訊協(xié)議,MQTT協(xié)議是為大量計算能力有限且工作在低帶寬、不可靠網(wǎng)絡的遠程傳感器和控制設備通信而設計的一種協(xié)議。
Erlang從一開始就被設計成用于自下而上地編寫并發(fā)式、分布式、容錯、可擴展和軟實時系統(tǒng)的編程平臺。Erlang系統(tǒng)已經(jīng)被大規(guī)模部署,并且控制了全世界許多重要的移動通信網(wǎng)絡。
該數(shù)據(jù)采集網(wǎng)關采用基于雙線性對的SM9標識密碼算法,以采集終端編號和用戶ID生成的公、私密鑰對,進行簽名驗簽、加解密等密碼運算,省略了交換數(shù)字證書和公鑰過程,減少了交互過程,提升了移動網(wǎng)絡環(huán)境下的采集終端連接數(shù)據(jù)采集網(wǎng)關的成功率。采集終端與平臺交互的數(shù)據(jù)包含監(jiān)測數(shù)據(jù)、管理數(shù)據(jù)和交易數(shù)據(jù),不同的數(shù)據(jù)需要不同的業(yè)務應用處理。以往采集終端數(shù)據(jù)上送到系統(tǒng)內(nèi)部后再分發(fā)給不同的業(yè)務應用,而本系統(tǒng)研究的是采用發(fā)布訂閱模式:數(shù)據(jù)發(fā)布者將密文數(shù)據(jù)發(fā)送到數(shù)據(jù)采集網(wǎng)關集群上,數(shù)據(jù)消費者按需訂閱,提升了數(shù)據(jù)的處理效率和并發(fā)處理能力。
該數(shù)據(jù)采集網(wǎng)關預期具備安全地接入百萬級采集終端能力,且具備系統(tǒng)容量水平擴充能力,能有效解決海量終端數(shù)據(jù)安全可靠的高并發(fā)采集問題。
全面分析采集終端的數(shù)據(jù)傳輸需求,通過數(shù)據(jù)采集網(wǎng)關,保障數(shù)據(jù)傳輸?shù)膶崟r性和可靠性,規(guī)范采集終端的采集標準,建立統(tǒng)一、兼容、高效的數(shù)據(jù)模型,有效提高接入設備的數(shù)據(jù)傳輸、采集能力,保障數(shù)據(jù)的一致性、安全性。建設高效、可靠的數(shù)據(jù)采集網(wǎng)關需要滿足以下要求。
(1) 數(shù)據(jù)安全性。數(shù)據(jù)作為一種資源,具有普遍性、共享性、增值性、可處理性和多效用性。數(shù)據(jù)安全的實質就是要保護信息系統(tǒng)或信息網(wǎng)絡中的信息資源免受各種類型的威脅、干擾和破壞,即保證數(shù)據(jù)信息的安全性。對于采集網(wǎng)關本身的數(shù)據(jù)及其他方面的安全做了以下要求:
① 應提供終端身份標識唯一和鑒別信息復雜度檢查功能;
② 保證采集網(wǎng)關中不存在重復;
③ 保障通信的完整性和保密性,在通信雙方建立連接之前,采集網(wǎng)關應利用密碼技術進行會話初始化驗證,實現(xiàn)終端的身份認證;
④ 應采用密碼技術保證通信過程中的數(shù)據(jù)完整性,并對整個報文或會話過程進行加密;
⑤ 應保證主要網(wǎng)絡設備的業(yè)務處理能力具備冗余空間,滿足業(yè)務高峰期需要。
(2) 數(shù)據(jù)采集高效性。目前電力系統(tǒng)中傳感器等設備產(chǎn)生的數(shù)據(jù)量很大且變化速度快,具有很嚴格的處理時效性和海量數(shù)據(jù)接入要求。需要分布式的實時數(shù)據(jù)高速同步采集及處理分析技術,實現(xiàn)高效率、簡潔、實時的數(shù)據(jù)采集和處理,并滿足終端高并發(fā)、低延時的接入及海量數(shù)據(jù)接入的能力,保障數(shù)據(jù)的一致性和安全性等。
在滿足數(shù)據(jù)安全性、并發(fā)實時性、接入能力等前提下,實現(xiàn)基于SM9密碼標識算法的數(shù)據(jù)加解密、海量數(shù)據(jù)接入、數(shù)據(jù)發(fā)布訂閱等功能,設計開發(fā)出一種具備高并發(fā)、低延時、海量數(shù)據(jù)接入的數(shù)據(jù)采集網(wǎng)關。
(1) 數(shù)據(jù)的加解密。采用SM9密碼標識算法實現(xiàn)數(shù)據(jù)的加解密,保證通信過程中數(shù)據(jù)的機密性和完整性。其原理是通過密鑰封裝機制使得封裝者可以產(chǎn)生和加密一個秘密密鑰給目標終端,而唯有目標終端可以解封裝該秘密密鑰,并把它作為進一步會話密鑰。該機制可提供消息的機密性,在基于標識的加密算法中,解密用戶持有一個終端標識和一個相應的私鑰,該私鑰由密鑰生成中心通過主私鑰和解密用戶的標識結合產(chǎn)生。加密用戶用解密用戶的標識加密數(shù)據(jù),解密用戶用自身私鑰解密數(shù)據(jù),從而實現(xiàn)對終端與平臺間傳輸數(shù)據(jù)的加密和解密。
(2) 海量數(shù)據(jù)接入。終端數(shù)據(jù)接入時,采集終端通過軟負載均衡(LVS)或者硬負載均衡(F5等)將流量均勻地分配到各個可水平擴展的通信網(wǎng)關節(jié)點上,有效解決了采集終端高并發(fā)、低延時、海量數(shù)據(jù)的接入問題,使得采集網(wǎng)關滿足實時數(shù)據(jù)的海量接入和處理的基本要求。
(3) 數(shù)據(jù)發(fā)布訂閱。設計開發(fā)的采集網(wǎng)關具備消息的發(fā)布訂閱功能。通過該功能實現(xiàn)終端與平臺及平臺與其他應用的消息發(fā)布與訂閱。發(fā)布訂閱機制原理:定義了“一對多”的依賴關系,讓多個訂閱者對象同時監(jiān)聽某一個主題對象。這個主題對象在自身狀態(tài)變化時,會通知所有訂閱者對象,使它們能夠自動更新自己的狀態(tài)。
在發(fā)布訂閱機制中進行多方數(shù)據(jù)通信時,常常需要一方向多方發(fā)出數(shù)據(jù)請求,從而獲得數(shù)據(jù)。在這樣的應用場合中,網(wǎng)關作為執(zhí)行數(shù)據(jù)請求轉發(fā)操作的中間件,有利于降低提供多方數(shù)據(jù)通信服務平臺的構架復雜性。訂閱發(fā)布模式所做的工作其實就是在解耦合。讓耦合的雙方都依賴于抽象,而不是依賴于具體,從而使得各自的變化都不會影響另一邊的變化。通過并行操作、消息緩存、基于樹或基于網(wǎng)絡的路由等技術,發(fā)布/訂閱提供了比傳統(tǒng)的客戶端、服務器更好的可擴展性和松耦合性。
基于SM9密碼標識的公鑰加密算法是密鑰封裝機制和消息封裝機制的結合。在基于標識的加解密算法中,解密用戶持有一個終端標識和一個相應的私鑰,該私鑰是由密鑰生成中心通過主私鑰和解密用戶的標識結合產(chǎn)生。加密用戶用解密用戶的標識加密數(shù)據(jù),解密用戶用自身私鑰解密數(shù)據(jù)。
通過對SM9標識密碼算法的數(shù)字簽名認證和數(shù)據(jù)加解密機制的研究,在通信雙方建立連接之前,利用SM9標識密碼算法技術進行會話初始化驗證,實現(xiàn)對終端設備的會話協(xié)商和協(xié)商驗證,完成主站與采集終端的安全認證。密鑰封裝機制中采用采集終端編號標識用以生成終端的公、私密鑰對,進行密鑰和數(shù)據(jù)的加解密。作為公鑰,不僅實現(xiàn)密鑰和數(shù)據(jù)的加解密,而且還省略了交換數(shù)字證書和公鑰過程,簡化了密鑰管理,提高了加解密的速度和應用效率。基于SM9密碼標識的身份認證如圖1所示。
圖1 基于SM9密碼標識的身份認證
從圖1中可以看出,首先,采集終端向平臺發(fā)起身份認證請求,平臺收到終端的認證請求后,生成包含隨機數(shù)的響應報文,發(fā)送至采集終端;然后,采集終端使用自己的編號生成私鑰,使用該私鑰生成認證響應報文發(fā)送至平臺;最后,平臺收到終端的認證響應報文,進行身份驗證。如果驗證失敗,需終端重新進行身份驗證。
這種簡便、易于理解的密鑰,顯示了SM9密碼標識極大的優(yōu)越性,SM9密碼算法身份認證技術不需數(shù)字證書就可實現(xiàn)加密簽名方法,因此,其允許用戶選擇自己的公鑰,并通過密鑰管理芯片接收到自己的私鑰。
基于物聯(lián)網(wǎng)協(xié)議的安全采集協(xié)議是通過主題對消息進行分類的,本質上就是一個UTF-8的字符串,通過反斜杠表示多個層級關系。在本協(xié)議中,采用三級主題模式,如表1所示。一級主題和二級主題表示的是消息類型;三級主題為終端編號,也是數(shù)據(jù)采集網(wǎng)關進行加解密的標識數(shù)據(jù)。
表1 安全采集協(xié)議三級主題模式
采集終端通過負載數(shù)據(jù)上送密文到采集網(wǎng)關,網(wǎng)關根據(jù)終端編號進行解密,并根據(jù)應用的訂閱情況進行數(shù)據(jù)推送,如圖2所示。
圖2 采集協(xié)議數(shù)據(jù)以及數(shù)據(jù)流向
運行監(jiān)控應用訂閱監(jiān)測數(shù)據(jù),運維檢修應用訂閱管理數(shù)據(jù),運營交易應用訂閱交易數(shù)據(jù)。根據(jù)需求進行訂閱消息可以降低系統(tǒng)耦合度,提升系統(tǒng)穩(wěn)定性。
數(shù)據(jù)采集網(wǎng)關由鏈接管理、消息處理和消息發(fā)布3部分組成。鏈接管理負責TCP連接處理、MQTT協(xié)議編解碼、心跳監(jiān)測以及并發(fā)訪問控制。消息處理部分實現(xiàn)消息加解密處理、消息超時重傳、離線消息緩存和下發(fā)消息控制。消息發(fā)布負責維護全局主題、全局路由信息、訂閱關系和跨節(jié)點消息轉發(fā)。其功能構架如圖3所示。
數(shù)據(jù)采集網(wǎng)關集群由分布互聯(lián)的網(wǎng)關運行系統(tǒng)組成,每個采集網(wǎng)關通過網(wǎng)絡互聯(lián)的方式相互通信。采集網(wǎng)關通過UDP組播方式自動集群,當某一采集網(wǎng)關宕機時,會從集群中自動刪除,如圖4所示。
數(shù)據(jù)采集網(wǎng)關集群可以支持百萬級高并發(fā)連接、毫秒級低時延消息,滿足高并發(fā)、大數(shù)據(jù)、低延時要求,滿足訪問控制、安全連接、加密傳輸?shù)男枨?。該網(wǎng)關基于分布式編程平臺進行設計,集群無單點瓶頸,采集網(wǎng)關個數(shù)可以水平擴展,容量可以隨著接入終端數(shù)量進行擴容。
圖3 數(shù)據(jù)采集網(wǎng)關功能架構
圖4 數(shù)據(jù)采集網(wǎng)關集群
圖5 數(shù)據(jù)采集網(wǎng)關在車聯(lián)網(wǎng)平臺中的應用
車聯(lián)網(wǎng)平臺中通過有8個數(shù)據(jù)采集網(wǎng)關的集群采集電動汽車和充電樁的加密數(shù)據(jù),將解密后的數(shù)據(jù)發(fā)布給應用業(yè)務,同時集群接收業(yè)務應用的控制指令,加密后發(fā)布給終端。其網(wǎng)絡拓撲如圖5所示。
該采集網(wǎng)關集群目前已接入6萬充電樁和2萬電動汽車,運行穩(wěn)定,單網(wǎng)關負載小于20 %,集群可用率大于99.9 %,達到了預期目的。
研究并實現(xiàn)了基于商密SM9算法的數(shù)據(jù)采集網(wǎng)關。該采集網(wǎng)關集群經(jīng)工程應用檢驗,具備海量、高并發(fā)、安全可靠的數(shù)據(jù)采集能力,適用于能源管理、工業(yè)制造、共享經(jīng)濟、智慧安防、智慧農(nóng)業(yè)等領域。基于該采集網(wǎng)關建設系統(tǒng),可以降低系統(tǒng)開發(fā)難度,加快系統(tǒng)開發(fā)進度,提升系統(tǒng)穩(wěn)定性等。