羸彩彩票

深圳市組創微電子有限公司
銷售部:158 1687 4032采購部:0755-8299 4126行政部:0755-8299 4126
咨詢電話
0755-8299 4141

消費電子

羸彩彩票客戶成功故事與項目成功案例

單芯片方案的USB加密狗設計


加密狗是接在微機端口上的一個軟件保護裝置,它包括主機檢查程序和密鑰(也稱加密盒)兩部分,是屬于軟硬件結合的加密技術,具有加密強度大、可靠性高等特點,現已廣泛應用于計算機軟件保護。加密狗技術已經發展到第4代,它以USB接口、微控制器和EEPROM為核心器件,又稱微狗,在智能性、應用靈活性和抗破解能力等方面都得到了很大提高。

USB加密狗的實現有三種方式:一是最簡單的,不需加密只返回確認信息,即計算機發送數據給加密狗,加密狗接收到數據后驗證是否正確,返回一個確認信息給計算機。二是對數據進行加密,即計算機發送數據給加密狗,加密狗按照某個算法處理接收到的數據,同時加密狗將處理后的數據返回給上位機,由上位機來驗證加密后的數據。以上兩種方式,都只是簡單地實現加密狗的功能,雖然也有加密處理,但是數據經過USB接口傳輸時是明碼傳輸,很容易在計算機上被數據監控軟件獲取數據后破解。三是多重加密的方式,即數據傳輸過程再次進行加密。

現在流行的USB加密狗設計方案是單片機+USB接口芯片+EEPROM存儲器,此方案不但系統復雜,而且具有體積大、硬件成本高等缺點。選擇的設計方案是通過一款內帶EEPROM的單片機,通過普通IO口來模擬USB時序,完成USB1.1協議的通信,利用DES算法來實現保密傳輸與數據加密,最終實現USB加密狗的功能,即通過單芯片就能解決問題。

一、USB加密狗的硬件設計

USB加密狗采用的硬件電路圖如圖1所示,全部功能由一個芯片完成,既降低了硬件成本同時也提高了系統可靠性。電路中選用的單片機是Atmel公司生產的ATtiny85,它是一款基于AVRRISC低功耗CMOS的8位單片機,工作電壓為1.8~5.5V,內嵌8K字節的Flash程序存儲器,512字節的SRAM數據存儲器和512字節的EEPROM,其Flash程序存儲器支持ISP和debugWIR編程方式。采用SOP8的封裝,有6個多功能復用的I/O引腳,都可配置為外部中斷,有2個獨立可設置預分頻的8位定時/計數器。內部還集成了上電復位電路、看門狗、RC振蕩器和片內溫度傳感器等。如圖1所示,從USB接口引入的5V電壓,經過兩個二極管降壓后變為3.6V電壓作為系統電源供給單片機使用。將單片機的第1引腳配置為IO口外接LED用于顯示運行狀態,第5、6引腳配置為IO口用于聯接USB的數據線,第7腳配置為外中斷引腳。為了滿足低速USB設備的1.5M速度時序的讀寫要求,單片機需要達到20MIPS的指令執行速度,故電路中將第2、3腳配置為晶振引腳并連接20MHz的晶振。

圖 1 加密狗電路圖

根據USB的協議規范,USB主機的下游端口D+與D-上都分別連接一個15K的下拉電阻到地,當端口懸空(即沒設備插入)時,輸入端就被兩個下拉電阻拉回到低電平。而USB設備端在D+或者D-上接一個1.5K的上拉電阻連到電源,1.5K的上拉電阻是連接D+還是D-由USB設備的速度來決定。對于全速設備和高速設備的上拉電阻連接到D+上,而低速設備的上拉電阻則是連接到D-上的。當設備插入USB主機的下游端口時,接了上拉電阻的那條數據線的電壓由1.5K的上拉電阻和15K的下拉電阻分壓決定,產生高電平信號,USB主控制器就能檢測到被拉高的數據線是D+還是D-來判斷插入的是什么速度類型的設備。因為本方案所設計的加密狗為低速USB設備,故USB接口的差分數據線D-的上拉電阻R3為1.5K。同時D-通過330Ω的限流電阻R2聯接到單片機ATtiny85的PB0引腳,PB1引腳通過電阻R1聯接到D+和INT0,INT0為單片機的外中斷口,當USB總線上有數據時采用中斷方式觸發。由于D-在總線處于恢復狀態和復位信號狀態時電平不會發生跳變,故而需用D+數據線連接至單片機的外部中斷0(INT0),當有中斷發生時,表示總線上有數據傳輸,此時再由軟件來判斷為何種數據傳輸。

二、加密狗USB接口的實現

用單片機IO口來模擬USB接口時序,即可完成USB接口芯片的功能,包括NRZI編解碼、同步模式的識別、并行/串行轉換、位填充/解除填充、CRC校驗/產生、PID校驗/產生、地址識別和握手評估與產生等功能。其設計的核心是USB數據傳輸的NRZI編解碼,USB數據包的分析和描述符。

USB發送數據的編碼方式采用NRZI編碼:當數據為0時,電平翻轉;當數據為1時,電平不翻轉,為了防止出現長時間電平不變化,所有在數據發送前進行串行化后加入了位填充處理,即當遇到連續6個數據1是時,就強制插入一個數據0,經過位填充后的數據,進行NRZI編碼后發送到USB差分數據線上。USB接收數據的過程則是USB發送數據的相反過程:先進行NRZI解碼,去掉位填充,最后是串行數據轉并行數據。因為USB接受者只能通過USB數據包來獲得同步時鐘,所以在每個USB數據包的最開始都有個同步域(SYNC),這個域固定值為00000001,這個域通過NRZI編碼之后,就是一串方波,接受者可以通過SYNC域來同步之后的數據信號。由于通信過程對時序要求非常嚴格,所以本設計的軟件部分全部使用匯編語言編寫,同時在進行讀寫操作時選擇合適的指令以滿足時序的要求。

USB總線上傳輸的數據是以包為基本單位的。一個包被分成不同的域,根據不同類型的包所包含的域是不一樣的。但是不同的包有共同的特點,就是都是要以SYNC開始緊跟著一個包標識符(PID),最終以包結束符EOP來結束這個包。單片機在接收到EOP結束符后,就開始對USB數據包進行分析確定包的類型并調用相應的函數來處理。

標準的USB設備有5種USB描述符:設備描述符,配置描述符,字符串描述符,接口描述符和端點描述符。一個USB設備只有一個設備描述符,設備描述符里面決定了該設備有多少種配置,每種配置有相對應的配置描述符;同時在配置描述符中又定義了該配置里面有多少個接口,每個接口有相對應的接口描述符;在接口描述符里面又定義了該接口有多少個端點,每個端點有相對應端點描述符;端點描述符定義了端點的大小和類型等等。在USB的協議規范中,沒有USB加密狗這樣的類型,所以在設備描述符中的類代碼為0XFF,即廠商自定義的設備。考慮到加密狗的實際需求,本設計只提供一個普通的數據端口,數據端口只支持中斷傳輸,支持包的長度為8字節。

用軟件模擬USB時序,實現USB接口通信并成功枚舉后,給上層加密狗的功能程序提供的接口函數是ReadSoftdogData和WriteSoftdogData,通過函數ReadSoftdogData采用軟件中斷的方式讀出上位機軟件發來的64位數,然后通過函數WriteSoftdogData把數據返回給上位機。

三、加密處理方法

設計中考慮到設備的安全性及單片機的性能,采用DES加密算法。目前為止,除了用窮舉搜索法對DES算法進行攻擊外,還沒有發現其他更有效的辦法,因此DES算法具有極高的安全性。DES算法使用64位的密鑰,其中只有56位有效,而56位長的密鑰的窮舉空間為256。DES算法的加密流程圖如圖2所示。DES解密過程與加密過程類似,文中將不做介紹。

圖 2 DES算法的加密流程圖

本設計的加密狗加密具體過程如圖3所示,上位機產生一個隨機數D1,并將隨機數進行加密處理成D2發送給USB加密狗,即實現傳輸的加密。加密狗收到數據D2后根據約定的密鑰對數據進行解密成D1。接著將數據進行另一套加密變成數據成D3,然后進行傳輸加密成D4,最后將D4返回給計算機。計算機得到數據D4后,進行兩次解密得到數據D1,完成了加密狗的確認功能。這樣兩級的加密方式,有效地防止了通過數據監控軟件獲取密碼的行為。

四、USB加密狗功能的實現

本加密狗的功能是保護軟件版權,當用戶從軟件供應商處購買軟件時,供應商會把加密狗的相關信息寫入到加密狗中,如初始密碼、所支持的計算機數量、軟件可使用的次數等等。這些信息都可通過加密算法存儲在單片機片內的EEPROM中。用戶在運行軟件時,加密狗會根據使用情況更新存儲在EEP-ROM中的信息。具體的功能流程如圖4所示:1)插入USB后完成加密狗設備的枚舉;2)枚舉成功后上位機軟件產生一組32位的隨機數,并將這組隨機通過USB發給加密狗;3)加密狗接收到上位機發過來的32位隨機數后根據約定的加密算法,對這個隨機數進行運算,并將結果返回上位機軟件;4)上位機軟件接收到數據后,也運行加密反運行算法,看是否能返回原來的隨機數,如果成功反回原來的隨機數則此加密狗是合法的,從而達到保護軟件版權的目的。

圖 4 加密功能流程圖

五、加密狗安全性能測試

主要使用USB協議分析軟件USBlyzer、DES加解密軟件IDES_Tool和筆者自行設計的一個應用軟件來共同測試。USBlyzer是USB協議分析軟件,該軟件可實時監測USB接口數據,有抓包、解包和協議分析等功能,也可以來破解明文傳輸(不加密)的USB加密狗的,同時通過這個軟件可以看到加密狗的類型和設備名稱。

總結

本設計基于單芯片為解決方案,從軟件著手簡化設計。用軟件來實現硬件的功能,通過DES加密算法實現保密傳輸,達到降低成本,提高系統可靠性、安全性的要求,為軟件版權保護提供了一種理想的方式。因為內部有EEPROM,可以給軟件提供商甚至用戶進行二次開發。

以上就是我們深圳市組創微電子有限公司為您介紹的單芯片方案USB加密狗設計開發示例。如果您有USB加密狗控制板開發需求,可以放心交給我們。我們代理多種單片機、語音芯片、雙模藍牙IC、wifi芯片。品牌有松翰單片機、應廣單片機、杰理藍牙、安凱藍牙、全志、瑞昱(realtek)。我們的技術服務范圍有:PCB設計、單片機開發、藍牙方案、軟硬件定制開發、APP開發、小程序開發、微信公眾號開發等。還可以承接智能電子產品方案設計、生活電器開發、美容儀器研發、物聯網平臺應用、智能家居控制系統、TWS耳機、藍牙耳機音箱開發、兒童益智玩具方案開發、電子教育產品方案設計等。