本發(fā)明涉及一種基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng),本發(fā)明還涉及一種基于PLC的動(dòng)態(tài)密碼保護(hù)方法,屬于密碼生成和保護(hù)領(lǐng)域。
背景技術(shù):
在工業(yè)控制領(lǐng)域,設(shè)備生產(chǎn)商經(jīng)過(guò)多年行業(yè)積累,常常有一些自己獨(dú)有的功能體現(xiàn)在設(shè)備里。設(shè)備生產(chǎn)商為了保護(hù)自己的知識(shí)產(chǎn)權(quán),可能會(huì)限制某些功能的使用或采取收費(fèi)模式。通過(guò)密碼解鎖這些功能。現(xiàn)有的密碼解鎖方法,缺點(diǎn)是密碼為固定密碼,容易被其他人記錄造成密碼泄露。如果采用每臺(tái)設(shè)備一個(gè)密碼必然造成每臺(tái)設(shè)備需要修改程序,加大軟件工程師的服務(wù)量。另外,由生產(chǎn)廠商在現(xiàn)場(chǎng)解鎖功能會(huì)增加設(shè)備生產(chǎn)商的服務(wù)量。現(xiàn)有方法只能提前在程序中預(yù)先設(shè)定好允許使用時(shí)間,難以彈性的控制解鎖功能的允許使用時(shí)間。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng)和方法,以解決上述問(wèn)題。
本發(fā)明采用了如下技術(shù)方案:
一種基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng),其特征在于,包括:加密模塊和解密模塊,其中,加密模塊具有:鑰匙碼加密子模塊,設(shè)定一個(gè)鑰匙碼,將原始數(shù)據(jù)和鑰匙碼進(jìn)行加減或乘除運(yùn)算,產(chǎn)生加密數(shù)據(jù);替換加碼子模塊,預(yù)先定義好替換碼,將原始數(shù)據(jù)x進(jìn)行逐個(gè)替換,得到結(jié)果y;以及矩陣變化加密子模塊,輸入信息為動(dòng)態(tài)碼,序列號(hào),允許使用時(shí)間,以上三個(gè)部分經(jīng)過(guò)處理后都變成a位數(shù)據(jù),組成3行a列矩陣做為輸入,設(shè)置一個(gè)矩陣順序加密碼,由換列順序碼和換行順序碼組成,以矩陣順序碼作為規(guī)則改變行列順序產(chǎn)生新的3行a列矩陣,將3行a列矩陣一共3a位數(shù)據(jù)做為加密結(jié)果輸出,加密模塊運(yùn)用三個(gè)子模塊中的至少兩個(gè)對(duì)動(dòng)態(tài)碼、序列號(hào)和允許使用時(shí)間進(jìn)行加密,解密模塊,相對(duì)于使用子模塊進(jìn)行加密的過(guò)程逆向運(yùn)行,對(duì)加密后的數(shù)據(jù)進(jìn)行解密。
進(jìn)一步,本發(fā)明的基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng),還可以具有這樣的特征:其中,加密模塊使用全部三個(gè)子模塊對(duì)動(dòng)態(tài)碼、序列號(hào)和允許使用時(shí)間進(jìn)行加密。
進(jìn)一步,本發(fā)明的基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng),還可以具有這樣的特征:其中,加密模塊依次使用鑰匙碼加密子模塊、替換加碼子模塊和矩陣變化加密子模塊對(duì)動(dòng)態(tài)碼、序列號(hào)以及允許使用時(shí)間進(jìn)行加密。
本發(fā)明還提供一種基于PLC的動(dòng)態(tài)密碼保護(hù)方法,利用如上述任意一項(xiàng)的基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng)進(jìn)行密碼保護(hù),其特征在于,包括如下步驟:
步驟一:設(shè)定加密規(guī)則;
步驟二:PLC提供動(dòng)態(tài)碼和模塊序列號(hào);
步驟三:設(shè)定允許使用時(shí)間,然后使用加密模塊對(duì)動(dòng)態(tài)碼、模塊序列號(hào)和允許使用時(shí)間進(jìn)行加密生成動(dòng)態(tài)密碼;
步驟四:將動(dòng)態(tài)密碼傳送給用戶,在設(shè)備上的解密模塊中進(jìn)行解密,得到密碼。
進(jìn)一步,本發(fā)明的基于PLC的動(dòng)態(tài)密碼保護(hù)方法,還可以具有這樣的特征:其中,動(dòng)態(tài)密碼是通過(guò)采集plc開(kāi)機(jī)時(shí)時(shí)間或者plc程序每次上電生成一個(gè)隨機(jī)數(shù)而得到的。
進(jìn)一步,本發(fā)明的基于PLC的動(dòng)態(tài)密碼保護(hù)方法,還可以具有這樣的特征:其中,模塊序列號(hào)是PLC的序列號(hào),用來(lái)限制每個(gè)plc密碼不同。
進(jìn)一步,本發(fā)明的基于PLC的動(dòng)態(tài)密碼保護(hù)方法,還可以具有這樣的特征:在步驟四中,解密時(shí)還包括步驟:PLC將由動(dòng)態(tài)碼解密出的PLC序列號(hào)和PLC自身的序列號(hào)進(jìn)行比對(duì),如果一致,那么將使用時(shí)間賦值給內(nèi)部變量,并打開(kāi)相應(yīng)功能。
發(fā)明的有益效果
本發(fā)明的基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng)和方法,具有以下優(yōu)點(diǎn):
1.使用動(dòng)態(tài)密碼進(jìn)行加密解密,這樣可以將密碼告知用戶,讓用戶自行解鎖,由于每次密碼都是不同的,所以不用擔(dān)心密碼泄露以及用戶重復(fù)使用密碼。并且密碼加密后難以破解。
2.不需要現(xiàn)場(chǎng)服務(wù),減少了服務(wù)量。
3.每次都可以限制下一次的使用時(shí)間,即功能解鎖時(shí)間。
4.密碼包含可以使用的時(shí)間。超過(guò)時(shí)間后鎖定機(jī)器或特定功能。
5.密碼與硬件關(guān)聯(lián),一塊程序卡不可以用于其它機(jī)器。硬件ID改變需要重新輸入密碼,可以防止更換硬件,防止拷貝程序卡。
附圖說(shuō)明
圖1是基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng)的結(jié)構(gòu)框圖;
圖2是加密過(guò)程的流程圖;
圖3是解密過(guò)程的流程圖。
具體實(shí)施方式
以下結(jié)合附圖來(lái)說(shuō)明本發(fā)明的具體實(shí)施方式。
如圖1所示,基于PLC的動(dòng)態(tài)密碼保護(hù)系統(tǒng),包括兩個(gè)部分:加密模塊11和解密模塊12。其中,加密模塊11還包括:鑰匙碼加密子模塊13、替換加碼子模塊14和矩陣變化加密子模塊15。
加密模塊11設(shè)置在設(shè)備生產(chǎn)廠一端,用來(lái)提供密碼。解密模塊12設(shè)置在設(shè)備端,當(dāng)用戶輸入從設(shè)備生產(chǎn)廠獲取的密碼后,解密程序運(yùn)行得到功能解鎖命令以及功能解鎖的時(shí)間。
基于PLC的動(dòng)態(tài)密碼保護(hù)方法,包括以下步驟:
步驟一:設(shè)定加密規(guī)則;
步驟二:PLC提供動(dòng)態(tài)碼和模塊序列號(hào);
步驟三:設(shè)定允許使用時(shí)間,然后使用加密模塊對(duì)動(dòng)態(tài)碼、模塊序列號(hào)和允許使用時(shí)間進(jìn)行加密生成動(dòng)態(tài)密碼;
步驟四:將動(dòng)態(tài)密碼傳送給用戶,在設(shè)備上進(jìn)行解密,得到密碼。
為了保證密碼可以解密,要求使用可逆的加密方法。在本實(shí)施方式中采取三種可逆加密方法串聯(lián)進(jìn)行加密解密。在實(shí)際應(yīng)用中也可以結(jié)合需求采取其中的兩種。加密和解密的過(guò)程如圖2和圖3所示。解密是加密的逆過(guò)程。具體如下:
1.鑰匙碼加密
通過(guò)設(shè)定一個(gè)鑰匙碼,將原始數(shù)據(jù)和鑰匙碼進(jìn)行加減或乘除運(yùn)算,產(chǎn)生加密數(shù)據(jù),但是要保證計(jì)算可逆,即加密的數(shù)據(jù)可以反向計(jì)算回原始數(shù)據(jù)。例如5位原始數(shù)據(jù)source,采用5位數(shù)的鑰匙碼key,第一位k1表示乘法運(yùn)算,2~5位k2用來(lái)加法運(yùn)算,產(chǎn)生的加密數(shù)據(jù)x,加密過(guò)程x=key*k1+k2,解密過(guò)程key=(x-k2)/k1。整個(gè)計(jì)算過(guò)程是可逆的。加密后數(shù)據(jù)6位數(shù)。
舉例:鑰匙碼54321,那么乘法運(yùn)算系數(shù)k1=5,加法運(yùn)算系數(shù)k2=4321。
加密原始數(shù)據(jù)5位34567,加密后數(shù)據(jù)是34567*5+4321=177156
解密方法(177156–4321)/5=34567
如果設(shè)定key=10000表示沒(méi)有key加密。
2.替換加密
預(yù)先定義好替換碼,將原始數(shù)據(jù)x進(jìn)行逐個(gè)替換,得到結(jié)果y。為保證整個(gè)過(guò)程可逆,替換碼不能有數(shù)字重復(fù),即0~9的替換數(shù)據(jù)不能重復(fù)。替換加密不影響數(shù)據(jù)長(zhǎng)度,即6位數(shù)替換加密后依然是6位數(shù)。
舉例:替換碼[5432109876]表示將[0123456789]替換為[5432109876],0替換為替換碼第1位5,1替換為替換碼第2位4,9替換為替換碼第10位6.如果加密數(shù)據(jù)是上例中的117156,那么替換結(jié)果是448409。解密即反向運(yùn)算替換,448409解密變成117156。
3.矩陣變化加密
輸入信息為動(dòng)態(tài)碼,序列號(hào),允許使用時(shí)間。以上三個(gè)部分經(jīng)過(guò)鑰匙加密,替換加密后使其都變成6位數(shù)據(jù)。組成3行6列矩陣做為輸入,設(shè)置一個(gè)矩陣順序加密碼,由換列順序碼和換行順序碼組成,以矩陣順序碼作為規(guī)則改變行列順序產(chǎn)生新的3行6列矩陣,將3行6列矩陣一共18位數(shù)據(jù)做為加密結(jié)果輸出。解密過(guò)程按照矩陣順序加密碼反向運(yùn)行。
舉例:
原始密碼18位分別是動(dòng)態(tài)碼[a,b,c,d,e,f]機(jī)器號(hào)[g,h,I,j,k,l]允許使用小時(shí)[m,n,o,p,q,r]組成輸入字符串[abcdefghijklmnopqr],矩陣表達(dá)如下:原始密碼矩陣
矩陣順序加密碼的換列順序碼為123456,換行順序碼為123,那么加密過(guò)程是先固定第1列,分別取出換行順序碼中的數(shù)據(jù),填入加密矩陣第一行前三個(gè)數(shù)據(jù)。這樣加密矩陣如下:
然后取固定第2列,分別取出換行順序碼中的數(shù)據(jù)填入加密矩陣第一行后三個(gè)數(shù)據(jù)。這樣加密矩陣如下:
同樣按照順序取后面列數(shù)據(jù),最終加密矩陣變成
提取數(shù)據(jù)變?yōu)閇agmbhnciodjpekqflr].
如果換行順序碼為132,那么加密數(shù)據(jù)變?yōu)閇amgbnhcoidpjeqkfrl]解密過(guò)程反向帶入可以得到原始數(shù)據(jù)。
操作順序:
首先需要PLC提供動(dòng)態(tài)碼和模塊序列號(hào),動(dòng)態(tài)碼是一個(gè)隨機(jī)數(shù)據(jù),可以通過(guò)采集plc開(kāi)機(jī)時(shí)時(shí)間或者plc程序每次上電生成一個(gè)隨機(jī)數(shù),用來(lái)生成動(dòng)態(tài)密碼,模塊序列號(hào)是PLC的序列號(hào),用來(lái)限制每個(gè)plc密碼不同。動(dòng)態(tài)碼和模塊序列號(hào)由設(shè)備用戶告知設(shè)備生產(chǎn)廠,設(shè)備生產(chǎn)廠根據(jù)需求確定功能開(kāi)放時(shí)間(即“允許時(shí)間”),并通過(guò)以上三個(gè)參數(shù)生成動(dòng)態(tài)密碼告知用戶,用戶將動(dòng)態(tài)密碼輸入在設(shè)備上后解鎖功能。
加密程序描述:
加密時(shí)還可以限制功能解鎖的時(shí)間范圍,以小時(shí)為單位。以上三個(gè)參數(shù)為加密輸入,每個(gè)參數(shù)最大5位長(zhǎng)度,在加密程序中將數(shù)字轉(zhuǎn)化為字符串進(jìn)行處理。防止以零開(kāi)頭的數(shù)字被忽略。輸入數(shù)據(jù)通過(guò)預(yù)先設(shè)定好的加密規(guī)則進(jìn)行加密產(chǎn)生18位密碼。加密規(guī)則指鑰匙碼,替換碼,矩陣順序碼。加密規(guī)則碼是需要保密的,需要設(shè)備生產(chǎn)廠專(zhuān)人保管。
解密程序描述:
解密程序在設(shè)備中,用戶輸入密碼后,設(shè)備進(jìn)行解密,解密過(guò)程如上描述,解密后得到原始數(shù)據(jù)動(dòng)態(tài)碼,允許時(shí)間,和PLC序列號(hào)。PLC將以上三個(gè)數(shù)據(jù)和本身的三個(gè)數(shù)據(jù)進(jìn)行比較,如果動(dòng)態(tài)碼和plc序列號(hào)一致,那么將使用時(shí)間賦值給內(nèi)部變量,并打開(kāi)相應(yīng)功能。打開(kāi)哪些功能由設(shè)備生產(chǎn)廠決定,此部分為另外程序不在討論范圍內(nèi)。
以上只是表達(dá)了本發(fā)明的原理,本行業(yè)的技術(shù)人員應(yīng)該了解,為了防止間接被破解,需要配合心跳變量將此部分程序和其他程序關(guān)聯(lián)起來(lái),并且將關(guān)鍵參數(shù)隱藏掉,防止直接修改關(guān)鍵參數(shù)。為了防止修改系統(tǒng)時(shí)間造成間接破解,可以內(nèi)部計(jì)時(shí)采用累加方式。每個(gè)小時(shí)保存一次。
以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書(shū)中描述的只是說(shuō)明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書(shū)及其等同物界定。