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