梁靜(中國石油集團長城鉆探工程有限公司錄井公司,遼寧 盤錦 124010)
在計算機技術迅猛發展的今天,錄井行業涌現出許多優秀的軟件,這對推動錄井信息化的發展起著積極的作用,但同時也帶來了軟件保護的問題。軟件保護是防止非法復制軟件、維護軟件開發者利益的必要手段。一旦軟件被他人竊取和使用,將帶來無法估計的安全風險和經濟損失。目前的軟件保護方式分為基于硬件的硬加密方法和基于軟件的軟加密方法。硬加密方法主要是指加密鎖技術,其硬件成本高,一旦被破解,無法補救。軟加密方法主要有密碼表加密法、序列號加密法、許可證加密法等。軟加密方法易于管理和維護,有助于提高授權效率和改善用戶體驗。因此,根據錄井公司實際情況,對所有錄井現場軟件應用許可證加密法,有效地保護了公司的合法權益,進一步促進了錄井信息化的健康發展[1]。
采用與機器硬件信息綁定、MD5和RC4加密算法、軟件授權等技術對軟件進行混合加密。綁定的機器硬件特征主要有CPU序列號、BIOS序列號、硬盤序列號、網卡MAC地址等。這種加密方式的許可證文件是在獲得了機器的硬件特征以后,由授權軟件將硬件特征加密解密后生成的。
1.1.1 MD5算法
MD5是一種單向散列函數,以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。由于MD5具有某些不可逆性和唯一性的特征,無法從MD5的散列結果逆推出原文[1],從而確保了信息的完整性和一致性。
1.1.2 RC4算法
RC4是一種對稱加密算法,它使用的密鑰為單鑰(或稱為私鑰)。RC4不對明文進行分組處理,而是以字節流的方式依次加密明文中的每一個字節,解密的時候也是依次對密文中的每一個字節進行解密,加解密使用相同的密鑰。RC4算法簡單,運行速度快,是目前密鑰長度達到128位的最安全的加密算法之一[2]。
軟件加密流程由硬件信息采集、許可證生成和解密驗證三個部分組成。用戶在目標計算機上運行采碼工具,將工具采集的硬件特征數據提交給軟件管理者,軟件管理者運行注冊工具依據特征數據生成許可證授權文件。用戶再使用軟件管理者提供的許可證授權文件完成應用軟件認證。軟件加密解密流程如圖1所示。

圖 1 加密解密流程圖
許可證與機器的硬件信息有關,因而軟件只能在指定的計算機中運行,否則許可證就會失效。
隨著錄井行業的發展,錄井軟件已經成為錄井行業的核心驅動力,在油田的生產、科研中發揮了非常重要的作用。在軟件的設計、開發、測試、維護過程中,錄井公司投入了大量的人力、物力和財力,因此,為了更好地維護具有自主知識產權的錄井軟件,需要對軟件進行加密認證[2]。
目前常用的軟件加密技術主要有加密鎖、時間限制、序列號保護、軟件壓縮等,其中利用計算機硬件信息如硬盤序列號、網卡MAC地址、CPU ID等生成一段唯一的序列號,作為計算機的特征信息,然后進行加密,是一種安全穩定可靠的軟件加密方法。
錄井公司采碼軟件提取現場計算機的CPU ID并用 MD5算法加密后生成注冊序列號。CPU ID是一個建立在處理器內部的、唯一的、不能被修改的編號,它由96位數字組成。獲取CPU ID程序如下:

如圖2所示,點擊軟件“生成序列號”按鈕,在文本框中生成注冊序列號;點擊“保存序列號”按鈕,將注冊序列號保存到文件中。錄井現場工作人員通過 Internet、Email、電話、傳真等方式將注冊序列號或注冊序列號文件發送到軟件中心。

圖2 采碼器界面
錄井公司許可證生成器的作用是對采碼軟件產生的注冊序列號進行RC4算法加密,并生成許可證文件。RC4算法部分程序如下:


許可證生成器生成許可證時要導入加載注冊序列號文件,在導入之前,軟件授權人可以對要導入的文件進行編輯,將多臺計算機采集加密得到的注冊序列號文件內容按一機一行的形式復制到一個匯總信息文件中,這樣生成的許可證就可以復制供給多臺計算機使用,省去了分別為每臺機器生成許可證的麻煩。
如圖3所示,點擊“打開文件”按鈕,獲取注冊序列號匯總信息文件,點擊“生成許可證文件”按鈕,生成許可證文件。最后由軟件授權人將許可證文件發回給現場,并存放在錄井應用軟件目錄中。軟件每次運行時,都要檢查許可證文件是否存在。許可證生成是整套軟件加密方法中最重要的部分。

圖3 許可證生成器界面
錄井應用軟件每次啟動時,從許可證文件中讀取數據,然后利用RC4算法進行解密。解密結果與軟件中硬件信息采集加密模塊的運行結果進行比較,如果相同判斷為合法用戶,打開軟件,否則軟件退出運行。加密的軟件,只能在指定計算機上安裝使用。把軟件拷貝到其他計算機上運行將提示非法用戶,如圖4所示。

圖4 非法用戶提示界面
文章給出了錄井軟件采用的加密方法,通過MD5和RC4加密算法,生成與計算機硬件信息綁定的許可證,實現了許可證與計算機的一對一關系,大大提高了軟件加密的可靠性和安全性,有效防止非法用戶盜用軟件。