《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業(yè)界動態(tài) > 基于USB軟件狗的反解密研究

基于USB軟件狗的反解密研究

2009-08-10
作者:陳 芳1, 李 倫2

  摘? 要: 一種USB加密接口的開發(fā)及其反解密技術。在分析USB軟件狗安全性的基礎上,提出了一系列反解密措施。

????關鍵詞: USB? 軟件狗? 反解密

?????????????????????????????????????????

  多年來個人計算機的串口與并口的功能和結構并沒有什么變化。但是,串、并口不僅速度有限,而且在使用上很不方便。如傳統(tǒng)的軟件狗安裝在并口上,極易與打印機沖突。

  USB軟件狗是USB接口技術與第四代軟件狗技術結合的產物,與其他軟件狗相比具有明顯優(yōu)勢:(1)USB的數(shù)據傳輸速度快,USB1.1協(xié)議定義的USB全速設備的速率為12Mbps,USB2.0定義的高速設備可達480Mbps。(2)USB的底層數(shù)據傳輸具有特定的打包方法和編碼格式,這樣就增加了加密數(shù)據在傳輸過程中被截獲及解密的難度。(3)USB設備的熱插拔、即插即用的特性極大地方便了用戶的使用,免除了用戶開機箱和重啟動的麻煩。

  目前軟件保護方法大致可分為二類:軟加密和硬加密。軟加密是用純軟件的方式來實現(xiàn)軟件的加密,主要包括密碼方式、軟件的校驗方式和鑰匙盤方式。硬加密則是利用硬件與軟件相結合來實現(xiàn)軟件的加密,其典型產品有加密卡和軟件狗等。

  軟件加密狗是一種智能型加密狗,是安裝在計算機外設接口上的硬件電路。當被保護的軟件運行時,程序向插在計算機上的加密狗發(fā)出查詢命令,加密狗迅速計算、查詢并給出響應,正確的響應能保證軟件順利運行。如果沒有加密狗,程序就不能運行。第三代軟件狗的核心芯片是E2PROM,主機通過并行口直接讀寫E2PROM以實現(xiàn)對加密信息的存取;第四代(最新)軟件加密狗內置一個單片機芯片(又稱微狗),芯片中存有特定的算法程序,可將讀出的密鑰進行加密變換,以對抗邏輯分析儀。

1? USB軟件狗的硬件設計

1.1 USB接口芯片

  目前,USB接口芯片有許多種,但無論何種接口芯片都有2個基本功能:一是與主機通信,二是提供對外圍電路CPU的接口。也就是說,接口芯片架起了計算機與外圍設備的橋梁,使開發(fā)者不用關心復雜的USB協(xié)議是如何將數(shù)據傳送到主機的。

  現(xiàn)有的支持USB協(xié)議的接口芯片可大致分為二類:一類為內部集成了微控制器,如美國TI公司的TUSB3210芯片,它內嵌一個兼容的805lMPU;另一類則只提供對外圍電路訪問的讀寫接口,如美國國家半導體公司的USBN9603芯片。在加密狗的設計中,建議采用第2種類型的接口芯片(因為對于較復雜的加密算法,使用計算能力較強的805lMPU或專用加密處理器處理起來更方便一些)。下面以本系統(tǒng)采用的USBN9603為例介紹接口芯片的使用。

  USBN9603其微處理芯片采用的是Philips公司的可基于系統(tǒng)編程的單片機P89C51RD2,它負責控制USBN9603芯片的狀態(tài)和讀寫USB節(jié)點的數(shù)據,以及負責控制外部存儲器及其他功能設備。在系統(tǒng)中,還使用ATMEL公司的24C64作為存儲芯片,采用P89C51RD2單片機的P1口模擬I2C總線來實現(xiàn)MCU與24C64的連接。

  USBN9603是一個功能較強的芯片,支持USB1.1協(xié)議,可以實現(xiàn)全速的USB傳輸方式,能實現(xiàn)12Mbps的高速傳輸。USBN9603提供了一系列事件寄存器(Event Register),它的每一位都代表一個事件。如Main Event Register中的TX_EV位的值為1,則代表收到了1個發(fā)給它的傳送事件。事件寄存器的各個位的值,一般由硬件根據各個事件的發(fā)生情況來設置,用戶無法干預。在中斷產生之后,可以通過查看這些寄存器的每一位的狀態(tài)來獲得事件發(fā)生的信息。

  此外,USBN9603還提供了一系列事件屏蔽寄存器(Mask Register)。這組寄存器的每一位都對應于事件寄存器的相應位。把這組寄存器上相應的位置1,就可以允許該事件觸發(fā)中斷,否則就是事件發(fā)生也不會產生中斷信號。如把Main Mask Register(MAMSK)中的TX_EV位的值設置為0,則USBN9603不會再報告?zhèn)魉褪录陌l(fā)生。

  USBN9603使用外部晶振,同時有一個對外的時鐘輸出器產生對外的時鐘信號,它的輸出頻率可由軟件來控制。USBN9603的USB接口引擎由物理層和媒介通道控制器組成。物理層包括數(shù)字時鐘電路、監(jiān)視電路、位填充與清除邏輯電路等。媒介通道控制器層要完成數(shù)據包格式化、循環(huán)冗余檢測、端點地址偵察等任務,并提供對端點發(fā)出的NAK、ACK和STALL回應的控制。接口引擎還要負責偵察和報告USB總線事件,如復位、掛起和恢復。

  USBN9603向開發(fā)者提供了58個可編程的寄存器,地址分布范圍為0x00~0x3F。MPU通過對寄存器的讀寫,完成對USB接口的操作。USBN9603寄存器被映射為MPU的外部RAM。MPU通過CS片選信號尋址,在ALE信號及RD、WR信號的配合下,由8位的并口寫入地址和數(shù)據。雖然USBN9603讀寫操作簡單,但各寄存器的定義及作用卻較復雜,但只要對USB協(xié)議及USBN9603功能有一定的了解,就不難理解和掌握各寄存器的使用。

1.2 電路設計

  外圍控制電路的作用有2個:對USB進行讀寫操作和對加密模塊的操作。這要求主控芯片提供基本的讀寫、中斷和地址/數(shù)據信號,同時要有一定的計算能力以適應加密算法。在此前提下,可有多種選擇,但加密卡的制作不能一味地追求高保密性能,應根據不同的應用場合靈活地選用不同的方案。本文設計的USB軟件狗的硬件電路圖如圖1所示。其核心處理器件是P89C51RD2。P89C51RD2是Philips公司的CMOS高性能單片機,與80C51單片機完全兼容。P89C51RD2可采用串行編程方式,且有2種形式:基于系統(tǒng)的編程和基于應用的編程。基于系統(tǒng)的編程方式可以有效地降低開發(fā)成本,縮短開發(fā)周期。

?

  本設計中所使用的存儲器是24C64,它是帶有硬件寫保護功能的串行E2PROM,其接口兼容I2C總線規(guī)范,通過一對串行時鐘、數(shù)據線對片內存儲單元進行讀寫。24C64的片內存儲器容量為64KB。

  作者在實際中加密模塊所使用的方案為單片機+FPGA模式,既可方便地用單片機完成對USB口的操作,又能利用FPGA的速度快和保密性強等特點實現(xiàn)復雜的加密算法。FPGA支持眾多的加密標準(如AES、DES、三重DES),而且依靠FPGA的在線編程功能可方便地實現(xiàn)算法的更新與升級。這種組合模式符合模塊化設計思想,在一定程度上提高了開發(fā)速度。

2? USB軟件狗的軟件設計

2.1 固件程序的設計

  USB軟件狗的軟件包括主機軟件和微控制器中的軟件(固件)。主機軟件和固件相配合,協(xié)同完成主機與USB軟件狗間的信息交換。其中,微控制器中的固件主要完成與主機的通信(包括參與USB總線設備枚舉、USB軟件狗的自身標識等)、對24C64的讀寫操作、與主機程序相配合實現(xiàn)和主機程序間的數(shù)據交換等任務。

  固化程序的編制完全是按照中斷驅動方式編制的。當MPU處理其他任務時,USB數(shù)據的傳輸在中斷程序中進行,這樣可使傳輸速度最快并且也簡化了編程和調試工作。微控制器程序的USB通信簡化軟件框圖如圖2所示。

?

  24C64遵循I2C總線協(xié)議,采用SDA、SCL雙線串行傳輸數(shù)據。在89C51上模擬I2C總線的設計中,用P1口的P1^2模擬SCL信號,用P1^3模擬SDA信號(對24C64具體的讀寫程序在很多相關書籍中都有具體的實例程序,本文不再詳細敘述)。為防止24C64的內容意外改變,在不進行寫操作時,可使WP引腳保持為高電平。同時為保障整個系統(tǒng)的安全,存儲器24C64中的任何數(shù)據都應采用加密的形式存放。

2.2 驅動程序的設計

  驅動程序的基本功能是建立應用程序與加密卡之間的數(shù)據通信。Window 98和Window 2000操作系統(tǒng)為USB總線提供了全面的支持,并且用WDM(Windows Device Mode)設備驅動程序模型代替了VxD設備驅動程序。WDM支持USB1.1協(xié)議,并為用戶開發(fā)自己的用戶驅動程序提供了接口USBDI(USB Driving Interface)。USB用戶驅動程序通過USBDI訪問USB設備類驅動程序。USB外設不占用任何硬件資源(端口或中斷),所有低層I/O都由USB設備類驅動程序來執(zhí)行??蛻趄寗映绦蛑魂P心數(shù)據傳輸類型、傳輸時序、傳輸管道以及如何處理數(shù)據等主要操作。USBDI就是為實現(xiàn)以上操作而設計的軟件接口。Windows 98和Windows 2000提供了如USB鼠標、USB鍵盤等設備的驅動程序,但是對一些特殊的設備(如數(shù)據加密系統(tǒng)),到目前為止還沒有提供現(xiàn)成的驅動程序操作系統(tǒng),所以必須自己編制驅動程序。USB設備的驅動程序一般用WDM而不能用VxD來編寫。盡管系統(tǒng)已經提供了很多的標準接口函數(shù),但是直接使用DDK編制USB驅動程序還是很困難的事情。不過目前很多軟件廠商提供了一些非常好用的軟件,使編制工作變得簡單。例如Compuare Numega公司的DriverWorks等。使用這些軟件可在較短的時間內生成高質量的驅動程序(具體步驟比較簡單,在此不做詳細的說明)。有關Windows對USB支持的更詳細的說明,請參考Microsoft提供的設備驅動程序開發(fā)包(DDK)中的說明。

3?USB軟件狗反解密技術

  傳統(tǒng)的軟件狗的解密方法主要有硬件和軟件2種。

  (1)軟件狗的硬件解密方法主要是仿制軟件狗的硬件電路,通過使用邏輯分析儀攔截I/O口的數(shù)據,記錄下軟件狗與主機之間所傳送的數(shù)據,再用硬件電路來仿真。這種方法對付早期的軟件狗很有效。但USB軟件狗內置單片機,固化的單片機軟件保證外部不可讀,但可仿制。并且由于使用USB協(xié)議,通信復雜且數(shù)據量大,因此該方法現(xiàn)在已經不適用。

  (2)目前,常用的軟件狗解密方法主要是軟件,包括軟件模擬、跟蹤分析等方法。

  軟件模擬就是先啟動SOFTICE一類的I/O攔截軟件,然后在有軟件狗的情況下啟動受保護軟件,同時,SOFTICE攔截并記錄下受保護軟件與軟件狗接口之間的通信數(shù)據供以后使用。然后通過分析記錄的數(shù)據,編制一個軟件狗接口的仿真程序,用以代替真正的軟件狗。完成后,只需在啟動受保護軟件前先啟動仿真軟件,由仿真軟件與受保護軟件進行數(shù)據交互。USB軟件狗與受保護軟件之間并不直接交換任何密碼,而是由系統(tǒng)時間生成一個隨機數(shù)據,由主機軟件加密后同明文一起傳送給USB軟件狗,由USB軟件狗解密密文并同明文比較。這樣,軟件模擬方法就會失效了。

  在各種軟件狗的軟件解密方法中,以跟蹤分析方法最為強大,具體的有靜態(tài)分析和動態(tài)跟蹤等方法。

靜態(tài)分析方法是用反編譯工具軟件對受保護軟件進行逆向分析,以求找出訪問軟件狗的代碼并進行相應的修改。USB軟件狗采用了API函數(shù)調用與SHELL外殼加密結合的技術,可以有效地對抗靜態(tài)分析方法。即使被使用脫殼工具軟件后外殼被破壞,內部加密函數(shù)的調用仍然能保證保護的有效性。

  動態(tài)跟蹤破解法要求使用者具有豐富的破解經驗。該方法使用調試分析工具軟件,跟蹤控制受保護軟件的整個運行過程,找出與軟件狗間交互部分的判斷代碼并進行修改,以使其跳過對軟件狗的檢測或使檢測結果無效。為對付這種破解方法,USB軟件狗使用了數(shù)據交換隨機噪聲技術和迷宮技術,在程序入口和出口之間包含大量無效判斷跳轉進行干擾,動態(tài)改變執(zhí)行次序,提升抗跟蹤能力。此外,USB軟件狗內部設有時間閘,各種操作必須在規(guī)定的時間內完成。正常操作用時很短,跟蹤操作用時較長,超過規(guī)定時間將返回錯誤結果。

  USB軟件狗除了進行軟件合法性保護外,還包含其他很多有用的功能。它包含有8KB可讀寫的Flash存儲器,可以掉電保存軟件開發(fā)商設置的初始口令以及用于存放關鍵數(shù)據、配置參數(shù)等信息;可以從硬件上對抗共享器共享;可以更加安全穩(wěn)定地實現(xiàn)軟件試用期和使用次數(shù)控制等功能。

4? 結束語

  USB軟件狗作為新一代的軟件狗為軟件保護提供了一種理想的方式,使軟件狗被破解的可能性大大降低;現(xiàn)代密碼技術的快速發(fā)展也為軟件狗技術提供了更加廣闊的發(fā)展空間。但是世界上沒有絕對安全的加密技術,面對層出不窮的威脅計算機安全的行為,各種各樣的加密技術將不斷涌現(xiàn)。作為USB技術和軟件狗技術相結合的產物,USB軟件狗技術無疑會具有十分強大的生命力。

?

參考文獻

1? Compaq,Intel,Microsoft et al.Universal Serial Bus?Specification,Revision 1.1.1998

2? Compaq,Intel,Microsoft et al.USB Class Definitions for Communication Devices,Version 1.1.1999

3? USBN9603 DATASHEET.National Semiconductor?Corporation.2001

4? Jan Axelson著,陳逸等譯.USB大全.北京:中國電力出版社,2001

5? 張念淮,江浩.USB總線接口開發(fā)指南.北京:國防工業(yè)出版社,2001

6? 張國云,彭仕玉,禹柳飛等.基于USB接口的IC卡讀寫器的設計.電子技術,2002;(1)

7? 秦小龍,楊義先.USB密碼鑰及其在Kerberos系統(tǒng)中的應用.計算機工程與應用,2002;(5)

8? 伍云霞,孫繼平.安全認證系統(tǒng)中嵌入USB接口技術.電子技術應用,2002;(3)

9? 徐增祥.USB軟件狗的設計及反破解技術.電子技術應用,2002;(7)

10 胡曉軍,楊正新,郜業(yè)猛等.USB軟件加密卡及其驅動程序的設計與開發(fā).電子工程師,2002;(8)

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。