李佑文 俞 銘 陸知言
南京國(guó)電南自軌道交通工程有限公司
目前,國(guó)內(nèi)外大量城市在進(jìn)行地鐵智慧車(chē)站試點(diǎn)工作,其中,智慧車(chē)站監(jiān)控系統(tǒng)是車(chē)站運(yùn)行管理的核心,是智慧的“大腦”,其實(shí)施的目標(biāo)是實(shí)現(xiàn)車(chē)站運(yùn)營(yíng)數(shù)字化、智能化,幫助車(chē)站站務(wù)人員更加智能地進(jìn)行站務(wù)處理、設(shè)備管理,使車(chē)站運(yùn)維更加安全、高效。城市軌道交通一旦遭到破壞,會(huì)嚴(yán)重危害公共利益,車(chē)站作為大中型城市的參與主體,其安全問(wèn)題更加不容忽視,因此,在車(chē)站運(yùn)行的智慧車(chē)站監(jiān)控系統(tǒng)設(shè)計(jì)時(shí),必須將安全性放在首位。
智慧車(chē)站監(jiān)控系統(tǒng)集成了多個(gè)自動(dòng)化專(zhuān)業(yè)子系統(tǒng),與眾多子系統(tǒng)利用接口進(jìn)行數(shù)據(jù)交互,在B/S架構(gòu)的智慧車(chē)站監(jiān)控系統(tǒng)中,最關(guān)鍵、要求最高的功能是保證通信的安全性。本文設(shè)計(jì)了一種符合EN50159標(biāo)準(zhǔn)的智慧車(chē)站監(jiān)控系統(tǒng)安全的通信機(jī)制,該機(jī)制滿(mǎn)足安全完整性等級(jí)(Safety Integrity Level,SIL)的2級(jí)安全認(rèn)證。
由于B/S架構(gòu)屬于完全瘦客戶(hù)端特性,不需要在工作站上安裝特定的客戶(hù)端軟件就能訪(fǎng)問(wèn)數(shù)據(jù),越來(lái)越多的工業(yè)控制軟件從C/S架構(gòu)轉(zhuǎn)變?yōu)锽/S架構(gòu)。為了安全起見(jiàn),早期的B/S架構(gòu)客戶(hù)端和服務(wù)器端無(wú)法保持長(zhǎng)連接通信,且服務(wù)端也法直接推送數(shù)據(jù)至客戶(hù)端,使得工業(yè)控制領(lǐng)域數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性變得很差。為了解決這種矛盾,在智慧車(chē)站監(jiān)控系統(tǒng)的工作站和服務(wù)器之間設(shè)計(jì)一種WEBSOCKET通信機(jī)制,與傳統(tǒng)C/S架構(gòu)下的SOCKET方式類(lèi)似,能夠保證通信鏈路的長(zhǎng)連接,并且工作站和服務(wù)器端的通信是完全雙工的,可以相互之間發(fā)送數(shù)據(jù)。
WEBSOCKET本質(zhì)上是一種計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用層的協(xié)議,用來(lái)彌補(bǔ)HTTP協(xié)議在持久通信能力上的不足,由于HTTP本身是無(wú)狀態(tài)協(xié)議,每一個(gè)新的HTTP請(qǐng)求只能通過(guò)客戶(hù)端主動(dòng)發(fā)起,通過(guò)建立連接→傳輸數(shù)據(jù)→斷開(kāi)連接的方式來(lái)傳輸數(shù)據(jù),而采用WEBSOCKET通信使得B/S架構(gòu)的工作站和服務(wù)器之間的數(shù)據(jù)交換變得簡(jiǎn)單,允許服務(wù)器端主動(dòng)向客戶(hù)端推送數(shù)據(jù)。使用WEBSOCKET可以創(chuàng)建持久性連接,并進(jìn)行雙向數(shù)據(jù)傳輸。
單純的WEBSOCKET數(shù)據(jù)是不加密的,很容易被竊取。為了保護(hù)數(shù)據(jù)安全,在智慧車(chē)站監(jiān)控系統(tǒng)的工作站與服務(wù)器端采用SSL+WEBSOCKET協(xié)議的通信方式,其在TCP層對(duì)所有交互報(bào)文進(jìn)行加密,工作站只有在安裝了證書(shū)的情況下,才能正常訪(fǎng)問(wèn)服務(wù)器,否則會(huì)提示連接不安全,需要用戶(hù)安裝有效證書(shū)后才能訪(fǎng)問(wèn)服務(wù)器。使用證書(shū)的SSL+WEBSOCKET方式要求服務(wù)器與工作站之間的訪(fǎng)問(wèn)均受信任,在TCP層保證了通信過(guò)程中數(shù)據(jù)不被泄密和篡改。
雖然在TCP層使用了安全的WEBSOCKET通信機(jī)制,但在專(zhuān)用SIL2等級(jí)認(rèn)證的系統(tǒng)中仍然不夠,還需在應(yīng)用層進(jìn)行EN50159標(biāo)準(zhǔn)的合規(guī)性設(shè)計(jì)。該標(biāo)準(zhǔn)是專(zhuān)門(mén)針對(duì)鐵路信號(hào)系統(tǒng)中安全相關(guān)通信而設(shè)立的,從功能和技術(shù)層面提出傳輸系統(tǒng)可能遇到的威脅及安全要求和措施。為防御各種風(fēng)險(xiǎn),其要求通信系統(tǒng)必須在應(yīng)用層采用規(guī)定的防護(hù)措施,以提供安全保障。核心思想是通過(guò)技術(shù)手段保證通信報(bào)文的真實(shí)性、完整性、實(shí)時(shí)性和有序性。EN50159標(biāo)準(zhǔn)所規(guī)定的7種威脅和8種防護(hù)措施如表1所示。
為滿(mǎn)足SIL2級(jí)認(rèn)證要求,智慧車(chē)站監(jiān)控系統(tǒng)中工作站和服務(wù)器之間的通信必須在應(yīng)用層符合EN50159標(biāo)準(zhǔn),因此,本文針對(duì)表1中的8種防護(hù)措施進(jìn)行了對(duì)應(yīng)性的設(shè)計(jì)。
表1 EN50159標(biāo)準(zhǔn)中的威脅與防護(hù)措施
(1)防護(hù)措施1:序列號(hào)設(shè)計(jì)。由于WEBSOCKET的全雙工特性,為服務(wù)端和客戶(hù)端的每條報(bào)文均設(shè)計(jì)發(fā)送序列號(hào)SendSeqNo和接受序列號(hào)RecvSeqNo。
SendSeqNo:unsigned int,每發(fā)送一幀報(bào)文增加1;
RecvSeqNo:unsigned int,每接受到一幀報(bào)文增加1;
客戶(hù)端的接受序列號(hào)RecvSeqNo應(yīng)等于服務(wù)端的發(fā)送序列號(hào)SendSeqNo;
服務(wù)端的接受序列號(hào)RecvSeqNo應(yīng)等于客戶(hù)端的發(fā)送序列號(hào)SendSeqNo;
(2)防護(hù)措施2:時(shí)間戳。為每條報(bào)文設(shè)計(jì)一個(gè)時(shí)間戳SendTime(unsigned long),為了節(jié)省傳輸報(bào)文的長(zhǎng)度,不使用“YYYY-MM-dd HH:mm:ss”格式,而使用4字節(jié)時(shí)間戳。
(3)防護(hù)措施3:超時(shí)判斷。設(shè)計(jì)最大超時(shí)時(shí)間為T(mén)max,接收端須校驗(yàn)兩個(gè)報(bào)文間的時(shí)間間隔是否超過(guò)允許的最大時(shí)間Tmax,如超過(guò),則視為傳輸發(fā)生了錯(cuò)誤。另外,在無(wú)業(yè)務(wù)數(shù)據(jù)交互時(shí),通過(guò)發(fā)送心跳報(bào)文來(lái)避免超時(shí)導(dǎo)致的錯(cuò)誤。
(4)防護(hù)措施4:源、宿標(biāo)識(shí)符。每條報(bào)文設(shè)計(jì)源標(biāo)識(shí)符From,和宿標(biāo)識(shí)符To,分別記錄報(bào)文的發(fā)送端IP和接收端IP地址,并提前在客戶(hù)端和服務(wù)器中配置所有可能的源標(biāo)識(shí)IP和宿標(biāo)識(shí)IP,在每次接收到報(bào)文后進(jìn)行IP校驗(yàn),從而避免非法IP的模擬報(bào)文介入。
(5)防護(hù)措施5:反饋報(bào)文。不要求每幀請(qǐng)求報(bào)文都必須要對(duì)應(yīng)反饋報(bào)文,但是在連續(xù)收到M(M=8)幀報(bào)文后必須反饋,發(fā)送端連續(xù)發(fā)送M幀后會(huì)等待反饋報(bào)文,若超時(shí)后其仍未收到反饋報(bào)文,則認(rèn)為傳輸錯(cuò)誤。
(6)防護(hù)措施6:認(rèn)證程序。在客戶(hù)端和服務(wù)端間進(jìn)行,在客戶(hù)端首次連接服務(wù)器時(shí)發(fā)送身份信息(用戶(hù)名、密碼)向服務(wù)器申請(qǐng)秘鑰Token,服務(wù)端身份信息驗(yàn)證通過(guò)后返回Token以及其失效時(shí)間,客戶(hù)端使用該Token在此段時(shí)間內(nèi)的請(qǐng)求有效,若時(shí)間超過(guò),則必須重新申請(qǐng)Token;若服務(wù)器端身份驗(yàn)證信息失敗,則直接拒絕請(qǐng)求。
(7)防護(hù)措施7:安全編碼。為每個(gè)報(bào)文設(shè)計(jì)個(gè)32位的MD5校驗(yàn)碼字段,用于保存對(duì)除了該字段以外的內(nèi)容進(jìn)行MD5校驗(yàn)的值,如圖1所示。
圖1 MD5安全校驗(yàn)碼設(shè)計(jì)
(8)防護(hù)措施8:加密技術(shù)。對(duì)所傳輸?shù)膱?bào)文整體進(jìn)行加密(不同于MD5的校驗(yàn)碼),只有授權(quán)的用戶(hù),并具有相應(yīng)的權(quán)限才能解密。由于在TCP層已使用SSL加密的WEBSOCKET通信技術(shù),因此,在應(yīng)用層可以不必再對(duì)報(bào)文進(jìn)行加密。
本文在城市軌道交通智慧車(chē)站監(jiān)控系統(tǒng)中使用SSL+WEBSOCKET方式,要求服務(wù)器與工作站之間的訪(fǎng)問(wèn)均是受信任的,在TCP層保證通信過(guò)程中數(shù)據(jù)不被泄密和不被篡改。同時(shí),又在業(yè)務(wù)應(yīng)用層對(duì)交互的報(bào)文進(jìn)行EN50159標(biāo)準(zhǔn)的合規(guī)性設(shè)計(jì),通過(guò)技術(shù)手段保證通信報(bào)文的真實(shí)性、完整性、實(shí)時(shí)性和有序性,徹底地解決傳輸系統(tǒng)可能遇到的各種威脅,從而保證通信系統(tǒng)的安全性。