梁靜(中國石油集團(tuán)長城鉆探工程有限公司錄井公司,遼寧 盤錦 124010)
在計(jì)算機(jī)技術(shù)迅猛發(fā)展的今天,錄井行業(yè)涌現(xiàn)出許多優(yōu)秀的軟件,這對(duì)推動(dòng)錄井信息化的發(fā)展起著積極的作用,但同時(shí)也帶來了軟件保護(hù)的問題。軟件保護(hù)是防止非法復(fù)制軟件、維護(hù)軟件開發(fā)者利益的必要手段。一旦軟件被他人竊取和使用,將帶來無法估計(jì)的安全風(fēng)險(xiǎn)和經(jīng)濟(jì)損失。目前的軟件保護(hù)方式分為基于硬件的硬加密方法和基于軟件的軟加密方法。硬加密方法主要是指加密鎖技術(shù),其硬件成本高,一旦被破解,無法補(bǔ)救。軟加密方法主要有密碼表加密法、序列號(hào)加密法、許可證加密法等。軟加密方法易于管理和維護(hù),有助于提高授權(quán)效率和改善用戶體驗(yàn)。因此,根據(jù)錄井公司實(shí)際情況,對(duì)所有錄井現(xiàn)場(chǎng)軟件應(yīng)用許可證加密法,有效地保護(hù)了公司的合法權(quán)益,進(jìn)一步促進(jìn)了錄井信息化的健康發(fā)展[1]。
采用與機(jī)器硬件信息綁定、MD5和RC4加密算法、軟件授權(quán)等技術(shù)對(duì)軟件進(jìn)行混合加密。綁定的機(jī)器硬件特征主要有CPU序列號(hào)、BIOS序列號(hào)、硬盤序列號(hào)、網(wǎng)卡MAC地址等。這種加密方式的許可證文件是在獲得了機(jī)器的硬件特征以后,由授權(quán)軟件將硬件特征加密解密后生成的。
1.1.1 MD5算法
MD5是一種單向散列函數(shù),以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。由于MD5具有某些不可逆性和唯一性的特征,無法從MD5的散列結(jié)果逆推出原文[1],從而確保了信息的完整性和一致性。
1.1.2 RC4算法
RC4是一種對(duì)稱加密算法,它使用的密鑰為單鑰(或稱為私鑰)。RC4不對(duì)明文進(jìn)行分組處理,而是以字節(jié)流的方式依次加密明文中的每一個(gè)字節(jié),解密的時(shí)候也是依次對(duì)密文中的每一個(gè)字節(jié)進(jìn)行解密,加解密使用相同的密鑰。RC4算法簡(jiǎn)單,運(yùn)行速度快,是目前密鑰長度達(dá)到128位的最安全的加密算法之一[2]。
軟件加密流程由硬件信息采集、許可證生成和解密驗(yàn)證三個(gè)部分組成。用戶在目標(biāo)計(jì)算機(jī)上運(yùn)行采碼工具,將工具采集的硬件特征數(shù)據(jù)提交給軟件管理者,軟件管理者運(yùn)行注冊(cè)工具依據(jù)特征數(shù)據(jù)生成許可證授權(quán)文件。用戶再使用軟件管理者提供的許可證授權(quán)文件完成應(yīng)用軟件認(rèn)證。軟件加密解密流程如圖1所示。
圖 1 加密解密流程圖
許可證與機(jī)器的硬件信息有關(guān),因而軟件只能在指定的計(jì)算機(jī)中運(yùn)行,否則許可證就會(huì)失效。
隨著錄井行業(yè)的發(fā)展,錄井軟件已經(jīng)成為錄井行業(yè)的核心驅(qū)動(dòng)力,在油田的生產(chǎn)、科研中發(fā)揮了非常重要的作用。在軟件的設(shè)計(jì)、開發(fā)、測(cè)試、維護(hù)過程中,錄井公司投入了大量的人力、物力和財(cái)力,因此,為了更好地維護(hù)具有自主知識(shí)產(chǎn)權(quán)的錄井軟件,需要對(duì)軟件進(jìn)行加密認(rèn)證[2]。
目前常用的軟件加密技術(shù)主要有加密鎖、時(shí)間限制、序列號(hào)保護(hù)、軟件壓縮等,其中利用計(jì)算機(jī)硬件信息如硬盤序列號(hào)、網(wǎng)卡MAC地址、CPU ID等生成一段唯一的序列號(hào),作為計(jì)算機(jī)的特征信息,然后進(jìn)行加密,是一種安全穩(wěn)定可靠的軟件加密方法。
錄井公司采碼軟件提取現(xiàn)場(chǎng)計(jì)算機(jī)的CPU ID并用 MD5算法加密后生成注冊(cè)序列號(hào)。CPU ID是一個(gè)建立在處理器內(nèi)部的、唯一的、不能被修改的編號(hào),它由96位數(shù)字組成。獲取CPU ID程序如下:
如圖2所示,點(diǎn)擊軟件“生成序列號(hào)”按鈕,在文本框中生成注冊(cè)序列號(hào);點(diǎn)擊“保存序列號(hào)”按鈕,將注冊(cè)序列號(hào)保存到文件中。錄井現(xiàn)場(chǎng)工作人員通過 Internet、Email、電話、傳真等方式將注冊(cè)序列號(hào)或注冊(cè)序列號(hào)文件發(fā)送到軟件中心。
圖2 采碼器界面
錄井公司許可證生成器的作用是對(duì)采碼軟件產(chǎn)生的注冊(cè)序列號(hào)進(jìn)行RC4算法加密,并生成許可證文件。RC4算法部分程序如下:
許可證生成器生成許可證時(shí)要導(dǎo)入加載注冊(cè)序列號(hào)文件,在導(dǎo)入之前,軟件授權(quán)人可以對(duì)要導(dǎo)入的文件進(jìn)行編輯,將多臺(tái)計(jì)算機(jī)采集加密得到的注冊(cè)序列號(hào)文件內(nèi)容按一機(jī)一行的形式復(fù)制到一個(gè)匯總信息文件中,這樣生成的許可證就可以復(fù)制供給多臺(tái)計(jì)算機(jī)使用,省去了分別為每臺(tái)機(jī)器生成許可證的麻煩。
如圖3所示,點(diǎn)擊“打開文件”按鈕,獲取注冊(cè)序列號(hào)匯總信息文件,點(diǎn)擊“生成許可證文件”按鈕,生成許可證文件。最后由軟件授權(quán)人將許可證文件發(fā)回給現(xiàn)場(chǎng),并存放在錄井應(yīng)用軟件目錄中。軟件每次運(yùn)行時(shí),都要檢查許可證文件是否存在。許可證生成是整套軟件加密方法中最重要的部分。
圖3 許可證生成器界面
錄井應(yīng)用軟件每次啟動(dòng)時(shí),從許可證文件中讀取數(shù)據(jù),然后利用RC4算法進(jìn)行解密。解密結(jié)果與軟件中硬件信息采集加密模塊的運(yùn)行結(jié)果進(jìn)行比較,如果相同判斷為合法用戶,打開軟件,否則軟件退出運(yùn)行。加密的軟件,只能在指定計(jì)算機(jī)上安裝使用。把軟件拷貝到其他計(jì)算機(jī)上運(yùn)行將提示非法用戶,如圖4所示。
圖4 非法用戶提示界面
文章給出了錄井軟件采用的加密方法,通過MD5和RC4加密算法,生成與計(jì)算機(jī)硬件信息綁定的許可證,實(shí)現(xiàn)了許可證與計(jì)算機(jī)的一對(duì)一關(guān)系,大大提高了軟件加密的可靠性和安全性,有效防止非法用戶盜用軟件。