|
隨sui著zhe中zhong國guo整zheng體ti經jing濟ji實shi力li的de加jia強qiang,製zhi造zao和he加jia工gong工gong業ye正zheng逐zhu步bu向xiang中zhong國guo轉zhuan移yi,這zhe給gei中zhong國guo國guo內nei工gong業ye裝zhuang備bei市shi場chang帶dai來lai了le大da量liang的de商shang機ji,國guo內nei各ge行xing業ye的de製zhi造zao商shang開kai發fa和he製zhi造zao出chu大da量liang價jia廉lian物wu美mei的de設she備bei,取qu得de了le良liang好hao的de經jing濟ji和he社she會hui效xiao應ying。但dan是shi,也ye有you小xiao部bu分fen的de製zhi造zao商shang,由you於yu其qi自zi身shen能neng力li和he客ke觀guan因yin素su的de限xian製zhi,無wu法fa及ji時shi開kai發fa出chu合he適shi的de產chan品pin,但dan利li益yi的de驅qu動dong使shi他ta們men把ba目mu光guang瞄miao準zhun了le同tong行xing,抄chao襲xi和he仿fang製zhi同tong行xing開kai發fa成cheng功gong的de產chan品pin,更geng有you甚shen者zhe是shi整zheng機ji拷kao貝bei或huo者zhe克ke隆long。由you於yu現xian代dai工gong業ye設she備bei大da量liang采cai用yongPLC作為主控製係統,PLC作(zuo)為(wei)整(zheng)個(ge)設(she)備(bei)的(de)核(he)心(xin)部(bu)件(jian),其(qi)軟(ruan)件(jian)包(bao)涵(han)了(le)生(sheng)產(chan)工(gong)藝(yi),控(kong)製(zhi)邏(luo)輯(ji),設(she)備(bei)數(shu)據(ju),加(jia)工(gong)參(can)數(shu)及(ji)信(xin)息(xi)通(tong)訊(xun)等(deng)重(zhong)要(yao)內(nei)容(rong),從(cong)而(er)成(cheng)為(wei)設(she)備(bei)仿(fang)製(zhi)者(zhe)重(zhong)點(dian)要(yao)獲(huo)取(qu)的(de)目(mu)標(biao)之(zhi)一(yi)。縱(zong)觀(guan)目(mu)前(qian)中(zhong)國(guo)國(guo)內(nei)市(shi)場(chang)上(shang)應(ying)用(yong)的(de)主(zhu)流(liu)品(pin)牌(pai)PLC,雖(sui)然(ran)在(zai)設(she)計(ji)上(shang)都(dou)采(cai)用(yong)了(le)各(ge)種(zhong)軟(ruan)硬(ying)件(jian)加(jia)密(mi)的(de)手(shou)段(duan),但(dan)破(po)解(jie)者(zhe)運(yun)用(yong)的(de)破(po)解(jie)手(shou)段(duan)也(ye)越(yue)來(lai)越(yue)先(xian)進(jin),從(cong)最(zui)初(chu)的(de)窮(qiong)舉(ju)法(fa),端(duan)口(kou)偵(zhen)聽(ting),軟(ruan)件(jian)跟(gen)蹤(zong),到(dao)現(xian)在(zai)可(ke)以(yi)通(tong)過(guo)直(zhi)接(jie)複(fu)製(zhi)提(ti)取(qu)內(nei)存(cun)芯(xin)片(pian)的(de)內(nei)容(rong)來(lai)分(fen)析(xi)破(po)解(jie),更(geng)有(you)甚(shen)者(zhe)在(zai)互(hu)連(lian)網(wang)上(shang)公(gong)開(kai)討(tao)論(lun)和(he)傳(chuan)播(bo)破(po)解(jie)方(fang)法(fa)和(he)工(gong)具(ju),因(yin)此(ci)所(suo)有(you)產(chan)品(pin)無(wu)一(yi)例(li)外(wai)地(di)遭(zao)到(dao)了(le)破(po)解(jie)。這(zhe)對(dui)中(zhong)國(guo)眾(zhong)多(duo)的(de)中(zhong)小(xiao)型(xing)OEM製造商來說是非常不利的,“我們幾年的開發成果可能因此一夜之間付諸東流”當得知S7-200/300硬件加密也被破解後,一位OEM製(zhi)造(zao)商(shang)無(wu)奈(nai)地(di)說(shuo)。由(you)於(yu)仿(fang)製(zhi)者(zhe)的(de)開(kai)發(fa)成(cheng)本(ben)很(hen)低(di)或(huo)幾(ji)乎(hu)為(wei)零(ling),因(yin)此(ci)開(kai)發(fa)者(zhe)還(hai)沒(mei)有(you)來(lai)得(de)及(ji)收(shou)回(hui)開(kai)發(fa)成(cheng)本(ben)就(jiu)陷(xian)入(ru)了(le)低(di)價(jia)競(jing)爭(zheng),這(zhe)極(ji)大(da)的(de)影(ying)響(xiang)了(le)開(kai)發(fa)者(zhe)開(kai)發(fa)新(xin)產(chan)品(pin)的(de)積(ji)極(ji)性(xing),對(dui)我(wo)國(guo)的(de)裝(zhuang)備(bei)工(gong)業(ye)的(de)長(chang)遠(yuan)發(fa)展(zhan)是(shi)十(shi)分(fen)有(you)害(hai)的(de)。 難道就這樣束手無策,聽任仿製者為所欲為了嗎?答案是否定的,多年來一直關注和研究PLC控(kong)製(zhi)程(cheng)序(xu)保(bao)護(hu)方(fang)麵(mian)的(de)問(wen)題(ti),筆(bi)者(zhe)在(zai)實(shi)踐(jian)中(zhong)取(qu)得(de)了(le)一(yi)些(xie)經(jing)驗(yan)和(he)心(xin)得(de),在(zai)本(ben)文(wen)中(zhong)願(yuan)意(yi)和(he)同(tong)行(xing)們(men)共(gong)同(tong)分(fen)享(xiang)和(he)討(tao)論(lun),大(da)家(jia)共(gong)同(tong)為(wei)保(bao)護(hu)自(zi)己(ji)的(de)勞(lao)動(dong)成(cheng)果(guo)而(er)努(nu)力(li)。筆(bi)者(zhe)多(duo)年(nian)來(lai)一(yi)直(zhi)從(cong)事(shi)西(xi)門(men)子(zi)SIAMTIC S7 PLC的應用,因此本文也隻是從純粹的技術層麵出發,重點探討SIMATIC S7 PLC控製程序的保護。 Ø 在係統設計的初期,我們應該從係統的角度來考慮PLC控製程序的保護:
1. T.I.A(全集成自動化)的概念有助於保護我們的KNOW HOW T.I.A實現了組態和編程,數據管理和通訊,自動化與驅動產品(包括PLC控製器、HMI人機界麵、網絡、驅動器等產品)的高度集成。實踐證明,采用T.I.Ajichenggainianshejidekongzhixitonghennanbeichaoxi。tongyigeruanjianpingtai,xiangtongdeyingjianzucheng,yiyangdezongxiantongxun,wanquankeyishejichujieranbutongdekongzhixitong,zheshiyigerangkaifazheziyoufahuidepingtai。liru,yigeCPU315-2DP和2個MM440變頻器進行PROFIBUS-DP的通訊,除了PLC和變頻器有常規的數據交換,如果用戶使用了DRIVES ES的工程軟件,還能實現2個MM440之間的直接的快速數據交換,另外通過DRIVES ES還能實現PLC和MM440之間超過10個總共16個PZD過程數據的交換,實現PLC批(pi)量(liang)下(xia)載(zai)變(bian)頻(pin)器(qi)參(can)數(shu)的(de)功(gong)能(neng)。而(er)這(zhe)一(yi)切(qie)的(de)實(shi)現(xian)從(cong)表(biao)麵(mian)上(shang)看(kan),硬(ying)件(jian)沒(mei)有(you)發(fa)生(sheng)任(ren)何(he)的(de)變(bian)化(hua),仿(fang)製(zhi)者(zhe)很(hen)難(nan)從(cong)硬(ying)件(jian)上(shang)來(lai)判(pan)斷(duan)出(chu)係(xi)統(tong)是(shi)如(ru)何(he)控(kong)製(zhi)這(zhe)兩(liang)台(tai)驅(qu)動(dong)器(qi)的(de)速(su)度(du)的(de)。不(bu)熟(shu)悉(xi)西(xi)門(men)子(zi)產(chan)品(pin)的(de)仿(fang)製(zhi)者(zhe)無(wu)法(fa)輕(qing)易(yi)更(geng)換(huan)硬(ying)件(jian)配(pei)置(zhi)或(huo)修(xiu)改(gai)軟(ruan)件(jian),而(er)即(ji)使(shi)仿(fang)製(zhi)者(zhe)是(shi)個(ge)西(xi)門(men)子(zi)產(chan)品(pin)的(de)專(zhuan)家(jia),要(yao)獨(du)自(zi)分(fen)析(xi)清(qing)楚(chu)具(ju)體(ti)細(xi)節(jie)問(wen)題(ti)也(ye)不(bu)是(shi)件(jian)容(rong)易(yi)的(de)事(shi)情(qing)。從(cong)某(mou)種(zhong)程(cheng)度(du)上(shang)說(shuo),T.I.A大大提高了對仿製者的技術水平要求的門檻,達到西門子係統集成專家水平的技術人員一是不多,二很少有願意做這些不齒的事情的。 此外,對於一些較大係統的OEM開發商,路由通訊功能,iMAP軟件包等都是很不錯的T.I.A係統功能或工具,我們應該盡量利用T.I.A給我們帶來的技術優勢,占領技術製高點,加大仿製或抄襲的技術難度。 2. 使用通訊功能 在實際的工作中,我們往往會遇到一些係統間需要數據交換的問題(如PLC-PLC之間,PLC與驅動器之間,PLC與儀表之間),無wu論lun是shi西xi門men子zi產chan品pin之zhi間jian還hai是shi西xi門men子zi產chan品pin與yu第di三san方fang產chan品pin之zhi間jian,建jian議yi使shi用yong通tong訊xun的de方fang案an來lai代dai替ti模mo擬ni量liang或huo開kai關guan量liang之zhi間jian的de信xin號hao互hu連lian的de方fang案an。對dui於yu前qian者zhe,仿fang製zhi者zhe隻zhi能neng看kan見jian一yi條tiao硬ying件jian的de通tong訊xun線xian,至zhi於yu有you多duo少shao數shu據ju是shi如ru何he通tong過guo通tong訊xun交jiao換huan的de,仿fang製zhi者zhe必bi須xu要yao花hua精jing力li研yan究jiu具ju體ti的de用yong戶hu程cheng序xu才cai能neng搞gao清qing楚chu;而對於後者,開發者是省心省力了,仿製者也是一目了然,盡收眼底。 PLC與驅動器的通訊,除了了控製字/狀態字、設定值/反饋值及過程變量的數據通訊,驅動器工作的參數最好也能由PLC通tong過guo軟ruan件jian下xia載zai,這zhe樣yang即ji可ke以yi降jiang低di最zui終zhong用yong戶hu維wei護hu係xi統tong的de技ji術shu要yao求qiu,同tong時shi可ke以yi防fang止zhi仿fang製zhi者zhe通tong過guo驅qu動dong器qi工gong作zuo參can數shu分fen析xi係xi統tong尤you其qi在zai驅qu動dong方fang麵mian的de工gong作zuo原yuan理li和he設she計ji思si路lu。西xi門men子zi公gong司si的de工gong程cheng軟ruan件jianDRIVE ES BASIC/SIAMTIC,為廣大的西門子產品用戶實現此類功能提供了一個強大的工具;而使用SIMATIC PLC卻使用第三方驅動器的用戶,也可以自行開發針對性的參數讀寫程序,一般支持PROFIBU-DP的驅動器都可以實現。 有時候我們的控製係統會由多個子控製係統構成,由此形成多CPU加人機界麵的網絡,西門子S7-200產品常見的是PPI網絡,S7-300/400產品常見的是MPI網絡,通常是人機界麵與CPU之間的數據交換,而我們也可在CPU的用戶程序中添加一些無須組態的S7基本通訊功能(S7-200可用NETR/NETW指令,S7-300/400可以用X_PUT/X_GET指令),定時或不定時地在CPU之zhi間jian進jin行xing少shao量liang數shu據ju交jiao換huan,通tong過guo這zhe些xie數shu據ju實shi現xian子zi係xi統tong控kong製zhi邏luo輯ji的de互hu鎖suo。對dui於yu這zhe樣yang的de係xi統tong,仿fang製zhi者zhe要yao分fen析xi某mou一yi子zi係xi統tong的de程cheng序xu也ye不bu是shi件jian十shi分fen容rong易yi事shi情qing。 3. 使用麵板類型的人機界麵 盡(jin)量(liang)在(zai)自(zi)動(dong)化(hua)係(xi)統(tong)中(zhong)使(shi)用(yong)麵(mian)板(ban)類(lei)型(xing)的(de)人(ren)機(ji)界(jie)麵(mian)來(lai)代(dai)替(ti)單(dan)一(yi)的(de)按(an)鈕(niu)指(zhi)示(shi)燈(deng),雖(sui)然(ran)按(an)鈕(niu)指(zhi)示(shi)燈(deng)的(de)功(gong)能(neng)是(shi)無(wu)法(fa)保(bao)密(mi)的(de),但(dan)目(mu)前(qian)為(wei)止(zhi),麵(mian)板(ban)型(xing)人(ren)機(ji)界(jie)麵(mian)能(neng)夠(gou)實(shi)現(xian)程(cheng)序(xu)上(shang)載(zai)並(bing)實(shi)現(xian)反(fan)編(bian)譯(yi)的(de)產(chan)品(pin)還(hai)不(bu)多(duo)見(jian),開(kai)發(fa)者(zhe)可(ke)以(yi)在(zai)麵(mian)板(ban)的(de)畫(hua)麵(mian)上(shang)加(jia)上(shang)明(ming)顯(xian)的(de)廠(chang)家(jia)標(biao)識(shi)和(he)聯(lian)係(xi)方(fang)式(shi)等(deng)信(xin)息(xi),仿(fang)製(zhi)者(zhe)還(hai)不(bu)至(zhi)於(yu)傻(sha)到(dao)連(lian)這(zhe)個(ge)也(ye)原(yuan)樣(yang)照(zhao)抄(chao)吧(ba)。這(zhe)樣(yang)迫(po)使(shi)仿(fang)製(zhi)者(zhe)必(bi)須(xu)重(zhong)新(xin)編(bian)寫(xie)操(cao)作(zuo)麵(mian)板(ban)的(de)程(cheng)序(xu)甚(shen)至(zhi)於(yu)PLC的程序,而開發者則可利用麵板和PLC數據接口的一些特殊功能區(如西門子麵板的區域指針,或VB腳本)來控製PLC的程序執行。這樣的PLC程序在沒有HMI源程序的情況下隻能靠猜測和在線監視來獲取PLC內部變量的變化邏輯,費時費力,極大的增加了仿製抄襲的難度。 4. 采用高級語言編寫部分重要的工藝程序 這一點主要針對采用S7-300/400或WINAC產品的控製設備,除了使用STEP 7提供的LAD,STL,FBD標準編程語言來開發控製程序,我們還可以使用SCL,S7-GRAPH等高級語言來開發一些重要的工藝程序,WINAC還可以使用ODK軟件包開發出專有的程序塊。一般的仿製者是不容易搞到這些開發工具的,即使有也不一定會使用,更不用說來讀懂這些程序了。
Ø 在項目具體實施的過程中,我們應該從軟件開發技巧的角度來考慮PLC控製程序的保護:
1. 編程方式的采用 a) 采用模塊化的程序結構,采用符號名,參數化來編寫子程序塊 b) S7-300/400盡量采用背景數據塊和多重背景的數據傳遞方式 c) 多采用間接尋址的編程方式 d) 複fu雜za係xi統tong的de控kong製zhi程cheng序xu尤you其qi是shi一yi些xie帶dai有you順shun序xu控kong製zhi或huo配pei方fang控kong製zhi的de程cheng序xu,可ke以yi考kao慮lv采cai用yong數shu據ju編bian程cheng的de方fang式shi,即ji通tong過guo數shu據ju的de變bian化hua來lai改gai變bian係xi統tong的de控kong製zhi邏luo輯ji或huo控kong製zhi順shun序xu。 用戶應該盡量采用以上幾種高級層次的編程方式,這樣編出來的程序中嵌入係統的保護加密程序,才不容易被發現和破解 2. 主動保護方法 a) 利用係統的時鍾 b) 利用程序卡或者CPU的ID號和序列號 c) 利用EEPROM的反寫入功能,及一些需要設置的內存保持功能 d) 利用係統提供的累時器功能 e) 在用戶程序的數據塊中設置密碼 f) 軟件上設置邏輯陷阱 g) 可以反向利用自己在編程時犯的錯誤 3. 被動保護方法 a) 在內存容量利用許可的條件下,不要刪除被認為是無用的程序 b) 在數據塊裏留下開發者的標識,以便於將來遭到侵權時可以取證 4. 應用反破解技術的注意事項 a) 在zai用yong戶hu程cheng序xu中zhong嵌qian入ru保bao護hu程cheng序xu要yao顯xian得de自zi然ran一yi些xie,不bu能neng很hen突tu兀wu的de加jia出chu一yi段duan程cheng序xu來lai,代dai碼ma要yao盡jin量liang精jing簡jian,變bian量liang符fu號hao名ming應ying與yu被bei嵌qian入ru程cheng序xu段duan的de變bian量liang保bao持chi一yi致zhi b) 往往一種保護加密手段是不夠的,應該多種方法並用,並且這些保護程序一旦激活後對係統造成的後果也應該盡量不同,造成所謂的“地雷效應”,從而增加程序被破解的難度,時間與成本,短時間內讓抄襲者束手無策, c) 保bao護hu好hao程cheng序xu的de原yuan代dai碼ma,如ru果guo需xu要yao交jiao付fu程cheng序xu的de,在zai不bu影ying響xiang用yong戶hu對dui設she備bei維wei護hu的de前qian提ti下xia,應ying對dui交jiao付fu的de程cheng序xu做zuo適shi當dang的de技ji術shu處chu理li,如ru刪shan除chu部bu分fen符fu號hao名ming,采cai用yong上shang載zai的de程cheng序xu或huo數shu據ju塊kuai d) 做好嚴格的測試,以避免保護程序的不完善引起的誤動作而帶來的不必要的麻煩,同時也能降低售後服務的的費用 Ø 運用保護手段的原則 我wo們men雖sui然ran掌zhang握wo了le一yi些xie加jia密mi保bao護hu的de手shou段duan,有you一yi點dian必bi須xu明ming白bai,密mi碼ma和he鎖suo的de道dao理li是shi一yi樣yang的de,天tian下xia沒mei有you打da不bu開kai的de鎖suo,也ye沒mei有you解jie不bu開kai的de密mi碼ma,我wo們men從cong技ji術shu上shang采cai取qu的de措cuo施shi來lai防fang止zhi侵qin權quan的de作zuo用yong還hai是shi十shi分fen有you限xian的de,因yin此ci大da家jia不bu能neng把ba所suo有you的de希xi望wang都dou寄ji托tuo在zai所suo謂wei的de加jia密mi技ji術shu或huo破po解jie與yu反fan破po解jie技ji術shu上shang;除此之外我們還可以通過專利的申請等其他諸如法律手段來保護我們的知識產權;但dan最zui重zhong要yao的de是shi我wo們men不bu能neng安an於yu現xian狀zhuang,而er是shi要yao勇yong於yu創chuang新xin,不bu斷duan地di利li用yong新xin技ji術shu開kai發fa新xin產chan品pin,占zhan領ling技ji術shu新xin高gao地di,爭zheng做zuo行xing業ye的de領ling頭tou人ren,才cai能neng使shi我wo們men的de企qi業ye立li於yu不bu敗bai之zhi地di。 加(jia)密(mi)保(bao)護(hu)技(ji)術(shu)本(ben)身(shen)也(ye)是(shi)一(yi)把(ba)雙(shuang)刃(ren)劍(jian),用(yong)好(hao)了(le)客(ke)戶(hu)滿(man)意(yi),自(zi)己(ji)的(de)權(quan)益(yi)又(you)悄(qiao)悄(qiao)的(de)得(de)到(dao)了(le)保(bao)護(hu),用(yong)不(bu)好(hao)不(bu)僅(jin)不(bu)起(qi)作(zuo)用(yong),給(gei)售(shou)後(hou)服(fu)務(wu)帶(dai)來(lai)許(xu)多(duo)麻(ma)煩(fan),還(hai)會(hui)得(de)罪(zui)客(ke)戶(hu);好人掌握這種技術是用來保護自己不被侵權,而用心不良的人會利用它去要挾客戶。因此本文也僅限於討論了關於PLC程序加密保護的一些原則性指導性的內容,而沒有公布具體的程序代碼指令,請讀者們諒解。
|