1 引 言
隨著計算機技術的發(fā)展, 計算機軟件作為特殊商品在信息時代越來越重要。但是由于計算機軟件的易拷貝性, 各種軟件盜版、侵權現(xiàn)象不斷發(fā)生, 軟件加密技術應運而生。它分為軟加密和硬加密兩類, 所謂軟加密就是用純軟件的方式, 在程序中使用一些獨特的軟件算法或其它手段來驗證使用者的合法性, 其特點是成本低, 但加密強度不高, 易被破解;硬加密則是采用軟件與硬件配合, 通過硬件來控制軟件運行的加密方法, 如密鑰盤、加密卡、軟件狗等方法, 其加密性能好, 不象軟件那樣有易復制性, 所以從理論上講, 它比軟加密要可靠一些。而綜合分析硬加密的技術指標如可靠性、讀寫速度、破譯程度、占用主機資源等, 軟件狗是一種較好的加密方法。因此, 目前在市場上獲得了廣泛應用。
2 軟件狗的發(fā)展及原理
軟件狗技術的發(fā)展經(jīng)歷了四次更新?lián)Q代。第一代是存儲器型的加密狗, 工作時插在微機的并行口上, 通過對并行口讀取數(shù)據(jù)來判別軟件狗存在與否、密碼正確與否, 從而決定軟件是否運行。這種軟件狗因為內(nèi)部結構過于簡單, 很容易被人檢測破譯。
第二代軟件狗采用低功耗邏輯集成電路, 在電路設計上做了一些加密工作, 例如對數(shù)據(jù)位的反相、移位、交叉等, 破譯時比前一種困難, 起到一定的加密功能。第三代軟件狗采用可編程器件, 由于這類器件本身就含有加密保護單元, 很難讀出, 增加了破譯難度[ 3] 。
但是隨著黑客攻擊手段的提高, 前三代已經(jīng)不能滿足保密要求, 第四代以單片機為核心的軟件狗產(chǎn)生了。它不像以往軟件狗只能輸出固定的密鑰,而是按一定的算法對寫入和讀出的數(shù)據(jù)進行變換,也可以將被保護軟件的重要模塊移植到軟件狗中,使得軟件狗成為被保護軟件不可缺少的一部分。這樣軟件與軟件狗實現(xiàn)了真正的無縫連接, 極大提高了解密的難度, 有效防止了軟件跟蹤和邏輯分析儀的分析以及對程序的破壞性解密, 從而有效保護了軟件不被侵權。
USB 是在1994 年底由Compaq、IBM、M icrosoft等多家公司聯(lián)合提出的一種新型通用串行接口技術, 它具有真正的即插即用和熱插拔功能, USB 2. 0的高速設備可達480Mb /S的速度, 以其獨有的優(yōu)勢, 如安裝拆卸方便、總線資源豐富、打包方法簡單、設備獨立等逐漸取代了其它單片機加密狗, 基于此,設計了一種基于USB2. 0控制器的軟件狗。
3 U SB2. 0軟件狗總體體系結構及關鍵技術
3. 1 USB2. 0軟件狗的工作原理
傳統(tǒng)意義上的加密就是防止信息泄露, 其基本過程為將消息(明文)經(jīng)過某種算法進行加密, 形成密文, 再經(jīng)過解密將密文轉(zhuǎn)變?yōu)槊魑模?以達到信息不被竊取的目的, 而軟件狗則是加密技術在信息領域中呈現(xiàn)出的一個全新概念。它的作用并不是防止信息泄露, 而是為軟件開發(fā)者提供用戶使用權限認證或運行許可, 與傳統(tǒng)的信息加密概念有著明顯的區(qū)別。因此, 設計過程中加密算法的實現(xiàn)不是研究的主要內(nèi)容, 需要把工作重點放在如何防止調(diào)試工具對軟件狗數(shù)據(jù)傳輸?shù)母櫍?以達到難以破解或者不能破解的目的。
一般的軟件狗工作原理如圖1所示。
圖1 USB 軟件狗加密保護流程圖
圖1中列出了6個步驟, 描述了從插入USB軟件狗到完成一次軟件合法性檢驗的全過程。軟件狗對隨機數(shù)的加密在硬件中進行, 其結果返回PC 機并經(jīng)PC 機中軟件的解密算法解密。通過檢驗解密后的數(shù)據(jù)是否和原隨機數(shù)保持一致來鑒別是否插入合法的軟件狗硬件, 從而達到軟件保護的目的。
不難看出, 步驟3 和4中傳送的隨機數(shù)容易被多次跟蹤分析, 解密者可以根據(jù)得到的這一系列數(shù)據(jù)對, 設計出相關的模擬軟件, 那么就需要在這個隨機數(shù)上進行改進。
本設計中采用的是將USB 軟件狗的PIN 碼保護和動態(tài)口令相結合的方法。PIN 碼在PC 上輸入,在用戶不取走USB軟件狗時易被解密者捕獲, 從而獲得虛假認證, 可是如果使用了動態(tài)口令, 每次的口令不同, 解密者很難進行破解。動態(tài)口令是一種讓用戶密碼按照時間或者使用次數(shù)不斷變化、每個密碼只能使用一次的技術, 即使解密者獲取了幾個動態(tài)口令, 那么他也無法預知或者推算下一次或者下下次的動態(tài)口令, 無法在使用時間或者使用次數(shù)上形成連續(xù)性。本設計的USB2. 0 軟件狗加密保護流程如圖2所示。
圖2 USB2. 0軟件狗加密保護流程圖。
3. 2 硬件實現(xiàn)
本設計中采用Cypress 公司推出的CY7C68013A芯片, 該芯片屬于EZ- USB FX2系列芯片, 是世界上第一個集成USB2. 0 協(xié)議的微處理器, 它支持12Mb / s的全速傳輸和480Mb / s高速傳輸。
CY7C68013A芯片結構包括增強型8051 處理器、串行接口引擎( SIE )、USB2. 0收發(fā)器、16KB 的RAM、4KB的FIFO 存儲器、數(shù)據(jù)總線、地址總線以及通用可編程接口( GPIF)等, 如圖3所示。
圖3 CY7C68013A 芯片結構圖。
USB 加密狗一般由USB 控制器、單片機、外接存儲器構成, 而CY7C68013A 將三者集成為一個芯片, 使硬件實現(xiàn)變得非常簡單, 只需配置好外圍電容、電阻即可。芯片提供了0、1、2、4、6、8 幾個端點, 端點0和端點1僅由固件訪問, 由于其余端點都是單向訪問的, 在此使用端點2和端點6, 用于數(shù)據(jù)的發(fā)送和接收。
該芯片集成的增強型8051比標準8051有更快的執(zhí)行速度以及更大的存儲器空間, 因此, 它可以在較短的時間內(nèi)完成比較復雜的算法, 而且不需另外擴展存儲空間。芯片內(nèi)部還有一個串行接口引擎S IE, 由它來完成大部分USB2. 0協(xié)議的處理工作,這樣大大減輕了固件程序的工作量。
3. 3 軟件設計
軟件設計主要包括三部分: 芯片固件程序、設備驅(qū)動程序、PC應用程序。
Cypress公司的EZ- U SB FX2開發(fā)套件提供了完整的CY7C68013A 驅(qū)動程序源代碼、固件的框架、控制面板程序, 方便用戶開發(fā), 縮短了開發(fā)周期。本設計中的驅(qū)動程序就是對FX2開發(fā)套件中所帶的驅(qū)動程序進行修改而得到的。利用提供的固件框架完成設備的初始化, 使用端點2和端點6的實時傳輸方式, 實時得到動態(tài)產(chǎn)生的PIN 碼。
在本設計中, PC 應用程序是指與加密狗的接口程序, 選用VC6. 0 為開發(fā)平臺來開發(fā)應用程序, 利用C reateF ile得到USB 句柄, 使用D ev iceIoControl函數(shù)來進行數(shù)據(jù)的接收和發(fā)送, 并編制U SB 軟件狗的主機接口函數(shù), 將接口函數(shù)封裝于usbdog. d ll文件中, 供被保護軟件調(diào)用。
使用開發(fā)套件中提供的控制面板程序可以調(diào)試程序, 驗證應用程序傳輸數(shù)據(jù)的準確性。
4 結束語
USB2. 0軟件狗和其他軟件狗相比有其獨有的優(yōu)越性。首先, USB 憑借其即插即用極大地方便了用戶使用, 免除了開機箱和重啟動的麻煩, 能夠為個人筆記本電腦提供一個具有快速通信能力的數(shù)據(jù)加密設備。第二, USB2. 0的高速數(shù)據(jù)傳輸能力保證了運行過程中的動態(tài)加密, 其特有的打包方法和編碼格式, 增加了加密數(shù)據(jù)在傳輸過程中被截獲及解密的難度。第三, 采用USB 軟件狗的PIN 碼保護和動態(tài)口令相結合的方法, 避免了解密者獲取和推算動態(tài)口令。第四, 本設計中采用Cypress 公司的CY7C68013A 芯片作為主芯片, 使得硬件電路設計簡單, 占用空間小, Cypress公司提供的套件開發(fā)固件程序和驅(qū)動程序, 用VC6. 0 開發(fā)加密的軟件平臺, 極大地縮短了開發(fā)周期。
作為USB2. 0 技術和軟件狗技術相結合的產(chǎn)物, USB 軟件狗無疑會具有十分強大的生命力。