郝曉平
(鄭州地鐵集團(tuán)有限公司,450018,鄭州 ∥ 高級(jí)工程師)
采用國(guó)產(chǎn)加密技術(shù)的信號(hào)系統(tǒng),通過(guò)在既有的信號(hào)系統(tǒng)上增設(shè)國(guó)產(chǎn)加密安全芯片等設(shè)備,用國(guó)產(chǎn)加密算法對(duì)通信數(shù)據(jù)進(jìn)行加密,使通信數(shù)據(jù)得到可鑒別性保護(hù)、不可否認(rèn)性保護(hù)、機(jī)密性保護(hù)和完整性保護(hù)。這一技術(shù)彌補(bǔ)了信號(hào)系統(tǒng)內(nèi)部通信的信息安全漏洞,實(shí)現(xiàn)了信號(hào)系統(tǒng)通信的高安全性和高可靠性,提升了信號(hào)系統(tǒng)的信息安全水平。但美中不足的是,該技術(shù)卻降低了信號(hào)系統(tǒng)的可維護(hù)性。
信號(hào)系統(tǒng)的一般調(diào)試維護(hù)是通過(guò)通信兩側(cè)的數(shù)據(jù)通信交換機(jī)對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行抓包,并解析抓包數(shù)據(jù)來(lái)完成的。而經(jīng)國(guó)產(chǎn)加密技術(shù)加密后的網(wǎng)絡(luò)信息已全部變?yōu)槊芪?,且加密密鑰多采用動(dòng)態(tài)協(xié)商機(jī)制,只有對(duì)已加密的網(wǎng)絡(luò)捕包進(jìn)行解密后,才能與一般的調(diào)試維護(hù)同步對(duì)接。否則,開(kāi)發(fā)調(diào)試人員面對(duì)加密數(shù)據(jù)將無(wú)從解析,也就無(wú)法進(jìn)一步定位問(wèn)題和分析排查。這給信號(hào)系統(tǒng)的調(diào)試維護(hù)帶來(lái)了較大的不便和不確定性。
要解密已加密的網(wǎng)絡(luò)數(shù)據(jù),關(guān)鍵在于如何獲取加密密鑰,并將加密密鑰與加密報(bào)文對(duì)應(yīng)起來(lái)。加密密鑰采用的點(diǎn)對(duì)點(diǎn)動(dòng)態(tài)協(xié)商機(jī)制,增大了獲取加密密鑰的難度。此外,在解密過(guò)程中,還需保證加密密鑰的機(jī)密性,并盡量降低調(diào)試維護(hù)的操作難度,以實(shí)現(xiàn)與一般的調(diào)試維護(hù)方式同步對(duì)接。
本文針對(duì)國(guó)產(chǎn)加密技術(shù),提出了一個(gè)網(wǎng)絡(luò)捕包解密方案,可對(duì)加密的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解密。該方案通過(guò)系統(tǒng)軟件和解密工具的緊密配合,取得動(dòng)態(tài)協(xié)商的密鑰,并將密鑰與數(shù)據(jù)內(nèi)的報(bào)文逐一對(duì)應(yīng),從而完成對(duì)網(wǎng)絡(luò)抓包的解密。
采用網(wǎng)絡(luò)捕包解密方案的信號(hào)系統(tǒng),在既有信號(hào)系統(tǒng)上集成了國(guó)產(chǎn)加密設(shè)備。其系統(tǒng)結(jié)構(gòu)如圖1所示。在圖1中,應(yīng)用層由CC(車載控制器)、ZC(區(qū)域控制器)、LC(線路控制器)、CI(計(jì)算機(jī)聯(lián)鎖)、ATS(列車自動(dòng)監(jiān)控)、MSS(維護(hù)監(jiān)測(cè)系統(tǒng))等子系統(tǒng)組成,通信層為DCS(數(shù)據(jù)通信系統(tǒng))。
采用網(wǎng)絡(luò)捕包解密方案的信號(hào)系統(tǒng)在信號(hào)系統(tǒng)架構(gòu)和PKI(公鑰基礎(chǔ)設(shè)施)模型的基礎(chǔ)上增加了證書(shū)密鑰管理服務(wù)器和硬件加密機(jī),在應(yīng)用層設(shè)備上增加了國(guó)產(chǎn)加密安全芯片。通過(guò)證書(shū)密鑰管理系統(tǒng),信號(hào)系統(tǒng)可以實(shí)現(xiàn)保存會(huì)話密鑰、導(dǎo)出會(huì)話密鑰及切換模式的操作。
圖1 采用網(wǎng)絡(luò)捕包解密方案的信號(hào)系統(tǒng)結(jié)構(gòu)
在信號(hào)系統(tǒng)調(diào)試維護(hù)業(yè)務(wù)中,網(wǎng)絡(luò)抓包解密工作按應(yīng)用場(chǎng)景主要分為在線解密和離線解密。二者的解密對(duì)象和解密實(shí)時(shí)性要求均不一致(見(jiàn)表1),相應(yīng)的對(duì)解密的設(shè)計(jì)要求也不相同??傮w來(lái)說(shuō):在線解密主要用于現(xiàn)場(chǎng)調(diào)試中,解密對(duì)象為當(dāng)前網(wǎng)絡(luò)實(shí)時(shí)捕獲的抓包,解密工作需實(shí)時(shí)完成;離線解密主要用于對(duì)正常運(yùn)營(yíng)過(guò)程中產(chǎn)生問(wèn)題的分析排查,解密對(duì)象為歷史網(wǎng)絡(luò)抓包,解密工作允許延時(shí)為分鐘級(jí)。
表1 兩類網(wǎng)絡(luò)抓包解密的差異
信號(hào)系統(tǒng)網(wǎng)絡(luò)抓包的離線解密工作可分為密鑰歸集、密鑰保存、密鑰導(dǎo)出和密鑰解密等4個(gè)階段。
1.3.1 密鑰歸集
離線解密的密鑰歸集過(guò)程如圖2所示。ZC、LC及ATS子系統(tǒng)在與CC子系統(tǒng)完成動(dòng)態(tài)密鑰協(xié)商過(guò)程后,主動(dòng)將已完成協(xié)商的動(dòng)態(tài)會(huì)話密鑰、會(huì)話密鑰Hash(哈希)值和會(huì)話ID(標(biāo)識(shí)號(hào))發(fā)送至證書(shū)密鑰管理系統(tǒng)。會(huì)話密鑰Hash值由國(guó)產(chǎn)加密芯片根據(jù)動(dòng)態(tài)會(huì)話密鑰生成。
圖2 離線解密的密鑰歸集過(guò)程
在離線解密的密鑰歸集過(guò)程中,只要國(guó)產(chǎn)加密芯片產(chǎn)生任何錯(cuò)誤,就認(rèn)為該過(guò)程失敗,并由ZC、LC及ATS子系統(tǒng)進(jìn)行記錄。此外,解密網(wǎng)絡(luò)捕包功能并不影響信號(hào)系統(tǒng)以加密通信狀態(tài)進(jìn)行日常運(yùn)營(yíng),故離線解密的密鑰歸集不設(shè)置確認(rèn)重傳機(jī)制,容許會(huì)話密鑰在網(wǎng)絡(luò)傳輸過(guò)程中的可能丟失。
CC、ZC、LC及ATS子系統(tǒng)在發(fā)送加密消息時(shí),將會(huì)話密鑰Hash值放入加密消息包頭中。
1.3.2 密鑰保存
證書(shū)密鑰管理系統(tǒng)將收到的動(dòng)態(tài)會(huì)話密鑰、會(huì)話密鑰Hash值和會(huì)話ID保存在證書(shū)密鑰管理服務(wù)器內(nèi)至少180 d,并在180 d后依次刪除。
密鑰證書(shū)管理系統(tǒng)還可提供會(huì)話ID與更新時(shí)間的顯示列表。
1.3.3 密鑰導(dǎo)出
密鑰證書(shū)管理系統(tǒng)提供按選擇時(shí)間(時(shí)間精度為d)導(dǎo)出密鑰的操作,可將密鑰證書(shū)管理服務(wù)器內(nèi)保存的動(dòng)態(tài)會(huì)話密鑰及會(huì)話密鑰Hash值按照對(duì)應(yīng)映射關(guān)系以加密文件的形式導(dǎo)出到外部設(shè)備中。該導(dǎo)出操作需要管理UKEY(電子鑰匙)授權(quán)。
1.3.4 密鑰解密
密鑰解密流程見(jiàn)圖3。操作人員將授權(quán)的管理UKEY插入待解包的主機(jī)設(shè)備上,并將導(dǎo)出的加密文件放在同一主機(jī)的C盤(pán)根目錄下;Wireshark插件根據(jù)待解密網(wǎng)絡(luò)抓包中的Hash字段,在加密文件中尋找對(duì)應(yīng)的會(huì)話密鑰進(jìn)行解密,并將解密后的報(bào)文顯示在Wireshark界面上。如果未找到對(duì)應(yīng)會(huì)話密鑰或解密失敗,則報(bào)錯(cuò)并顯示原始加密報(bào)文。
圖3 離線解密與在線解密流程圖
信號(hào)系統(tǒng)網(wǎng)絡(luò)抓包的在線解密工作分為模式切換和密鑰解密2個(gè)階段。
1.4.1 模式切換
鑒于在線解密的高實(shí)時(shí)性要求和特殊應(yīng)用場(chǎng)景,為區(qū)別離線解密工作的一般模式,本文將在線解密工作模式定義為調(diào)試模式。調(diào)試模式將會(huì)話密鑰直接放入加密消息包頭中,以便在密鑰解密階段直接使用會(huì)話密鑰對(duì)實(shí)時(shí)抓取的網(wǎng)絡(luò)抓包進(jìn)行解密。調(diào)整后的加密報(bào)文消息包頭格式如表3所示。
表3 調(diào)整后的加密報(bào)文消息包頭格式
密鑰證書(shū)管理系統(tǒng)提供模式切換操作,可向所有指定的IP(網(wǎng)際互連協(xié)議)地址和端口發(fā)送切換模式消息;CC、ZC、LC及ATS子系統(tǒng)收到切換模式消息后轉(zhuǎn)為調(diào)試模式,并將會(huì)話密鑰放入加密消息包頭中(如圖4所示)。切換模式操作需要管理UKEY授權(quán)。
圖4 在線解密的模式切換過(guò)程
在模式切換過(guò)程中,只要國(guó)產(chǎn)加密芯片產(chǎn)生任何錯(cuò)誤,都認(rèn)為該過(guò)程失敗,并由CC、ZC、LC及ATS子系統(tǒng)進(jìn)行記錄。此外,解密網(wǎng)絡(luò)捕包功能并不影響信號(hào)系統(tǒng)以加密狀態(tài)日常運(yùn)營(yíng),故模式切換不設(shè)置確認(rèn)重傳機(jī)制,容許切換模式消息發(fā)送過(guò)程中的可能丟失。
如果CC、ZC、LC及ATS子系統(tǒng)在調(diào)試模式下(keyType=2)重復(fù)收到密鑰證書(shū)管理系統(tǒng)發(fā)送的切換模式消息,則保持keyType=2不變。此外,不設(shè)置模式回滾機(jī)制。當(dāng)CC、ZC、LC及ATS子系統(tǒng)收到密鑰證書(shū)管理系統(tǒng)發(fā)送的切換模式消息并成功進(jìn)行模式切換后,重啟相應(yīng)設(shè)備;國(guó)產(chǎn)加密芯片初始化后即可按照正常模式(keyType=1)運(yùn)行。
1.4.2 密鑰解密
在待解包的主機(jī)設(shè)備中,Wireshark插件直接將待解密的實(shí)時(shí)網(wǎng)絡(luò)抓包中的key字段作為會(huì)話密鑰進(jìn)行解密,并將解密后的報(bào)文顯示在Wireshark界面上。如果解密失敗,則報(bào)錯(cuò)并顯示原始加密報(bào)文。在線解密流程如圖3所示。
Wireshark插件解密網(wǎng)絡(luò)抓包的過(guò)程,具體如下(見(jiàn)圖5):
圖5 wireshark插件解密流程圖
1) 判斷抓包內(nèi)的每條二進(jìn)制碼流是否為需要解密的碼流。如協(xié)議和端口不符合預(yù)置則認(rèn)為該碼流并非待解密碼流,直接顯示原始值;如符合預(yù)置的協(xié)議和端口則認(rèn)為該碼流為待解密碼流。
2) 判斷待解密碼流是否為具備加密特征的加密碼流。如不符合加密特征則認(rèn)為該碼流并非加密碼流,直接顯示原始值;如符合加密特征則認(rèn)為該碼流為加密碼流。
3) 根據(jù)keyType值對(duì)加密碼流分別處理。當(dāng)keyType=1時(shí),根據(jù)碼流中的Hash值字段在導(dǎo)出的密鑰文件中尋找匹配的密鑰。如無(wú)法找到密鑰,則直接顯示原始值;如找到密鑰,則進(jìn)行解密。當(dāng)keyType=2時(shí),直接使用碼流中的Key字段進(jìn)行解密。
4) 若解密失敗,則直接顯示原始值;若解密成功,則顯示解密后的明文。
基于上述解密方案,在實(shí)驗(yàn)室搭建信號(hào)系統(tǒng),集成國(guó)產(chǎn)加密芯片,進(jìn)行應(yīng)用測(cè)試。測(cè)試過(guò)程及結(jié)果如下:
1) 信號(hào)系統(tǒng)應(yīng)用設(shè)備在啟動(dòng)后進(jìn)行會(huì)話密鑰協(xié)商;在會(huì)話密鑰協(xié)商成功后,主動(dòng)發(fā)送會(huì)話密鑰、會(huì)話密鑰Hash值和會(huì)話ID至證書(shū)密鑰管理系統(tǒng);在后續(xù)發(fā)送加密消息時(shí),將會(huì)話密鑰Hash值放入加密消息包頭中。
2) 證書(shū)密鑰管理系統(tǒng)將收到的密鑰信息保存在證書(shū)密鑰管理服務(wù)器內(nèi),并可將保存的會(huì)話密鑰、會(huì)話密鑰Hash值按照對(duì)應(yīng)關(guān)系以加密文件形式導(dǎo)出到外部設(shè)備中。Wireshark插件根據(jù)待解密的網(wǎng)絡(luò)抓包報(bào)文中的Hash字段,在加密文件中尋找對(duì)應(yīng)的會(huì)話密鑰并進(jìn)行解密,最終將解密后的報(bào)文顯示在界面上。
3) 證書(shū)密鑰管理系統(tǒng)向指定的IP地址和端口發(fā)送切換模式消息;信號(hào)系統(tǒng)應(yīng)用設(shè)備在收到切換模式消息后,隨即變更加密報(bào)文的組包方式,并將會(huì)話密鑰放入加密消息包頭中。Wireshark插件直接將待解密的實(shí)時(shí)網(wǎng)絡(luò)抓包報(bào)文中的Key字段作為會(huì)話密鑰進(jìn)行解密,并將解密后的報(bào)文顯示在Wireshark界面上。
4) 信號(hào)系統(tǒng)應(yīng)用設(shè)備只要在運(yùn)行過(guò)程中收到一次切換模式消息,就將變更加密報(bào)文組包方式,直到該設(shè)備關(guān)閉或重新啟動(dòng)為止。
本文提出了一種在應(yīng)用國(guó)產(chǎn)加密技術(shù)的信號(hào)系統(tǒng)中,對(duì)加密的網(wǎng)絡(luò)抓包進(jìn)行解密的方案,使得開(kāi)發(fā)調(diào)試人員能夠取得動(dòng)態(tài)協(xié)商的密鑰,并使用密鑰完成對(duì)加密網(wǎng)絡(luò)抓包的解密,提升了信號(hào)系統(tǒng)的可維護(hù)性。
該解密方案不僅適用于信號(hào)系統(tǒng),而且可以用于其他有類似需求的工業(yè)自動(dòng)化控制系統(tǒng)中。實(shí)際應(yīng)用結(jié)果表明,與現(xiàn)有技術(shù)方案相比,本方案具有以下優(yōu)點(diǎn):
1) 針對(duì)應(yīng)用了國(guó)產(chǎn)加密技術(shù)的信號(hào)系統(tǒng),能取得動(dòng)態(tài)協(xié)商的加密密鑰,完成對(duì)網(wǎng)絡(luò)抓包的解密,保證了信號(hào)系統(tǒng)整體的可維護(hù)性,為信號(hào)系統(tǒng)后期的運(yùn)營(yíng)維護(hù)提供了極大的便利。
2) 通過(guò)分析設(shè)計(jì),可將不同的網(wǎng)絡(luò)抓包解密需求結(jié)合在一起,使用同一套軟件處理機(jī)制完成。
3) 解密網(wǎng)絡(luò)抓包所需要的密鑰發(fā)送消息和切換模式消息發(fā)送成功與否,不會(huì)影響信號(hào)系統(tǒng)應(yīng)用國(guó)產(chǎn)加密技術(shù)的正常運(yùn)行,甚至通信兩端可以采取不同的組包方式。
4) 在工作全程中密鑰均以加密形式存在,且人員無(wú)法直接接觸密鑰,保證了機(jī)密性和安全性。
5) 該方案在保證信號(hào)系統(tǒng)既有架構(gòu)和功能安全等級(jí)不受影響的同時(shí),盡可能實(shí)現(xiàn)了調(diào)試維護(hù)的工作方式變化較小。