巴連杰,林 楠,黃華偉,王 慶,石元兵,黃明浩
(成都衛士通信息產業股份有限公司,四川 成都 610041)
分布式數字控制(Distributed Numerical Control,DNC)是一種綜合利用各種數字化先進手段,將生產現場分散的數控機床等設備連接在一起,組建成工控DNC網絡的技術。
數字控制(Numerical Control,NC)指用離散的數字信息控制機械等裝置的運行,只能由操作者自己編寫NC代碼控制。NC代碼是數字控制器能識別的代碼,不同品牌的控制器構成的結構不同。
隨著工業自動化程度的快速發展,工控系統對傳統IT網絡的數據共享和協同工作的需求與日俱增,其中代碼的傳輸就是其中之一。但是,某些特殊企業(如軍工行業)的工控DNC網絡因自身接入涉密園區網絡的特殊性,不能直接和非密網絡對接,只能采用人工審核的方式對來自非密網的NC代碼進行檢查,再以人工擺渡的方式將其從非密網絡導入工控網絡,以杜絕安全隱患。
本文針對軍工企業DNC網絡的特殊需求,基于安全隔離與單向導入系統,設計一種新型的NC代碼跨網傳輸解決方案,在滿足工控網絡安全防護需求的基礎上,實現NC代碼的自動檢查、過濾,極大地提高了生產效率。目前,該方案已在部分單位試用。
DNC系統作為數控設備聯網管理系統,普遍應用于工控網絡。它的主要功能是通過特定的管理服務器,對生產現場所有的數控設備進行集中聯網管理[1-4]。
通常情況下,程序編程人員在自己的辦公機上完成編程后,可直接上傳NC代碼至DNC服務器指定的目錄下,而后現場數控設備操作者即可通過設備計算機數字控制(Computerized Numerical Control,CNC)控制器發送“下載”指令,從服務器中下載所需的NC代碼[5]。
考慮到上述提到的軍工行業的特殊性,鑒于編程人員所在的辦公網和工控涉密網是嚴格隔離的,傳統通過人工刻盤的方式進行NC代碼擺渡。先在辦公網將NC代碼通過光盤導出,然后人工審核后再導入工控網,如圖1所示。此做法雖然相對安全,但需要專職人員守候負責,不僅效率低下,而且質量上完全依賴審核人員的水平。

圖1 人工擺渡方式實現NC代碼傳輸
針對軍工行業傳統做法的低效性,本文提出一種基于安全隔離與單向導入系統的新的解決方案,如圖2所示。開發人員在辦公區通過手動或自動的方式產生NC代碼文件,經安全隔離與單向導入系統檢查后自動傳輸DNC網絡,由DNC網絡中的管理服務器下發給CNC車床設備[6-7]。此方案實現了NC代碼在不同密級網絡間的自動化傳輸,在滿足安全性的大前提下,極大地提高了NC代碼的傳輸效率。
后續章節會結合安全隔離與單向導入系統的防護原理和NC代碼檢查機制,詳細闡述其在NC代碼傳輸流程中的應用。
安全隔離與單向導入系統是基于自主可控平臺研發的網絡安全產品,符合等保、分保要求。系統由3部分組成:應用適配器(發送端)、安全隔離與信息單向傳輸網關和應用適配器(接收端)。
應用適配器主要用于對接各種應用系統協議,剝離應用系統數據,在模塊中重新封裝為內部通信協議。安全隔離與信息單向傳輸網關為系統核心組件,采用“2+1”硬件結構,利用光單向性構建數據單向無反饋傳輸通道[8-13]。為了方便,本文從原理上闡述安全隔離與單向導入系統的安全機制,如無特別指出,不再具體區分應用適配器和安全隔離與信息單向傳輸網關,僅區分發送端和接收端。
安全隔離與單向導入系統使用兩塊高效單向傳輸卡實現應用數據的單向傳輸。單向傳輸卡之間通過光纖連接,中間傳輸的是轉換后的光信號。利用板卡的獨特設計和光傳輸的特點,既達到了單向要求,又滿足數據的高性能傳輸要求。
系統的單向數據通道結構,如圖3所示。

圖2 安全隔離與單向網關在NC代碼傳輸中的應用

圖3 單向傳輸通道結構
從圖3可以看出,安全隔離與單向導入系統的單向傳輸特性在于發送端單向傳輸卡只有光發送適配器,接收端單向傳輸卡只有接收適配器,中間只有光傳輸信道。這樣可保證沒有信號從接收端傳向發送端,從而實現工控網絡環境下的數據單向傳輸(非密網到涉密網)。
安全隔離與單向導入系統為了保證數據完整性并有序、高效地從發送端傳輸到接收端,實現了專業的數據封裝和傳輸模塊。該模塊分為兩部分:一是應用層數據封裝及傳輸;二是芯片級的數據封裝及傳輸。
應用層數據封裝及傳輸部分將需要傳送的數據進行分片處理,每次僅傳輸單向傳輸卡可接收的數據大小,并對數據進行簽名,保證傳輸數據完整性。簽名數據最后加上傳輸頭信息,保證安全隔離與單向導入系統的接收端在收到數據后能成功將分片信息重組為應用數據。協議封裝過程如圖4所示。

圖4 應用數據封裝過程
發送端物理層按照內部特殊協議結構對應用層分片數據包進行封裝處理,板卡等加密信息通過硬件編碼方式進行交互,一旦不匹配,硬件自動中斷連接過程。封裝后的數據流以光信號方式傳輸到接收端單向傳輸卡上,可以防止線路搭接。發送端數據傳輸過程如圖5所示。

圖5 數據傳輸過程
接收端處理過程為發送端處理過程的逆過程。接收端單向傳輸卡將收到的數據先硬件解碼,然后按照內部協議結構對數據進行解封裝,還原為應用層數據。
安全隔離與單向導入系統會將數據包解析到應用層處理。在發送端會對應用協議進行剝離,以專有協議對數據進行重新封裝,分片傳輸到接收端;在接收端,對收到的數據進行解析,重新組包為原應用協議格式發送給接收端應用服務器。
安全隔離與單向導入系統基于專有協議對數據進行傳輸,實現了對應用協議的終止,可以阻止任何基于協議的攻擊,極大得提高了數據傳輸的安全性。
安全隔離與單向導入系統通過身份認證透明代理的方式確保接入系統的應用可信性。在應用主機和安全隔離與單向導入系統上分別部署身份認證透明代理軟件,代理軟件通過證書和密碼算法等手段建立互信。應用接入安全隔離與單向導入系統后,應用上的代理軟件會截獲其連接并通過可信數據通路將數據轉發出去。安全隔離與單向導入系統的代理軟件收到數據后,再將數據發送給系統上的應用適配模塊。身份認證透明代理流程如圖6所示。

圖6 身份認證透明代理流程
上文提到的多種安全防護機制,從基礎層面保證了安全隔離與單向導入系統的安全性、可靠性以及單向傳輸性。本文從業務邏輯層面出發,結合應用場景(第1小節)闡述安全隔離與單向導入系統在工控NC代碼傳輸中的具體應用。
鑒于軍工DNC網絡中的NC代碼是以文件的形式進行擺渡的,可利用安全隔離與單向導入系統的FTP文件傳輸模塊實現代碼的傳輸,利用其他業務模塊對NC代碼文件做相應的訪問控制和安全檢查,如圖7所示。

圖7 NC代碼傳輸控制流程
NC代碼文件從非密網傳輸到安全隔離與單向導入系統后,在發送端根據系統的安全傳輸策略對NC代碼做相應的處理,主要包括訪問控制、合規性檢查、NC代碼檢查、審批控制以及病毒防護。
(1)訪問控制模塊。通過內建基礎防火墻策略,設置可接入安全隔離與單向導入系統的源IP地址及系統所開放的服務端口,阻止非法IP接入系統。另外,訪問控制模塊提供時間規則管理功能,通過設置時間規則,控制系統中的業務模塊允許訪問的時間段。
(2)合規性檢查模塊。它主要實現對文件的大小、類型以及內容等信息進行合規性檢查,合規的文件才允許傳輸。
(3)審批控制模塊。該模塊是可選項,需要與配套的人工審批服務器一起工作,根據具體需求開啟人工審批或自動審批功能。安全隔離與單向導入系統會將文件傳輸到審批服務器做相應的審核。
(4)病毒防護模塊。該模塊集成了第三方專業病毒查殺模塊,能在應用層實現基于特征的病毒查殺,并提供病毒庫升級功能。
(5)NC代碼檢查模塊。該模塊是對NC代碼文件做檢查的最重要模塊,也是安全隔離與單向導入系統為了適應軍工行業的特殊需求而設計的,具體的檢查、處理過程將在后續做詳細闡述。
從前面小節對NC代碼傳輸流程的介紹可知,來自非密網絡的文件被傳輸到安全隔離與單向導入系統時,會經過層層安全訪問控制和內容檢查,只有通過所有的策略匹配,才會允許傳輸到對端的工控DNC網絡。
而“NC代碼檢查”模塊正是檢查環節中最重要的一環。針對NC代碼文件本身的特殊性,對文件做進一步處理。本文將從實現層面闡述NC代碼檢查模塊的具體作用機制[14]。
不同廠商的數控系統的NC代碼格式有所不同,但大多數代碼格式是相似的[15-18],遵循了一致的標準。本文以FANUC系統為例做具體介紹。
NC代碼通常是由程序名稱、程序主體以及結束指令3大部分構成。程序名稱標記著代碼的開始,由大寫字母“O”和4位數字組成。程序主體代碼最核心的部分包括許多程序段,而其中每個程序段又包括一到多個CNC指令,每個指令代表數控設備要完成的具體動作。NC代碼中的結束指令用來標記代碼的結束,通常用指令M02或M30表示。車床設備讀到結束指令,就會停止加工。
CNC指令是由代表了特定功能的指令標識和具體的數據組合而成的。指令標識通常是大寫英文字母,按照功能的劃分有N、G、M、S、T和F等指令。其中,N類指令用于標識一個程序段,后跟2~4位正整數。G類指令為功能指令,用來設置具體的加工參數和操作方式,后跟數字一般為2位。根據功能不同,又具體分為00~18共19組,相同代碼段中可根據需要指定不同組的G指令。此外,G指令還有模態和非模態區分,前者表示指令在同組代碼出現之前一直有效,后者表示指令只在當前代碼段中有效。M類指令是用來設置數控設備輔助功能及其狀態,后大多跟2位數字。F指令是用來設置刀具切削的進給速度,可以配合G指令使用。S指令用來設置車床的主軸旋轉速度。T指令多用來設置加工過程中使用的刀具型號、偏置和補償參數。在NC代碼中,經常還會出現很多地址字,如X、Y、Z、U、V、W、P、Q、R、A、B、C、I、J、K、D、H等,用來設置刀具運行的坐標位置。
代碼段是由若干條CNC指令按照一定結構組合而成的,現在多采用字地址可變代碼段格式。此種格式相較于以往的固定順序格式和分割符格式更加靈活,不再嚴格要求指令的排列順序,且指令附帶的數據位數是可變的,與上一代碼段相同的續效字可忽略不寫。這些新特點使得NC代碼更加簡短、直觀,便于檢查和修改。
NC代碼檢查模塊根據NC代碼的組成特點設計實現了幾個類,用以表示代碼段和CNC指令等相關信息,部分代碼片段如下。

NC代碼檢查模塊的實現流程,如圖8所示。

圖8 NC代碼檢查模塊實現流程
首先,讀入NC代碼文件,將讀取到的文件內容存儲到字符串變量中;其次,通過具體的操作過濾NC代碼中的注釋部分,以換行符作為標志,逐個讀取NC代碼段,并存入CodeSegmentArray中;再次,根據空格將代碼段拆分為不同指令字符串存儲在m_operation中;最后,繼續拆分指令,解析為第一個字符以及第一個字符外的剩余部分,以此將每個指令中的地址字和附帶的數據剝離開來,為NC代碼的語法檢查做相應的準備。
另外,NC代碼檢查模塊會掃描所有的指令。如果掃描出某子程序存在調用指令M98,則繼續通過子程序名稱查找對應的代碼,并將其插入到調用位置。具體插入次數應根據調用次數決定。最后,按照NC代碼的編程規范,對提取的代碼段和指令集進行具體的語法檢查。
通過NC代碼檢查模塊可以有效攔截非法NC代碼文件,并能在一定程度上對代碼進行自動化語法檢查,減少了人工檢查出錯的概率,提高了生產效率。
近年來,網絡安全隔離與信息單向導入技術的發展日漸成熟,可以真正實現網絡間硬件上的隔離,已成為防范網絡攻擊、保護信息單向安全導入的重要手段。本文介紹了軍工行業NC代碼文件特殊的傳輸需求,提出了一種基于安全隔離與單向導入系統的安全解決方案。文中結合安全隔離與單向導入系統的安全防護機制,在NC代碼傳輸流程的基礎上,專門討論了NC代碼檢查模塊的作用原理。綜上所述,本文研究了安全隔離與單向導入系統在工控NC代碼安全傳輸中的應用,論述了方案的可行性,并在部分軍工單位得到了試用,具有較大的生產實用價值。
此外,基于安全隔離與單向導入系統的安全防護機制,下一步會對接多種工控協議(如Modbus等),以期該項技術在工控領域能夠獲得更廣泛的應用。