nginx java Python Ubuntu mysql 微软 Firefox php 程序员 apache 云计算 开源 Android shell wordpress Windows centos 编程 linux google

一種混合加密方案在軟件授權中的應用

擁有知識產權的軟件一般采取軟件保護手段,需要使用某種方式激活軟件才可以使用。軟件激活本質是對密文數據進行比較,而密文數據是由軟件開發商根據目標機器的特征數據進行加密產生的。激活過程是在認證服務器或者目標機器上完成,在這個過程中,數據加密方案至關重要,設計良好的加密方案,難以被破解、復制或盜用,軟件保護工作做的很完善。本文分析現有軟件保護方式,借鑒基礎軟件加密算法基礎上,設計出一種高強度、難破解的混合加密方案,並在軟件工程實踐中驗證該混合加密方案的可行性。

一种混合加密方案在软件授权中的应用

1 軟件保護

為了保護軟件開發商的權益,防止軟件被復制、盜用或未經認證而非法使用軟件,一般采用軟件授權方式對軟件進行認證激活,只有經過認證激活的軟件才能正常使用,用戶才能使用軟件提供的各項功能、服務。隨著軟件普及程度、互聯網技術的發展,軟件的功能模塊越來越多,軟件開發商希望按照功能模塊來銷售軟件;隨著銷售模式的發展,用戶希望按照使用時間、次數來購買和使用軟件;隨著用戶數量的增長和軟件版本的增加,軟件開發商需要更好的管理軟件銷售和使用,因而軟件授權保護的研究與應用越來越重要。從技術角度,軟件授權可以分為在線授權和離線授權。

1.1 在線授權

在線授權,是一種新興的、基於認證服務器的授權方式,以互聯網技術為基礎,替代傳統的授權文件、序列號或激活碼方式。應用程序通過開發商發放的認證碼與認證服務器建立連接,調用服務器接口完成授權過程。在線授權采用高強度的通信加密技術,並且服務器遠離軟件用戶,它的軟件保護強度非常高。除此之外,應用程序在後臺可以周期訪問認證服務器,為開發商收集軟件用戶使用狀態、統計軟件使用情況、快速升級與維護提供了技術手段。

1.2 離線授權

離線授權即傳統意義上通過註冊碼、序列號、密鑰或者授權文件,在本地完成應用程序激活的方式。通常設計實現上有兩種形式:硬認證激活、軟認證激活。

硬認證激活需要借助額外硬件設備,在硬件設備中存儲應用程序激活必須的認證數據,只有認證數據能被應用程序讀取識別,應用程序才可以正常使用。“加密狗”是一種硬認證激活方式的一種實現,插在計算機USB口或串口上的便攜存儲設備,早期多為串口形式,現在絕大部分都是USB口形式。

軟認證激活是另外一種軟件認證激活形式,通常由軟件開發商向用戶提供特征數據采集工具。用戶在目標計算機上運行該工具,將工具采集的特征數據提交給開發商,開發商依據特征數據生成激活密鑰、序列號、激活碼或者授權文件。用戶再使用開發商提供的序列號、激活碼或者授權文件完成應用程序認證激活。特征數據即工具軟件采集用戶計算機產生的硬件特征、軟件特征數據。硬件特征數據指主板序列號、磁盤序列號、物理地址等數據;軟件特征數據指計算機名稱、用戶名稱等數據。激活密鑰、序列號、激活碼或者授權文件都是對特征數據進行加密、編碼後產生的。離線認證激活方式是現在軟件主流認證激活方式。

2 加密方案設計及應用

2.1 加密算法概述

軟件保護中使用密碼學知識來完成特征數據的保護、敏感信息的驗證,涉及內容涵蓋信息資源機密性、信息鑒別、信息報文完整性和不可否認性等相關問題。數據加密技術是最常用的軟件保護技術手段,其基本思想是通過變換信息的表示形式來偽裝需要保護的敏感信息,使非授權者不能了解被保護信息的內容。實施過程中利用技術手段把重要的數據變為亂碼(加密)傳送,到達目的地後再用相同或不同的手段還原(解密)。數據加密技術包括兩個元素:加密方案和密鑰。加密方案是將普通的信息資源或者可以理解的信息資源與一串數字(密鑰)結合,產生不可理解的密文的步驟,密鑰是用來對數據進行編碼加密和解密的一種數據。在密鑰保護中,可通過適當的密鑰加密技術和管理機制來保證信息資源的安全。

數據加密算法基於相應的數學理論,發展至今,已經產生了大量優秀的加密算法,通常分為兩類:對稱密碼算法和非對稱密碼算法。Blowfish算法是著名的對稱加密算法,是一種將64位數據分組及使用可變長度密鑰的對稱密鑰分組加密算法,可用來加密64位長度的字符串。32位處理器誕生後,Blowfish算法因其在加密速度上的優越性而引起人們的廣泛關註。Blowfish算法具有加密速度快、緊湊、密鑰長度可變、免費使用等特點,已被廣泛使用於軟件保護、軟件認證激活。算法核心在於子密鑰的生成,它將變長密鑰擴展成總長4168 比特位的子密鑰數組。算法中使用了大量的子密鑰,而子密鑰又依賴於用戶密鑰,實際加密解密過程中使用的是更新後的子密鑰數組,子密鑰即P數組和S盒。算法輸人64位明文信息,經過加密運算,輸出64位密文信息。

MD5的全稱是Message-digest Algorithm5(中文譯作信息摘要算法5),為計算機安全領域廣泛使用的一種散列算法,用以驗證消息的完整性、確保信息傳輸的正確性,是著名的非對稱加密算法。它經MD2、MD3和MD4發展而來,在20世紀90年代初誕生。MD5算法可簡要敘述為:MD5以512位分組來處理輸入的信息資源,且每一分組又被劃分為16個32位子分組,經過了一系列循環處理,算法的輸出四個32位分組,將這四個32位分組順序組合後生成一個128位散列值。MD5算法具有輸出長度固定、目標值容易計算、抗修改性強和超低碰撞概率的特點。對任意長度的數據,算法輸出固定128位散列值;對原數據的任何修改,即便是修改一個比特位,所得到的散列值都不同的;已知原數據和所生成散列值,想找到一個具有相同散列值的數據(即偽造數據)是非常非常困難的。

2.2 加密方案設計

在實際使用過程中,使用單一加密算法作為加密方案對信息資源進行加密保護往往無法滿足應用需求。其中Blowfish算法采用變長用戶密鑰,算法加密解密核心在於用戶密鑰的選擇和保護,開發者往往經常使用一些弱用戶密鑰對信息資源進行加密,導致Blowfish算法存在著很大的安全隱患 。然而簡單的MD5加密也是沒有辦法達到絕對的安全的,隨著技術的不斷進步,普通的MD5加密有多種暴力破解方式,因此如果想要保證信息數據、資源的安全,必須要設計新型加密方案。本文將混合使用上述兩種加密算法,設計設計一種新型的、高效的、破解難度高的混合加密方案,以增強安全性。加密方案核心步驟如下:

(1)對原始信息資源使用MD5算法進行加密,產生128位散列值;

(2)將步驟a產生的固定長度散列值作為Blowfish算法的用戶密鑰,初始化Blowfish加密算法;

(3)使用初始化完成後的Blowfish算法對原始信息資源的進行加密,加密後即會產生高安全性的密文數據。

2.3 方案工程應用

在實驗室工程應用中對本文設計的混合加密方案進行驗證,對工程應用中的關鍵部分給出偽代碼實現。本實驗室工程應用設計以軟件授權文件形式試驗、驗證混合加密方案的先進性、可行性和可實施性,其中授權文件中含有用於比較驗證的密文數據。

生成授權文件中密文數據的偽代碼如下:

一种混合加密方案在软件授权中的应用

認證激活過程即讀取授權文件中的密文數據,然後掃描目標機器硬件特征、軟件特征數據,根據特征數據生成密文數據,將新生成的密文數據與授權文件中讀取的密文數據進行比較,密文數據相同即認證激活成功,否則認證激活失敗,實現部分偽代碼如下:

一种混合加密方案在软件授权中的应用

3 結束語

使用激活密鑰、序列號、激活碼或授權文件等方式認證激活軟件是軟件開發商保護軟件知識產權的常用技術手段,但是上述技術手段存在被破解的風險。隨著基礎數學、計算機科學、密碼學等基礎科學的發展,對加密算法研究的升入,互聯網技術的進步,使用單一加密算法的加密方案被破解的風險越來越大。為了降低被破解的風險,應當設計新型加密方案,混合使用不同類型、用途的加密算法,才能降以指數級提高破解難度,降低加密方案被破解的風險。本文所設計的新型加密方案組合使用Blowfish算法和MD5摘要算法,安全系數高、破解難度高,在實驗室工程應用中通過驗證,具有先進性、可行性和可實施性,可以作為一種先進加密方案推廣使用。

延伸阅读

    评论