文獻標識碼: 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控制器負責(zé)把將要執(zhí)行的加解密任務(wù)按照CPU的配置分配到各安全處理器中,,CPU只承擔控制和部分數(shù)據(jù)傳輸任務(wù),,絕大部分的運算由安全協(xié)處理器完成,CPU在大部分時間處于掛起(suspend)狀態(tài),,直到有中斷將其喚醒,。片上存儲器主要包括EFlash/SRAM,用于存儲操作系統(tǒng)引導(dǎo)程序,、用戶程序等,;物理噪聲源主要用于產(chǎn)生真隨機數(shù),生成密碼運算時的消息密鑰,;兩個USB-OTG 接口可根據(jù)應(yīng)用需求設(shè)置成Host,、Device 或OTG,支持多達6 個端點,,可設(shè)置成多重復(fù)合設(shè)備,,最大限度地滿足用戶的設(shè)計需求;NAND Flash控制器負責(zé)產(chǎn)生符合NAND Flash接口操作規(guī)范的時序信號,,帶有ECC校驗?zāi)K,,每512 B可修正位數(shù)為1 bit或8 bit,支持外接8片NAND Flash,。另外還包含有低速通信接口,、定時器、中斷控制器,、存儲保護單元,、功耗管理單元等輔助模塊,用于完成平臺的其他功能,。
1.2 安全協(xié)處理器結(jié)構(gòu)
分析現(xiàn)有的安全存儲設(shè)備[4]可以發(fā)現(xiàn),,在使用存儲設(shè)備之前,必須對使用者進行身份驗證,;文件讀寫時,,必須對數(shù)據(jù)進行加解密操作;為了保證數(shù)據(jù)的完整性,,必須對數(shù)據(jù)進行完整性驗證操作,。所以,密碼SoC必須能夠靈活處理對稱,、公鑰和雜湊三類算法,,這個任務(wù)主要由安全協(xié)處理器完成。在進行安全協(xié)處理器的設(shè)計之前,,必須對各類密碼的執(zhí)行特點進行分析,。由專門的工具[5]分析可以得出各種密碼算法的執(zhí)行特點,。部分AES算法的計算特征分析結(jié)果如表1所示。
對各類密碼算法的特點進行分析后,,本文提出了如圖2所示的安全協(xié)處理器架構(gòu),。該安全協(xié)處理器基于傳統(tǒng)的RISC處理器結(jié)構(gòu)所設(shè)計,分為取指令(IF)級,、譯碼(ID)級,、執(zhí)行(EXE)級/memory訪存級和寫回(write)級四級,能支持標準的RISC指令,,并且還能執(zhí)行一些專門設(shè)計的特殊指令,。在執(zhí)行級,不僅有處理正常RISC標準指令的ALU單元,,還有專用的硬件功能單元,、PTLU(Parallel Table Look-Up)和MHU(Mul/Div unit&Hash Unit),用來對算法中比較耗時的運算(如查找表,、模乘等操作)進行加速,。為了加快安全協(xié)處理器的指令和數(shù)據(jù)的存取速度,在協(xié)處理器內(nèi)部分別嵌入1 KB大小的指令RAM和數(shù)據(jù)RAM,,用來存放協(xié)處理器的指令和數(shù)據(jù),。該協(xié)處理器指令集不僅包括標準的算術(shù)和邏輯運算指令,還包括專用的密碼運算指令,,如PTAES,、 PTW、MOD_MUL等,。
1.3 NAND Flash控制器設(shè)計
本文設(shè)計的NAND Flash控制器[7]結(jié)構(gòu)如圖3所示,。NAND Flash控制器包含總線接口模塊、DMA握手接口模塊,、控制狀態(tài)機轉(zhuǎn)換的主控邏輯模塊,,用以緩沖數(shù)據(jù)、收發(fā)命令和狀態(tài)字的緩沖器(buffer),;提供ECC校驗糾錯功能的ECC模塊和直接控制NAND Flash存儲體的接口模塊,。
總線接口模塊負責(zé)接收CPU發(fā)送的指令,將收發(fā)數(shù)據(jù)送至相應(yīng)數(shù)據(jù)寄存器和指令寄存器,,并將狀態(tài)寄存器內(nèi)容返回給CPU核,;主控邏輯模塊負責(zé)整個Flash控制器的控制工作,包含指令,、狀態(tài),、配置、數(shù)據(jù)、頁交換使能,、錯誤地址等寄存器,,是控制器的核心。
ECC模塊主要負責(zé)對存入NAND Flash中的數(shù)據(jù)進行糾錯編碼并對從NAND Flash中讀出的數(shù)據(jù)進行糾錯譯碼的工作,。DMA握手接口模塊在系統(tǒng)DMA參與數(shù)據(jù)傳輸?shù)那闆r下,,負責(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)進行了優(yōu)化,,使其能夠支持對多片NAND Flash芯片的流水線讀寫操作,。為了更好地支持SLC、MLC和TLC NAND Flash器件,,還設(shè)計了基于漢明碼的1 bit ECC糾錯模塊和可糾正8 bit隨機錯誤的BCH編/譯碼器,,用戶可以根據(jù)需要選擇相應(yīng)的ECC操作。
2 高速存儲技術(shù)
NAND Flash器件屬于低速設(shè)備,。以K9WBG08U1M為例,,芯片的寫入時間分為加載時間和編程時間兩部分,寫滿一頁所需的命令,、地址和數(shù)據(jù)的加載時間約為102.5 ?滋s,,最大編程時間約為700 μs。在寫入過程中,,因還要進行BCH編碼等操作,,也會消耗一些時間,所以設(shè)計中,,使用最大的編程時間進行計算,,而單片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進行讀寫,,即寫完一片NAND Flash之后再寫下一片,,其最高的存儲速度只有5.1 MB/s,無法適用于高速數(shù)據(jù)傳輸?shù)囊?。為此,,本文設(shè)計的NAND Flash控制器將I/O數(shù)據(jù)線設(shè)為16 bit,主控制可以通過配置來選擇數(shù)據(jù)線的位數(shù),。當需要對數(shù)據(jù)進行并行處理時,,將兩片低速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ù)在計算機領(lǐng)域得到廣泛運用,它是提高硬件資源利用率和執(zhí)行效率的有效手段,,該技術(shù)可以有效提高存儲系統(tǒng)的性能,。本文設(shè)計的NAND Flash控制器中只有一個讀數(shù)據(jù)FIFO和一個寫數(shù)據(jù)FIFO,大小均為4 KB,。當對一片NAND Flash進行操作時,,在命令或數(shù)據(jù)加載完成后,該片NAND Flash會處于忙狀態(tài),,此時讀或?qū)憯?shù)據(jù)FIFO由于處于空閑或等待狀態(tài)未被使用,,因此控制器可以繼續(xù)對處于空閑狀態(tài)的NAND Flash進行操作,如此便形成流水線操作,。還可以把兩片NAND Flash作為一組進行數(shù)據(jù)并行處理,,共4組進行流水線操作,以達到最大的數(shù)據(jù)吞吐率,。其流水寫操作時序如圖4所示,。
3 功能驗證與性能分析
本文采用兩塊FPGA開發(fā)板完成SoC平臺的驗證,F(xiàn)PGA型號均為Xilinx Virtex5-xc5vlx85,,兩者之間通過自制的電路板進行通信驗證流程:首先通過JTAG接口向EFlash中下載一個boot-loader程序,,用于SoC系統(tǒng)的啟動和測試向量的下載;SoC系統(tǒng)的硬件驅(qū)動和安全協(xié)處理器程序通過UART接口下載到系統(tǒng)中;PC端通過UART接口給出控制命令,,選擇NAND Flash控制器和安全協(xié)處理的工作模式,;PC端通過USB接口對NAND Flash進行數(shù)據(jù)讀寫的測試。系統(tǒng)工作時鐘為80 MHz,,選擇K9WBG08U1M作為實體NAND Flash器件對SoC進行測試,。單片K9WBG08U1M的情況下,讀速度可以達到19.3 MB/s,,寫速度可以達到9.6 MB/s,;兩片K9F1208UOB并行連接時,讀速度可達37.5 MB/s,,寫速度可達18.4 MB/s,。
安全協(xié)處理器性能、面積與參考文獻中的設(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存儲容量,。基于FPGA的驗證表明,,其能夠靈活支持多種密碼算法的實現(xiàn),,具有較高的NAND Flash訪問速度。
該設(shè)計可應(yīng)用于加密U盤,、加密U盤KEY,、加密移動硬盤、高速加密流轉(zhuǎn)接器等設(shè)備中,。
參考文獻
[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].計算機工程與應(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.