擁有智財權的軟體一般採取軟體保護手段,需要使用某種方式啟用軟體才可以使用。軟體啟用本質是對密文資料進行比較,而密文資料是由軟體開發商根據目標機器的特徵資料進行加密產生的。啟用過程是在認證伺服器或者目標機器上完成,在這個過程中,資料加密方案至關重要,設計良好的加密方案,難以被破解、複製或盜用,軟體保護工作做的很完善。本文分析現有軟體保護方式,借鑑基礎軟體加密演算法基礎上,設計出一種高強度、難破解的混合加密方案,並在軟體工程實踐中驗證該混合加密方案的可行性。
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摘要演算法,安全係數高、破解難度高,在實驗室工程應用中通過驗證,具有先進性、可行性和可實施性,可以作為一種先進加密方案推廣使用。
參考文獻
[1]王津濤,覃尚毅,王冬梅.基於md5的迭代冗餘加密演算法.計算機工程與設計,2007(28).
[2]鐘黔川,朱清新.blowfish密碼系統分析[j].計算機應用,2007(27).
[3]高博,李彥.一種基於硬體特徵和動態許可證的伺服器端軟體授權認證模型[j].計算機工程與科學,2013(35).
[4]陳志倫.一種基於rsa/idea加密license檔案的軟體保護方案[j].計算機應用與軟體,2005(22).
[5]毛明,秦志光,陳少暉.破譯md5演算法關鍵技術探索[j].計算機應用,2009(29).
作者簡介
商開拴(1985-),男,河北石家莊市人。大學本科學歷。現為中國電子科技集團公司電子科學研究院職工。主要研究方向為系統軟體設計與整合。
作者單位
中國電子科技集團公司電子科學研究院 北京市 100041
一種混合加密方案在軟體授權中的應用
擁有智財權的軟體一般採取軟體保護手段,需要使用某種方式啟用軟體才可以使用。軟體啟用本質是對密文資料進行比較,而密文資料是由軟體開發商根據目標機器的特徵資料進行加密產生的。啟用過程是在認證伺服器或者目標機器上完成,在這個過程中,資料加密方案至關重要,設計良好的加密方案,難以被破解 複製或盜用,軟體保護...
一種硬體加密卡方案
本方案是基於fpga的高效能加密卡。加密 過pci express匯流排與主機通訊,由fpga晶元內建的nios ii軟和處理器和pci e硬核分別實現控制模組和通訊模組的功能 採用sm1 rsa des 3des desx或aes等演算法 具體演算法未定 對資料進行加密或解密。使用外接單匯流排加密...
一種加密,解密的思路
加密的一種思路 1.客戶端有個初始key,這個key先加密 異或 4個位元組內容,生成4個位元組的密文 2.根據4個位元組的密文,演算法產生新key2,使用key2解密下一段 4個位元組的內容,以此類推 對應的解密 1.伺服器本身知道初始key 2.伺服器先根據4個位元組的密文,使用客戶端相同的演算...