一種混合加密方案在軟件授權(quán)中的應(yīng)用
擁有知識產(chǎn)權(quán)的軟件一般采取軟件保護手段,需要使用某種方式激活軟件才可以使用。軟件激活本質(zhì)是對密文數(shù)據(jù)進行比較,而密文數(shù)據(jù)是由軟件開發(fā)商根據(jù)目標機器的特征數(shù)據(jù)進行加密產(chǎn)生的。激活過程是在認證服務(wù)器或者目標機器上完成,在這個過程中,數(shù)據(jù)加密方案至關(guān)重要,設(shè)計良好的加密方案,難以被破解、復(fù)制或盜用,軟件保護工作做的很完善。本文分析現(xiàn)有軟件保護方式,借鑒基礎(chǔ)軟件加密算法基礎(chǔ)上,設(shè)計出一種高強度、難破解的混合加密方案,并在軟件工程實踐中驗證該混合加密方案的可行性。
1 軟件保護
為了保護軟件開發(fā)商的權(quán)益,防止軟件被復(fù)制、盜用或未經(jīng)認證而非法使用軟件,一般采用軟件授權(quán)方式對軟件進行認證激活,只有經(jīng)過認證激活的軟件才能正常使用,用戶才能使用軟件提供的各項功能、服務(wù)。隨著軟件普及程度、互聯(lián)網(wǎng)技術(shù)的發(fā)展,軟件的功能模塊越來越多,軟件開發(fā)商希望按照功能模塊來銷售軟件;隨著銷售模式的發(fā)展,用戶希望按照使用時間、次數(shù)來購買和使用軟件;隨著用戶數(shù)量的增長和軟件版本的增加,軟件開發(fā)商需要更好的管理軟件銷售和使用,因而軟件授權(quán)保護的研究與應(yīng)用越來越重要。從技術(shù)角度,軟件授權(quán)可以分為在線授權(quán)和離線授權(quán)。
1.1 在線授權(quán)
在線授權(quán),是一種新興的、基于認證服務(wù)器的授權(quán)方式,以互聯(lián)網(wǎng)技術(shù)為基礎(chǔ),替代傳統(tǒng)的授權(quán)文件、序列號或激活碼方式。應(yīng)用程序通過開發(fā)商發(fā)放的認證碼與認證服務(wù)器建立連接,調(diào)用服務(wù)器接口完成授權(quán)過程。在線授權(quán)采用高強度的通信加密技術(shù),并且服務(wù)器遠離軟件用戶,它的軟件保護強度非常高。除此之外,應(yīng)用程序在后臺可以周期訪問認證服務(wù)器,為開發(fā)商收集軟件用戶使用狀態(tài)、統(tǒng)計軟件使用情況、快速升級與維護提供了技術(shù)手段。
1.2 離線授權(quán)
離線授權(quán)即傳統(tǒng)意義上通過注冊碼、序列號、密鑰或者授權(quán)文件,在本地完成應(yīng)用程序激活的方式。通常設(shè)計實現(xiàn)上有兩種形式:硬認證激活、軟認證激活。
硬認證激活需要借助額外硬件設(shè)備,在硬件設(shè)備中存儲應(yīng)用程序激活必須的認證數(shù)據(jù),只有認證數(shù)據(jù)能被應(yīng)用程序讀取識別,應(yīng)用程序才可以正常使用。“加密狗”是一種硬認證激活方式的一種實現(xiàn),插在計算機USB口或串口上的便攜存儲設(shè)備,早期多為串口形式,現(xiàn)在絕大部分都是USB口形式。
軟認證激活是另外一種軟件認證激活形式,通常由軟件開發(fā)商向用戶提供特征數(shù)據(jù)采集工具。用戶在目標計算機上運行該工具,將工具采集的特征數(shù)據(jù)提交給開發(fā)商,開發(fā)商依據(jù)特征數(shù)據(jù)生成激活密鑰、序列號、激活碼或者授權(quán)文件。用戶再使用開發(fā)商提供的序列號、激活碼或者授權(quán)文件完成應(yīng)用程序認證激活。特征數(shù)據(jù)即工具軟件采集用戶計算機產(chǎn)生的硬件特征、軟件特征數(shù)據(jù)。硬件特征數(shù)據(jù)指主板序列號、磁盤序列號、物理地址等數(shù)據(jù);軟件特征數(shù)據(jù)指計算機名稱、用戶名稱等數(shù)據(jù)。激活密鑰、序列號、激活碼或者授權(quán)文件都是對特征數(shù)據(jù)進行加密、編碼后產(chǎn)生的。離線認證激活方式是現(xiàn)在軟件主流認證激活方式。
2 加密方案設(shè)計及應(yīng)用
2.1 加密算法概述
軟件保護中使用密碼學(xué)知識來完成特征數(shù)據(jù)的保護、敏感信息的驗證,涉及內(nèi)容涵蓋信息資源機密性、信息鑒別、信息報文完整性和不可否認性等相關(guān)問題。數(shù)據(jù)加密技術(shù)是最常用的軟件保護技術(shù)手段,其基本思想是通過變換信息的表示形式來偽裝需要保護的敏感信息,使非授權(quán)者不能了解被保護信息的內(nèi)容。實施過程中利用技術(shù)手段把重要的數(shù)據(jù)變?yōu)閬y碼(加密)傳送,到達目的地后再用相同或不同的手段還原(解密)。數(shù)據(jù)加密技術(shù)包括兩個元素:加密方案和密鑰。加密方案是將普通的信息資源或者可以理解的信息資源與一串數(shù)字(密鑰)結(jié)合,產(chǎn)生不可理解的密文的步驟,密鑰是用來對數(shù)據(jù)進行編碼加密和解密的一種數(shù)據(jù)。在密鑰保護中,可通過適當?shù)拿荑€加密技術(shù)和管理機制來保證信息資源的安全。
數(shù)據(jù)加密算法基于相應(yīng)的數(shù)學(xué)理論,發(fā)展至今,已經(jīng)產(chǎn)生了大量優(yōu)秀的加密算法,通常分為兩類:對稱密碼算法和非對稱密碼算法。Blowfish算法是著名的對稱加密算法,是一種將64位數(shù)據(jù)分組及使用可變長度密鑰的對稱密鑰分組加密算法,可用來加密64位長度的字符串。32位處理器誕生后,Blowfish算法因其在加密速度上的優(yōu)越性而引起人們的廣泛關(guān)注。Blowfish算法具有加密速度快、緊湊、密鑰長度可變、免費使用等特點,已被廣泛使用于軟件保護、軟件認證激活。算法核心在于子密鑰的生成,它將變長密鑰擴展成總長4168 比特位的子密鑰數(shù)組。算法中使用了大量的子密鑰,而子密鑰又依賴于用戶密鑰,實際加密解密過程中使用的是更新后的子密鑰數(shù)組,子密鑰即P數(shù)組和S盒。算法輸人64位明文信息,經(jīng)過加密運算,輸出64位密文信息。
MD5的全稱是Message-digest Algorithm5(中文譯作信息摘要算法5),為計算機安全領(lǐng)域廣泛使用的一種散列算法,用以驗證消息的完整性、確保信息傳輸?shù)恼_性,是著名的非對稱加密算法。它經(jīng)MD2、MD3和MD4發(fā)展而來,在20世紀90年代初誕生。MD5算法可簡要敘述為:MD5以512位分組來處理輸入的信息資源,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列循環(huán)處理,算法的輸出四個32位分組,將這四個32位分組順序組合后生成一個128位散列值。MD5算法具有輸出長度固定、目標值容易計算、抗修改性強和超低碰撞概率的特點。對任意長度的數(shù)據(jù),算法輸出固定128位散列值;對原數(shù)據(jù)的任何修改,即便是修改一個比特位,所得到的散列值都不同的;已知原數(shù)據(jù)和所生成散列值,想找到一個具有相同散列值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常非常困難的。
2.2 加密方案設(shè)計
在實際使用過程中,使用單一加密算法作為加密方案對信息資源進行加密保護往往無法滿足應(yīng)用需求。其中Blowfish算法采用變長用戶密鑰,算法加密解密核心在于用戶密鑰的選擇和保護,開發(fā)者往往經(jīng)常使用一些弱用戶密鑰對信息資源進行加密,導(dǎo)致Blowfish算法存在著很大的安全隱患 。然而簡單的MD5加密也是沒有辦法達到絕對的安全的,隨著技術(shù)的不斷進步,普通的MD5加密有多種暴力破解方式,因此如果想要保證信息數(shù)據(jù)、資源的安全,必須要設(shè)計新型加密方案。本文將混合使用上述兩種加密算法,設(shè)計設(shè)計一種新型的、高效的、破解難度高的混合加密方案,以增強安全性。加密方案核心步驟如下:
(1)對原始信息資源使用MD5算法進行加密,產(chǎn)生128位散列值;
(2)將步驟a產(chǎn)生的固定長度散列值作為Blowfish算法的用戶密鑰,初始化Blowfish加密算法;
(3)使用初始化完成后的Blowfish算法對原始信息資源的進行加密,加密后即會產(chǎn)生高安全性的密文數(shù)據(jù)。
2.3 方案工程應(yīng)用
在實驗室工程應(yīng)用中對本文設(shè)計的混合加密方案進行驗證,對工程應(yīng)用中的關(guān)鍵部分給出偽代碼實現(xiàn)。本實驗室工程應(yīng)用設(shè)計以軟件授權(quán)文件形式試驗、驗證混合加密方案的先進性、可行性和可實施性,其中授權(quán)文件中含有用于比較驗證的密文數(shù)據(jù)。
生成授權(quán)文件中密文數(shù)據(jù)的偽代碼如下:
認證激活過程即讀取授權(quán)文件中的密文數(shù)據(jù),然后掃描目標機器硬件特征、軟件特征數(shù)據(jù),根據(jù)特征數(shù)據(jù)生成密文數(shù)據(jù),將新生成的密文數(shù)據(jù)與授權(quán)文件中讀取的密文數(shù)據(jù)進行比較,密文數(shù)據(jù)相同即認證激活成功,否則認證激活失敗,實現(xiàn)部分偽代碼如下:
3 結(jié)束語
使用激活密鑰、序列號、激活碼或授權(quán)文件等方式認證激活軟件是軟件開發(fā)商保護軟件知識產(chǎn)權(quán)的常用技術(shù)手段,但是上述技術(shù)手段存在被破解的風險。隨著基礎(chǔ)數(shù)學(xué)、計算機科學(xué)、密碼學(xué)等基礎(chǔ)科學(xué)的發(fā)展,對加密算法研究的升入,互聯(lián)網(wǎng)技術(shù)的進步,使用單一加密算法的加密方案被破解的風險越來越大。為了降低被破解的風險,應(yīng)當設(shè)計新型加密方案,混合使用不同類型、用途的加密算法,才能降以指數(shù)級提高破解難度,降低加密方案被破解的風險。本文所設(shè)計的新型加密方案組合使用Blowfish算法和MD5摘要算法,安全系數(shù)高、破解難度高,在實驗室工程應(yīng)用中通過驗證,具有先進性、可行性和可實施性,可以作為一種先進加密方案推廣使用。
參考文獻
[1]王津濤,覃尚毅,王冬梅.基于MD5的迭代冗余加密算法.計算機工程與設(shè)計,2007(28).
[2]鐘黔川,朱清新.Blowfish密碼系統(tǒng)分析[J].計算機應(yīng)用,2007(27).
[3]高博,李彥.一種基于硬件特征和動態(tài)許可證的服務(wù)器端軟件授權(quán)認證模型[J].計算機工程與科學(xué),2013(35).
[4]陳志倫.一種基于RSA/IDEA加密License文件的軟件保護方案[J].計算機應(yīng)用與軟件,2005(22).
[5]毛明,秦志光,陳少暉.破譯MD5算法關(guān)鍵技術(shù)探索[J].計算機應(yīng)用,2009(29).
作者簡介
商開拴(1985-),男,河北石家莊市人。大學(xué)本科學(xué)歷。現(xiàn)為中國電子科技集團公司電子科學(xué)研究院職工。主要研究方向為系統(tǒng)軟件設(shè)計與集成。
作者單位
中國電子科技集團公司電子科學(xué)研究院 北京市 100041