文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)04-0010-03
移動存儲產(chǎn)品已廣泛應(yīng)用于各行各業(yè),是不可或缺的信息交換載體,特別在日常辦公系統(tǒng)中,以U盤、固態(tài)移動硬盤為代表的存儲介質(zhì)的使用日益普遍。而在實際應(yīng)用中,移動存儲設(shè)備易丟失、易損壞、易染病毒、不可控的特性也使數(shù)據(jù)安全無法得到充分保證。因遺失、暴力破解、主動泄密、木馬攻擊等方式導(dǎo)致的泄密事件也在逐漸上升[1]。為了解決這一問題,國內(nèi)外已經(jīng)研制出多款相關(guān)安全產(chǎn)品,但是這些安全產(chǎn)品大多采用單一算法或固定的幾種算法,其靈活性和安全性都不夠高,無法滿足不同設(shè)計的安全需求[2]。
針對現(xiàn)有安全SoC存在的問題,本文基于高性能嵌入式CPU構(gòu)建并設(shè)計了一款密碼SoC平臺。該SoC平臺采用自主設(shè)計的安全協(xié)處理器執(zhí)行密碼操作,經(jīng)驗證可適用于三類主要的密碼算法[3]:對稱密鑰加密算法、散列算法和公開密鑰加密算法。此外,設(shè)計了高性能NAND Flash控制器,支持外接多種類型的NAND Flash芯片(SLC、MLC 和TLC),最大支持容量為160 GB。本設(shè)計可應(yīng)用于加密U盤、加密U盤KEY、加密移動硬盤、高速加密流轉(zhuǎn)接器等設(shè)備中。
1 硬件設(shè)計
1.1 系統(tǒng)架構(gòu)
本文提出的密碼SoC架構(gòu)如圖1所示。其中集成了兩種處理器核,分別是通用處理器(LEON2)和4個安全協(xié)處理器(Security ASIP),兩者通過系統(tǒng)總線相連。所有涉及加解密的運算都被映射到安全協(xié)處理器中執(zhí)行。DMA控制器負(fù)責(zé)把將要執(zhí)行的加解密任務(wù)按照CPU的配置分配到各安全處理器中,CPU只承擔(dān)控制和部分?jǐn)?shù)據(jù)傳輸任務(wù),絕大部分的運算由安全協(xié)處理器完成,CPU在大部分時間處于掛起(suspend)狀態(tài),直到有中斷將其喚醒。片上存儲器主要包括EFlash/SRAM,用于存儲操作系統(tǒng)引導(dǎo)程序、用戶程序等;物理噪聲源主要用于產(chǎn)生真隨機(jī)數(shù),生成密碼運算時的消息密鑰;兩個USB-OTG 接口可根據(jù)應(yīng)用需求設(shè)置成Host、Device 或OTG,支持多達(dá)6 個端點,可設(shè)置成多重復(fù)合設(shè)備,最大限度地滿足用戶的設(shè)計需求;NAND Flash控制器負(fù)責(zé)產(chǎn)生符合NAND Flash接口操作規(guī)范的時序信號,帶有ECC校驗?zāi)K,每512 B可修正位數(shù)為1 bit或8 bit,支持外接8片NAND Flash。另外還包含有低速通信接口、定時器、中斷控制器、存儲保護(hù)單元、功耗管理單元等輔助模塊,用于完成平臺的其他功能。
1.2 安全協(xié)處理器結(jié)構(gòu)
分析現(xiàn)有的安全存儲設(shè)備[4]可以發(fā)現(xiàn),在使用存儲設(shè)備之前,必須對使用者進(jìn)行身份驗證;文件讀寫時,必須對數(shù)據(jù)進(jìn)行加解密操作;為了保證數(shù)據(jù)的完整性,必須對數(shù)據(jù)進(jìn)行完整性驗證操作。所以,密碼SoC必須能夠靈活處理對稱、公鑰和雜湊三類算法,這個任務(wù)主要由安全協(xié)處理器完成。在進(jìn)行安全協(xié)處理器的設(shè)計之前,必須對各類密碼的執(zhí)行特點進(jìn)行分析。由專門的工具[5]分析可以得出各種密碼算法的執(zhí)行特點。部分AES算法的計算特征分析結(jié)果如表1所示。
對各類密碼算法的特點進(jìn)行分析后,本文提出了如圖2所示的安全協(xié)處理器架構(gòu)。該安全協(xié)處理器基于傳統(tǒng)的RISC處理器結(jié)構(gòu)所設(shè)計,分為取指令(IF)級、譯碼(ID)級、執(zhí)行(EXE)級/memory訪存級和寫回(write)級四級,能支持標(biāo)準(zhǔn)的RISC指令,并且還能執(zhí)行一些專門設(shè)計的特殊指令。在執(zhí)行級,不僅有處理正常RISC標(biāo)準(zhǔn)指令的ALU單元,還有專用的硬件功能單元、PTLU(Parallel Table Look-Up)和MHU(Mul/Div unit&Hash Unit),用來對算法中比較耗時的運算(如查找表、模乘等操作)進(jìn)行加速。為了加快安全協(xié)處理器的指令和數(shù)據(jù)的存取速度,在協(xié)處理器內(nèi)部分別嵌入1 KB大小的指令RAM和數(shù)據(jù)RAM,用來存放協(xié)處理器的指令和數(shù)據(jù)。該協(xié)處理器指令集不僅包括標(biāo)準(zhǔn)的算術(shù)和邏輯運算指令,還包括專用的密碼運算指令,如PTAES、 PTW、MOD_MUL等。
1.3 NAND Flash控制器設(shè)計
本文設(shè)計的NAND Flash控制器[7]結(jié)構(gòu)如圖3所示。NAND Flash控制器包含總線接口模塊、DMA握手接口模塊、控制狀態(tài)機(jī)轉(zhuǎn)換的主控邏輯模塊,用以緩沖數(shù)據(jù)、收發(fā)命令和狀態(tài)字的緩沖器(buffer);提供ECC校驗糾錯功能的ECC模塊和直接控制NAND Flash存儲體的接口模塊。
總線接口模塊負(fù)責(zé)接收CPU發(fā)送的指令,將收發(fā)數(shù)據(jù)送至相應(yīng)數(shù)據(jù)寄存器和指令寄存器,并將狀態(tài)寄存器內(nèi)容返回給CPU核;主控邏輯模塊負(fù)責(zé)整個Flash控制器的控制工作,包含指令、狀態(tài)、配置、數(shù)據(jù)、頁交換使能、錯誤地址等寄存器,是控制器的核心。
ECC模塊主要負(fù)責(zé)對存入NAND Flash中的數(shù)據(jù)進(jìn)行糾錯編碼并對從NAND Flash中讀出的數(shù)據(jù)進(jìn)行糾錯譯碼的工作。DMA握手接口模塊在系統(tǒng)DMA參與數(shù)據(jù)傳輸?shù)那闆r下,負(fù)責(zé)DMA與NAND Flash控制器之間的硬件握手功能。相比與直接由CPU核發(fā)送命令字給NAND Flash,然后直接從I/O 口讀寫數(shù)據(jù)的工作方式,通過DMA方式的傳輸效率明顯要高。特別在連續(xù)讀取大批量數(shù)據(jù)的情況下,這種工作方式的優(yōu)點能更好地體現(xiàn)出來。在實際產(chǎn)品應(yīng)用中(如數(shù)碼照片的存取),讀寫數(shù)據(jù)量一般都是頁大小的上千倍,所以這樣的設(shè)計有助于提高產(chǎn)品的實用性。
該NAND Flash控制器支持外接8片NAND Flash芯片。為了提高數(shù)據(jù)的讀寫速度,實現(xiàn)對并行數(shù)據(jù)讀寫的支持,控制器的數(shù)據(jù)線位寬設(shè)置為16 bit,可以支持對兩片數(shù)據(jù)線位寬為8 bit的NAND Flash的并行讀寫操作;同時,本設(shè)計對控制器的結(jié)構(gòu)進(jìn)行了優(yōu)化,使其能夠支持對多片NAND Flash芯片的流水線讀寫操作。為了更好地支持SLC、MLC和TLC NAND Flash器件,還設(shè)計了基于漢明碼的1 bit ECC糾錯模塊和可糾正8 bit隨機(jī)錯誤的BCH編/譯碼器,用戶可以根據(jù)需要選擇相應(yīng)的ECC操作。
2 高速存儲技術(shù)
NAND Flash器件屬于低速設(shè)備。以K9WBG08U1M為例,芯片的寫入時間分為加載時間和編程時間兩部分,寫滿一頁所需的命令、地址和數(shù)據(jù)的加載時間約為102.5 ?滋s,最大編程時間約為700 μs。在寫入過程中,因還要進(jìn)行BCH編碼等操作,也會消耗一些時間,所以設(shè)計中,使用最大的編程時間進(jìn)行計算,而單片F(xiàn)lash其寫入速度最高也只有5.1 MB/s,NAND Flash的讀寫速度也會成為系統(tǒng)性能的瓶頸。為了解決這個問題,可以采用如下技術(shù)。
2.1 數(shù)據(jù)并行處理技術(shù)
因Flash的數(shù)據(jù)位寬一般為8 bit,如果按傳統(tǒng)的操作方法對Flash進(jìn)行讀寫,即寫完一片NAND Flash之后再寫下一片,其最高的存儲速度只有5.1 MB/s,無法適用于高速數(shù)據(jù)傳輸?shù)囊?。為此,本文設(shè)計的NAND Flash控制器將I/O數(shù)據(jù)線設(shè)為16 bit,主控制可以通過配置來選擇數(shù)據(jù)線的位數(shù)。當(dāng)需要對數(shù)據(jù)進(jìn)行并行處理時,將兩片低速Flash芯片并聯(lián)起來,使用相同的控制線、片選和讀寫信號線,組成一個多位寬的Flash組;兩片F(xiàn)lash并行工作時,一片存儲數(shù)據(jù)的高8 bit,一片存儲數(shù)據(jù)的低8 bit,這樣,存儲容量和存儲速度都是單片F(xiàn)lash的2倍。
2.2 流水線技術(shù)
流水線技術(shù)在計算機(jī)領(lǐng)域得到廣泛運用,它是提高硬件資源利用率和執(zhí)行效率的有效手段,該技術(shù)可以有效提高存儲系統(tǒng)的性能。本文設(shè)計的NAND Flash控制器中只有一個讀數(shù)據(jù)FIFO和一個寫數(shù)據(jù)FIFO,大小均為4 KB。當(dāng)對一片NAND Flash進(jìn)行操作時,在命令或數(shù)據(jù)加載完成后,該片NAND Flash會處于忙狀態(tài),此時讀或?qū)憯?shù)據(jù)FIFO由于處于空閑或等待狀態(tài)未被使用,因此控制器可以繼續(xù)對處于空閑狀態(tài)的NAND Flash進(jìn)行操作,如此便形成流水線操作。還可以把兩片NAND Flash作為一組進(jìn)行數(shù)據(jù)并行處理,共4組進(jìn)行流水線操作,以達(dá)到最大的數(shù)據(jù)吞吐率。其流水寫操作時序如圖4所示。
3 功能驗證與性能分析
本文采用兩塊FPGA開發(fā)板完成SoC平臺的驗證,F(xiàn)PGA型號均為Xilinx Virtex5-xc5vlx85,兩者之間通過自制的電路板進(jìn)行通信驗證流程:首先通過JTAG接口向EFlash中下載一個boot-loader程序,用于SoC系統(tǒng)的啟動和測試向量的下載;SoC系統(tǒng)的硬件驅(qū)動和安全協(xié)處理器程序通過UART接口下載到系統(tǒng)中;PC端通過UART接口給出控制命令,選擇NAND Flash控制器和安全協(xié)處理的工作模式;PC端通過USB接口對NAND Flash進(jìn)行數(shù)據(jù)讀寫的測試。系統(tǒng)工作時鐘為80 MHz,選擇K9WBG08U1M作為實體NAND Flash器件對SoC進(jìn)行測試。單片K9WBG08U1M的情況下,讀速度可以達(dá)到19.3 MB/s,寫速度可以達(dá)到9.6 MB/s;兩片K9F1208UOB并行連接時,讀速度可達(dá)37.5 MB/s,寫速度可達(dá)18.4 MB/s。
安全協(xié)處理器性能、面積與參考文獻(xiàn)中的設(shè)計比較結(jié)果如表2所示。
經(jīng)過SMIC 0.18 μm工藝庫的綜合,整個平臺的面積約為250萬門,最高工作頻率為100 MHz。
本文設(shè)計的面向大安全存儲的密碼SoC集成了多個高性能安全協(xié)處理器,極大地提高了系統(tǒng)的密碼處理性能。設(shè)計的NAND Flash可支持外接多種類型(如SLC、MLC和TLC)的NAND Flash芯片,并且支持多片NAND Flash的并行讀寫和流水線讀寫操作,最大支持160 GB存儲容量?;贔PGA的驗證表明,其能夠靈活支持多種密碼算法的實現(xiàn),具有較高的NAND Flash訪問速度。
該設(shè)計可應(yīng)用于加密U盤、加密U盤KEY、加密移動硬盤、高速加密流轉(zhuǎn)接器等設(shè)備中。
參考文獻(xiàn)
[1] Chen Hanlin.The single-chip solution of embedded USB encryptor[C].Information Theory and Information Security,2010:42-45.
[2] 寧超.基于SOC存儲控制器的研究與開發(fā)[D].西安:電子科技大學(xué),2008:50-53.
[3] Huang Wei,Han Jun,Wang Shuai.The design and implement of a mobile security SoC[C].Conference on Solid-State and Integrated Circuit Technology,2010:96-98.
[4] 胡偉,慕德俊,劉航,等.移動硬盤硬件加密的設(shè)計與實現(xiàn)[J].計算機(jī)工程與應(yīng)用,2010,46(22).
[5] 沈弼龍.基于應(yīng)用程序特征分析的SoC任務(wù)分配技術(shù)研究與實現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),2009:31-33.
[6] AIGNER G,DIWAN A,HEINE D L,et al.An over- view of the SUIF2 compiler infrastructure[R].Computer Systems Laboratory,Stanford University,1999.
[7] 李璐,周海燕.一種含BCH編解碼器的SLC/MLC NAND Flash控制器的VLSI設(shè)計[J].現(xiàn)代電子技術(shù),2009,32(7).
[8] Wang Chenhsing,YEH J C,HUANG C T,et al.Scalable security processor design and its implementation[C].ASSCC,2005:513-516.
[9] SREEDHARAN D,AKOGLU A.A hybrid processing element based reconfigurable architecture for hashing algorithms[C].Parallel and Distributed Processing,2008:1-8.
[10] BERTONI G B,VENTURI L.ECC hardware coprocessor for 8-bit systems and power consumption considerations[C]. ITNG,2006:573-574.