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

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

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

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

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

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

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

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

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

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

1? USB軟件狗的硬件設計

1.1 USB接口芯片

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

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

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

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

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

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

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

1.2 電路設計

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

?

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

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

2? USB軟件狗的軟件設計

2.1 固件程序的設計

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

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

?

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

2.2 驅動程序的設計

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

3?USB軟件狗反解密技術

  傳統的軟件狗的解密方法主要有硬件和軟件2種。

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

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

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

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

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

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

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

4? 結束語

  USB軟件狗作為新一代的軟件狗為軟件保護提供了一種理想的方式,使軟件狗被破解的可能性大大降低;現代密碼技術的快速發展也為軟件狗技術提供了更加廣闊的發展空間。但是世界上沒有絕對安全的加密技術,面對層出不窮的威脅計算機安全的行為,各種各樣的加密技術將不斷涌現。作為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總線接口開發指南.北京:國防工業出版社,2001

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

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

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

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

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

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]。
主站蜘蛛池模板: 黄a网站| 国产亚洲精品久久久久久久网站 | 精品视频在线观看一区二区三区 | 色偷偷亚洲第一成人综合网址 | 成人 在线欧美亚洲 | 九九国产在线观看 | 日本草草影院 | 欧美另类 videos黑人极品 | 久久99精品久久久久久三级 | 99热在线观看 | 欧美毛片a级毛片免费观 | 久久99九九精品免费 | 青青草国产一区二区三区 | 精品国产亚洲一区二区在线3d | 亚洲精品国产手机 | 日本高清毛片视频在线看 | 成人看片黄a在线观看 | 天堂8在线天堂资源bt | 欧美一级aⅴ毛片 | 久久免费香蕉视频 | 国产亚洲欧美一区二区 | 美女黄色一级片 | 日本精品视频在线播放 | 国产成人高清在线观看播放 | 男女扒开双腿猛进入爽爽视频 | 国产高清国产专区国产精品 | 高清在线一区二区三区亚洲综合 | 日本高清在线中文字幕网 | 亚洲毛片在线观看 | 思99re久久这里只有精品首页 | 亚洲人的天堂男人爽爽爽 | 一区二区不卡久久精品 | 在线免费观看国产 | 伊人波多野结衣 | 亚洲欧美片 | 亚洲毛片在线播放 | 国产精品免费观看视频 | 久久久香蕉视频 | 国内一级野外a一级毛片 | 亚洲欧美国产精品 | 成人毛片视频免费网站观看 |