基於CH375的嵌入式USB檔案加解密系統的設計
| [日期:2008-7-21] |
來源:電子技術應用 作者:華中科技大學 電子與資訊工程系, 湖北 武漢 430074 |
[字型:大 中 小] |
隨著資訊與通訊技術的飛速發展,資訊安全與通訊加解密在個人隱私特別在軍事情報和國家機密等方面顯得尤為突出。資料加密技術無疑是保護資訊安全最有效一種方法。傳統的檔案加密方式是基於PC平台的,不能滿足移動場合的應用需求。基於PC機的加密技術使明文到密文必須經過PC機環節,在不能保證PC機軟硬體絕對可靠的情況下,可能失密。基於嵌入式設計的本系統可以便攜使用,並在完成加密或解密過程後可將晶片程式擦除或將晶片破壞,避免加解密硬體環節的失密。本設計提高了系統的安全性,提供了便攜使用的可能,有一定的理論意義和較高的使用價值。
1 USB HOST控制器CH375
CH375 是一款USB匯流排的通用介面晶片,支援USB HOST主機方式和USB DEVICE/SLAVE裝置方式。CH375具有8位元據匯流排和讀、寫、片選控制線以及中斷輸出,可以方便地掛接到單片機/DSP/MCU/MPU等控制器的系統匯流排上。
CH375的USB 主機方式支援常用的USB 全速裝置,外部單片機可以通過CH375 按照相應的USB 協議與USB 裝置通訊。CH375 還內建了處理海量存放裝置的專用通訊協定的韌體,外部單片機可以直接以扇區為基本單位讀寫常用的USB 存放裝置(包括USB 硬碟/USB 快閃記憶體盤/隨身碟)[1]。CH375的介面框圖1所示。
2 系統結構
嵌入式檔案加解密系統主要分為四個部分:運算處理模組、按鍵與狀態顯示模組、USB通訊模組、電源模組。系統結構框圖2所示。
運算處理模組由P89V51RD2單片機與32KB的RAM 62256及其外圍電路組成,負責加解密計算與整個系統的控制。按鍵產生加解密操作的控制訊號,LED顯示當前系統狀態。USB通訊模組對USB存放裝置進行資料轉送與檔案操作。電源模組為本系統供電並且為USB匯流排提供5V電源電壓。
3 基於CH375的USB HOST在本系統的硬體設計實現
3.1 CH375與P89V51RD2單片機的介面部分
CH375與P89V51RD2單片機的介面3所示。CH375 的TXD引腳通過1kΩ左右的下拉電阻接地或者直接接地,使CH375 工作於並口方式。CH375的CS#串連到單片機的A15 引腳,連接埠位址範圍為0000H~7FFFH,為了避免衝突,外部RAM地址在8000H 以上。
電容C3用於CH375 內部電源節點退耦,C3是容量為0.01μF 的獨石或高頻瓷片電容。電容C4和C5用於外部電源退耦,C4是容量為0.1μF的獨石或高頻瓷片電容。晶體X1、電容C1和C2組成CH375的時鐘振蕩電路。USB-HOST主機方式要求時鐘頻率比較準確,X1的頻率為12MHz±0.4‰,C1和C2是容量約為15pF的獨石或高頻瓷片電容。
如果電源上電過程較慢並且電源斷電後放電時間較長,將導致CH375不能可靠複位。所以在RSTI引腳與VCC 之間跨接一個容量為0.47μF 的電容C11,並且可以減少幹擾。
在設計印刷線路板PCB 時,需要注意:退耦電容C3 和C4盡量靠近CH375 的相連引腳;使UD+和UD-訊號線貼近平行布線,盡量在兩側提供地線或者覆銅,減少來自外界的訊號幹擾;盡量縮短XI和XO引腳相關訊號線的長度,減少高頻時鐘對外界的幹擾,並應該在相關元器件周邊環繞地線或者覆銅。
3.2 P89V51RD2單片機擴充部分
P89V51RD2單片機擴充部分電路圖4所示。MCS-51 單片機用U2鎖存A7~A0 地址。U3用於簡單的地址解碼,產生所需的片選訊號,使本系統CH375 晶片的片選位址範圍為B000H~BFFFH,本系統中CH375 需要佔用兩個地址:地址BXX1H用於寫命令,地址BXX0H 用於讀寫資料。
3.3 供電電路部分
供電部分電路5所示,用於對USB匯流排供電。設計時除了要考慮自身功耗,更重要的是要保證對匯流排提供直流5V/500mA的供電。本設計所用的晶片都工作在直流5V下,所以選用常見的直流電壓轉換晶片μA7805。該系統工作時,只須外接能夠輸出直流電壓為7V~20V的電來源配接器即可(可外掛鋰電池組或駁接車載12V電源便攜使用)。
4 系統軟體設計
4.1系統工作流程圖
CH375對檔案的讀寫入模式分為扇區模式和位元組模式。本系統選用速度較快的扇區模式,每次讀取4個扇區資料,迴圈讀寫至檔案結束。工作流程6所示。
4.2 單片機軟體
單片機軟體編寫比較複雜,以下是CH375程式編寫時的要點:
CH375晶片佔用兩個地址位,單片機A0 引腳為選擇命令資料連接埠,並通過8 位並口對CH375 晶片進行讀寫,所有操作命令都是由一個命令碼、若干個輸入資料和若干個輸出資料群組成,部分命令不需要輸入資料,部分命令沒有輸出資料[2]。
單片機對CH375的操作步驟如下:
(1)在A0=1時向命令連接埠寫入命令代碼;
(2)如果該命令具有輸入資料,則在A0=0 時依次寫入輸入資料,每次一個位元組;
(3)如果該命令具有輸出資料,則在A0=0 時依次讀取輸出資料,每次一個位元組;
(4)命令完成,可以暫停或者轉到(1)繼續執行下一個命令。CH375 晶片專門用於處理USB 通訊,在接收到資料後或者發送完資料後,CH375以中斷方式通知單片機進行處理。CH375內部中斷邏輯圖7所示。
單片機通過CH375晶片接收資料的處理步驟如下:
(1)當CH375接收到USB主機發來的資料時,首先鎖定當前USB 緩衝區,防止被後續資料覆蓋,然後將INT#引腳設定為低電平,向單片機請求中斷。
(2)單片機進入中斷服務程式時,首先執行GET_STATUS 命令擷取中斷狀態。
(3)CH375在GET_STATUS 命令完成後,將INT#引腳恢複為高電平,取消插斷要求。
(4)由於通過上述GET_STATUS 命令擷取的中斷狀態是“下傳成功”,所以單片機執行RD_USB_DATA 命令從CH375讀取接收到的資料。
(5)CH375在RD_USB_DATA 命令完成後釋放當前緩衝區,從而可以繼續USB通訊。
(6)單片機退出中斷服務程式。
單片機通過CH375晶片發送資料的處理步驟如下:
(1)單片機執行WR_USB_DATA 命令向CH375寫入要發送的資料。
(2)CH375被動地等待USB 主機在需要時取走資料。
(3)USB主機取走資料後,CH375首先鎖定當前USB緩衝區,防止重複發送資料,然後將INT#引腳設定為低電平,向單片機請求中斷。
(4)單片機進入中斷服務程式時,首先執行GET_STATUS 命令擷取中斷狀態。
(5)CH375在GET_STATUS 命令完成後,將INT#引腳恢複為高電平,取消插斷要求。
(6)由於通過上述GET_STATUS 命令擷取的中斷狀態是“上傳成功”,所以單片機執行WR_USB_DATA 命令向CH375寫入另一組要發送的資料。如果沒有後續資料需要發送,單片機就不必執行WR_USB_DATA 命令。
(7)單片機執行UNLOCK_USB 命令。
(8)CH375在UNLOCK_USB 命令完成後釋放當前緩衝區,從而可以繼續USB 通訊。
(9)單片機退出中斷服務程式。
(10)如果單片機已經寫入了另一組要發送的資料,則轉到(2),否則結束。
4.3 密碼編譯演算法設計
本系統採用一種基於隨機因子的輕量級密碼編譯演算法。
傳統的置換和替代加密技術比較脆弱,同一明文M在同一檔案或所有檔案中均為相同的密文C,因此很容易通過頻度統計的辦法破解。針對傳統的置換和替代加密技術的缺點,本系統在對檔案進行加密時加入隨機因子,使得明文隨著位置的不同其對應密文也有所不同,其基本過程如下:
(1)首先將明文M採取一定的方法“亂”排序:例如將每10個位元組分為一組,先在每組內倒序排列,再在組內採取奇偶位置對調,從而完成分組換位的目的。
(2)其次對“亂”排序的二次明文M進行加密處理:加密各明文到密文的轉換不是固定的,而是隨機的,稱為隨機加密因子。基本流程如下:
①取出二次明文當前需加密的位元組SB。
②計算SB的隨機加密因子Factor。
③變換SB到DB,DB=SB XOR Factor[3]。
其中,SB為明文,DB為加密後的密文。隨機加密因子Factor由兩部分組成:密鑰Key和SB的位置位移量p(mod 256)。設密鑰為:“Huazhong University of Seience and Technology EI DSP Laboratory Zoe”共69個字元。當前需要加密的二次明文為字母A(SB的ASCII碼為65,其在檔案中的位移量p為第234個位元組),則密鑰Key計算方法如下:234 mod 69=27,密鑰中第27個字母為i(ASCII碼為105),所以Key=105。隨機加密因子Factor=(105+234=339)mod 256=73。密文DB=SB XOR Factor=65 XOR 73=8。如果第236個位元組也為字母A,可計算出所對應的Factor=85,密文為17。可見同一明文在檔案中的位置不同,相應的密文也有所不同,這樣就難以通過頻度統計的辦法破解。
本系統硬體可以與計算複雜度不高的任何密碼編譯演算法配合使用。
5系統的實驗結果與討論
5.1供電測試
按照USB規範,USB匯流排接入USB裝置時,需要匯流排提供大約500mA電流。接入USB存放裝置時產生瞬時電壓降不可避免。如果壓降過大,會導致系統不能正常工作。在此,有必要對系統工作時的電壓進行監測。測試結果,接入USB裝置瞬間,電壓高於4.6V,系統無異常。
5.2檔案加密準確性測試
使用本系統分別對隨身碟中大小為1KB~1MB的10個檔案進行加密操作,將得到的密文用UltraEdite-32與正確密文進行自動比對。結果全部正確。可見其加密過程可靠性較好。
5.3 速度測試
使用本系統分別對隨身碟中大小為1KB~10MB的10個檔案進行加密操作,分別記錄完成時間(從按鍵動作到LED顯示完成)。測得平均加密速度為35KB/s,與CH375公布的100KB/s~200KB/s的讀寫速度有差距。其原因是加密操作涉及讀明文與寫密文操作,資料轉送量加倍;而且加密計算也需要佔用單片機的工作時間。提高速度可使用高效能的MCU,也可對部分子程式改用組合語言混合編程。
本文詳細介紹了基於CH375和51單片機的嵌入式USB檔案加解密系統的設計。該系統使檔案加解密脫離了PC機,便捷易用,並使用隨機加密因子使密文抗破解能力比傳統方法有很大提高。
參考文獻
[1] 馬偉.電腦USB系統原理及其主/從機設計[M].北京:北京航空航天大學出版社,2004.
[2] USB匯流排通用介面晶片CH375 隨身碟檔案級子程式庫說明.南京沁恒電子有限公司,2004.
[3] 石林祥,賀海暉,魏淑桃. 一種使用檔案加密方法的實現,電腦工程,2004,(12).