本發(fā)明涉及一種采用混合加密算法實(shí)現(xiàn)的對軟件發(fā)放控制的安全證書模塊,對軟件發(fā)放的時(shí)效,功能點(diǎn)進(jìn)行控制,適用于商用付費(fèi)軟件的控制和公司科研技術(shù)的保密。
背景技術(shù):
目前,pc上的軟件架構(gòu)主要有b/s(browserserver),c/s(clientserver)和不需要服務(wù)機(jī)的本地軟件。
商用的bs架構(gòu)軟件一般是部署在客戶的服務(wù)器上實(shí)現(xiàn)網(wǎng)頁訪問的大型數(shù)據(jù)系統(tǒng),這個(gè)系統(tǒng)可以運(yùn)行在局域網(wǎng)內(nèi)或者公網(wǎng)環(huán)境中,熟悉行業(yè)的人很容易拿到服務(wù)器web服務(wù)器中的部署包進(jìn)行部署和使用。
商用的cs架構(gòu)軟件和本地軟件一般是以安裝包的方式給客戶,通過安裝包進(jìn)行自動(dòng)安裝和使用
對于公司的商用軟件或者含有自主研發(fā)技術(shù)的軟件為了保證對外能回收利潤或者不被肆意的盜用和模仿技術(shù),因此,十分有必要采用安全證書模塊對軟件的發(fā)放進(jìn)行控制。
目前,市場上大部分的商用軟件都是采用注冊碼驗(yàn)證的機(jī)制,很容易出現(xiàn)多機(jī)使用一個(gè)注冊碼,或者更改時(shí)間就能繼續(xù)使用這些問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的問題是提供一種采用混合加密算法實(shí)現(xiàn)的對軟件發(fā)放控制的安全證書模塊,對bs、cs、本地軟件進(jìn)行統(tǒng)一的管理,同時(shí)具有硬件加密和軟加密的功能,能兼容大部分開發(fā)語言,并且能夠跨pc平臺(tái)?;谶@些特質(zhì),采用c++作為開發(fā)語言,并且生成注冊系統(tǒng)和軟件分別使用的安全模塊。
本發(fā)明的技術(shù)方案是:
一種采用混合加密算法實(shí)現(xiàn)對軟件發(fā)放控制的方法,它采用硬件狗和后臺(tái)控制器,該方法包括以下步驟:
s1、后臺(tái)控制器建立數(shù)據(jù)庫,記錄用戶信息,購買信息以及證書文件生成記錄,用戶信息包括計(jì)算機(jī)唯一識別信息(包括:mac地址、硬盤物理序列號和cpuid中的一個(gè)或者多個(gè)的組合)和為其分配的硬件狗,購買信息包括軟件功能模塊和有效期,證書文件生成記錄包括用戶信息和購買信息;
s2、用戶啟動(dòng)軟件,獲取計(jì)算機(jī)的唯一識別信息,將此信息保存于證書文件中,并且發(fā)送證書文件給后臺(tái)控制器(用戶與后臺(tái)控制器進(jìn)行通信,傳輸證書文件,或者打印證書文件,通過郵件或者傳真的方式發(fā)送給后臺(tái)控制器);
s3、后臺(tái)控制器為該用戶分配硬件狗,提取所購軟件功能模塊的解碼信息,將用戶購買的軟件功能模塊的解碼信息、有效期以及硬件狗信息加載在證書文件中,回傳至軟件所安裝的計(jì)算機(jī);(用戶也可以預(yù)先購買軟件,選擇需要的功能模塊以及有效期,存儲(chǔ)在數(shù)據(jù)庫中,在用戶啟用軟件時(shí),由后臺(tái)控制器調(diào)取對應(yīng)的購買信息,進(jìn)行配置);后臺(tái)控制器將此次證書文件生成記錄進(jìn)行存儲(chǔ);
s4、用戶收取證書文件和硬件狗,將硬件狗插入計(jì)算機(jī),導(dǎo)入證書文件;將證書中的硬件狗信息與插入的硬件狗進(jìn)行匹配,如果匹配失敗,終止運(yùn)行,如果匹配成功,則獲取所購軟件功能模塊的解碼信息,與軟件中對應(yīng)的功能模塊進(jìn)行匹配,運(yùn)行所購軟件功能模塊,根據(jù)有效期,對所購軟件功能模塊的運(yùn)行時(shí)長進(jìn)行控制。
進(jìn)一步地,步驟s2中,對計(jì)算機(jī)的唯一識別信息進(jìn)行加密后保存于證書文件中,對應(yīng)的,后臺(tái)控制器解密證書文件中的唯一識別信息;所述的加密方法為md5加密方法。
進(jìn)一步地,步驟s3中,硬件狗中配置有時(shí)鐘模塊,相應(yīng)的步驟s4中,根據(jù)軟件使用有效期,對硬件狗中的時(shí)鐘模塊進(jìn)行相應(yīng)配置,用戶運(yùn)行所購軟件的功能模塊,根據(jù)硬件狗中的時(shí)鐘判斷使用時(shí)間是否到期。
進(jìn)一步地,當(dāng)用戶需要更換電腦運(yùn)行軟件時(shí),后臺(tái)控制器根據(jù)重新獲取的該電腦的唯一識別信息,調(diào)取生成記錄中對應(yīng)的軟件功能模塊信息以及剩余使用時(shí)間,對更換計(jì)算機(jī)后的軟件以及硬件狗進(jìn)行重新生成證書和記錄。
進(jìn)一步地,步驟s2中,軟件啟動(dòng),生成rsa2048密鑰對a,包括公鑰pka和私鑰ska,將公鑰pka和計(jì)算機(jī)的唯一識別信息保存于證書文件中,并且發(fā)送證書文件給后臺(tái)控制器;
步驟s3中,后臺(tái)控制器產(chǎn)生rsa2048秘鑰對b,包括公鑰pkb和私鑰skb,并隨機(jī)產(chǎn)生aes密鑰key,將aes密鑰key依次使用私鑰skb、公鑰pka進(jìn)行加密,使用加密后的key對該步驟生成的包含軟件功能模塊解碼信息、有效期以及硬件狗信息的證書文件進(jìn)行加密,將加密后的證書文件以及公鑰pkb發(fā)送給用戶;
步驟s4中,軟件獲取證書文件后,依次使用私鑰ska和公鑰pkb解密驗(yàn)證,獲得aes密鑰key,使用key進(jìn)行證書文件解密,得到證書的信息。
本發(fā)明的有益效果:
本發(fā)明的混合加密算法實(shí)現(xiàn)對于后臺(tái)控制器即注冊系統(tǒng)和外發(fā)軟件進(jìn)行證書控制的安全證書模塊,具有硬件加密和軟加密雙重保護(hù),安全性高,本發(fā)明可以用于所有需要進(jìn)行軟件使用控制的場合。
本發(fā)明中,通過在硬件狗中設(shè)置時(shí)鐘模塊,使得軟件的使用周期依靠發(fā)放的硬件狗來實(shí)現(xiàn),有效防止用戶電腦時(shí)鐘不準(zhǔn)確或者篡改時(shí)鐘的問題。
具體實(shí)施方式
下面結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步的說明,雖然優(yōu)選了實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本發(fā)明而不應(yīng)被這里闡述的實(shí)施方式所限制。
一種采用混合加密算法實(shí)現(xiàn)對軟件發(fā)放控制的方法,它采用硬件狗和后臺(tái)控制器,該方法包括以下步驟:
s1、后臺(tái)控制器建立數(shù)據(jù)庫,記錄用戶信息,購買信息以及證書文件生成記錄,用戶信息包括計(jì)算機(jī)唯一識別信息(包括:mac地址、硬盤物理序列號和cpuid中的一個(gè)或者多個(gè)的組合)和為其分配的硬件狗,購買信息包括軟件功能模塊和有效期,證書文件生成記錄包括用戶信息和購買信息;
s2、用戶啟動(dòng)軟件,獲取計(jì)算機(jī)的唯一識別信息,將此信息md5加密后保存于證書文件中,并且發(fā)送證書文件給后臺(tái)控制器(用戶與后臺(tái)控制器進(jìn)行通信,傳輸證書文件,或者打印證書文件,通過郵件或者傳真的方式發(fā)送給后臺(tái)控制器);
s3、后臺(tái)控制器為該用戶分配硬件狗,提取所購軟件功能模塊的解碼信息,將用戶購買的軟件功能模塊的解碼信息、有效期以及硬件狗信息加載在證書文件中,回傳至軟件所安裝的計(jì)算機(jī);(用戶也可以預(yù)先購買軟件,選擇需要的功能模塊以及有效期,存儲(chǔ)在數(shù)據(jù)庫中,在用戶啟用軟件時(shí),由后臺(tái)控制器調(diào)取對應(yīng)的購買信息,進(jìn)行配置);后臺(tái)控制器將此次證書文件生成記錄進(jìn)行存儲(chǔ);
s4、用戶收取證書文件和硬件狗,將硬件狗插入計(jì)算機(jī),導(dǎo)入證書文件;將證書中的硬件狗信息與插入的硬件狗進(jìn)行匹配,如果匹配失敗,終止運(yùn)行,如果匹配成功,則獲取所購軟件功能模塊的解碼信息,與軟件中對應(yīng)的功能模塊進(jìn)行匹配,運(yùn)行所購軟件功能模塊,根據(jù)有效期,對所購軟件功能模塊的運(yùn)行時(shí)長進(jìn)行控制。
進(jìn)一步地,步驟s3中,硬件狗中配置有時(shí)鐘模塊,相應(yīng)的步驟s4中,根據(jù)軟件使用有效期,對硬件狗中的時(shí)鐘模塊進(jìn)行相應(yīng)配置,用戶運(yùn)行所購軟件的功能模塊,根據(jù)硬件狗中的時(shí)鐘判斷使用時(shí)間是否到期。
進(jìn)一步地,當(dāng)用戶需要更換電腦運(yùn)行軟件時(shí),后臺(tái)控制器根據(jù)重新獲取的該電腦的唯一識別信息,調(diào)取生成記錄中對應(yīng)的軟件功能模塊信息以及剩余使用時(shí)間,對更換計(jì)算機(jī)后的軟件以及硬件狗進(jìn)行重新生成證書和記錄。
進(jìn)一步地,步驟s2中,軟件啟動(dòng),生成rsa2048密鑰對a,包括公鑰pka和私鑰ska,將公鑰pka和計(jì)算機(jī)的唯一識別信息保存于證書文件中,并且發(fā)送證書文件給后臺(tái)控制器;
步驟s3中,后臺(tái)控制器產(chǎn)生rsa2048秘鑰對b,包括公鑰pkb和私鑰skb,并隨機(jī)產(chǎn)生aes密鑰key,將aes密鑰key依次使用私鑰skb、公鑰pka進(jìn)行加密,使用加密后的key對該步驟生成的包含軟件功能模塊解碼信息、有效期以及硬件狗信息的證書文件進(jìn)行加密,將加密后的證書文件以及公鑰pkb發(fā)送給用戶;
步驟s4中,軟件獲取證書文件后,依次使用私鑰ska和公鑰pkb解密驗(yàn)證,獲得aes密鑰key,使用key進(jìn)行證書文件解密,得到證書的信息。
具體實(shí)施時(shí):
實(shí)施整套方案需要后臺(tái)控制系統(tǒng)和硬件狗的配合。
加密方面使用了開源的cryptopp的第三方加密庫;
硬件狗方面使用了safenet系列的加密狗,內(nèi)置一個(gè)虛擬時(shí)鐘,部分實(shí)現(xiàn)代碼如下:
獲取計(jì)算機(jī)的唯一信息,mac地址,硬盤物理序列號,cpuid。
windows使用wmi服務(wù)進(jìn)行獲取,linux系統(tǒng)使用匯編指令獲取,部分實(shí)現(xiàn)代碼如下:
接口:
1.獲取注冊碼-------------------注冊系統(tǒng)使用
export_apiint__stdcallstdcall_get_licensekey
(char*license_key,----返回的license結(jié)果
constchar*license_id,----系統(tǒng)碼
constchar*active_date,----到期日yyyy-mm-dd
constchar*active_quantity,----用戶數(shù)量
constchar*software_feature----軟件標(biāo)識
constchar*function_point,----功能點(diǎn)
constchar*is_usedog));----硬件狗信息
2.獲取硬件狗狀態(tài)---------------------通用接口
export_apiint__stdcallstdcall_get_dogstatus(
char*dog_status);----返回的硬件狗狀態(tài)
3.獲取唯一標(biāo)識---------------------非注冊系統(tǒng)使用
export_apiint__stdcallstdcall_get_license_id(
char*license_id,-----返回的系統(tǒng)碼
);
4.獲取驗(yàn)證結(jié)果-----------------------------非注冊系統(tǒng)使用
export_apiint__stdcallstdcall_validate(
char*expire,----返回的到期日
char*function,----返回的功能點(diǎn)
char*capacity,----返回的容量
constchar*license_key,---注冊碼
constchar*software_feature);----軟件標(biāo)識
以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。