巴連杰,林 楠,黃華偉,王 慶,石元兵,黃明浩
(成都衛(wèi)士通信息產(chǎn)業(yè)股份有限公司,四川 成都 610041)
分布式數(shù)字控制(Distributed Numerical Control,DNC)是一種綜合利用各種數(shù)字化先進(jìn)手段,將生產(chǎn)現(xiàn)場分散的數(shù)控機(jī)床等設(shè)備連接在一起,組建成工控DNC網(wǎng)絡(luò)的技術(shù)。
數(shù)字控制(Numerical Control,NC)指用離散的數(shù)字信息控制機(jī)械等裝置的運(yùn)行,只能由操作者自己編寫NC代碼控制。NC代碼是數(shù)字控制器能識別的代碼,不同品牌的控制器構(gòu)成的結(jié)構(gòu)不同。
隨著工業(yè)自動化程度的快速發(fā)展,工控系統(tǒng)對傳統(tǒng)IT網(wǎng)絡(luò)的數(shù)據(jù)共享和協(xié)同工作的需求與日俱增,其中代碼的傳輸就是其中之一。但是,某些特殊企業(yè)(如軍工行業(yè))的工控DNC網(wǎng)絡(luò)因自身接入涉密園區(qū)網(wǎng)絡(luò)的特殊性,不能直接和非密網(wǎng)絡(luò)對接,只能采用人工審核的方式對來自非密網(wǎng)的NC代碼進(jìn)行檢查,再以人工擺渡的方式將其從非密網(wǎng)絡(luò)導(dǎo)入工控網(wǎng)絡(luò),以杜絕安全隱患。
本文針對軍工企業(yè)DNC網(wǎng)絡(luò)的特殊需求,基于安全隔離與單向?qū)胂到y(tǒng),設(shè)計一種新型的NC代碼跨網(wǎng)傳輸解決方案,在滿足工控網(wǎng)絡(luò)安全防護(hù)需求的基礎(chǔ)上,實(shí)現(xiàn)NC代碼的自動檢查、過濾,極大地提高了生產(chǎn)效率。目前,該方案已在部分單位試用。
DNC系統(tǒng)作為數(shù)控設(shè)備聯(lián)網(wǎng)管理系統(tǒng),普遍應(yīng)用于工控網(wǎng)絡(luò)。它的主要功能是通過特定的管理服務(wù)器,對生產(chǎn)現(xiàn)場所有的數(shù)控設(shè)備進(jìn)行集中聯(lián)網(wǎng)管理[1-4]。
通常情況下,程序編程人員在自己的辦公機(jī)上完成編程后,可直接上傳NC代碼至DNC服務(wù)器指定的目錄下,而后現(xiàn)場數(shù)控設(shè)備操作者即可通過設(shè)備計算機(jī)數(shù)字控制(Computerized Numerical Control,CNC)控制器發(fā)送“下載”指令,從服務(wù)器中下載所需的NC代碼[5]。
考慮到上述提到的軍工行業(yè)的特殊性,鑒于編程人員所在的辦公網(wǎng)和工控涉密網(wǎng)是嚴(yán)格隔離的,傳統(tǒng)通過人工刻盤的方式進(jìn)行NC代碼擺渡。先在辦公網(wǎng)將NC代碼通過光盤導(dǎo)出,然后人工審核后再導(dǎo)入工控網(wǎng),如圖1所示。此做法雖然相對安全,但需要專職人員守候負(fù)責(zé),不僅效率低下,而且質(zhì)量上完全依賴審核人員的水平。
圖1 人工擺渡方式實(shí)現(xiàn)NC代碼傳輸
針對軍工行業(yè)傳統(tǒng)做法的低效性,本文提出一種基于安全隔離與單向?qū)胂到y(tǒng)的新的解決方案,如圖2所示。開發(fā)人員在辦公區(qū)通過手動或自動的方式產(chǎn)生NC代碼文件,經(jīng)安全隔離與單向?qū)胂到y(tǒng)檢查后自動傳輸DNC網(wǎng)絡(luò),由DNC網(wǎng)絡(luò)中的管理服務(wù)器下發(fā)給CNC車床設(shè)備[6-7]。此方案實(shí)現(xiàn)了NC代碼在不同密級網(wǎng)絡(luò)間的自動化傳輸,在滿足安全性的大前提下,極大地提高了NC代碼的傳輸效率。
后續(xù)章節(jié)會結(jié)合安全隔離與單向?qū)胂到y(tǒng)的防護(hù)原理和NC代碼檢查機(jī)制,詳細(xì)闡述其在NC代碼傳輸流程中的應(yīng)用。
安全隔離與單向?qū)胂到y(tǒng)是基于自主可控平臺研發(fā)的網(wǎng)絡(luò)安全產(chǎn)品,符合等保、分保要求。系統(tǒng)由3部分組成:應(yīng)用適配器(發(fā)送端)、安全隔離與信息單向傳輸網(wǎng)關(guān)和應(yīng)用適配器(接收端)。
應(yīng)用適配器主要用于對接各種應(yīng)用系統(tǒng)協(xié)議,剝離應(yīng)用系統(tǒng)數(shù)據(jù),在模塊中重新封裝為內(nèi)部通信協(xié)議。安全隔離與信息單向傳輸網(wǎng)關(guān)為系統(tǒng)核心組件,采用“2+1”硬件結(jié)構(gòu),利用光單向性構(gòu)建數(shù)據(jù)單向無反饋傳輸通道[8-13]。為了方便,本文從原理上闡述安全隔離與單向?qū)胂到y(tǒng)的安全機(jī)制,如無特別指出,不再具體區(qū)分應(yīng)用適配器和安全隔離與信息單向傳輸網(wǎng)關(guān),僅區(qū)分發(fā)送端和接收端。
安全隔離與單向?qū)胂到y(tǒng)使用兩塊高效單向傳輸卡實(shí)現(xiàn)應(yīng)用數(shù)據(jù)的單向傳輸。單向傳輸卡之間通過光纖連接,中間傳輸?shù)氖寝D(zhuǎn)換后的光信號。利用板卡的獨(dú)特設(shè)計和光傳輸?shù)奶攸c(diǎn),既達(dá)到了單向要求,又滿足數(shù)據(jù)的高性能傳輸要求。
系統(tǒng)的單向數(shù)據(jù)通道結(jié)構(gòu),如圖3所示。
圖2 安全隔離與單向網(wǎng)關(guān)在NC代碼傳輸中的應(yīng)用
圖3 單向傳輸通道結(jié)構(gòu)
從圖3可以看出,安全隔離與單向?qū)胂到y(tǒng)的單向傳輸特性在于發(fā)送端單向傳輸卡只有光發(fā)送適配器,接收端單向傳輸卡只有接收適配器,中間只有光傳輸信道。這樣可保證沒有信號從接收端傳向發(fā)送端,從而實(shí)現(xiàn)工控網(wǎng)絡(luò)環(huán)境下的數(shù)據(jù)單向傳輸(非密網(wǎng)到涉密網(wǎng))。
安全隔離與單向?qū)胂到y(tǒng)為了保證數(shù)據(jù)完整性并有序、高效地從發(fā)送端傳輸?shù)浇邮斩?,?shí)現(xiàn)了專業(yè)的數(shù)據(jù)封裝和傳輸模塊。該模塊分為兩部分:一是應(yīng)用層數(shù)據(jù)封裝及傳輸;二是芯片級的數(shù)據(jù)封裝及傳輸。
應(yīng)用層數(shù)據(jù)封裝及傳輸部分將需要傳送的數(shù)據(jù)進(jìn)行分片處理,每次僅傳輸單向傳輸卡可接收的數(shù)據(jù)大小,并對數(shù)據(jù)進(jìn)行簽名,保證傳輸數(shù)據(jù)完整性。簽名數(shù)據(jù)最后加上傳輸頭信息,保證安全隔離與單向?qū)胂到y(tǒng)的接收端在收到數(shù)據(jù)后能成功將分片信息重組為應(yīng)用數(shù)據(jù)。協(xié)議封裝過程如圖4所示。
圖4 應(yīng)用數(shù)據(jù)封裝過程
發(fā)送端物理層按照內(nèi)部特殊協(xié)議結(jié)構(gòu)對應(yīng)用層分片數(shù)據(jù)包進(jìn)行封裝處理,板卡等加密信息通過硬件編碼方式進(jìn)行交互,一旦不匹配,硬件自動中斷連接過程。封裝后的數(shù)據(jù)流以光信號方式傳輸?shù)浇邮斩藛蜗騻鬏斂ㄉ?,可以防止線路搭接。發(fā)送端數(shù)據(jù)傳輸過程如圖5所示。
圖5 數(shù)據(jù)傳輸過程
接收端處理過程為發(fā)送端處理過程的逆過程。接收端單向傳輸卡將收到的數(shù)據(jù)先硬件解碼,然后按照內(nèi)部協(xié)議結(jié)構(gòu)對數(shù)據(jù)進(jìn)行解封裝,還原為應(yīng)用層數(shù)據(jù)。
安全隔離與單向?qū)胂到y(tǒng)會將數(shù)據(jù)包解析到應(yīng)用層處理。在發(fā)送端會對應(yīng)用協(xié)議進(jìn)行剝離,以專有協(xié)議對數(shù)據(jù)進(jìn)行重新封裝,分片傳輸?shù)浇邮斩?;在接收端,對收到的?shù)據(jù)進(jìn)行解析,重新組包為原應(yīng)用協(xié)議格式發(fā)送給接收端應(yīng)用服務(wù)器。
安全隔離與單向?qū)胂到y(tǒng)基于專有協(xié)議對數(shù)據(jù)進(jìn)行傳輸,實(shí)現(xiàn)了對應(yīng)用協(xié)議的終止,可以阻止任何基于協(xié)議的攻擊,極大得提高了數(shù)據(jù)傳輸?shù)陌踩浴?/p>
安全隔離與單向?qū)胂到y(tǒng)通過身份認(rèn)證透明代理的方式確保接入系統(tǒng)的應(yīng)用可信性。在應(yīng)用主機(jī)和安全隔離與單向?qū)胂到y(tǒng)上分別部署身份認(rèn)證透明代理軟件,代理軟件通過證書和密碼算法等手段建立互信。應(yīng)用接入安全隔離與單向?qū)胂到y(tǒng)后,應(yīng)用上的代理軟件會截獲其連接并通過可信數(shù)據(jù)通路將數(shù)據(jù)轉(zhuǎn)發(fā)出去。安全隔離與單向?qū)胂到y(tǒng)的代理軟件收到數(shù)據(jù)后,再將數(shù)據(jù)發(fā)送給系統(tǒng)上的應(yīng)用適配模塊。身份認(rèn)證透明代理流程如圖6所示。
圖6 身份認(rèn)證透明代理流程
上文提到的多種安全防護(hù)機(jī)制,從基礎(chǔ)層面保證了安全隔離與單向?qū)胂到y(tǒng)的安全性、可靠性以及單向傳輸性。本文從業(yè)務(wù)邏輯層面出發(fā),結(jié)合應(yīng)用場景(第1小節(jié))闡述安全隔離與單向?qū)胂到y(tǒng)在工控NC代碼傳輸中的具體應(yīng)用。
鑒于軍工DNC網(wǎng)絡(luò)中的NC代碼是以文件的形式進(jìn)行擺渡的,可利用安全隔離與單向?qū)胂到y(tǒng)的FTP文件傳輸模塊實(shí)現(xiàn)代碼的傳輸,利用其他業(yè)務(wù)模塊對NC代碼文件做相應(yīng)的訪問控制和安全檢查,如圖7所示。
圖7 NC代碼傳輸控制流程
NC代碼文件從非密網(wǎng)傳輸?shù)桨踩綦x與單向?qū)胂到y(tǒng)后,在發(fā)送端根據(jù)系統(tǒng)的安全傳輸策略對NC代碼做相應(yīng)的處理,主要包括訪問控制、合規(guī)性檢查、NC代碼檢查、審批控制以及病毒防護(hù)。
(1)訪問控制模塊。通過內(nèi)建基礎(chǔ)防火墻策略,設(shè)置可接入安全隔離與單向?qū)胂到y(tǒng)的源IP地址及系統(tǒng)所開放的服務(wù)端口,阻止非法IP接入系統(tǒng)。另外,訪問控制模塊提供時間規(guī)則管理功能,通過設(shè)置時間規(guī)則,控制系統(tǒng)中的業(yè)務(wù)模塊允許訪問的時間段。
(2)合規(guī)性檢查模塊。它主要實(shí)現(xiàn)對文件的大小、類型以及內(nèi)容等信息進(jìn)行合規(guī)性檢查,合規(guī)的文件才允許傳輸。
(3)審批控制模塊。該模塊是可選項,需要與配套的人工審批服務(wù)器一起工作,根據(jù)具體需求開啟人工審批或自動審批功能。安全隔離與單向?qū)胂到y(tǒng)會將文件傳輸?shù)綄徟?wù)器做相應(yīng)的審核。
(4)病毒防護(hù)模塊。該模塊集成了第三方專業(yè)病毒查殺模塊,能在應(yīng)用層實(shí)現(xiàn)基于特征的病毒查殺,并提供病毒庫升級功能。
(5)NC代碼檢查模塊。該模塊是對NC代碼文件做檢查的最重要模塊,也是安全隔離與單向?qū)胂到y(tǒng)為了適應(yīng)軍工行業(yè)的特殊需求而設(shè)計的,具體的檢查、處理過程將在后續(xù)做詳細(xì)闡述。
從前面小節(jié)對NC代碼傳輸流程的介紹可知,來自非密網(wǎng)絡(luò)的文件被傳輸?shù)桨踩綦x與單向?qū)胂到y(tǒng)時,會經(jīng)過層層安全訪問控制和內(nèi)容檢查,只有通過所有的策略匹配,才會允許傳輸?shù)綄Χ说墓た谼NC網(wǎng)絡(luò)。
而“NC代碼檢查”模塊正是檢查環(huán)節(jié)中最重要的一環(huán)。針對NC代碼文件本身的特殊性,對文件做進(jìn)一步處理。本文將從實(shí)現(xiàn)層面闡述NC代碼檢查模塊的具體作用機(jī)制[14]。
不同廠商的數(shù)控系統(tǒng)的NC代碼格式有所不同,但大多數(shù)代碼格式是相似的[15-18],遵循了一致的標(biāo)準(zhǔn)。本文以FANUC系統(tǒng)為例做具體介紹。
NC代碼通常是由程序名稱、程序主體以及結(jié)束指令3大部分構(gòu)成。程序名稱標(biāo)記著代碼的開始,由大寫字母“O”和4位數(shù)字組成。程序主體代碼最核心的部分包括許多程序段,而其中每個程序段又包括一到多個CNC指令,每個指令代表數(shù)控設(shè)備要完成的具體動作。NC代碼中的結(jié)束指令用來標(biāo)記代碼的結(jié)束,通常用指令M02或M30表示。車床設(shè)備讀到結(jié)束指令,就會停止加工。
CNC指令是由代表了特定功能的指令標(biāo)識和具體的數(shù)據(jù)組合而成的。指令標(biāo)識通常是大寫英文字母,按照功能的劃分有N、G、M、S、T和F等指令。其中,N類指令用于標(biāo)識一個程序段,后跟2~4位正整數(shù)。G類指令為功能指令,用來設(shè)置具體的加工參數(shù)和操作方式,后跟數(shù)字一般為2位。根據(jù)功能不同,又具體分為00~18共19組,相同代碼段中可根據(jù)需要指定不同組的G指令。此外,G指令還有模態(tài)和非模態(tài)區(qū)分,前者表示指令在同組代碼出現(xiàn)之前一直有效,后者表示指令只在當(dāng)前代碼段中有效。M類指令是用來設(shè)置數(shù)控設(shè)備輔助功能及其狀態(tài),后大多跟2位數(shù)字。F指令是用來設(shè)置刀具切削的進(jìn)給速度,可以配合G指令使用。S指令用來設(shè)置車床的主軸旋轉(zhuǎn)速度。T指令多用來設(shè)置加工過程中使用的刀具型號、偏置和補(bǔ)償參數(shù)。在NC代碼中,經(jīng)常還會出現(xiàn)很多地址字,如X、Y、Z、U、V、W、P、Q、R、A、B、C、I、J、K、D、H等,用來設(shè)置刀具運(yùn)行的坐標(biāo)位置。
代碼段是由若干條CNC指令按照一定結(jié)構(gòu)組合而成的,現(xiàn)在多采用字地址可變代碼段格式。此種格式相較于以往的固定順序格式和分割符格式更加靈活,不再嚴(yán)格要求指令的排列順序,且指令附帶的數(shù)據(jù)位數(shù)是可變的,與上一代碼段相同的續(xù)效字可忽略不寫。這些新特點(diǎn)使得NC代碼更加簡短、直觀,便于檢查和修改。
NC代碼檢查模塊根據(jù)NC代碼的組成特點(diǎn)設(shè)計實(shí)現(xiàn)了幾個類,用以表示代碼段和CNC指令等相關(guān)信息,部分代碼片段如下。
NC代碼檢查模塊的實(shí)現(xiàn)流程,如圖8所示。
圖8 NC代碼檢查模塊實(shí)現(xiàn)流程
首先,讀入NC代碼文件,將讀取到的文件內(nèi)容存儲到字符串變量中;其次,通過具體的操作過濾NC代碼中的注釋部分,以換行符作為標(biāo)志,逐個讀取NC代碼段,并存入CodeSegmentArray中;再次,根據(jù)空格將代碼段拆分為不同指令字符串存儲在m_operation中;最后,繼續(xù)拆分指令,解析為第一個字符以及第一個字符外的剩余部分,以此將每個指令中的地址字和附帶的數(shù)據(jù)剝離開來,為NC代碼的語法檢查做相應(yīng)的準(zhǔn)備。
另外,NC代碼檢查模塊會掃描所有的指令。如果掃描出某子程序存在調(diào)用指令M98,則繼續(xù)通過子程序名稱查找對應(yīng)的代碼,并將其插入到調(diào)用位置。具體插入次數(shù)應(yīng)根據(jù)調(diào)用次數(shù)決定。最后,按照NC代碼的編程規(guī)范,對提取的代碼段和指令集進(jìn)行具體的語法檢查。
通過NC代碼檢查模塊可以有效攔截非法NC代碼文件,并能在一定程度上對代碼進(jìn)行自動化語法檢查,減少了人工檢查出錯的概率,提高了生產(chǎn)效率。
近年來,網(wǎng)絡(luò)安全隔離與信息單向?qū)爰夹g(shù)的發(fā)展日漸成熟,可以真正實(shí)現(xiàn)網(wǎng)絡(luò)間硬件上的隔離,已成為防范網(wǎng)絡(luò)攻擊、保護(hù)信息單向安全導(dǎo)入的重要手段。本文介紹了軍工行業(yè)NC代碼文件特殊的傳輸需求,提出了一種基于安全隔離與單向?qū)胂到y(tǒng)的安全解決方案。文中結(jié)合安全隔離與單向?qū)胂到y(tǒng)的安全防護(hù)機(jī)制,在NC代碼傳輸流程的基礎(chǔ)上,專門討論了NC代碼檢查模塊的作用原理。綜上所述,本文研究了安全隔離與單向?qū)胂到y(tǒng)在工控NC代碼安全傳輸中的應(yīng)用,論述了方案的可行性,并在部分軍工單位得到了試用,具有較大的生產(chǎn)實(shí)用價值。
此外,基于安全隔離與單向?qū)胂到y(tǒng)的安全防護(hù)機(jī)制,下一步會對接多種工控協(xié)議(如Modbus等),以期該項技術(shù)在工控領(lǐng)域能夠獲得更廣泛的應(yīng)用。