《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于國產(chǎn)SOC的數(shù)據(jù)加密存儲系統(tǒng)設(shè)計
基于國產(chǎn)SOC的數(shù)據(jù)加密存儲系統(tǒng)設(shè)計
2015年電子技術(shù)應(yīng)用第11期
王善明,嚴迎建,郭朋飛,馬征宇
(解放軍信息工程大學(xué),河南 鄭州450001)
摘要: 針對數(shù)據(jù)信息面臨的越來越嚴重的安全問題,提出了基于本單位自主研發(fā)的專用SOC芯片HX6801,以SD卡作為存儲器,由DS3231提供實時時鐘,采用FatFs作為文件系統(tǒng)的數(shù)據(jù)加密存儲系統(tǒng)設(shè)計方案,通過對HX6801內(nèi)部集成的密碼協(xié)處理器和國產(chǎn)嵌入式CPU的編程實現(xiàn)數(shù)據(jù)的加密和存儲。該系統(tǒng)充分利用了HX6801的密碼處理能力及外圍擴展能力,系統(tǒng)整體結(jié)構(gòu)簡單,效率比較高。
關(guān)鍵詞: 國產(chǎn)SOC SD卡 FATFS 加解密
中圖分類號: TP311
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.11.009

中文引用格式: 王善明,嚴迎建,郭朋飛,等. 基于國產(chǎn)SOC的數(shù)據(jù)加密存儲系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(11):34-37.
英文引用格式: Wang Shanming,Yan Yingjian,Guo Pengfei,et al. Design of data encryption and storage system based on domestic SOC[J].Application of Electronic Technique,2015,41(11):34-37.
Design of data encryption and storage system based on domestic SOC
Wang Shanming,Yan Yingjian,Guo Pengfei,Ma Zhengyu
PLA Information Engineering University,Zhengzhou 450001,China
Abstract: Refering to more and more serious security problems of data and information,this paper proposes a file encryption system as follows: the SOC chip HX6801 developed by our unit as core; the SD card as storage; the DS3231 chip as RTC provider; the FatFs as file system. Achieving data encryption and storage by programming integrated cryptographic coprocessors and domestic embedded CPU. The system takes full advantage of HX6801 cryptographic processing capability and peripheral expansion capability, this system architecture is simple and efficiency.
Key words : domestic SOC;SD card;FafFs;DS3231;encryption/decryption

  

0 引言

  現(xiàn)在市面上有很多的數(shù)據(jù)加密產(chǎn)品,按照加密方式主要分為軟件加密和硬件加密。軟件加密的特點是:成本低、效率低、安全性低。硬件加密的特點是:成本高、效率高、安全性高。但是很多硬件加密產(chǎn)品的可擴展性比較差、沒有豐富的外圍接口。另外,如果要將數(shù)據(jù)加密產(chǎn)品應(yīng)用于軍事、政府等敏感部門,國外的產(chǎn)品不可信,而國內(nèi)產(chǎn)品可選擇范圍又比較小。

  由于經(jīng)濟和政治等多方面數(shù)據(jù)安全的重要性,最近幾年國家大力支持國產(chǎn)IC的研發(fā)與推廣。在此背景下,本單位研發(fā)了一款具有自主知識產(chǎn)權(quán)的密碼SOC(System On Chip)芯片HX680。該芯片最主要的特點是內(nèi)部集成了一個具有完全自主知識產(chǎn)權(quán)的協(xié)處理器,具有對稱和非對稱密碼服務(wù)功能。該芯片還有相對比較豐富的外圍接口,可以進行擴展和外部通信。

  SD卡作為存儲設(shè)備,具備很多其他存儲設(shè)備沒有的特點,如體積小、功耗低、容量大等[1],其應(yīng)用范圍日益擴展,因此在本設(shè)計中使用SD卡作為存儲設(shè)備。FatFs是一個為小型嵌入式系統(tǒng)設(shè)計的通用FAT系統(tǒng)模塊,具有開源、不依賴于平臺、易于移植、代碼和工作空間非常小等特點,作為本設(shè)計的文件系統(tǒng)是一個很好的選擇[2]。

  主控芯片內(nèi)部沒有集成實時時鐘(Real-Time Clock,RTL),需通過外掛時鐘芯片DS3231來解決文件系統(tǒng)獲取時間信息的問題。主控芯片沒有時鐘芯片DS3231需要的I2C通信接口,需通過GPIO口的模擬來實現(xiàn)。

1 系統(tǒng)硬件設(shè)計

  HX6801具有完全的自主知識產(chǎn)權(quán),集成了國產(chǎn)32 位RISC結(jié)構(gòu)嵌入式處理器CK520[3],具有專用軟件集成開發(fā)環(huán)境和可擴展指令。協(xié)處理器具有硬件資源可配置、功能單元可重構(gòu)、高性能、二次開發(fā)簡便靈活等特點,HX6801適用于數(shù)字簽名與身份認證、存儲保護、數(shù)據(jù)傳輸、嵌入式控制等多種領(lǐng)域。系統(tǒng)采用HX6801作為主控芯片,SD作為存儲設(shè)備,由DS3231提供文件系統(tǒng)需要的時間信息。HX6801芯片總體架構(gòu)如圖1所示。

001.jpg

  1.1 DS3231接口電路

  DS3231是一款高精度I2C RTC器件,具有集成的溫度補償晶體振蕩器(TCXO)。該器件包含電池輸入端,斷開主電源時仍可保持精確計時。集成的晶體振蕩器可提高器件的長期精確度。DS3231的寄存器能保存秒、分、時、星期、日期、月、年和鬧鐘設(shè)置等信息。少于31天的月份,可自動調(diào)整月末日期,包括閏年補償。時鐘的工作格式為24小時或帶AM/PM指示的12小時格式。DS3231與主控芯片通過I2C雙向串行總線傳輸?shù)刂放c數(shù)據(jù)。DS3231的年誤差小于1分鐘[4]。

003.jpg

  主控芯片HX6801沒有I2C接口,所以使用GPIO口模擬I2C的時序,DS3231接口電路如圖2所示,圖中工作電壓VCC的工作范圍是2.3 V~5.5 V,典型的工作電壓為3.3 V,TR表示信號SDA和SCL的上升時間,CB表示總線負載電容。

  1.2 SD卡接口電路

  SD卡支持SD模式和SPI模式兩種通信模式。在綜合考慮速度和設(shè)計復(fù)雜度的基礎(chǔ)上,本設(shè)計選用SPI通信模式。SPI通信模式只需要將片選引腳、數(shù)據(jù)輸入引腳、數(shù)據(jù)輸出引腳、時鐘引腳與主控芯片上對應(yīng)的引腳連接即可[5]。

2 軟件設(shè)計

  軟件部分采用了分層設(shè)計。主要包括4個部分:應(yīng)用層、加/解密層、文件系統(tǒng)層、硬件驅(qū)動層(包括DS3231驅(qū)動程序和SD卡驅(qū)動程序)。應(yīng)用層用來產(chǎn)生需要加密及解密的數(shù)據(jù);加/解密層主要依據(jù)密碼算法編程手冊及編程工具,采用專用的密碼指令編寫相應(yīng)的密碼算法并配置協(xié)處理器;文件系統(tǒng)層主要實現(xiàn)FatFs文件系統(tǒng)的移植;硬件驅(qū)動層主要實現(xiàn)對最底層硬件的控制。層次結(jié)構(gòu)如圖3所示。

004.jpg

  2.1 加解密

  可重構(gòu)安全算法協(xié)處理器遵循了超長指令字的計算機體系結(jié)構(gòu),針對密碼運算,提取了密碼算法共性邏輯,提出并設(shè)計具有指令級可重構(gòu)能力的專用指令系統(tǒng)和具有指令級并行處理能力的協(xié)處理器體系結(jié)構(gòu)。該協(xié)處理器具有對稱和非對稱密碼服務(wù)功能;具有專用密碼處理指令,支持密碼算法軟件編程,能夠靈活實現(xiàn)分組密碼、序列密碼與對稱密碼算法;可動態(tài)加載算法程序、參數(shù),實現(xiàn)密碼算法的重構(gòu)與更換。下面以高級加密標準(Advanced Encryption Standard,AES)算法為例,介紹完整的算法處理流程,如圖4所示。

005.jpg

  2.2 文件系統(tǒng)層

  FatFs是一個專門為小型嵌入式系統(tǒng)而設(shè)計的Fat文件系統(tǒng),完全兼容ANSIC,而且不依賴于任何的平臺。 FatFs的設(shè)計像很多軟件一樣采用了分層設(shè)計[6],最頂層的應(yīng)用層為用戶提供了操作底層硬件的API接口函數(shù);中間層實現(xiàn)FatFs文件系統(tǒng)的協(xié)議;最底層是和具體的硬件相關(guān)的模塊,需要用戶編寫代碼。

  FatFs移植包括SD卡disk I/O編寫,RTC時鐘函數(shù)編寫,interger.h文件中數(shù)據(jù)類型和工程中數(shù)據(jù)類型的匹配,ff.h中條件編譯的配置[6]。

  FatFs支持Fat12、Fat16、Fat32文件系統(tǒng)。Fat32文件系統(tǒng)將SD卡劃分為4個連續(xù)的邏輯結(jié)構(gòu):主引導(dǎo)記錄、磁盤操作系統(tǒng)引導(dǎo)記錄、文件分配表、數(shù)據(jù)區(qū)。

  主引導(dǎo)記錄(Master Boot Record,MBR)讓硬盤具備可以引導(dǎo)的功能。

  分區(qū)表(Disk Partition Table,DPT)用來表示磁盤可以分多少個分區(qū)。DPT部分共有64 B,DPT1~DPT4代表4個分區(qū),每個分區(qū)16 B。

  磁盤操作系統(tǒng)引導(dǎo)記錄(DOS Boot Record,DBR)包含了文件系統(tǒng)相關(guān)的詳細信息。

  磁盤分區(qū)的數(shù)據(jù)區(qū)空間是以簇為單位尋址的。簇的大小一般是2N個扇區(qū)(本設(shè)計中N=3),一個文件可以占用多個簇,有可能同一個文件占用的簇是不連續(xù)的,這就體現(xiàn)了FAT的價值。FAT就是用于存儲文件占用的所有簇的序號。Fat32和Fat12、Fat16的一個重要區(qū)別就是根目錄(File Directory Fable,F(xiàn)DT)是數(shù)據(jù)區(qū)的一個子集,被當(dāng)成文件對待[7]。

006.jpg

  DPT、DBR、FAT及數(shù)據(jù)區(qū)四個區(qū)域首地址之間存在一定的邏輯關(guān)系,如圖5所示。邏輯推導(dǎo)過程如下:

  DBR_ADDR=135sector*512byte/sector=0x10e00

  FAT_ADDR= DBR_ADDR +38sector*512

  byte/sector=0x15a00byte

  DATA_ADDR=FAT_ADDR+2*3761sector/FAT*512byte/

  sector=0x3c1e00byte

  數(shù)據(jù)區(qū)第3簇首地址

  DATA_CLUSTER_ADDR=DATA_ADDR+(3-2)*8sector/cluster*512byte/sector=0x3c2e00byte

  文件、文件分配表、文件目錄、數(shù)據(jù)區(qū)的簇之間的關(guān)系決定了文件的存儲方式。如圖6所示,兩個文件對應(yīng)FAT表中兩個鏈表0x00000004-0x00000007-0x00000001-0xFFFFFFFF(file1)和0x00000005-0x00000003-0x00000008-0xFFFFFFFF(file2)。

007.jpg

  2.3 DS3231驅(qū)動

  DS3231芯片采用I2C作為通信接口,設(shè)計中用GPIO口模擬I2C時序。I2C總線上傳輸?shù)牡刂穾L度為9位,它包括7個地址位、1個R/W位和1個應(yīng)答位。如果R/W為1,則執(zhí)行讀操作,如果R/W為0,則執(zhí)行寫操作。I2C總線上傳輸?shù)臄?shù)據(jù)幀長度為9位,它包括8個數(shù)據(jù)位,1個應(yīng)答位。

  DS3231寄存器地址為00H~12H,數(shù)據(jù)在寄存器中的存儲格式為BCD碼,每個存儲單元大小為1 B。DS3231的寄存器00H~06H存儲時間信息[8],存儲格式如表1所示。DS3231的操作主要包括時間的讀和寫如圖7所示。

010.jpg

008.jpg

  FatFs系統(tǒng)中時間對應(yīng)的數(shù)據(jù)結(jié)構(gòu)存儲在一個32位的無符號整數(shù)當(dāng)中,數(shù)據(jù)存儲格式如表2。時間信息從DS3231存儲格式到FatFs存儲格式要經(jīng)過從BCD碼到十進制數(shù)的轉(zhuǎn)換。

011.jpg

  2.4 SD卡驅(qū)動

  SD卡經(jīng)過多年的發(fā)展,經(jīng)歷了好幾次升級,如果驅(qū)動程序要兼容各個版本,就要考慮到各個版本的特殊性,從初始化流程圖可以看出版本1.x和2.0在初始化階段的不同點。SD卡根據(jù)容量的大小可分為不同的等級,2 GB以內(nèi)(包括2 GB)稱為標準卡,大于2 GB小于等于32 GB稱為大容量卡,不同等級的卡操作細節(jié)也不盡相同。SD卡在初始化階段會判斷是否支持大容量卡[4]。

  SD卡的驅(qū)動主要包括SD卡的初始化及數(shù)據(jù)塊的讀寫等幾個部分。SD卡的SPI模式初始化流程如圖8所示。

009.jpg

  從流程圖可以看出,該設(shè)計對SD卡2.0版本向上兼容,同時支持大容量SD卡。SD卡上電的時候默認的是SD模式,當(dāng)主控芯片發(fā)送復(fù)位命令(CMD0)的時候,保持片選信號足夠的時鐘周期(74個以上),SD卡可以進入SPI模式。CMD8命令向SD卡發(fā)送接口狀態(tài)(主控芯片提供的電壓是否滿足SD卡的需求),ACMD41向SD卡發(fā)送主控芯片支持的SD卡容量并獲取相應(yīng)的回復(fù)。CMD58命令獲取SD卡操作狀態(tài)寄存器(Operating Condition Register,OCR)的值并讀取CCS位(Card Capacity Status)判斷是否支持大容量的SD卡。

  SPI模式支持塊讀(CMD17)和多塊讀(CMD18)操作。SD卡接受到有效的讀取命令后,要回復(fù)一個應(yīng)答信號和相應(yīng)的數(shù)據(jù)。需要注意的是,標準容量的卡讀取的數(shù)據(jù)長度可以通過CMD16來設(shè)定(大小為1 B到512 B之間),大容量卡的數(shù)據(jù)長度固定為512 B。SPI模式同樣支持塊寫(CMD24)和多塊寫(CMD25)操作,數(shù)據(jù)長度要求同讀要求相同。每個數(shù)據(jù)塊開始都應(yīng)該有1個塊起始位(大小為1位)。其中讀操作采用的是命令(主機)-應(yīng)答(SD卡)-數(shù)據(jù)(SD卡)的模式讀取數(shù)據(jù)。寫操作采用的是命令(主機)-應(yīng)答(SD卡)-數(shù)據(jù)(主機)-應(yīng)答(SD卡)的模式。

3 測試結(jié)果

  協(xié)處理器的性能及接口的速度是影響本設(shè)計的關(guān)鍵,鑒于各種密碼算法自身的特點,處理器表現(xiàn)的性能有所差別,經(jīng)測試以下幾種算法性能如表3所示。

001.jpg

  在將主控芯片的外設(shè)總線(Advanced Peripheral Bus,APB)設(shè)為40 M的情況下,加密并存儲10 MB的數(shù)據(jù)需要的時間為3.4 s,讀取并解密10 MB的數(shù)據(jù)需要的時間為3.9 s。

4 結(jié)論

  經(jīng)過多方面的理論分析和實驗驗證,本設(shè)計可以很好的實現(xiàn)數(shù)據(jù)的加/解密及數(shù)據(jù)的存儲。在試驗中可注意到,系統(tǒng)在處理大批量數(shù)據(jù)的時候效率不是太理想。所以為了進一步優(yōu)化性能,下一步將研究如何優(yōu)化加密算法,在SD卡及主控芯片允許頻率范圍內(nèi),盡可能提高APB時鐘頻率。

參考文獻

  [1] 蘇義鑫,程敏,何力.基于AT89C52單片機的SD卡讀寫設(shè)計[J].世界電子元器件,2008(5):65-68.

  [2] 陳祖爵,蔣仕俊.智能遙控器SD卡文件系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2007(10):4716-4718.

  [3] 陽曄.面向嵌入式處理器的代碼壓縮研究[D].杭州:浙江大學(xué),2007.

  [4] DS3231 Extremely Accurate I2C-IntegratedRTC/TCXO/.[DB/OL].http://www.Maximintegrated.com/cn/prod-ucts/digital/real-time-clocks/DS3231.html#popuppdf.

  [5] 葛建,董浩斌,鄭海兵.嵌入式SD卡存儲器的設(shè)計[J].電子技術(shù)應(yīng)用,2010(5):139-142.

  [6] 程小燕.嵌入式STM32F107VCT6微處理器接口模塊開發(fā)及應(yīng)用研究[D].合肥:合肥工業(yè)大學(xué),2012.

  [7] 劉思伽.基于SD卡的數(shù)據(jù)恢復(fù)技術(shù)研究[D].成都:電子科技大學(xué),2010.

  [8] Secure digital card product manual revision 1.7 9/2003[DB/OL].http://wenku.baidu.com/view/9d1fb307cc175527072208e7.html.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。