|
黃岑
上海大華總線電氣技術有限公司 上海
摘要:從純粹的技術層麵出發,重點探討SIMATIC S7 PLC控製程序的保護
關鍵詞:Simatic S7,PLC程序,破解與反破解, 知識產權的保護
前言:
隨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牌paiPLC,雖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型xingOEM製造商來說是非常不利的,“我們幾年的開發成果可能因此一夜之間付諸東流”當得知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指令),定時或不定時地在CPUzhijianjinxingshaoliangshujujiaohuan,tongguozhexieshujushixianzixitongkongzhiluojidehusuo。duiyuzheyangdexitong,fangzhizheyaofenximouyizixitongdechengxuyebushijianshifenrongyishiqing。
3. 使用麵板類型的人機界麵
jinliangzaizidonghuaxitongzhongshiyongmianbanleixingderenjijiemianlaidaitidanyideanniuzhishideng,suirananniuzhishidengdegongnengshiwufabaomide,danmuqianweizhi,mianbanxingrenjijiemiannenggoushixianchengxushangzaibingshixianfanbianyidechanpinhaibuduojian,kaifazhekeyizaimianbandehuamianshangjiashangmingxiandechangjiabiaoshihelianxifangshidengxinxi,fangzhizhehaibuzhiyushadaolianzhegeyeyuanyangzhaochaoba。zheyangposhifangzhizhebixuzhongxinbianxiecaozuomianbandechengxushenzhiyuPLC的程序,而開發者則可利用麵板和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) fuzaxitongdekongzhichengxuyouqishiyixiedaiyoushunxukongzhihuopeifangkongzhidechengxu,keyikaolvcaiyongshujubianchengdefangshi,jitongguoshujudebianhualaigaibianxitongdekongzhiluojihuokongzhishunxu。
用戶應該盡量采用以上幾種高級層次的編程方式,這樣編出來的程序中嵌入係統的保護加密程序,才不容易被發現和破解
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) 做好嚴格的測試,以避免保護程序的不完善引起的誤動作而帶來的不必要的麻煩,同時也能降低售後服務的的費用
Ø 運用保護手段的原則
womensuiranzhangwoleyixiejiamibaohudeshouduan,youyidianbixumingbai,mimahesuodedaolishiyiyangde,tianxiameiyoudabukaidesuo,yemeiyoujiebukaidemima,womencongjishushangcaiqudecuoshilaifangzhiqinquandezuoyonghaishishifenyouxiande,yincidajiabunengbasuoyoudexiwangdoujituozaisuoweidejiamijishuhuopojieyufanpojiejishushang;除此之外我們還可以通過專利的申請等其他諸如法律手段來保護我們的知識產權;danzuizhongyaodeshiwomenbunenganyuxianzhuang,ershiyaoyongyuchuangxin,buduandiliyongxinjishukaifaxinchanpin,zhanlingjishuxingaodi,zhengzuoxingyedelingtouren,cainengshiwomendeqiyeliyububaizhidi。
jiamibaohujishubenshenyeshiyibashuangrenjian,yonghaolekehumanyi,zijidequanyiyouqiaoqiaodededaolebaohu,yongbuhaobujinbuqizuoyong,geishouhoufuwudailaixuduomafan,haihuidezuikehu;好人掌握這種技術是用來保護自己不被侵權,而用心不良的人會利用它去要挾客戶。因此本文也僅限於討論了關於PLC程序加密保護的一些原則性指導性的內容,而沒有公布具體的程序代碼指令,請讀者們諒解。
謹以此文獻給並鼓舞那些辛勤奮鬥在開發生產一線為祖國自動化事業做出巨大貢獻的諸多同行;同時譴責那些企圖不勞而獲,竊取他人勞動成果的仿製者侵權者。 |