大神通常如何對(duì)PLC程序進(jìn)行加密和解密? 眾所周知,很多品牌的PLC程序都是可以用軟件解密的,所以一旦解密,程序在別人眼里就非常透明的顯示出來(lái),把設(shè)備賣給別人,把PLC程序作為一個(gè)整體鎖起來(lái)是不切實(shí)際的,這樣甲方就無(wú)法維護(hù);保密和維權(quán)是中國(guó)市場(chǎng)經(jīng)久不衰的話題。其實(shí)德國(guó)工程師從來(lái)不把自己的程序作為一個(gè)整體加密,而是使用其他方法,在出現(xiàn)故障時(shí)不會(huì)影響診斷,還能保護(hù)自己的核心機(jī)密。今天,我將向您介紹這些方法,供您參考。 使用西門子安全可編程控制器或薄涂1的專有技術(shù)功能
西門子安全PLC是西門子主要安全功能的產(chǎn)物,性能毋庸置疑,安全PLC的程序塊加密后無(wú)法破解;可以很好的保護(hù)核心。作為西門子的最新產(chǎn)品,薄涂公司的版權(quán)保護(hù)也是其主要功能之一。KNOWHOW功能是軟件和硬件的雙重加密。未加密的塊可以正常監(jiān)控,沒(méi)有密碼甚至無(wú)法下載到其他PLCs因此,使用薄涂的專有技術(shù)功能不僅可以將程序移交給甲方方便維護(hù),還可以保護(hù)其核心程序不被竊取。
除了最基礎(chǔ)的LAD梯形圖編程、FBD功能塊編程、STL語(yǔ)句表編程,西門子還有很多其他的方式,比如PCS7的CFC、sfc還有SCL,S7-GRAPH等等。對(duì)于這些語(yǔ)言,一般工控人員很難全部掌握,所以模仿難度大大提高。因此,非常關(guān)鍵的過(guò)程程序可以用這些語(yǔ)言編寫,它們的核心可以得到很好的保護(hù)。
a)使用模塊化程序結(jié)構(gòu),使用符號(hào)名和參數(shù)化編寫子程序塊;b)盡量采用后臺(tái)數(shù)據(jù)塊和多后臺(tái)數(shù)據(jù)傳輸方式;
d)對(duì)于復(fù)雜系統(tǒng)的控制程序,特別是一些帶有順序控制或配方控制的程序,可以考慮數(shù)據(jù)編程,即通過(guò)數(shù)據(jù)的變化來(lái)改變系統(tǒng)的控制邏輯或控制順序。
用戶應(yīng)盡量采用上述先進(jìn)的編程方法,使系統(tǒng)保護(hù)加密程序嵌入到已編程的程序中,不易被發(fā)現(xiàn)和復(fù)制。
b)使用程序卡或CPU的ID號(hào)和序列號(hào);
c)使用EEPROM的反寫功能和一些需要設(shè)置的內(nèi)存保持功能;
d)使用系統(tǒng)提供的定時(shí)器功能;
e)在用戶程序的數(shù)據(jù)塊中設(shè)置密碼;
f)在軟件上設(shè)置邏輯陷阱;g)可以把編程時(shí)犯的錯(cuò)誤改過(guò)來(lái)。
a)在內(nèi)存容量利用權(quán)限的情況下,不要?jiǎng)h除被認(rèn)為無(wú)用的程序;
b)把開(kāi)發(fā)者的logo留在數(shù)據(jù)塊里,以便日后侵權(quán)時(shí)可以取證。
(4)應(yīng)用防盜技術(shù)的注意事項(xiàng)
a)在用戶程序中嵌入保護(hù)程序要自然,不要突然添加一個(gè)程序,盡量簡(jiǎn)化代碼,變量的符號(hào)名要與程序段中嵌入的變量一致;
b)往往一種保護(hù)加密方式是不夠的,要多種方式一起使用。這些保護(hù)程序一旦被激活,對(duì)系統(tǒng)造成的后果應(yīng)該盡可能不同,產(chǎn)生所謂的“地雷效應(yīng)”,從而增加竊取程序的難度、時(shí)間和成本,讓抄襲者在短時(shí)間內(nèi)束手無(wú)策;
c)保護(hù)程序的原始代碼。如果程序需要交付,交付的程序應(yīng)經(jīng)過(guò)適當(dāng)?shù)募夹g(shù)處理,不影響用戶對(duì)設(shè)備的維護(hù),如刪除一些符號(hào)名,采用上傳的程序或數(shù)據(jù)塊;
d)做嚴(yán)格測(cè)試,避免保護(hù)程序不完善導(dǎo)致誤操作帶來(lái)不必要的麻煩,同時(shí)降低售后服務(wù)成本。
在實(shí)際應(yīng)用中,經(jīng)常會(huì)出現(xiàn)一些需要系統(tǒng)之間(多個(gè)PLC之間、PLC與第三方儀表之間)進(jìn)行數(shù)據(jù)交換的問(wèn)題。無(wú)論是西門子產(chǎn)品之間,還是西門子產(chǎn)品與第三方產(chǎn)品之間,都建議使用通信方案,而不是模擬或開(kāi)關(guān)量之間的信號(hào)互聯(lián)方案。對(duì)于前者,模仿者只能看到一條硬件通訊線。至于通過(guò)通信交換了多少數(shù)據(jù),模仿者必須花精力去研究具體的用戶程序才能搞清楚;至于后者,開(kāi)發(fā)者省力,模仿者一眼就能看出來(lái)。
一般設(shè)計(jì)變頻器或伺服電機(jī)等程序的方式有很多種,可以通過(guò)線路直接控制,也可以通過(guò)通訊控制。如果使用通訊,會(huì)增加復(fù)制程序的難度。例如,可編程控制器對(duì)伺服驅(qū)動(dòng)器有多種控制,較簡(jiǎn)單的可以是脈沖直接控制或模擬控制。這種方式很容易復(fù)制。如果用通訊控制,程序會(huì)復(fù)雜很多。另外,如果模仿者對(duì)消息不熟悉,很難復(fù)制。
有時(shí)控制系統(tǒng)由若干個(gè)子控制系統(tǒng)組成,從而形成多CPU加人機(jī)接口網(wǎng)絡(luò)。PPI網(wǎng)絡(luò)常見(jiàn)于西門子S7-200產(chǎn)品,MPI網(wǎng)絡(luò)常見(jiàn)于S7-300400產(chǎn)品,通常是人機(jī)界面和CPU之間的數(shù)據(jù)交換,我們還可以在CPU的用戶程序中添加一些基本的S7通信功能,無(wú)需配置(S7-200可以使用NETRNETW指令,S7-300400可以使用X_PUTX_GET指令,定期或不定期地在CPU之間交換少量數(shù)據(jù),通過(guò)這些數(shù)據(jù)實(shí)現(xiàn)子系統(tǒng)控制邏輯的互鎖。對(duì)于這樣一個(gè)系統(tǒng)來(lái)說(shuō),模仿者分析某個(gè)子系統(tǒng)的程序并不是很容易。4型面板人機(jī)界面
自動(dòng)化系統(tǒng)盡量使用面板式人機(jī)界面,而不是單按鈕指示燈。很多人機(jī)界面在沒(méi)有源程序的情況下只有備份和恢復(fù)功能,完全可以實(shí)現(xiàn)維護(hù)功能,并且對(duì)HMI程序保密。對(duì)于一個(gè)PLC系統(tǒng),即使有源程序但缺少HMI部分的標(biāo)記,也很難模仿。
而且開(kāi)發(fā)者可以在面板的屏幕上添加廠商標(biāo)識(shí)、聯(lián)系方式等明顯的信息,模仿者不能照原樣復(fù)制。
如果模仿者要復(fù)制程序,他必須重寫操作面板的程序,甚至PLC的程序,而開(kāi)發(fā)者可以使用面板和PLC數(shù)據(jù)接口的一些特殊功能區(qū)域(如西門子面板的區(qū)域指針或VB腳本)來(lái)控制PLC的程序執(zhí)行。沒(méi)有HMI源程序,這樣一個(gè)PLC程序只能通過(guò)猜測(cè)和在線監(jiān)控獲得PLC內(nèi)部變量變化的邏輯,費(fèi)時(shí)費(fèi)力,大大增加了復(fù)制和拷貝的難度。
采用非標(biāo)準(zhǔn)人機(jī)界面5
在國(guó)內(nèi),大部分工程師愿意使用WINCC、INTOUCH或組態(tài)王等。但其實(shí)除了這些軟件,還有一種更高的編寫方法,就是用VB編寫自己的程序,對(duì)于軟件與PLC的接口,可以選擇LIBNODAVE或者其他庫(kù)等。這樣寫出來(lái)的人機(jī)界面有很多優(yōu)點(diǎn),首先沒(méi)有版權(quán)問(wèn)題,因?yàn)閂B軟件是免費(fèi)的。而對(duì)于WINDOW系統(tǒng)的升級(jí),只需要添加幾個(gè)文件。不像WINCC,如果窗口升級(jí),需要修改很多文件。大部分人都不能修改,更不能復(fù)制;沒(méi)有很好的計(jì)算機(jī)編程知識(shí)就不能輕易修改,沒(méi)有PLC或者工藝基礎(chǔ)只有很好的計(jì)算機(jī)知識(shí)就不能修改。作者用S7-300做了這樣的系統(tǒng),但我的目的不是保密,而是甲方的要求,坐出來(lái)的系統(tǒng)完全符合自己的風(fēng)格,很舒服。
最后要告誡大家,不要過(guò)度消耗中國(guó)工業(yè)市場(chǎng)的誠(chéng)信,合理利用PLC技術(shù)保護(hù)核心機(jī)密,而不是過(guò)度用于其他目的。中國(guó)工業(yè)市場(chǎng)的完整性需要每個(gè)人的努力才能得到改善。