基于MC9S08JS16和AES的USB Key設計
隨著互聯網與電子商務的發展,網絡信息安全問題顯得尤為重要。數據保密變換或信息加密,成為對計算機信息進行保護的最實用和最可靠的方法。各種加密技術如軟件自校驗、密碼加密、鑰匙盤等軟加密技術和擴展卡、并行口軟件加密狗等硬加密技術應運而生,而USB接口密鑰(USB Key)憑借其獨特的優勢和極高的安全性備受青睞。
USB Key是一種通過USB(通用串行總線)接口直接與計算機相連、具有密碼驗證功能、可靠高速的小型存儲設備。USB Key的設計小巧精致、攜帶方便。由于是USB接口設備,USB Key通過USB端口提供的電源來工作,不需要額外的電源。USB Key自身所具備的存儲器用于存儲一些個人信息或證書,USB Key的內部密碼算法可以為數據傳輸提供安全的管道,適用于單機或網絡應用的安全防護產品。
1 系統工作原理及硬件設計
USB Key(簡稱Ukey)通過USB接口與PC機相連,用戶可以通過位于PC機的客戶端向Ukey發出命令,Ukey通過內部固件中算法實現數據加密,然后將加密后的數據返回客戶端。其工作原理如圖1所示。設計選用了8位USB微控制器(MCU)MC9S08JS16,MC9S08JS16型MCU內置全速USB2.0控制器并集成了1個USB收發器,同時含有高達16 KB的Flash和512 B的RAM。
用戶可以通過片內專用的3.3 V穩壓器或VUSB3.3引腳外接3.3 V電源為USB收發器和上拉電阻提供電源,這里采用片內的3.3 V穩壓器為USB收發器提供電源(須使能USBCTL0寄存器的USBVREN位),硬件連接圖如圖2所示。
USB模塊需要兩個時鐘源,分別為24 MHz總線時鐘和48 MHz參考時鐘。48 MHz時鐘源由MCGOUT直接產生,為了獲得48MHz時鐘速率,MCG(通用時鐘產生器)必須被適當配置為PLL使能的外部占用模式PEE(PLL EngagedExternal),外接一晶振。MC9S08JS16的USB模塊選擇內部上拉電阻(使能USBCTL0寄存器USBPU位)USB主機通過檢測上拉電阻檢測USB設備的聯結并確定設備速度。
2 系統軟件設計
2.1 USB設備初始化
圖3為USB模塊初始化流程圖,固件代碼初始化USB模塊,使其準備聯結到USB主機。通過設置USBCTL0寄存器的RESET位,重置USB模塊和所有寄存器為默認狀態,完成對USB RAM,BD(buffer descriptor)寄存器的初始化,特別是對于端點0的BD,設置EPAD寄存器,指示端點寄存器在USB RAM中的存儲,為了接收DATA0數據包,狀態與控制寄存器設置為(DTS=1,OWN=1,DATAO/1=0)。使能端點0,并根據硬件設計配置USB模塊,使能上拉電阻,3.3 V穩壓器與PHY。開放USB模塊和USB中斷,設備被置為連接狀態。
2.2 AES加密算法
系統采用128位高級加密標準AES(Riindael)算法進行數據加密。AES(Advanced Encxyption Standard)是美國國家標準與技術研究所用于加密電子數據的規范,用于代替現有的DES算法,AES作為新一代的數據加密標準匯聚了強安全性、高性能、高效率、易用和靈活等優點,被預期能成為公認的加密包括金融、電信和政府數字信息的方法。
AES算法是基于置換和代替的。置換是數據的重新排列,而代替是用一個單元數據替換另一個。AES加密例程開始是拷貝16字節的輸入數組到一個名為State(態)的4x4字節矩陣中。AES算法加密過程如圖4所示。
評論