基于機(jī)器碼加密的軟件版權(quán)保護(hù)方案

隨著互聯(lián)網(wǎng)應(yīng)用需求的不斷增加,軟件行業(yè)得到了迅猛發(fā)展,保護(hù)軟件知識(shí)產(chǎn)權(quán)。除了靠立法和提高用戶軟件版權(quán)意識(shí)外,利用技術(shù)限制軟件的非法使用也是一個(gè)重要的手段。常用的技術(shù)主要有不依賴硬件的軟加密方法和依賴硬件的硬加密方法,考慮對(duì)軟件版權(quán)的有效保護(hù)以及用戶體驗(yàn),本文采用了硬加密技術(shù),提出并實(shí)現(xiàn)了一種基于本機(jī)MAC地址和硬盤序列號(hào)的“一機(jī)一碼”軟件版權(quán)保護(hù)方案,能有效地保護(hù)軟件知識(shí)產(chǎn)權(quán)。

一、基本原理

計(jì)算機(jī)的硬件通常具有惟一的標(biāo)識(shí),比如MAC地址。硬盤序列號(hào),CPU序列號(hào)和主板ID等,這些信息被統(tǒng)稱為機(jī)器碼,軟件用戶一般無法輕易改變它們。軟件開發(fā)者利用系統(tǒng)提供的接口可以編程獲取機(jī)器碼,這些機(jī)器碼通過簡(jiǎn)單的組合變換可以作為用戶的本機(jī)注冊(cè)信息閉。建立機(jī)器碼與計(jì)算機(jī)的一一對(duì)應(yīng)關(guān)系,并不需要所有的硬件信息,綜合考慮效率和安全性,本方案僅選擇MAC地址和硬盤序列號(hào)這兩種硬件信息作為原始注冊(cè)信息。

一臺(tái)計(jì)算機(jī)有時(shí)會(huì)有多個(gè)MAC地址,最基本的是以太網(wǎng)卡MAC地址,筆記本通常還會(huì)有無線網(wǎng)卡MAC地址,安裝了虛擬機(jī)的主機(jī)會(huì)有虛擬網(wǎng)卡MAC地址,通過3G上網(wǎng)卡連網(wǎng)的主機(jī)還會(huì)有一個(gè)3G網(wǎng)
卡MAC地址,本方案僅獲取所有主機(jī)都有的以太網(wǎng)卡MAC地址。計(jì)算機(jī)通常只有一塊硬盤,對(duì)于有多塊硬盤的主機(jī),本方案僅獲取當(dāng)前系統(tǒng)所在硬盤的序列號(hào)。MAC地址通過改變網(wǎng)卡的高級(jí)屬性中的值就能修改,而硬盤的序列號(hào)(非邏輯序列號(hào))一般是無法輕易修改的,所以,以太網(wǎng)卡MAC地址和硬盤序列號(hào)通??梢晕┮坏貥?biāo)識(shí)一臺(tái)計(jì)算機(jī)。

單表代換加密是古典密碼學(xué)中一種經(jīng)典的加密算法,實(shí)現(xiàn)簡(jiǎn)單便捷,對(duì)于統(tǒng)計(jì)特性不明顯的短明文,有較好的加密效果,以太網(wǎng)卡MAC地址和硬盤序列。號(hào)字符串經(jīng)過單表代換加密。再轉(zhuǎn)換成二進(jìn)制流,這樣在不過多增加方案復(fù)雜性的同時(shí)又可以很好地隱藏原始的信息。

MD5是一種Hash算法,不同的輸入會(huì)產(chǎn)生完全不同的散列值,這樣,基于計(jì)算機(jī)獨(dú)有的以太網(wǎng)卡MAC地址和硬盤序列號(hào)生成的注冊(cè)信息,經(jīng)過MD5處理,能產(chǎn)生與該主機(jī)惟一匹配的注冊(cè)碼。

二、方案設(shè)計(jì)

用戶安裝軟件后,利用軟件提供的注冊(cè)機(jī)生成基于本機(jī)MAC地址和硬盤序列號(hào)的注冊(cè)信息文件Register.dat,將其通過郵件。拷貝或者其他渠道提交給軟件開發(fā)者,軟件開發(fā)者利用自身獨(dú)有的注冊(cè)碼生成器生成與注冊(cè)信息對(duì)應(yīng)的注冊(cè)碼文件Register.lic。并將其反饋給用戶,用戶將Register.liC保存在軟件安裝目錄,軟件每次運(yùn)行時(shí)對(duì)注冊(cè)碼進(jìn)行檢測(cè),若有誤,軟件將被限制使用。

方案的流程如圖1所示。

基于機(jī)器碼加密的軟件版權(quán)保護(hù)方案

注冊(cè)機(jī)工作流程如圖2所示。

基于機(jī)器碼加密的軟件版權(quán)保護(hù)方案

注冊(cè)碼生成器工作流程如圖3所示。

基于機(jī)器碼加密的軟件版權(quán)保護(hù)方案

注冊(cè)碼檢測(cè)流程如圖4所示。

基于機(jī)器碼加密的軟件版權(quán)保護(hù)方案

方案對(duì)軟件版權(quán)的保護(hù)主要體現(xiàn)在以下幾個(gè)方面:

(1)用戶對(duì)于注冊(cè)機(jī)生成注冊(cè)文件RegIster.dat的原理是未知的。

(2)Regfster .dat中的信息是單表代換加密后的二進(jìn)制串。原始的注冊(cè)信息難以分析。

(3)僅并發(fā)者擁有注冊(cè)碼生成器j‘而且用戶對(duì)于注冊(cè)碼生成器生成注冊(cè)碼文件Register.liC的原理也是未知的。

(4)基于MAC地址和硬盤序列號(hào)生成的注冊(cè)碼對(duì)應(yīng)唯一的主機(jī),這樣就保證了?!耙粰C(jī)一碼”,使得盜用注冊(cè)碼無效。

三、具體實(shí)現(xiàn)

本文在Windows XP系統(tǒng)下利用VC++6.0對(duì)以上方案進(jìn)行了具體實(shí)現(xiàn)。獲取以太網(wǎng)MAC地址需要利用系統(tǒng)提供的“iphlpapi.lib"庫。通過“GetAd aptersinfo”。函數(shù)獲取網(wǎng)卡信息,讀取到的第一個(gè)類型為"MIB_IF_TYPE一ETHERNET”網(wǎng)卡。即為本機(jī)以太網(wǎng)卡MAC地址。獲取硬盤序列號(hào)則需要利用系統(tǒng)提供的CreateFile函數(shù)打開設(shè)備,然后利用DeviceIoC ontrol函數(shù)與驅(qū)動(dòng)程序交互來讀取硬盤信息,再取出序列號(hào)字段。開發(fā)出的注冊(cè)機(jī)和注冊(cè)碼生成器兩個(gè)軟件如圖5所示。

本文設(shè)計(jì)并實(shí)現(xiàn)了一種基手本機(jī)MAC地址和硬盤序列號(hào)“一機(jī)一碼”軟件版權(quán)保護(hù)方案,實(shí)踐證明:該方案簡(jiǎn)潔實(shí)用,可廣泛應(yīng)用于軟件版權(quán)保護(hù),根據(jù)軟件版權(quán)保護(hù)級(jí)別的要求,可對(duì)該方案進(jìn)行擴(kuò)展按需加入對(duì)稱加密技術(shù),非對(duì)稱加密技術(shù)或者數(shù)字簽名技術(shù)進(jìn)而增強(qiáng)安全性。

小知識(shí)之MAC位址

MAC(Media Access Control)地址,或稱為 MAC位址、硬件位址,用來定義網(wǎng)絡(luò)設(shè)備的位置。在OSI模型中,第三層網(wǎng)絡(luò)層負(fù)責(zé) IP地址,第二層數(shù)據(jù)鏈路層則負(fù)責(zé) MAC位址。因此一個(gè)主機(jī)會(huì)有一個(gè)IP地址,而每個(gè)網(wǎng)絡(luò)位置會(huì)有一個(gè)專屬于它的MAC地址。