本發(fā)明屬于信息安全技術(shù)領(lǐng)域,尤其涉及一種軟件保護方法及裝置。
背景技術(shù):
軟件保護,也可稱為程序保護,是指通過對軟件與數(shù)據(jù)的保護,達(dá)到防止知識產(chǎn)權(quán)被非法使用的效果。例如防止軟件被盜版,其涉及軟件的安裝份數(shù),使用時間,應(yīng)用范圍以及功能模塊等內(nèi)容。
目前安全性較好的軟件保護方法大多是通過安裝在串行接口、并行接口或USB接口上的硬件電路智能型加密產(chǎn)品等硬件方式來實現(xiàn),需要軟件開發(fā)商提供智能型的軟件保護工具,生產(chǎn)成本高。對于使用此類基于硬件保護方式的程序的終端用戶而言,則需要在計算機中安裝相應(yīng)的客戶端硬件或者驅(qū)動程序,安裝過程耗時、繁瑣、易出錯,并且浪費硬件端口資源。而基于軟件的程序保護方法,主要是通過驗證序列號、注冊碼、許可證文件等方式來實現(xiàn)。其缺點在于需要與應(yīng)用服務(wù)器或許可證服務(wù)器進行聯(lián)網(wǎng)認(rèn)證,易于被破解,安全性較低,認(rèn)證設(shè)備架設(shè)成本高,且多臺設(shè)備往往可以共享一個序列號,軟件保護能力低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種軟件保護方法,旨在解決目前軟件保護方法成本和操作復(fù)雜度高、安全性低、硬件端口資源浪費的問題。
本發(fā)明實施例是這樣實現(xiàn)的,一種軟件保護方法,包括:
獲取軟件的授權(quán)信息;
獲取所述授權(quán)信息的加密值并存儲到用戶系統(tǒng)中;
在所述用戶系統(tǒng)中,獲取與所述授權(quán)信息的類型對應(yīng)的當(dāng)前系統(tǒng)參數(shù);
當(dāng)所述授權(quán)信息為區(qū)間數(shù)值時,獲取所述授權(quán)信息的解密值;
若所述當(dāng)前系統(tǒng)參數(shù)不在所述授權(quán)信息的解密值的區(qū)間內(nèi),軟件終止運行;
當(dāng)所述授權(quán)信息為非區(qū)間數(shù)值時,獲取所述當(dāng)前系統(tǒng)參數(shù)的加密值;
若所述授權(quán)信息的加密值與所述當(dāng)前系統(tǒng)參數(shù)的加密值不同,軟件終止運行。
本發(fā)明實施例的另一目的在于提供一種軟件保護裝置,包括:
第一獲取單元,用于獲取軟件的授權(quán)信息;
第二獲取單元,用于獲取所述授權(quán)信息的加密值并存儲到用戶系統(tǒng)中;
第三獲取單元,用于在所述用戶系統(tǒng)中,獲取與所述授權(quán)信息的類型對應(yīng)的當(dāng)前系統(tǒng)參數(shù);
第一處理單元,用于當(dāng)所述授權(quán)信息為區(qū)間數(shù)值時,獲取所述授權(quán)信息的解密值;若所述當(dāng)前系統(tǒng)參數(shù)不在所述授權(quán)信息的解密值的區(qū)間內(nèi),軟件終止運行;
第二處理單元,用于當(dāng)所述授權(quán)信息為非區(qū)間數(shù)值時,獲取所述當(dāng)前系統(tǒng)參數(shù)的加密值;若所述授權(quán)信息的加密值與所述當(dāng)前系統(tǒng)參數(shù)的加密值不同,軟件終止運行。
在本發(fā)明實施例中,完全使用基于軟件以及依靠用戶終端單設(shè)備的方式來保護程序,有效降低了軟件保護成本和操作復(fù)雜度,保證了硬件端口資源不被浪費,且通過對授權(quán)信息的加密認(rèn)證,提高了軟件保護的安全性能。
附圖說明
圖1是本發(fā)明實施例提供的軟件保護方法的實現(xiàn)流程圖;
圖2是本發(fā)明實施例提供的軟件保護方法S101的具體實現(xiàn)流程圖;
圖3是本發(fā)明另一實施例提供的軟件保護方法的部分流程圖;
圖4是本發(fā)明另一實施例提供的軟件保護方法的部分流程圖
圖5是本發(fā)明實施例提供的軟件保護裝置的結(jié)構(gòu)框圖;
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在本發(fā)明實施例中,完全使用基于軟件以及依靠用戶終端單設(shè)備的方式來保護程序,有效降低了軟件保護成本和操作復(fù)雜度,保證了硬件端口資源不被浪費,且通過對授權(quán)信息的加密認(rèn)證,提高了軟件保護的安全性能。
圖1示出了本發(fā)明實施例提供的軟件保護方法的實現(xiàn)流程,詳述如下:
在步驟S101中,獲取軟件的授權(quán)信息值。
在本實施例中,被保護的軟件獲取的授權(quán)信息值為授權(quán)信息原始值,可以是軟件開發(fā)商、授權(quán)方或者程序管理員將授權(quán)信息類型及原始值預(yù)先設(shè)置到軟件程序中。授權(quán)信息包括但不限于授權(quán)終端MAC地址值(Media Access Control,媒體訪問控制)、硬盤序列號、使用日期范圍、使用時間范圍、使用次數(shù)值等。
在步驟S102中,獲取所述授權(quán)信息的加密值并存儲到用戶系統(tǒng)中。
通過預(yù)設(shè)的加密算法對獲得的授權(quán)信息原始值進行加密,得到授權(quán)信息的加密值。并在安裝該軟件的用戶系統(tǒng)中,將授權(quán)信息的加密值及授權(quán)信息的類型存到用戶系統(tǒng)的相同或者不同文件中。授權(quán)信息的類型是指所述授權(quán)信息是MAC地址、硬盤序列號、使用日期范圍、使用時間范圍或者使用次數(shù)等屬性。
當(dāng)授權(quán)信息是一個區(qū)間數(shù)值,如使用日期范圍,程序根據(jù)預(yù)設(shè)的可逆加密算法對授權(quán)信息區(qū)間的兩端點值進行加密??赡婕用芩惴ㄊ侵父鶕?jù)加密值可以解密出原始值的算法,可以是自定義的算法,也可以是DES\RSA等常用對稱或非對稱加密算法。
當(dāng)授權(quán)信息為非區(qū)間數(shù)值,如授權(quán)終端MAC地址值,程序根據(jù)預(yù)設(shè)的一致性校驗算法對授權(quán)信息進行計算得到授權(quán)信息加密值。其中,一致性校驗算法是即使源數(shù)據(jù)只修改一個字節(jié)都會導(dǎo)致計算出來的結(jié)果產(chǎn)生巨大變化的算法,并且具有單向性、不可逆性。如MD5(Message-Digest Algorithm 5,信息-摘要算法5)、SHA(Secure Hash Algorithm,安全散列算法)、CRC(Cyclic RedundancyCheck,循環(huán)冗余校驗)等算法。
在步驟S103中,在所述用戶系統(tǒng)中,獲取與所述授權(quán)信息的類型對應(yīng)的當(dāng)前系統(tǒng)參數(shù)。
在軟件運行時,獲取預(yù)存儲在用戶系統(tǒng)文件中的授權(quán)信息類型,根據(jù)授權(quán)信息類型獲取當(dāng)前系統(tǒng)狀態(tài)下對應(yīng)的類型的具體信息值(當(dāng)前系統(tǒng)參數(shù)值)。
例如,當(dāng)獲取預(yù)存儲在用戶系統(tǒng)文件中的授權(quán)信息類型為MAC地址時,程序?qū)@取當(dāng)前系統(tǒng)狀態(tài)下的具體MAC地址信息值,是一個48比特的整數(shù),如44-45-53-54-00-00;當(dāng)授權(quán)信息類型為使用日期時,程序?qū)@取當(dāng)前狀態(tài)下的系統(tǒng)日期,如2015-8-9。
在步驟S104中,當(dāng)所述授權(quán)信息是區(qū)間數(shù)值時,獲取所述授權(quán)信息的解密值;當(dāng)所述授權(quán)信息不是區(qū)間數(shù)值時,獲取所述當(dāng)前系統(tǒng)參數(shù)的加密值。
程序可根據(jù)預(yù)存儲的授權(quán)信息類型判斷加密信息是區(qū)間數(shù)值還是非區(qū)間數(shù)值。如授權(quán)信息類型為使用日期,即為區(qū)間數(shù)值;如授權(quán)信息類型為MAC地址,即為非區(qū)間數(shù)值。
當(dāng)所述授權(quán)信息類型是區(qū)間數(shù)值時,由于程序?qū)κ跈?quán)信息進行初始加密時使用的算法可逆,故依照對應(yīng)的解密算法可對其進行可逆計算,得出授權(quán)信息原始值。
在S105中,若所述當(dāng)前系統(tǒng)參數(shù)不在授權(quán)信息解密值區(qū)間內(nèi),軟件軟件終止運行;
例如,當(dāng)所述授權(quán)信息類型為使用日期,對預(yù)存于系統(tǒng)中的使用日期加密值進行解密,得到使用日期范圍的兩端點數(shù)值,判斷當(dāng)前系統(tǒng)日期是否在所述兩端點數(shù)值區(qū)間內(nèi),若是,軟件正常運行;否則,程序內(nèi)部的控制進程發(fā)出查找應(yīng)用進程句柄的消息,并通對應(yīng)用進程句柄發(fā)送終止運行消息,終止整個軟件的運行。
在S106中,當(dāng)所述授權(quán)信息不是區(qū)間數(shù)值時,使用與授權(quán)信息初始加密時相同的一致性校驗算法,對當(dāng)前系統(tǒng)參數(shù)進行計算,得出所述當(dāng)前系統(tǒng)參數(shù)的加密值。若所述授權(quán)信息加密值與所述當(dāng)前系統(tǒng)參數(shù)的加密值相同,軟件正常運行;否則,軟件終止運行;
例如,當(dāng)所述授權(quán)信息類型為MAC地址時,預(yù)存于系統(tǒng)中的授權(quán)MAC地址值是經(jīng)過MD5計算得出的加密值。程序使用相同的MD5算法對當(dāng)前用戶終端的MAC地址進行計算得出當(dāng)前MAC地址加密值。若所述當(dāng)前MAC地址加密值與預(yù)設(shè)MAC地址加密值相同,軟件正常運行;否則,軟件終止運行。
在本發(fā)明實施例中,完全使用基于軟件以及依靠用戶終端單設(shè)備的方式來保護程序,有效降低了軟件保護成本和操作復(fù)雜度,保證了硬件端口資源不被浪費,且通過對授權(quán)信息的加密認(rèn)證,提高了軟件保護的安全性能。
作為本發(fā)明的一個實施例,在步驟S101中,所述獲取軟件的授權(quán)信息包括:通過動態(tài)密碼方式驗證管理員身份,以獲取軟件的授權(quán)信息值。
如圖2所示,S101優(yōu)選為:
在S201中,顯示軟件授權(quán)信息設(shè)置界面。
在S202中,獲取軟件授權(quán)方的動態(tài)密碼。
動態(tài)密碼指在不同時刻生成不同的實時密碼,可防止密碼被窺視泄露,使授權(quán)信息能夠被窺視者任意修改,導(dǎo)致軟件保護功能失效。只有合法的軟件授權(quán)方能夠獲知動態(tài)密碼,并在授權(quán)信息設(shè)置界面中輸入當(dāng)前密碼。
在S203中,判斷動態(tài)密碼是否正確,若是,獲取授權(quán)方設(shè)置的授權(quán)信息。
為了節(jié)約成本,在本實施例中,授權(quán)者直接心算得出動態(tài)密碼,不需要依靠其他介質(zhì)來獲取。依據(jù)用戶終端當(dāng)前系統(tǒng)日期來生成密碼,密碼的最終形式為“YYMMDDZZ”,長度為6-8位,生成規(guī)則如下:
1)YY是當(dāng)前年份的前兩位,ZZ為年份的后兩位;
2)如果當(dāng)前月份是兩位數(shù),如12月,則MM=12;
如果當(dāng)前月份是一位數(shù),如1月,則為MM=1;
3)DD=31-today。其中,today為當(dāng)前日。計算結(jié)果有兩種情況:
情況1:DD為兩位數(shù)。如20日,31-20=11,則DD=11;
情況2:DD為一位數(shù)。如29日,31-29=2,則DD=2;
例如,當(dāng)前系統(tǒng)日期為2016-7-19,生成的密碼則是2071216。
作為本發(fā)明的另一個優(yōu)選實施例,在步驟S102中,獲取授權(quán)信息加密值并存儲到用戶系統(tǒng)中包括:獲取所述授權(quán)信息的加密值存儲到用戶系統(tǒng)注冊表中。
由于系統(tǒng)注冊表在用戶重裝電腦后會被重置成初始狀態(tài)值,授權(quán)信息將丟失。在安全性能要求較高時,在用戶重裝系統(tǒng)后,可防止處于未受控環(huán)境下的終端設(shè)備仍能運行受保護的程序。
作為本發(fā)明的另一個實施例,在S105中,,若所述當(dāng)前系統(tǒng)參數(shù)在所述授權(quán)信息解密值區(qū)間內(nèi),所述方法還包括:
將存儲在所述用戶系統(tǒng)的所述授權(quán)信息的加密值的區(qū)間起始值調(diào)整為所述當(dāng)前系統(tǒng)參數(shù)的加密值。
如圖3所示,在步驟S105后可以為:
在S501中,若所述當(dāng)前系統(tǒng)參數(shù)在所述授權(quán)信息的解密值的區(qū)間內(nèi),獲取當(dāng)前系統(tǒng)參數(shù)的加密值。加密方式與上述實施例中的方式相同。
在S502中,將存儲在系統(tǒng)文件中的授權(quán)信息的加密值的區(qū)間起始值替換為當(dāng)前系統(tǒng)參數(shù)的加密值。
例如,當(dāng)前系統(tǒng)日期為2016-8-9,在授權(quán)使用日期解密值“2016-8-7至2017-7-8”區(qū)間內(nèi),則程序?qū)?dāng)前日期2016-8-9進行加密,依照相同的算法得到加密值假設(shè)為“2948”。原本存于系統(tǒng)文件中的授權(quán)使用日期加密值假設(shè)為“3928至4829”,則更新存于系統(tǒng)文件中的授權(quán)使用日期加密值為“2948至4829”。
在本發(fā)明實施例中,依靠每次正常運行程序后對當(dāng)前系統(tǒng)授權(quán)信息的實時調(diào)整,可以防止用戶非法修改系統(tǒng)參數(shù),使其一直處于授權(quán)區(qū)間內(nèi),降低軟件保護性能。
作為本發(fā)明的另一個實施例,在S102之后,所述方法還包括:
獲取所述軟件的可執(zhí)行文件的原始校驗值及當(dāng)前校驗值;
當(dāng)所述原始校驗值與所述當(dāng)前校驗值不同時,軟件終止運行。
如圖4所示,在S102之后,優(yōu)選為:
在S401中,獲取所述軟件的可執(zhí)行文件的原始校驗值。
被保護程序在開發(fā)時,會通過預(yù)設(shè)的一致性算法來對程序的可執(zhí)行文件進行計算得出原始校驗值,常見是使用CRC校驗算法。原始校驗值會存儲到獨立文件中,并置于程序安裝后生成的可執(zhí)行文件的相同目錄下。
當(dāng)軟件運行時,直接讀取可執(zhí)行文件當(dāng)前目錄下的原始校驗值文件得到可執(zhí)行文件的原始校驗值。
在S402中,通過預(yù)設(shè)的一致性校驗算法獲取所述軟件的可執(zhí)行文件的當(dāng)前校驗值。
軟件安裝到用戶系統(tǒng)后會生成一個可執(zhí)行文件。由于軟件在開發(fā)過程中預(yù)設(shè)有計算可執(zhí)行文件原始校驗值的一致性算法,所以當(dāng)軟件在安裝后并運行時,會通過使用相同的一致性算法對當(dāng)前重新生成的可執(zhí)行文件進行計算,獲得所述軟件的可執(zhí)行文件的當(dāng)前校驗值。
在步驟S403中,判斷所述原始校驗值與所述當(dāng)前校驗值是否相同。
當(dāng)所述原始校驗值與所述當(dāng)前校驗值不同時,軟件終止運行;當(dāng)所述原始校驗值與所述當(dāng)前校驗值相同時,繼續(xù)執(zhí)行步驟S103。。
控制程序運行及終止的方式均與上述其他實施例相同。
在本實施例中,通過對軟件的可執(zhí)行文件的一致性驗證,可以確保運行的是未被修改過的程序,防止被破解使用,提高了軟件保護性能。其中,破解是指使用者在沒有任何經(jīng)濟付出的條件下無限制的運行該程序。
圖5示出了本發(fā)明實施例提供的軟件保護裝置的結(jié)構(gòu)框圖,該軟件保護裝置用于運行本發(fā)明上述實施例的軟件保護方法。為了便于說明,僅示出了與本實施例相關(guān)的部分。
參照圖5,該裝置包括:
第一獲取單元51,用于獲取軟件的授權(quán)信息;
第二獲取單元52,用于獲取所述授權(quán)信息的加密值并存儲到用戶系統(tǒng)中;
第三獲取單元53,用于在所述用戶系統(tǒng)中,獲取與所述授權(quán)信息的類型對應(yīng)的當(dāng)前系統(tǒng)參數(shù);
第一處理單元54,用于當(dāng)所述授權(quán)信息為區(qū)間數(shù)值時,獲取所述授權(quán)信息的解密值;若所述當(dāng)前系統(tǒng)參數(shù)不在所述授權(quán)信息的解密值的區(qū)間內(nèi),軟件終止運行;
第二處理單元55,用于當(dāng)所述授權(quán)信息為非區(qū)間數(shù)值時,獲取所述當(dāng)前系統(tǒng)參數(shù)的加密值;若所述授權(quán)信息的加密值與所述當(dāng)前系統(tǒng)參數(shù)的加密值不同,軟件終止運行。
可選地,所述軟件保護裝置還包括:
認(rèn)證單元,用于通過動態(tài)密碼方式驗證管理員身份,以獲取軟件的授權(quán)信息值。
可選地,所述第二獲取單元52還用于:
獲取所述授權(quán)信息的加密值存儲到用戶系統(tǒng)注冊表中;
可選地,所述軟件保護裝置還包括:
調(diào)整單元,將存儲在所述用戶系統(tǒng)的所述授權(quán)信息的加密值的區(qū)間起始值調(diào)整為所述當(dāng)前系統(tǒng)參數(shù)的加密值。
可選地,所述軟件保護裝置還包括:
第四獲取單元,用于獲取所述軟件的可執(zhí)行文件的原始校驗值及當(dāng)前校驗值;
第三處理單元,用于判斷當(dāng)所述原始校驗值與所述當(dāng)前校驗值不同時,軟件終止運行;
在本發(fā)明實施例中,完全使用基于軟件以及依靠用戶終端單設(shè)備的方式來保護程序,有效降低了軟件保護成本和操作復(fù)雜度,保證了硬件端口資源不被浪費,且通過對授權(quán)信息的加密認(rèn)證,提高了軟件保護的安全性能。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。