個人消費類電子
USB加密狗方案開發(fā)
加密狗是接在微機端口上的一個軟件保護裝置,它包括主機檢查程序和密鑰(也稱加密盒)兩部分,是屬于軟硬件結合的加密技術,具有加密強度大、可靠性高等特點,現(xiàn)已廣泛應用于計算機軟件保護。加密狗技術已經(jīng)發(fā)展到第4代,它以USB接口、微控制器和EEPROM為核心器件,又稱微狗,在智能性、應用靈活性和抗破解能力等方面都得到了很大提高。
USB加密狗的實現(xiàn)有三種方式:一是最簡單的,不需加密只返回確認信息,即計算機發(fā)送數(shù)據(jù)給加密狗,加密狗接收到數(shù)據(jù)后驗證是否正確,返回一個確認信息給計算機。二是對數(shù)據(jù)進行加密,即計算機發(fā)送數(shù)據(jù)給加密狗,加密狗按照某個算法處理接收到的數(shù)據(jù),同時加密狗將處理后的數(shù)據(jù)返回給上位機,由上位機來驗證加密后的數(shù)據(jù)。以上兩種方式,都只是簡單地實現(xiàn)加密狗的功能,雖然也有加密處理,但是數(shù)據(jù)經(jīng)過USB接口傳輸時是明碼傳輸,很容易在計算機上被數(shù)據(jù)監(jiān)控軟件獲取數(shù)據(jù)后破解。三是多重加密的方式,即數(shù)據(jù)傳輸過程再次進行加密。
現(xiàn)在流行的USB加密狗設計方案是單片機+USB接口芯片+EEPROM存儲器,此方案不但系統(tǒng)復雜,而且具有體積大、硬件成本高等缺點。選擇的設計方案是通過一款內(nèi)帶EEPROM的單片機,通過普通IO口來模擬USB時序,完成USB1.1協(xié)議的通信,利用DES算法來實現(xiàn)保密傳輸與數(shù)據(jù)加密,最終實現(xiàn)USB加密狗的功能,即通過單芯片就能解決問題。
一、USB加密狗的硬件設計
USB加密狗采用的硬件電路圖如圖1所示,全部功能由一個芯片完成,既降低了硬件成本同時也提高了系統(tǒng)可靠性。電路中選用的單片機是Atmel公司生產(chǎn)的ATtiny85,它是一款基于AVRRISC低功耗CMOS的8位單片機,工作電壓為1.8~5.5V,內(nèi)嵌8K字節(jié)的Flash程序存儲器,512字節(jié)的SRAM數(shù)據(jù)存儲器和512字節(jié)的EEPROM,其Flash程序存儲器支持ISP和debugWIR編程方式。采用SOP8的封裝,有6個多功能復用的I/O引腳,都可配置為外部中斷,有2個獨立可設置預分頻的8位定時/計數(shù)器。內(nèi)部還集成了上電復位電路、看門狗、RC振蕩器和片內(nèi)溫度傳感器等。如圖1所示,從USB接口引入的5V電壓,經(jīng)過兩個二極管降壓后變?yōu)?.6V電壓作為系統(tǒng)電源供給單片機使用。將單片機的第1引腳配置為IO口外接LED用于顯示運行狀態(tài),第5、6引腳配置為IO口用于聯(lián)接USB的數(shù)據(jù)線,第7腳配置為外中斷引腳。為了滿足低速USB設備的1.5M速度時序的讀寫要求,單片機需要達到20MIPS的指令執(zhí)行速度,故電路中將第2、3腳配置為晶振引腳并連接20MHz的晶振。
根據(jù)USB的協(xié)議規(guī)范,USB主機的下游端口D+與D-上都分別連接一個15K的下拉電阻到地,當端口懸空(即沒設備插入)時,輸入端就被兩個下拉電阻拉回到低電平。而USB設備端在D+或者D-上接一個1.5K的上拉電阻連到電源,1.5K的上拉電阻是連接D+還是D-由USB設備的速度來決定。對于全速設備和高速設備的上拉電阻連接到D+上,而低速設備的上拉電阻則是連接到D-上的。當設備插入USB主機的下游端口時,接了上拉電阻的那條數(shù)據(jù)線的電壓由1.5K的上拉電阻和15K的下拉電阻分壓決定,產(chǎn)生高電平信號,USB主控制器就能檢測到被拉高的數(shù)據(jù)線是D+還是D-來判斷插入的是什么速度類型的設備。因為本方案所設計的加密狗為低速USB設備,故USB接口的差分數(shù)據(jù)線D-的上拉電阻R3為1.5K。同時D-通過330Ω的限流電阻R2聯(lián)接到單片機ATtiny85的PB0引腳,PB1引腳通過電阻R1聯(lián)接到D+和INT0,INT0為單片機的外中斷口,當USB總線上有數(shù)據(jù)時采用中斷方式觸發(fā)。由于D-在總線處于恢復狀態(tài)和復位信號狀態(tài)時電平不會發(fā)生跳變,故而需用D+數(shù)據(jù)線連接至單片機的外部中斷0(INT0),當有中斷發(fā)生時,表示總線上有數(shù)據(jù)傳輸,此時再由軟件來判斷為何種數(shù)據(jù)傳輸。
二、加密狗USB接口的實現(xiàn)
用單片機IO口來模擬USB接口時序,即可完成USB接口芯片的功能,包括NRZI編解碼、同步模式的識別、并行/串行轉換、位填充/解除填充、CRC校驗/產(chǎn)生、PID校驗/產(chǎn)生、地址識別和握手評估與產(chǎn)生等功能。其設計的核心是USB數(shù)據(jù)傳輸?shù)腘RZI編解碼,USB數(shù)據(jù)包的分析和描述符。
USB發(fā)送數(shù)據(jù)的編碼方式采用NRZI編碼:當數(shù)據(jù)為0時,電平翻轉;當數(shù)據(jù)為1時,電平不翻轉,為了防止出現(xiàn)長時間電平不變化,所有在數(shù)據(jù)發(fā)送前進行串行化后加入了位填充處理,即當遇到連續(xù)6個數(shù)據(jù)1是時,就強制插入一個數(shù)據(jù)0,經(jīng)過位填充后的數(shù)據(jù),進行NRZI編碼后發(fā)送到USB差分數(shù)據(jù)線上。USB接收數(shù)據(jù)的過程則是USB發(fā)送數(shù)據(jù)的相反過程:先進行NRZI解碼,去掉位填充,最后是串行數(shù)據(jù)轉并行數(shù)據(jù)。因為USB接受者只能通過USB數(shù)據(jù)包來獲得同步時鐘,所以在每個USB數(shù)據(jù)包的最開始都有個同步域(SYNC),這個域固定值為00000001,這個域通過NRZI編碼之后,就是一串方波,接受者可以通過SYNC域來同步之后的數(shù)據(jù)信號。由于通信過程對時序要求非常嚴格,所以本設計的軟件部分全部使用匯編語言編寫,同時在進行讀寫操作時選擇合適的指令以滿足時序的要求。
USB總線上傳輸?shù)臄?shù)據(jù)是以包為基本單位的。一個包被分成不同的域,根據(jù)不同類型的包所包含的域是不一樣的。但是不同的包有共同的特點,就是都是要以SYNC開始緊跟著一個包標識符(PID),最終以包結束符EOP來結束這個包。單片機在接收到EOP結束符后,就開始對USB數(shù)據(jù)包進行分析確定包的類型并調(diào)用相應的函數(shù)來處理。
標準的USB設備有5種USB描述符:設備描述符,配置描述符,字符串描述符,接口描述符和端點描述符。一個USB設備只有一個設備描述符,設備描述符里面決定了該設備有多少種配置,每種配置有相對應的配置描述符;同時在配置描述符中又定義了該配置里面有多少個接口,每個接口有相對應的接口描述符;在接口描述符里面又定義了該接口有多少個端點,每個端點有相對應端點描述符;端點描述符定義了端點的大小和類型等等。在USB的協(xié)議規(guī)范中,沒有USB加密狗這樣的類型,所以在設備描述符中的類代碼為0XFF,即廠商自定義的設備??紤]到加密狗的實際需求,本設計只提供一個普通的數(shù)據(jù)端口,數(shù)據(jù)端口只支持中斷傳輸,支持包的長度為8字節(jié)。
用軟件模擬USB時序,實現(xiàn)USB接口通信并成功枚舉后,給上層加密狗的功能程序提供的接口函數(shù)是ReadSoftdogData和WriteSoftdogData,通過函數(shù)ReadSoftdogData采用軟件中斷的方式讀出上位機軟件發(fā)來的64位數(shù),然后通過函數(shù)WriteSoftdogData把數(shù)據(jù)返回給上位機。
三、加密處理方法
設計中考慮到設備的安全性及單片機的性能,采用DES加密算法。目前為止,除了用窮舉搜索法對DES算法進行攻擊外,還沒有發(fā)現(xiàn)其他更有效的辦法,因此DES算法具有極高的安全性。DES算法使用64位的密鑰,其中只有56位有效,而56位長的密鑰的窮舉空間為256。DES算法的加密流程圖如圖2所示。DES解密過程與加密過程類似,文中將不做介紹。
本設計的加密狗加密具體過程如圖3所示,上位機產(chǎn)生一個隨機數(shù)D1,并將隨機數(shù)進行加密處理成D2發(fā)送給USB加密狗,即實現(xiàn)傳輸?shù)募用?。加密狗收到?shù)據(jù)D2后根據(jù)約定的密鑰對數(shù)據(jù)進行解密成D1。接著將數(shù)據(jù)進行另一套加密變成數(shù)據(jù)成D3,然后進行傳輸加密成D4,最后將D4返回給計算機。計算機得到數(shù)據(jù)D4后,進行兩次解密得到數(shù)據(jù)D1,完成了加密狗的確認功能。這樣兩級的加密方式,有效地防止了通過數(shù)據(jù)監(jiān)控軟件獲取密碼的行為。
四、USB加密狗功能的實現(xiàn)
本加密狗的功能是保護軟件版權,當用戶從軟件供應商處購買軟件時,供應商會把加密狗的相關信息寫入到加密狗中,如初始密碼、所支持的計算機數(shù)量、軟件可使用的次數(shù)等等。這些信息都可通過加密算法存儲在單片機片內(nèi)的EEPROM中。用戶在運行軟件時,加密狗會根據(jù)使用情況更新存儲在EEP-ROM中的信息。具體的功能流程如圖4所示:1)插入USB后完成加密狗設備的枚舉;2)枚舉成功后上位機軟件產(chǎn)生一組32位的隨機數(shù),并將這組隨機通過USB發(fā)給加密狗;3)加密狗接收到上位機發(fā)過來的32位隨機數(shù)后根據(jù)約定的加密算法,對這個隨機數(shù)進行運算,并將結果返回上位機軟件;4)上位機軟件接收到數(shù)據(jù)后,也運行加密反運行算法,看是否能返回原來的隨機數(shù),如果成功反回原來的隨機數(shù)則此加密狗是合法的,從而達到保護軟件版權的目的。
五、加密狗安全性能測試
主要使用USB協(xié)議分析軟件USBlyzer、DES加解密軟件IDES_Tool和筆者自行設計的一個應用軟件來共同測試。USBlyzer是USB協(xié)議分析軟件,該軟件可實時監(jiān)測USB接口數(shù)據(jù),有抓包、解包和協(xié)議分析等功能,也可以來破解明文傳輸(不加密)的USB加密狗的,同時通過這個軟件可以看到加密狗的類型和設備名稱。
總結
本設計基于單芯片為解決方案,從軟件著手簡化設計。用軟件來實現(xiàn)硬件的功能,通過DES加密算法實現(xiàn)保密傳輸,達到降低成本,提高系統(tǒng)可靠性、安全性的要求,為軟件版權保護提供了一種理想的方式。因為內(nèi)部有EEPROM,可以給軟件提供商甚至用戶進行二次開發(fā)。
以上就是我們深圳市組創(chuàng)微電子有限公司為您介紹的單芯片方案USB加密狗設計開發(fā)示例。如果您有USB加密狗控制板開發(fā)需求,可以放心交給我們。我們代理多種單片機、語音芯片、雙模藍牙IC、wifi芯片。品牌有松翰單片機、應廣單片機、杰理藍牙、安凱藍牙、全志、瑞昱(realtek)。我們的技術服務范圍有:PCB設計、單片機開發(fā)、藍牙方案、軟硬件定制開發(fā)、APP開發(fā)、小程序開發(fā)、微信公眾號開發(fā)等。還可以承接智能電子產(chǎn)品方案設計、生活電器開發(fā)、美容儀器研發(fā)、物聯(lián)網(wǎng)平臺應用、智能家居控制系統(tǒng)、TWS耳機、藍牙耳機音箱開發(fā)、兒童益智玩具方案開發(fā)、電子教育產(chǎn)品方案設計等。
精選方案推薦
- 返回頂部