亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        具有分區(qū)加密功能的SD卡固件設(shè)計

        2017-05-31 06:39:39劉麗麗張雪
        軟件導刊 2017年5期

        劉麗麗 張雪

        摘要摘要:設(shè)計一種基于SD控制器S281的固件,具有外部認證、分區(qū)加密功能。利用控制器中內(nèi)置3DES和AES加密算法,可以實現(xiàn)對數(shù)據(jù)的硬件加密,具有更高的安全性。介紹控制器的內(nèi)部結(jié)構(gòu)及固件實現(xiàn)分區(qū)加密的原理,并在固件上實現(xiàn)閃存的均衡算法以及壞塊管理,保證閃存的合理使用。經(jīng)過實驗測試,該分區(qū)加密SD卡在可靠性測試、讀寫速率測試和功能實現(xiàn)測試上均滿足要求。

        關(guān)鍵詞關(guān)鍵詞:SD控制器;分區(qū)加密;SD固件設(shè)計;NAND Flash

        DOIDOI:10.11907/rjdk.171096

        中圖分類號:TP309.7

        文獻標識碼:A文章編號文章編號:16727800(2017)005016803

        0引言

        SD卡主要由控制器和閃存芯片組成,其具有體積小、數(shù)據(jù)傳輸速率快、可熱插拔等優(yōu)良特性,被廣泛應用于便攜式設(shè)備如電子詞典、移動電話、數(shù)碼相機、汽車導航系統(tǒng)[1]。計算機技術(shù)的快速發(fā)展使得信息的傳遞越來越迅速、便捷,同時人們對信息存儲介質(zhì)的安全性要求也越來越高,普通SD卡已不能滿足人們對于安全存儲的需求。本文設(shè)計的SD卡創(chuàng)新性地將SD的存儲空間劃分為兩個分區(qū),分別為普通區(qū)和保密區(qū),同一時間只顯示一個分區(qū)。上電完成后默認顯示普通區(qū),若需要切換至保密區(qū)則需要通過專用上層軟件輸入密碼完成外部認證。外部認證采用3DES加密算法,數(shù)據(jù)存儲采用目前公認的AES256加密算法[2]。這樣不僅滿足了普通數(shù)據(jù)存儲的需求,同時滿足機密數(shù)據(jù)保護需求。

        1硬件架構(gòu)

        1.1總體框架

        SD卡主要由存儲單元和控制單元組成。本文存儲介質(zhì)采用Micron 4GB NAND Flash存儲芯片MT29F32G08CBACA,主控采用華瀾微自主研發(fā)的符合SD2.0標準的設(shè)備控制器S281。本設(shè)計總體硬件架構(gòu)圖如圖1所示。

        1.2控制器芯片S281簡介

        S281固件設(shè)計具有一定復雜度,深入理解控制器的內(nèi)部結(jié)構(gòu)有助于設(shè)計出更好的固件。S281擁有一個32bit的嵌入式精簡CPU執(zhí)行算術(shù)及邏輯運算,它從ROM和SRAM中獲取指令,解碼并執(zhí)行,同時管理CPU及閃存接口的控制和狀態(tài)信號。CPU控制SD接口、NAND Flash接口、FIFO的總線操作,不同模塊間通過不同總線實現(xiàn)數(shù)據(jù)路由。同時S281控制器內(nèi)置隨機數(shù)發(fā)生器和硬件加密模塊,為后續(xù)固件設(shè)計提供便利。

        2固件設(shè)計

        SD卡的固件主要是輔助或控制硬件完成上電初始化及數(shù)據(jù)傳輸[3],而分區(qū)加密的SD卡還要在固件上實現(xiàn)分區(qū)切換以及全盤數(shù)據(jù)加密。由于Flash在使用過程中易產(chǎn)生壞塊,難以管理,且有擦除次數(shù)的限制。本文在固件設(shè)計中通過邏輯表動態(tài)建立壞塊表,完成Flash的壞塊管理,根據(jù)物理擦除次數(shù)選擇空塊實現(xiàn)Flash的均衡算法,延長閃存的使用周期,實現(xiàn)閃存的合理化使用。

        2.1讀操作固件設(shè)計

        SD協(xié)議中讀命令包括CMD17和CMD18[4],CMD17讀取單個數(shù)據(jù)塊到SD接口,而CMD18在指控制器未接收到CMD12(停止命令)前讀取多個數(shù)據(jù)塊。當S281接收到CMD17時,首先調(diào)用地址解析函數(shù)將命令參數(shù)中的地址轉(zhuǎn)換成邏輯地址,分別用cluster.logic、block.logic、page.logic代表邏輯簇地址、邏輯塊地址和邏輯頁地址。再調(diào)用地址轉(zhuǎn)換函數(shù)建立映射表,通過查找映射表將邏輯地址轉(zhuǎn)換成物理地址,其中映射表包括簇映射表、塊映射表和頁映射表。根據(jù)頁映射表中邏輯頁所對應的物理頁flag(標志位)判斷頁中是否含有有效數(shù)據(jù),即物理頁有沒有被寫過。若頁中不存在數(shù)據(jù),根據(jù)NAND Flash的特性,即頁內(nèi)數(shù)據(jù)全部為0xFF,則在FIFO中需要將數(shù)據(jù)傳送到SD接口的內(nèi)存空間,全部用0xFF填充。如flag表明此頁已被編輯過,即頁中存在有效數(shù)據(jù)則發(fā)送Flash的讀命令(00~30h)讀取頁中的數(shù)據(jù),并通過DMA總線將數(shù)據(jù)傳送到FIFO中,此時數(shù)據(jù)為采用AES256加密的密文,需要調(diào)用加解密函數(shù)解密FIFO中的數(shù)據(jù)。最后將FIFO中的數(shù)據(jù)通過主機數(shù)據(jù)總線發(fā)到SD接口完成單塊讀操作。

        當S281接收到CMD18命令后,其操作與CMD17基本一致,只是在沒有收到CMD12之前,CMD18固件內(nèi)部頁內(nèi)邏輯地址會自動增加,并傳送數(shù)據(jù)到SD接口。若頁內(nèi)邏輯地址增加導致需要切換邏輯塊或邏輯簇,則需要重新調(diào)用地址轉(zhuǎn)換函數(shù)建立映射表。

        2.2寫操作固件設(shè)計

        由于Flash的物理頁只能編程一次,不能對物理頁多次編寫[5],即寫入的數(shù)據(jù)必須是物理頁大小的整數(shù)倍,所以寫操作的固件設(shè)計更加復雜。當邏輯頁中的數(shù)據(jù)有部分更新時就需要將新舊數(shù)據(jù)一起寫入物理頁中,這就需要在固件上實現(xiàn)Flash的PreCopy和PostCopy兩個操作。當寫命令的起始邏輯地址不為0,而是頁的中間地址時,PreCopy在寫操作過程中,固件需要將物理頁前面的數(shù)據(jù)從Flash中讀取到FIFO,與新數(shù)據(jù)組合成一頁寫入一個新的物理頁中。而PostCopy就是當終止的邏輯地址沒有到頁的最后512字節(jié)時,就需要將物理頁后面的數(shù)據(jù)從Flash中讀取到FIFO,與新數(shù)據(jù)組合成一頁寫入到一個新的物理頁中,PreCopy和PostCopy可能同時發(fā)生。

        SD協(xié)議中寫命令包括CMD24和CMD25,分別為單個數(shù)據(jù)塊寫和多個數(shù)據(jù)塊寫。當S281接收到CMD24時,硬件會自動接收第一個512字節(jié)的數(shù)據(jù)塊,并存放到FIFO中。同讀命令一樣,首先調(diào)用地址解析函數(shù)將命令參數(shù)中的地址轉(zhuǎn)換成邏輯地址,再調(diào)用數(shù)據(jù)加解密函數(shù)使用存儲在Flash中的密碼將接收到的數(shù)據(jù)塊采用AES256加密算法加密,最后調(diào)用地址轉(zhuǎn)換函數(shù)建立映射表,通過映射表實現(xiàn)地址轉(zhuǎn)換。根據(jù)頁映射表中邏輯頁所對應物理頁的flag判斷頁中是否含有有效數(shù)據(jù)。若物理頁已被寫過,則根據(jù)邏輯頁內(nèi)地址判斷是否需要進行PreCopy操作,若需要進行PreCopy操作則將物理頁內(nèi)地址前面的數(shù)據(jù)讀取到FIFO的相應存儲空間中。若頁內(nèi)為空,則PreCopy操作中的數(shù)據(jù)全部用0xFF填充,并將填充的數(shù)據(jù)采用AES256算法加密。由于硬件已自動接收512字節(jié)的數(shù)據(jù)到FIFO中,此時需要將邏輯頁內(nèi)地址自增一個數(shù)據(jù)塊的大小,即512字節(jié)。根據(jù)此時邏輯頁內(nèi)地址判斷是否需要進行PostCopy操作,其操作方式和PreCopy相同。最后將FIFO中的一整頁數(shù)據(jù)通過DMA操作寫入到一個無數(shù)據(jù)的空頁中。完成寫命令后更新頁映射表,將此邏輯頁對應的物理頁更新為最新操作的物理頁。由于每個簇中都需要預留幾個空塊以備后續(xù)使用,所以完成寫操作后還需要根據(jù)簇映射表判斷簇中所含空塊數(shù)量是否滿足要求,若不滿足則需要采用merge操作,擦除某些塊中的數(shù)據(jù),并在塊映射表中將此塊標記為空塊。由于一個邏輯塊可能對應兩個或者多個物理塊,分別為source.block和target.block,target.block中存儲的數(shù)據(jù)是最新的,source.block中存儲的數(shù)據(jù)是過時的。Merge操作就是將source.block和target.block中的有效數(shù)據(jù)合并到一個新的物理塊中,并將source.block和target.block中的數(shù)據(jù)擦除,這樣就可以騰出一個空的物理塊。寫操作在選擇空塊寫入數(shù)據(jù)時,會根據(jù)空塊的flag選擇擦除次數(shù)較少的空塊作為目標空塊,實現(xiàn)均衡算法,保證Flash的合理使用。寫操作簡化框架如圖2所示。

        CMD25的基本流程和CMD24一樣,只是在沒有收到CMD12前,S281一直執(zhí)行寫數(shù)據(jù)塊的操作,邏輯頁內(nèi)地址也會一直遞增。當邏輯地址增加后需要切換邏輯塊或邏輯簇時,就需要重新調(diào)用地址轉(zhuǎn)換函數(shù)建立映射表。

        2.3分區(qū)切換固件設(shè)計

        分區(qū)加密SD卡的固件設(shè)計主要集中在兩個方面:一是對用戶的訪問限制即外部認證,防止非法用戶;二是對SD卡中的數(shù)據(jù)加密,防止SD存儲卡被暴力破解讀取數(shù)據(jù)[6]。同時由于對不同數(shù)據(jù)安全的要求不同,將SD存儲卡的存儲空間分為兩個分區(qū),分別為普通區(qū)和保密區(qū),普通區(qū)可見,保密區(qū)隱藏。由于本設(shè)計中保密區(qū)和普通區(qū)分別為2G,同一時間只有一個分區(qū)可見,固件上采用相對地址跳轉(zhuǎn)的方式實現(xiàn)分區(qū)。用戶通過上層軟件輸入密碼并發(fā)出外部認證命令,控制器S281接收到命令后驅(qū)動內(nèi)置的隨機數(shù)發(fā)生器產(chǎn)生隨機數(shù),上層軟件獲取來自S281的隨機數(shù),并采用3DES加密[7]。與此同時,S281采用NAND Flash中存儲的密碼對隨機數(shù)采用同樣的加密算法加密,S281比對兩次加密的結(jié)果,相同則說明用戶密碼正確,用戶獲取切換分區(qū)的權(quán)限,否則認證失敗。外部認證成功后,用戶可以通過上層軟件發(fā)出切換至保密區(qū)的命令,S281接收到切換命令后,將邏輯地址跳轉(zhuǎn)至保密區(qū)的地址,保密區(qū)的數(shù)據(jù)對用戶可見,用戶便可以對保密區(qū)進行讀寫操作。SD卡全盤數(shù)據(jù)均采用AES256加密算法加密[8],用戶讀寫SD卡時,固件自動加解密數(shù)據(jù),下電或切換至普通區(qū)后需要重新認證才能切換至保密區(qū)[9]。具體流程如圖3所示。

        為實現(xiàn)外部認證和分區(qū)切換,采用動態(tài)接口文件的方式,即CPU通過特殊的標識碼過濾命令包。用戶通過上層軟件發(fā)送外部認證或分區(qū)切換命令時,實際上是通過寫命令CMD24向FIFO中傳入帶有特殊標識碼的512字節(jié)

        數(shù)據(jù)包,特殊標識碼由標識碼和命令字組成。標識碼代表發(fā)送的命令為特殊的命令標識,命令字代表特殊命令的類型如外部認證、切換分區(qū)等。上層軟件發(fā)送帶有標識碼和命令字的數(shù)據(jù)包到FIFO后,S281識別FIFO中的數(shù)據(jù)包為特殊的命令包后,根據(jù)命令字判斷需要執(zhí)行的操作,根據(jù)命令字固件上實現(xiàn)外部認證或分區(qū)切換的操作。并將操作后的響應存儲在FIFO中,上層軟件通過發(fā)送CMD17讀取FIFO中的響應,判斷操作是否成功完成,并反饋到用戶。

        3結(jié)語

        本文介紹了一種SD卡的固件設(shè)計,此固件基于國內(nèi)自主研發(fā)的SD控制器S281。相較于一般的SD卡,此固件采用S281內(nèi)置的3DES和AES256加密算法以實現(xiàn)存儲盤外部認證和分區(qū)加密,并通過實驗測試驗證了固件可以正確無誤運行。同時此設(shè)計方案采用動態(tài)接口文件的方式,具有很好的可擴展性和可移植性,后續(xù)可以增加其他功能,如修改加解密密碼、加密數(shù)據(jù)流等。經(jīng)過多次實驗驗證,此固件可以正確穩(wěn)定工作,具有很好的應用價值和發(fā)展前景。

        參考文獻參考文獻:

        [1]王超.基于FPGA的Micro SD卡控制器研究[D].哈爾濱:哈爾濱工業(yè)大學,2014:12.

        [2]趙雪梅.AES加密算法的實現(xiàn)及應用[J].常熟理工學院學報,2010(2):105110.

        [3]張聰,張濤.基于USB3.0設(shè)備控制器的固件設(shè)計[J].電子器件,2013(3):383388.

        [4] RIJMEN V.SD group:physical layer simplified Specification version 3.00[J].SD Card Association,2009.

        [5]MICRON CORPORATION.L74A NAND flash memory data shee Rev.E3/11EN[R].Boise:Micron Corporation,2009.

        [6]唐婷.加密U盤的設(shè)計與實現(xiàn)[J].成都電子機械高等專科學校學報,2006(2):1416.

        [7]FELDHOFER M,WOLKERSTORFER J.AES implementation on a grain of sand[J].Information Security Iee Proceedings,2005,152(1):1320.

        [8]SCIENCE T.Advanced encryption standard (AES)[J].Federal Information Processing Standards Publication,2001,3373(46):162181.

        [9]G CANIVET,P MAISTRI R.Glitch and laser fault attacks onto a aecure AES implementation on a SRAMBased FPGA[J].Journal of cryptology:the journal of the International Association for Cryptologic Research,2011,24(2):247268.

        責任編輯(責任編輯:陳福時)

        无码国产精品一区二区免费式芒果| 97色综合| 日韩有码中文字幕第一页| 日韩av中文字幕波多野九色| 亚洲人妻调教中文字幕| 潮喷大喷水系列无码久久精品| 国产成人无码一区二区在线观看 | 精品国产AⅤ无码一区二区| 亚洲综合久久一本久道| 精品国产中文久久久免费| 无码伊人久久大蕉中文无码| 日韩av在线免费观看不卡| 亚洲另类丰满熟妇乱xxxx| 蜜臀性色av免费| 最近中文字幕完整版| 亚洲AV手机专区久久精品| 久久精品一区一区二区乱码| 亚洲国产精品久久久av| 激性欧美激情在线| 久久精品无码一区二区2020| 亚洲一区极品美女写真在线看| 青青草视频在线免费视频| 亚洲国产精品高清在线| 亚洲av无码片vr一区二区三区| 国产一区二区波多野结衣| 欧美性猛交xxxx黑人猛交| 国产乱子伦农村xxxx| 国产精品国产三级农村妇女| 内射爆草少妇精品视频| 国产精品天干天干综合网| 色狠狠av老熟女| 另类专区欧美在线亚洲免费| 久久精品国产亚洲av热九九热| 日本成人午夜一区二区三区| 国产精品沙发午睡系列| 97久久精品无码一区二区天美| 波霸影院一区二区| 日韩精品首页在线观看| 少妇又骚又多水的视频| 挺进邻居丰满少妇的身体| 国产内射性高湖|