專利名稱:一種軟件保護(hù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件保護(hù)方法,尤其是基于機(jī)器特征碼的軟件保護(hù)方法。
背景技術(shù):
為了保護(hù)軟件產(chǎn)品的知識(shí)產(chǎn)權(quán),打擊盜版,軟件廠商對(duì)軟件產(chǎn)品通常進(jìn)行加密處理,使非法用戶不能使用其產(chǎn)品。根據(jù)檢索,目前對(duì)軟件產(chǎn)品進(jìn)行加密保護(hù)的方法主要有以下幾種,軟盤加密法、插盤加密法、軟件狗加密法、密碼加密法和隱含代碼加密法等,從目前使用的情況來看保護(hù)效果都不太理想。中國(guó)專利98124924.8公開了一種計(jì)算機(jī)軟件的反饋式版權(quán)確認(rèn)的防盜版加密方法。該方法主要步驟是程序輸出軟件程序編號(hào)a0,參數(shù)數(shù)據(jù)b0,抽取隨機(jī)數(shù)據(jù)C0,并將這些數(shù)據(jù)反饋給軟件公司,軟件公司檢驗(yàn)編號(hào)a0是否登記過,如沒有登記過,則利用程序編號(hào)a0計(jì)算出參數(shù)數(shù)據(jù)b1,并與用戶提供的參數(shù)數(shù)據(jù)b0進(jìn)行比較,如一致,則用戶和和軟件公司分別用隨機(jī)參數(shù)C0和程序編號(hào)a0計(jì)算出密匙數(shù)據(jù)d0和d1,并比較是否一致,如一致,軟件安裝成功,如不一致,則中斷操作。
上述軟件加密方法的主要目的是防止非法拷貝和使用,存在下列缺陷1.軟件公司需購(gòu)置數(shù)據(jù)庫存放和維護(hù)程序編號(hào)a0,生成了經(jīng)營(yíng)成本,并且軟件公司的數(shù)據(jù)庫有被盜的可能性,它們一旦被竊取,被保護(hù)的軟件就得不到保護(hù);
2.為防止非法拷貝,采用更改機(jī)器硬件結(jié)構(gòu)或增加輸出功能的方式,不現(xiàn)實(shí),且難度大,實(shí)際上,硬件在出廠時(shí),其結(jié)構(gòu)、性能和參數(shù)都已設(shè)定,軟件加密時(shí)要改變其設(shè)定功能或結(jié)構(gòu)是非常困難的;3.制作的鑰匙軟盤在傳遞過程中,易丟失或被復(fù)制,因而,該方生成的鑰匙既不方便,也不安全。
發(fā)明內(nèi)容
本發(fā)明的目的是克服上述現(xiàn)有技術(shù)中存在的缺陷,提出一種基于機(jī)器特征碼和預(yù)設(shè)參數(shù)的、用純軟件技術(shù)實(shí)現(xiàn)的、對(duì)硬件無任何要求的軟件保護(hù)方法。
眾所周知,任何一臺(tái)機(jī)器,如個(gè)人電腦、移動(dòng)PC、Palm、PDA、小、中、大、巨型計(jì)算機(jī)、PC服務(wù)器等都是由許多部件組成的,如主板、cpu、網(wǎng)卡等,每一個(gè)部件都有特征碼(如產(chǎn)品序列號(hào)等),且各部件的特征碼都是唯一的。設(shè)計(jì)算機(jī)有n個(gè)部件,部件1的特征碼為X1,部件2的特征碼為X2,部件n的特征碼是Xn,F(xiàn)是機(jī)器總特征值的合成函數(shù),則由特征碼X1、X2……、Xn作為函數(shù)F的變量,可求出機(jī)器的總特征值Φ1,Φ1=F(X1、X2……、Xn)?;诖颂卣髦郸?和依被保護(hù)軟件指定的參數(shù)S1,運(yùn)用加密算法G,進(jìn)行加密運(yùn)算,生成與特征值Φ1和參數(shù)S1唯一對(duì)應(yīng)的密鑰K1,K1=G(Φ1,S1),該密鑰K1就是被保護(hù)軟件合法使用的證書。
證書的認(rèn)證過程是一逆向過程,將證書/密鑰K2輸入計(jì)算機(jī)后,依加密算法的逆算法G-1,將K2分解成參數(shù)S2和特征值Φ2,當(dāng)S2=S1,Φ2=Φ1時(shí),再根據(jù)函數(shù)F的逆運(yùn)算F-1(Φ2),求出X1、X2……、Xn,并且,被保護(hù)軟件再次自動(dòng)讀取運(yùn)行該軟件的機(jī)器的各部件的特征值X1、X2……、Xn,當(dāng)X1=X1,且X2=X2,……,且Xn=Xn時(shí),確認(rèn)用戶為合法用戶。否則,授權(quán)程序中斷,確認(rèn)用戶為非法用戶。從而,達(dá)到有效保護(hù)軟件之目的。
本發(fā)明提出的軟件保護(hù)方法是利用機(jī)器特征碼的確認(rèn)來實(shí)現(xiàn)軟件的保護(hù),所述的機(jī)器特征碼確認(rèn)過程包括下列步驟a、軟件加密公司在被保護(hù)的軟件上安裝讀取、合成、分解及校驗(yàn)機(jī)器特征碼的程序A,并設(shè)定指定參數(shù)S1;b、用戶首次運(yùn)行被保護(hù)軟件時(shí),程序A自動(dòng)讀取n個(gè)機(jī)器特征碼X1、X2……、Xn,F(xiàn)是機(jī)器總特征碼生成函數(shù),以機(jī)器特征碼X1、X2……、Xn作為函數(shù)F的變量計(jì)算出機(jī)器總特征值Φ1,Φ1=F(X1、X2……、Xn),將機(jī)器特征值Φ1發(fā)送給軟件加密公司,并將Φ1保存在指定的文件中;c、軟件加密公司將得到的總特征值Φ1與被保護(hù)軟件指定的參數(shù)S1,運(yùn)用算法G,進(jìn)行加密運(yùn)算,得到與總特征值Φ1及參數(shù)S1唯一匹配的密鑰/證書K1,K1=G(Φ1、S1),并將該密鑰/證書K1反饋給用戶;d、被保護(hù)軟件首次運(yùn)行時(shí),用戶輸入密鑰/證書K2后,程序A通過加密運(yùn)算的逆運(yùn)算G-1,將K2分解,得到特征值Φ2和參數(shù)S2,比較S2、S1值,當(dāng)S2=S1時(shí),授權(quán)步驟繼續(xù)進(jìn)行,當(dāng)S2≠S1時(shí),確認(rèn)步驟中斷;e、程序A將特征值Φ2依函數(shù)F的逆運(yùn)算F-1,進(jìn)行運(yùn)算,得到機(jī)器的特征碼X1、X2……、Xn;f、程序A自動(dòng)讀取運(yùn)行該被保護(hù)軟件的機(jī)器各部件的特征碼X1、X2……、Xn,并比較X值,當(dāng)X1=X1,X2=X2、……Xn=Xn時(shí),確認(rèn)用戶為合法用戶。
在步驟d中,也可以從指定的文件中取出Φ1,再對(duì)Φ2、Φ1進(jìn)行比較,當(dāng)Φ2=Φ1,S2=S1同時(shí)成立時(shí),授權(quán)步驟繼續(xù),否則,授權(quán)步驟中斷。
本發(fā)明提出的軟件保護(hù)方法與現(xiàn)有技術(shù)相比具有下列優(yōu)點(diǎn)(一)安全可靠加密基于機(jī)器特征碼,由于特征碼是唯一的,因而,為被保護(hù)軟件制作的密鑰/證書也是唯一的,每臺(tái)機(jī)器唯一對(duì)應(yīng)于一個(gè)證書,用于機(jī)器A的證書不能用在機(jī)器B,同樣,用于機(jī)器B的證書也不能用于機(jī)器A。因而,密鑰/證書無需保密,可以公開,不存在證書泄密的問題。但被保護(hù)的軟件不會(huì)因證書的泄露而受到非法使用。經(jīng)本方法加密的軟件是安全的,軟件的保護(hù)是可靠的;(二)零成本不需要對(duì)機(jī)器內(nèi)的任何硬件或軟件做任何更改、變動(dòng)或增加,也無需添加任何設(shè)備或購(gòu)買任何支撐軟件,其成本為零;(三)簡(jiǎn)單方便一方面,由于密鑰/證書可公開,因而,其傳遞、保管均無特殊要求,可用任何方式、任何手段來傳遞、保管證書,證書的傳遞、保管方便;另一方面,用戶得到證書后,輸入證書號(hào)即可,沒有復(fù)雜的過程,并且一次授權(quán),終身可用;(四)證書制作算法破譯困難軟件保護(hù)的最大敵人就是破譯用于保護(hù)軟件的加密算法。用大量的數(shù)據(jù)、運(yùn)行高速的計(jì)算機(jī),輸入證書/密鑰進(jìn)行分析,以便找出加密的算法,這是破密的常用辦法。本發(fā)明所生產(chǎn)的證書基于機(jī)器各部的特征值的總運(yùn)算,每臺(tái)機(jī)器都有不同的特征值,這些特征值是不輸出的,也就是說,它們是不可見的,破譯者無法得到每臺(tái)機(jī)器的各部件的特征值,也就無法找到機(jī)器總特征值生成的規(guī)律,即函數(shù)F難以破譯,在不知F的情況下,要破譯加密算法G,就難上加難。并且,一方面,每臺(tái)機(jī)器的特征值不一樣,另一方面,每天都有大量的機(jī)器在投入使用,故任何人都無法收集全球所有機(jī)器的總特征值,換句話說,要收集全所有證書號(hào)來分析,找出規(guī)律,再破譯出加密算法來,幾乎是不可能的。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的說明,其中圖1是被保護(hù)軟件與本發(fā)明證書管理程序A及指定參數(shù)S整合的原理方框圖;圖2是證書生成與傳遞原理方框圖;圖3是證書驗(yàn)證的原理圖方框圖。
具體實(shí)施例方式
如圖1所示,本發(fā)明被保護(hù)軟件加密時(shí),依下列步驟進(jìn)行首先在被保護(hù)的軟件上設(shè)置讀取、合成、分解及校驗(yàn)機(jī)器特征碼的程序A。程序A執(zhí)行時(shí),完成自動(dòng)讀取機(jī)器特征碼、依函數(shù)F計(jì)算總特征值Φ、校驗(yàn)證書等功能。同時(shí)設(shè)置指定參數(shù)S1,指定參數(shù)S1可以單純的數(shù)字、符號(hào)、字符串或一段程序;指定參數(shù)S1可以經(jīng)加密處理,也可以不經(jīng)加密處理。指定參數(shù)S1與保護(hù)軟件融為一體,生成待授權(quán)的保護(hù)軟件,并交給用戶。
如圖2所示,本發(fā)明按以下步驟為保護(hù)軟件進(jìn)行授權(quán),生成授權(quán)a、用戶安裝被保護(hù)軟件時(shí),程序A自動(dòng)讀取n個(gè)機(jī)器特征碼X1、X2……、Xn,并以這些特征碼作為函數(shù)F的變量計(jì)算出特征值Φ1并保存,Φ1=F(X1、X2……、Xn),用戶可以通過電子郵件、電話、傳真等方式將總特征值Φ1發(fā)送給軟件加密公司;b、軟件加密公司將得到的特征值Φ1與被保護(hù)軟件指定的參數(shù)S1作為算法G的變量,依算法G,進(jìn)行加密運(yùn)算,得到對(duì)應(yīng)于總特征Φ1與參數(shù)S1的密鑰/證書K1,K1=G(Φ1,S1),將密鑰/證書K1反饋給用戶。
如圖3所示,用戶運(yùn)行被保護(hù)軟件時(shí),按如下步驟進(jìn)行證書認(rèn)證,即完成授權(quán)
c、證書未曾輸入過,則輸入證書K2,用戶輸入密鑰/證書K2后,程序A通過加密運(yùn)算的逆運(yùn)算G-1,將K2分解,得到特征值Φ2和參數(shù)S2;d、比較S2和S1的值,當(dāng)S2=S1時(shí),授權(quán)步驟繼續(xù)進(jìn)行,當(dāng)S2≠S1時(shí),確認(rèn)用戶為非法用戶,證書認(rèn)證步驟中斷;e、程序A將計(jì)算總特征值Φ的函數(shù)F的逆運(yùn)算F-1作用于Φ2,得到機(jī)器各部件的特征碼X1、X2……、Xn;f、程序A再次自動(dòng)讀取運(yùn)行機(jī)器各部件的特征碼X1、X2……、Xn,并比較X值,當(dāng)X1=X1,X2=X2,……Xn=Xn時(shí),確認(rèn)用戶為合法用戶,授權(quán)/認(rèn)證完成。
在步驟d中,也可以取出Φ1,然后對(duì)Φ2、Φ1值進(jìn)行比較,當(dāng)Φ2=Φ1,S2=S1同時(shí)成立時(shí),授權(quán)步驟繼續(xù),否則步驟中斷。
在本發(fā)明的具體實(shí)施例中,機(jī)器的特征碼可以取機(jī)器的序列號(hào),特征碼的數(shù)量n可以取多個(gè),也可以取1個(gè),可以在硬盤、CPU、主機(jī)等部件中任意選取。程序指定的參數(shù)S1可以是一串字符、一串?dāng)?shù)字或一段程序,可以是明碼,也可以是加密后的非明碼。
在本發(fā)明的另一實(shí)施例中,軟件認(rèn)證解密步驟可以稍稍做些變化,具體步驟如下c、保護(hù)軟件首次調(diào)用時(shí),用戶輸入密鑰/證書K2后,程序A通過加密運(yùn)算G的逆運(yùn)算G-1,將K2分解,得到特征值Φ2和參數(shù)S2;d、比較S1和S2的值,當(dāng)S2=S1時(shí),授權(quán)步驟繼續(xù)進(jìn)行,當(dāng)S2≠S1時(shí),確認(rèn)用戶為非法用戶,步驟中斷;e、程序A再次自動(dòng)讀取機(jī)器特征X1/、X2/……、Xn/,以這些特征碼作為函數(shù)F的變量,計(jì)算出特征值Φ1/,Φ1/=F(X1/、X2/……、Xn/),并將特征值Φ1/與步驟c得到的Φ2值進(jìn)行比較;
f、當(dāng)Φ1/=Φ2時(shí),確認(rèn)用戶為合法用戶,授權(quán)完成;當(dāng)Φ1/≠Φ2時(shí),確認(rèn)用戶為非法用戶,程序中斷。
本發(fā)明利用基于機(jī)器特征的加密和解密技術(shù),不僅從根本上解決了軟件被盜用的問題,而且不怕非法復(fù)制,方便,成本低。
在本發(fā)明的構(gòu)思下還可以有多種變化,這些變化都應(yīng)落在本發(fā)明的權(quán)利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種軟件保護(hù)方法,其特征在于利用機(jī)器特征的確認(rèn)來實(shí)現(xiàn)軟件的保護(hù),所述的方法包括下列步驟a、軟件加密公司在被保護(hù)的軟件上安裝讀取、合成、分解及校驗(yàn)機(jī)器特征碼的程序A,并設(shè)置指定參數(shù)S1;b、用戶安裝被保護(hù)軟件時(shí),程序A自動(dòng)讀取n個(gè)機(jī)器特征碼X1、X2……、Xn,F(xiàn)是機(jī)器總特征碼生成函數(shù),以機(jī)器特征碼X1、X2……、Xn作為函數(shù)F的變量,計(jì)算出機(jī)器總特征值Φ1,Φ1=F(X1、X2……、Xn),并將總機(jī)器特征值Φ1發(fā)送給軟件加密公司;c、軟件加密公司將得到的總特征值Φ1與指定的參數(shù)S1,運(yùn)用算法G,進(jìn)行加密運(yùn)算,得到與Φ1及參數(shù)S1唯一匹配的密鑰/證書K1,K1=G(Φ1、S1),將密鑰/證書K1反饋給用戶;d、被保護(hù)的軟件運(yùn)行時(shí),用戶輸入密鑰/證書K2后,程序A通過加密運(yùn)算的逆運(yùn)算G-1,將K2分解,得到特征值Φ2和參數(shù)S2,比較S2、S1,當(dāng)S2=S1時(shí),授權(quán)步驟繼續(xù)進(jìn)行,否則,當(dāng)S2≠S1時(shí),步驟中斷;e、程序A依函數(shù)F的逆運(yùn)算F-1(Φ2),得到機(jī)器特征碼X1、X2……、Xn;f、程序A再次自動(dòng)讀取運(yùn)行被保護(hù)軟件的機(jī)器之各部件的特征值X1、X2……、Xn,并將這些特征值與由F-1分解出來的特征值X1、X2……、Xn逐一比較,當(dāng)X1=X1,X2=X2,……且Xn=Xn時(shí),確認(rèn)用戶為合法用戶。
2.如權(quán)利要求1所述的軟件保護(hù)方法,其特征在于指定參數(shù)S1設(shè)為空值,僅根據(jù)機(jī)器的特征碼加密制密鑰/證書。
3.如權(quán)利要求1所述的軟件保護(hù)方法,其特征在于所述的機(jī)器特征值n取一個(gè)。
4.如權(quán)利要求1或3所述的軟件保護(hù)方法,其特征在于所述的機(jī)器特征碼是機(jī)器的序列號(hào)。
5.如權(quán)利要求1所述的軟件保護(hù)方法,其特征在于步驟d中除比較參數(shù)S1、S2外,還比較Φ2與Φ1,當(dāng)Φ2=Φ1,S1=S2同時(shí)成立時(shí),授權(quán)步驟繼續(xù),否則步驟中斷。
6.如權(quán)利要求1所述的軟件保護(hù)方法,其特征在于所述的指定參數(shù)S1被加密處理。
全文摘要
本發(fā)明公開了一種基于機(jī)器特征的軟件保護(hù)方法,該方法利用機(jī)器特征碼唯一的性質(zhì),求出機(jī)器的總特征值Φ,基于此總特征值Φ和依被保護(hù)軟件指定的參數(shù)S,運(yùn)用加密算法G,進(jìn)行加密運(yùn)算,生成與總特征值Φ和參數(shù)S唯一對(duì)應(yīng)的密鑰K,該密鑰K就是被保護(hù)軟件的合法使用的證書。本發(fā)明提出的保護(hù)方法保護(hù)效果好,被保護(hù)的軟件可以隨意復(fù)制,獲取授權(quán)后便可使用。
文檔編號(hào)G06F12/14GK1514375SQ0313992
公開日2004年7月21日 申請(qǐng)日期2003年7月21日 優(yōu)先權(quán)日2003年7月21日
發(fā)明者蔣正華, 尹立東 申請(qǐng)人:蔣正華, 尹立東