摘要: 針對(duì)目前移動(dòng)存儲(chǔ)設(shè)備大量的失泄密事件,提出了一種適用于移動(dòng)安全存儲(chǔ)設(shè)備的密碼SoC設(shè)計(jì)方案,并在FPGA開(kāi)發(fā)板上進(jìn)行了驗(yàn)證。該SoC集成自主設(shè)計(jì)的安全協(xié)處理器,能夠支持多種密碼算法。介紹了NAND Flash控制器的設(shè)計(jì)方案,并在此基礎(chǔ)上提出了高速存取技術(shù)?;贔PGA的測(cè)試結(jié)果表明,該SoC能夠有效完成多種密碼操作,具有較高的數(shù)據(jù)吞吐率。基于SMIC 0.18 μm工藝綜合后的結(jié)果顯示,工作頻率能夠達(dá)到100 MHz,面積約為250萬(wàn)門(mén)。
移動(dòng)存儲(chǔ)產(chǎn)品已廣泛應(yīng)用于各行各業(yè),是不可或缺的信息交換載體,特別在日常辦公系統(tǒng)中,以U盤(pán)、固態(tài)移動(dòng)硬盤(pán)為代表的存儲(chǔ)介質(zhì)的使用日益普遍。而在實(shí)際應(yīng)用中,移動(dòng)存儲(chǔ)設(shè)備易丟失、易損壞、易染病毒、不可控的特性也使數(shù)據(jù)安全無(wú)法得到充分保證。因遺失、暴力破解、主動(dòng)泄密、木馬攻擊等方式導(dǎo)致的泄密事件也在逐漸上升[1]。
為了解決這一問(wèn)題,國(guó)內(nèi)外已經(jīng)研制出多款相關(guān)安全產(chǎn)品,但是這些安全產(chǎn)品大多采用單一算法或固定的幾種算法,其靈活性和安全性都不夠高,無(wú)法滿(mǎn)足不同設(shè)計(jì)的安全需求[2]。
針對(duì)現(xiàn)有安全SoC存在的問(wèn)題,本文基于高性能嵌入式CPU構(gòu)建并設(shè)計(jì)了一款密碼SoC平臺(tái)。該SoC平臺(tái)采用自主設(shè)計(jì)的安全協(xié)處理器執(zhí)行密碼操作,經(jīng)驗(yàn)證可適用于三類(lèi)主要的密碼算法[3]:對(duì)稱(chēng)密鑰加密算法、散列算法和公開(kāi)密鑰加密算法。此外,設(shè)計(jì)了高性能NAND Flash控制器,支持外接多種類(lèi)型的NAND Flash芯片(SLC、MLC 和TLC),最大支持容量為160 GB。本設(shè)計(jì)可應(yīng)用于加密U盤(pán)、加密U盤(pán)KEY、加密移動(dòng)硬盤(pán)、高速加密流轉(zhuǎn)接器等設(shè)備中。
1 硬件設(shè)計(jì)
1.1 系統(tǒng)架構(gòu)
本文提出的密碼SoC架構(gòu)如圖1所示。其中集成了兩種處理器核,分別是通用處理器(LEON2)和4個(gè)安全協(xié)處理器(Security ASIP),兩者通過(guò)系統(tǒng)總線(xiàn)相連。所有涉及加解密的運(yùn)算都被映射到安全協(xié)處理器中執(zhí)行。DMA控制器負(fù)責(zé)把將要執(zhí)行的加解密任務(wù)按照CPU的配置分配到各安全處理器中,CPU只承擔(dān)控制和部分?jǐn)?shù)據(jù)傳輸任務(wù),絕大部分的運(yùn)算由安全協(xié)處理器完成,CPU在大部分時(shí)間處于掛起(suspend)狀態(tài),直到有中斷將其喚醒。
片上存儲(chǔ)器主要包括EFlash/SRAM,用于存儲(chǔ)操作系統(tǒng)引導(dǎo)程序、用戶(hù)程序等;物理噪聲源主要用于產(chǎn)生真隨機(jī)數(shù),生成密碼運(yùn)算時(shí)的消息密鑰;兩個(gè)USB-OTG 接口可根據(jù)應(yīng)用需求設(shè)置成Host、Device 或OTG,支持多達(dá)6 個(gè)端點(diǎn),可設(shè)置成多重復(fù)合設(shè)備,最大限度地滿(mǎn)足用戶(hù)的設(shè)計(jì)需求;
NAND Flash控制器負(fù)責(zé)產(chǎn)生符合NAND Flash接口操作規(guī)范的時(shí)序信號(hào),帶有ECC校驗(yàn)?zāi)K,每512 B可修正位數(shù)為1 bit或8 bit,支持外接8片NAND Flash。另外還包含有低速通信接口、定時(shí)器、中斷控制器、存儲(chǔ)保護(hù)單元、功耗管理單元等輔助模塊,用于完成平臺(tái)的其他功能。
1.2 安全協(xié)處理器結(jié)構(gòu)
分析現(xiàn)有的安全存儲(chǔ)設(shè)備[4]可以發(fā)現(xiàn),在使用存儲(chǔ)設(shè)備之前,必須對(duì)使用者進(jìn)行身份驗(yàn)證;文件讀寫(xiě)時(shí),必須對(duì)數(shù)據(jù)進(jìn)行加解密操作;為了保證數(shù)據(jù)的完整性,必須對(duì)數(shù)據(jù)進(jìn)行完整性驗(yàn)證操作。所以,密碼SoC必須能夠靈活處理對(duì)稱(chēng)、公鑰和雜湊三類(lèi)算法,這個(gè)任務(wù)主要由安全協(xié)處理器完成。在進(jìn)行安全協(xié)處理器的設(shè)計(jì)之前,必須對(duì)各類(lèi)密碼的執(zhí)行特點(diǎn)進(jìn)行分析。由專(zhuān)門(mén)的工具[5]分析可以得出各種密碼算法的執(zhí)行特點(diǎn)。
對(duì)各類(lèi)密碼算法的特點(diǎn)進(jìn)行分析后,本文提出了如圖2所示的安全協(xié)處理器架構(gòu)。該安全協(xié)處理器基于傳統(tǒng)的RISC處理器結(jié)構(gòu)所設(shè)計(jì),分為取指令(IF)級(jí)、譯碼(ID)級(jí)、執(zhí)行(EXE)級(jí)/memory訪(fǎng)存級(jí)和寫(xiě)回(write)級(jí)四級(jí),能支持標(biāo)準(zhǔn)的RISC指令,并且還能執(zhí)行一些專(zhuān)門(mén)設(shè)計(jì)的特殊指令。
在執(zhí)行級(jí),不僅有處理正常RISC標(biāo)準(zhǔn)指令的ALU單元,還有專(zhuān)用的硬件功能單元、PTLU(Parallel Table Look-Up)和MHU(Mul/Div unit&Hash Unit),用來(lái)對(duì)算法中比較耗時(shí)的運(yùn)算(如查找表、模乘等操作)進(jìn)行加速。為了加快安全協(xié)處理器的指令和數(shù)據(jù)的存取速度,在協(xié)處理器內(nèi)部分別嵌入1 KB大小的指令RAM和數(shù)據(jù)RAM,用來(lái)存放協(xié)處理器的指令和數(shù)據(jù)。該協(xié)處理器指令集不僅包括標(biāo)準(zhǔn)的算術(shù)和邏輯運(yùn)算指令,還包括專(zhuān)用的密碼運(yùn)算指令,如PTAES、 PTW、MOD_MUL等。
1.3 NAND Flash控制器設(shè)計(jì)
本文設(shè)計(jì)的NAND Flash控制器[7]結(jié)構(gòu)如圖3所示。NAND Flash控制器包含總線(xiàn)接口模塊、DMA握手接口模塊、控制狀態(tài)機(jī)轉(zhuǎn)換的主控邏輯模塊,用以緩沖數(shù)據(jù)、收發(fā)命令和狀態(tài)字的緩沖器(buffer);提供ECC校驗(yàn)糾錯(cuò)功能的ECC模塊和直接控制NAND Flash存儲(chǔ)體的接口模塊。
總線(xiàn)接口模塊負(fù)責(zé)接收CPU發(fā)送的指令,將收發(fā)數(shù)據(jù)送至相應(yīng)數(shù)據(jù)寄存器和指令寄存器,并將狀態(tài)寄存器內(nèi)容返回給CPU核;主控邏輯模塊負(fù)責(zé)整個(gè)Flash控制器的控制工作,包含指令、狀態(tài)、配置、數(shù)據(jù)、頁(yè)交換使能、錯(cuò)誤地址等寄存器,是控制器的核心。
ECC模塊主要負(fù)責(zé)對(duì)存入NAND Flash中的數(shù)據(jù)進(jìn)行糾錯(cuò)編碼并對(duì)從NAND Flash中讀出的數(shù)據(jù)進(jìn)行糾錯(cuò)譯碼的工作。DMA握手接口模塊在系統(tǒng)DMA參與數(shù)據(jù)傳輸?shù)那闆r下,負(fù)責(zé)DMA與NAND Flash控制器之間的硬件握手功能。相比與直接由CPU核發(fā)送命令字給NAND Flash,然后直接從I/O 口讀寫(xiě)數(shù)據(jù)的工作方式,通過(guò)DMA方式的傳輸效率明顯要高。
特別在連續(xù)讀取大批量數(shù)據(jù)的情況下,這種工作方式的優(yōu)點(diǎn)能更好地體現(xiàn)出來(lái)。在實(shí)際產(chǎn)品應(yīng)用中(如數(shù)碼照片的存?。x寫(xiě)數(shù)據(jù)量一般都是頁(yè)大小的上千倍,所以這樣的設(shè)計(jì)有助于提高產(chǎn)品的實(shí)用性。
該NAND Flash控制器支持外接8片NAND Flash芯片。為了提高數(shù)據(jù)的讀寫(xiě)速度,實(shí)現(xiàn)對(duì)并行數(shù)據(jù)讀寫(xiě)的支持,控制器的數(shù)據(jù)線(xiàn)位寬設(shè)置為16 bit,可以支持對(duì)兩片數(shù)據(jù)線(xiàn)位寬為8 bit的NAND Flash的并行讀寫(xiě)操作;同時(shí),本設(shè)計(jì)對(duì)控制器的結(jié)構(gòu)進(jìn)行了優(yōu)化,使其能夠支持對(duì)多片NAND Flash芯片的流水線(xiàn)讀寫(xiě)操作。為了更好地支持SLC、MLC和TLC NAND Flash器件,還設(shè)計(jì)了基于漢明碼的1 bit ECC糾錯(cuò)模塊和可糾正8 bit隨機(jī)錯(cuò)誤的BCH編/譯碼器,用戶(hù)可以根據(jù)需要選擇相應(yīng)的ECC操作。
2 高速存儲(chǔ)技術(shù)
NAND Flash器件屬于低速設(shè)備。以K9WBG08U1M為例,芯片的寫(xiě)入時(shí)間分為加載時(shí)間和編程時(shí)間兩部分,寫(xiě)滿(mǎn)一頁(yè)所需的命令、地址和數(shù)據(jù)的加載時(shí)間約為102.5 ?滋s,最大編程時(shí)間約為700 μs。在寫(xiě)入過(guò)程中,因還要進(jìn)行BCH編碼等操作,也會(huì)消耗一些時(shí)間,所以設(shè)計(jì)中,使用最大的編程時(shí)間進(jìn)行計(jì)算,而單片F(xiàn)lash其寫(xiě)入速度最高也只有5.1 MB/s,NAND Flash的讀寫(xiě)速度也會(huì)成為系統(tǒng)性能的瓶頸。為了解決這個(gè)問(wèn)題,可以采用如下技術(shù)。
2.1 數(shù)據(jù)并行處理技術(shù)
因Flash的數(shù)據(jù)位寬一般為8 bit,如果按傳統(tǒng)的操作方法對(duì)Flash進(jìn)行讀寫(xiě),即寫(xiě)完一片NAND Flash之后再寫(xiě)下一片,其最高的存儲(chǔ)速度只有5.1 MB/s,無(wú)法適用于高速數(shù)據(jù)傳輸?shù)囊蟆榇?,本文設(shè)計(jì)的NAND Flash控制器將I/O數(shù)據(jù)線(xiàn)設(shè)為16 bit,主控制可以通過(guò)配置來(lái)選擇數(shù)據(jù)線(xiàn)的位數(shù)。
當(dāng)需要對(duì)數(shù)據(jù)進(jìn)行并行處理時(shí),將兩片低速Flash芯片并聯(lián)起來(lái),使用相同的控制線(xiàn)、片選和讀寫(xiě)信號(hào)線(xiàn),組成一個(gè)多位寬的Flash組;兩片F(xiàn)lash并行工作時(shí),一片存儲(chǔ)數(shù)據(jù)的高8 bit,一片存儲(chǔ)數(shù)據(jù)的低8 bit,這樣,存儲(chǔ)容量和存儲(chǔ)速度都是單片F(xiàn)lash的2倍。
2.2 流水線(xiàn)技術(shù)
流水線(xiàn)技術(shù)在計(jì)算機(jī)領(lǐng)域得到廣泛運(yùn)用,它是提高硬件資源利用率和執(zhí)行效率的有效手段,該技術(shù)可以有效提高存儲(chǔ)系統(tǒng)的性能。本文設(shè)計(jì)的NAND Flash控制器中只有一個(gè)讀數(shù)據(jù)FIFO和一個(gè)寫(xiě)數(shù)據(jù)FIFO,大小均為4 KB。
當(dāng)對(duì)一片NAND Flash進(jìn)行操作時(shí),在命令或數(shù)據(jù)加載完成后,該片NAND Flash會(huì)處于忙狀態(tài),此時(shí)讀或?qū)憯?shù)據(jù)FIFO由于處于空閑或等待狀態(tài)未被使用,因此控制器可以繼續(xù)對(duì)處于空閑狀態(tài)的NAND Flash進(jìn)行操作,如此便形成流水線(xiàn)操作。還可以把兩片NAND Flash作為一組進(jìn)行數(shù)據(jù)并行處理,共4組進(jìn)行流水線(xiàn)操作,以達(dá)到最大的數(shù)據(jù)吞吐率。其流水寫(xiě)操作時(shí)序如圖4所示。
3 功能驗(yàn)證與性能分析
本文采用兩塊FPGA開(kāi)發(fā)板完成SoC平臺(tái)的驗(yàn)證,F(xiàn)PGA型號(hào)均為Xilinx Virtex5-xc5vlx85,兩者之間通過(guò)自制的電路板進(jìn)行通信驗(yàn)證流程:首先通過(guò)JTAG接口向EFlash中下載一個(gè)boot-loader程序,用于SoC系統(tǒng)的啟動(dòng)和測(cè)試向量的下載;SoC系統(tǒng)的硬件驅(qū)動(dòng)和安全協(xié)處理器程序通過(guò)UART接口下載到系統(tǒng)中;
PC端通過(guò)UART接口給出控制命令,選擇NAND Flash控制器和安全協(xié)處理的工作模式;PC端通過(guò)USB接口對(duì)NAND Flash進(jìn)行數(shù)據(jù)讀寫(xiě)的測(cè)試。系統(tǒng)工作時(shí)鐘為80 MHz,選擇K9WBG08U1M作為實(shí)體NAND Flash器件對(duì)SoC進(jìn)行測(cè)試。單片K9WBG08U1M的情況下,讀速度可以達(dá)到19.3 MB/s,寫(xiě)速度可以達(dá)到9.6 MB/s;兩片K9F1208UOB并行連接時(shí),讀速度可達(dá)37.5 MB/s,寫(xiě)速度可達(dá)18.4 MB/s。
安全協(xié)處理器性能、面積與參考文獻(xiàn)中的設(shè)計(jì)比較結(jié)果如表2所示。
經(jīng)過(guò)SMIC 0.18 μm工藝庫(kù)的綜合,整個(gè)平臺(tái)的面積約為250萬(wàn)門(mén),最高工作頻率為100 MHz。
本文設(shè)計(jì)的面向大安全存儲(chǔ)的密碼SoC集成了多個(gè)高性能安全協(xié)處理器,極大地提高了系統(tǒng)的密碼處理性能。設(shè)計(jì)的NAND Flash可支持外接多種類(lèi)型(如SLC、MLC和TLC)的NAND Flash芯片,并且支持多片NAND Flash的并行讀寫(xiě)和流水線(xiàn)讀寫(xiě)操作,最大支持160 GB存儲(chǔ)容量?;贔PGA的驗(yàn)證表明,其能夠靈活支持多種密碼算法的實(shí)現(xiàn),具有較高的NAND Flash訪(fǎng)問(wèn)速度。
該設(shè)計(jì)可應(yīng)用于加密U盤(pán)、加密U盤(pán)KEY、加密移動(dòng)硬盤(pán)、高速加密流轉(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存儲(chǔ)控制器的研究與開(kāi)發(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] 胡偉,慕德俊,劉航,等。移動(dòng)硬盤(pán)硬件加密的設(shè)計(jì)與實(shí)現(xiàn)[J]。計(jì)算機(jī)工程與應(yīng)用,2010,46(22)。
[5] 沈弼龍?;趹?yīng)用程序特征分析的SoC任務(wù)分配技術(shù)研究與實(shí)現(xiàn)[D]。長(zhǎng)沙:國(guó)防科學(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ì)[J]?,F(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.
編輯:jq
-
cpu
+關(guān)注
關(guān)注
68文章
10804瀏覽量
210839 -
soc
+關(guān)注
關(guān)注
38文章
4099瀏覽量
217776 -
SMIC
+關(guān)注
關(guān)注
0文章
21瀏覽量
19891
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論