本發(fā)明涉及軟件安全認證研究領域,尤其涉及一種基于帶有私密存儲區(qū)加密閃盤的軟件授權許可方法。
背景技術:軟件版權保護是知識產權保護體系中的重要組成部分。目前,國際上對商用行業(yè)軟件版權進行保護的通用慣例是依據微軟公司在2004年的做法,提供最終用戶許可協(xié)議EULA(End-User-LicenseAgreement)并要求用戶遵守。但是,EULA只從文本上約定了最終用戶的權利和義務,并不能從技術上提供有效的版權保護機制和控制手段,無法控制用戶的任意安裝與使用?;谲浖姹颈Wo和特定軟件產品歸屬特定用戶使用的需求考慮,需要在軟件產品發(fā)布時通過軟硬件技術保護措施預留有關身份認證和鑒權的功能接口,在使用時動態(tài)提取待授權目標機的硬件特征碼HFC(HardwareFeatureCode)并將其作為軟件合法用戶身份的全局唯一標識碼,一旦全局唯一標識碼被動態(tài)創(chuàng)建,其他任何非授權目標機將由于硬件特征碼的不匹配而無法通過許可驗證。現有的同類認證方法主要存在以下幾方面弊端:用戶需要提取并回傳硬件特征碼,待生成授權許可全局唯一標識碼后才能使用,過程繁瑣,使用不便;一個授權許可設備只能與單臺目標機綁定,且在使用過程中必須全程保持電氣連接,在多臺目標機需要使用時授權許可設備數量過多,不僅匹配管理難度大,當一臺目標機同時使用多種授權軟件時,各授權許可設備之間易沖突并導致應用軟件工作異常;用純軟件方式進行授權認證則極易被破解。
技術實現要素:本發(fā)明所要解決的技術問題就是提供一種基于帶有私密存儲區(qū)加密閃盤的軟件授權許可方法。本發(fā)明采用如下技術方案:一種基于加密閃盤和大數據運算技術的授權使用方法,其改進之處在于,所述方法包括:步驟A:制作加密閃盤,預留私密區(qū)并將應用軟件復制到加密閃盤;步驟B:用戶通過加密閃盤完成應用軟件到目標機的安裝和運行;步驟C:應用軟件自動提取目標機硬件特征碼并完成授權許可全局唯一標識碼的計算與生成;步驟D:應用軟件將計算得到的授權許可全局唯一標識碼回寫到加密閃盤私密區(qū)并對應用軟件進行授權許可認定;步驟E:用戶可斷開加密閃盤與目標機的電氣連接,應用軟件能夠正常使用,重復步驟B—E,完成用戶全部待授權目標機的軟件安裝與授權,已建立全部綁定關聯(lián)后的加密閃盤將不能為超出許可范圍的其他計算機進行授權,已授權計算機在軟件卸載、重新安裝后無需重新認證即可正常運行,只有在重裝系統(tǒng)后需要按步驟B—E對其重新進行授權。進一步的,所述步驟A具體包括:步驟A1:將加密閃盤插入開發(fā)機;步驟A2:對加密閃盤在“普通盤”模式下進行“低級掃描”;步驟A3:設置“分區(qū)0寫保護”和“拷貝到0分區(qū)”的分區(qū)設置參數,并選擇待發(fā)布應用軟件安裝包所在文件夾的存放路徑;步驟A4:在“高級信息設置”對話框中設置私密區(qū)空間大?。徊襟EA5:開始加密閃盤制作,直至制作完畢。進一步的,所述步驟B具體包括:步驟B1:將加密閃盤插到待授權目標機的USB接口;步驟B2:在目標機進入加密閃盤,并打開存放待授權應用軟件安裝包的文件夾;步驟B3:運行待授權應用軟件安裝包,根據提示完成軟件到目標機的安裝。進一步的,所述步驟C具體包括:步驟C1:在目標機運行已安裝的待授權應用軟件;步驟C2:待授權應用軟件后臺自動提取目標機硬盤序列號、CPU信息、BIOS信息等硬件特征,綜合形成硬件特征碼;步驟C3:計算生成授權許可全局唯一標識碼。進一步的,所述步驟C3具體包括:步驟C31:取兩個相近的大素數p、q,計算n=p×q,z=(p-r)×(q-r);步驟C32:采用大數運算庫隨機生成任取一個與z互素的整數e并計算滿足e×d=rmodz的整數d,(n,e)和(n,d)分別為“公鑰”和“私鑰”存在,由(n,e)加密的數據只能用(n,d)解密,此處大數運算庫的應用可保證模數n不被因式分解;步驟C33:將硬件特征碼作為明文m,分成字符塊s加密,每個塊s小于n;步驟C34:通過c=m^emodn計算出密文c,其中,“^”表示乘冪,“mod”表示求余,“n”為模數,一般取值在512位以上,密文c即為授權許可全局唯一標識碼。進一步的,所述步驟D具體包括:步驟D1:通過應用程序中的授權認證模塊完成授權許可全局唯一標識碼向加密閃盤私密區(qū)內指定文件的內容寫入;步驟D2:通過應用程序中的授權認證模塊完成對應用軟件的授權許可認定。進一步的,所述步驟E具體包括:步驟E1:從已授權目標機上取下加密閃盤;步驟E2:重新啟動已授權通過的應用程序,能夠正常運行;步驟E3:已綁定了全部許可目標機的加密閃盤無法對許可范圍外的計算機實施軟件許可授權,安裝的應用軟件不能正常啟動和運行。進一步的,所述步驟E2具體包括:步驟E21:重新啟動已授權通過的應用程序,通過其內置授權認證模塊從計算機提取目標機硬盤序列號、CPU信息、BIOS信息等硬件特征,綜合形成硬件特征碼;步驟E22:內置授權認證模塊從本機注冊表下讀取“SDCode”鍵值并將其作為密文c;步驟E23:根據Euler定理:m=c^dmodn=(m^emodn)^dmodn=m,可知通過m=c^dmodn可從密文c解密得到明文m,即預期硬件特征碼;步驟E24:將預期硬件特征碼與在步驟E21中獲取得到的實際硬件特征碼比對,符合則驗證通過,程序正常運行,否則程序退出執(zhí)行。進一步的,所述步驟E3具體包括:步驟E31:從加密閃盤完成應用軟件到許可范圍外計算機的安裝;步驟E32:在許可范圍外計算機上啟動已安裝的應用程序,通過其內置授權認證模塊從計算機提取目標機硬盤序列號、CPU信息、BIOS信息等硬件特征,綜合形成硬件特征碼;步驟E33:內置授權認證模塊從加密閃盤私密區(qū)讀取存儲的全部授權許可全局唯一標識碼,并逐一將其作為密文c,鍵值不存在時取默認鍵值“0”,參與后續(xù)處理;步驟E34:通過m=c^dmodn從密文c解密得到明文m,即預期硬件特征碼;步驟E35:將預期硬件特征碼與在步驟E32中獲取得到的實際硬件特征碼比對,由于是許可范圍外計算機,其密文不可能含有與明文匹配的信息,因此驗證不會通過,程序退出執(zhí)行。本發(fā)明的有益效果在于:本發(fā)明所公開的授權使用方法,利用加密閃盤私密區(qū)回寫授權許可全局唯一標識碼和基于大數運算的硬件特征碼加密、驗證方法,解決了現有技術中純軟件授權方式不可靠、軟硬件結合授權或純硬件授權使用方式繁瑣等問題,能夠一對多對發(fā)布軟件進行可靠、有效授權,在無需額外繁瑣操作的前提下盡可能提高了軟件版權的保護力度。本發(fā)明所公開的授權使用方法,克服了現有技術中純軟件方式易破解、授權許可全局唯一標識碼產生、獲取以及鑒權許可等各個環(huán)節(jié)操作使用不便捷的缺點,提供一種基于帶有私密存儲區(qū)加密閃盤的軟件授權許可方法。該方法能夠在用戶使用時自動提取硬件特征碼并在用戶端動態(tài)計算生成授權許可全局唯一標識碼,該碼在產生后能自動回寫至加密閃盤特定的私密存儲區(qū)和目標機系統(tǒng)注冊表建立目標機與認證設備的綁定關系,并同時為目標機應用軟件完成授權認定。后續(xù)使用時,一臺認證設備能夠為多臺,具體數量在發(fā)布時設定,目標機授權并與其建立一對多的綁定關系。一旦授權成功,在后續(xù)使用時目標機將無需與認證設備保持電氣連接,全方位方便用戶使用。附圖說明圖1為本發(fā)明實施例1所公開的授權使用方法的流程示意圖;圖2是本發(fā)明實施例1所公開的授權使用方法的詳細處理流程圖。具體實施方式為了解決現有技術中軟件授權不可靠、操作繁瑣等問題,本發(fā)明提供了一種基于加密閃盤私密區(qū)和大數運算的軟件授權許可方法,本發(fā)明實施例的技術方案通過對目標機硬件特征信息的提取、能可靠授權的全局唯一標識碼的計算以及授權標識信息的存儲設計,最終能確保授權簡便、鑒權可靠。以下結合附圖以及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。根據本發(fā)明的實施例,提供了一種基于加密閃盤和大數據運算的軟件授權許可方法,圖1是本發(fā)明實施例的流程圖,如圖1所示,根據本發(fā)明實施例的軟件授權許可方法包括如下處理:步驟101:制作加密閃盤,預留私密區(qū)并將應用軟件復制到加密閃盤。步驟101具體包括如下處理:步驟1:將加密閃盤插入開發(fā)機;步驟2:用Umptool制作工具對加密閃盤在“普通盤”模式下進行“低級掃描”;步驟3:設置“分區(qū)0寫保護”和“拷貝到0分區(qū)”的分區(qū)設置參數,并選擇待發(fā)布應用軟件安裝包所在文件夾的存放路徑;步驟4:在“高級信息設置”對話框中設置私密區(qū)空間大?。徊襟E5:點擊“全部開始”按鈕開始加密閃盤制作,直至制作完畢步驟102:用戶通過加密閃盤完成應用軟件到目標機的安裝和運行。步驟102具體包括如下處理:步驟1:將加密閃盤插到待授權目標機的USB接口;步驟2:在目標機通過資源管理器軟件進入加密閃盤,并打開存放待授權應用軟件安裝包的文件夾;步驟3:運行待授權應用軟件安裝包,根據提示完成軟件到目標機的安裝。步驟103:應用軟件自動提取目標機硬件特征碼并完成授權許可全局唯一標識碼的計算與生成。步驟103具體包括如下處理:步驟1:在目標機運行已安裝的待授權應用軟件;步驟2:待授權應用軟件后臺自動提取目標機硬盤序列號、CPU信息、BIOS信息等硬件特征,綜合形成硬件特征碼;步驟3:計算生成授權許可全局唯一標識碼。步驟104:應用軟件將計算得到的授權許可全局唯一標識碼回寫到加密閃盤私密區(qū)并對應用軟件進行授權許可認定。步驟104具體包括如下處理:步驟1:通過應用程序中的授權認證模塊完成授權許可全局唯一標識碼向加密閃盤私密區(qū)內指定文件的內容寫入;步驟2:通過應用程序中的授權認證模塊完成對應用軟件的授權許可認定。步驟105:用戶可斷開加密閃盤與目標機的電氣連接,應用軟件能夠正常使用。步驟105具體包括如下處理:步驟1:從已授權目標機上取下加密閃盤;步驟2:重新啟動已授權通過的應用程序,能夠正常運行;步驟3:已綁定了全部許可目標機的加密閃盤無法對許可范圍外的計算機實施軟件許可授權,安裝的應用軟件不能正常啟動和運行。以下結合附圖,對本發(fā)明實施例的上述技術方案進行詳細說明。圖2是本發(fā)明實施例詳細處理流程圖,如圖2所示,包括以下步驟:步驟S201,制作加密閃盤,預留1MB私密區(qū)并將應用軟件CryptSetup.exe復制到加密閃盤,具體實現過程為:(11):將加密閃盤插入開發(fā)機;(12):運行Umptool.exe制作工具,顯示廠商信息為“Generic”、主控型號為“2093P”、類型為“自動播放盤”,點擊“量產設置”,開始量產設置工作,對加密閃盤在“普通盤”模式下進行“低級掃描”;(13):在“量產設置-2093P”對話框中勾選“分區(qū)0寫保護”和“拷貝到0分區(qū)”的分區(qū)設置參數,并選擇CryptSetup.exe安裝包所在文件夾的存放路徑“D:\CryptSoft\”;(14):點擊“高級信息設置”按鈕,并在彈出的“高級信息設置”對話框中設置私密區(qū)空間大小為1MB;(15):點擊“全部開始”按鈕開始加密閃盤制作,直至制作完畢。步驟S202,用戶在加密閃盤運行CryptSetup.exe根據提示將CryptSoft.exe安裝到目標機并運行,具體實現過程為:(21):將加密閃盤插到待授權目標機的USB接口;(22):在目標機通過資源管理器軟件進入加密閃盤,打開“I:\CryptSoft\”文件夾;(23):運行CryptSetup.exe,根據提示完成軟件到目標機的安裝。步驟S203,CryptSoft.exe自動提取目標機硬件特征碼并完成授權許可全局唯一標識碼SDCode的計算與生成,具體實現過程為:(31):在目標機運行CyrptSoft.exe;(32):CryptSoft.exe在后臺通過GetVolumeInformation("C:\\",NULL,NULL,&dwIDESerial,NULL,NULL,NULL,NULL)自動提取目標機硬件特征信息到DWORD類型變量dwIDESerial(實例取值為:83588328);通過ltoa(dwIDESerial+SOFTID,Seed,10)與#defineSOFTID0x6EA40DFF1180預定義的軟件特征序列號SOFTID融合并形成硬件特征碼“318408296”并存儲于Seed變量內。(33):通過MIRACL大數運算庫,對Seed變量進行加密計算。首先通過miracl*mip=mirsys(100,0)申請緩沖區(qū)并進行初始化,通過mip->IOBASE=16指定為十六進制模式,由bigc=mirvar(0)、bigm=mirvar(0)、bign=mirvar(0)和bige=mirvar(0)來分別定義密文、明文、模數和公鑰,通過memcpy(N,Seed,Seed.GetLength())把硬件特征碼引入到N,并通過bytes_to_big(Len,N,m)將其轉換為十六進制,通過cinstr(e,"56157D29A89D77BF2F669A8F0B123CC9")完成公鑰e的初始化,用cinstr(n,"963251DC5A9C90D9F203A03C363BA411")來初始化模數,在powmod(m,e,n,c)完成c=m^emodn的計算后,通過cotstr(m,SDCode)得到以十六進制表示的密文,即授權許可全局唯一標識碼。當Seed取“318408296”輸入時,密文SDCode的取值為“179CD85907FF413D516B3A6223BF9684”。步驟S204,CryptSoft.exe將計算得到的授權許可全局唯一標識碼SDCode回寫到加密閃盤私密區(qū)第100扇區(qū),并對應用軟件進行授權許可認定,具體實現過程為:(41):通過hDev=CreateFile(devName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL)獲得加密閃盤私密區(qū)的設備句柄,devName變量存儲了加密閃盤的盤符信息;通過SetFilePointer(hDev,512*100,0,FILE_BEGIN);將文件指針移動到加密閃盤的第100個扇區(qū)(扇區(qū)大小512字節(jié));通過WriteFile(hDev,lpSectBuff,512*1,NULL,NULL)將lpSectBuff緩沖區(qū)內存放的授權許可全局唯一標識碼“179CD85907FF413D516B3A6223BF9684”寫入加密閃盤的第100個扇區(qū)。(42):通過LPCTSTRpath="Software\\CRIRP\\CryptSoft"定義待處理的注冊表路徑,通過RegOpenKeyEx(HKEY_LOCAL_MACHINE,path,0,KEY_WRITE,&hKEY)和RegSetValueEx(hKEY,"SDCode",NULL,REG_SZ,(constunsignedchar*)lpSectBuff,sizeof(lpSectBuff))將lpSectBuff緩沖區(qū)內存放的授權許可全局唯一標識碼“179C-D859-07FF-413D-516B-3A62-23BF-9684”寫入注冊表的“HKEY_LOCAL_MACHINE\Software\CRIRP\CryptSoft”的“SDCode”鍵值內完成對應用軟件的授權許可認定。步驟S205,用戶斷開加密閃盤與目標機的電氣連接,CryptSoft.exe能夠正常使用,具體實現過程為:(51):從已授權目標機上取下加密閃盤;(52):重新啟動已授權通過的應用程序CryptSoft.exe,該軟件能夠正常運行;(53):已綁定了全部許可目標機的加密閃盤無法對許可范圍外的計算機實施軟件許可授權,即使安裝了應用程序CryptSoft.exe也因授權許可全局唯一標識碼與當前計算機硬件信息的不匹配而無法通過驗證,進而應用程序CryptSoft.exe不能正常啟動和運行。綜上所述,本發(fā)明實施例提供了一種基于加密閃盤和大數據運算的軟件授權許可方法,通過密文認證信息在注冊表的常態(tài)存儲和在加密閃盤私密區(qū)的備份存儲機制能夠便捷地為許可目標機實施授權許可認證,同時又通過安全的大數加密機制確保密文的逆向不可破解,為軟件的正常運行和防破解提供了技術保障。