• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    SD卡硬件加密在工業(yè)MP3中的實現(xiàn)

    2012-08-10 03:40:48劉宇紅
    通信技術(shù) 2012年11期
    關(guān)鍵詞:扇區(qū)命令密碼

    肖 敏,劉宇紅

    (貴州大學(xué)計算機(jī)科學(xué)與信息學(xué)院,貴州 貴陽 550025)

    0 引言

    系統(tǒng)的應(yīng)用背景是關(guān)于汽車車載診斷系統(tǒng)(OBD,On-Board Diagnostics)故障代碼的智能語音播放器設(shè)計,在汽車運(yùn)行中過程中把汽車的故障播放出來。其中故障代碼被整理成了2萬多條語音文件,花費(fèi)近2個月的時間才完成,考慮到這些語音文件的重要性,急需對文件進(jìn)行加密處理。然而現(xiàn)行的在嵌入式系統(tǒng)中的加密方案全部出現(xiàn)在高端CPU上,如掌上電腦、高端手機(jī),這些終端成本較高并且功耗也比較大,因此如何在工業(yè)應(yīng)用領(lǐng)域中保證在低成本、低功耗的微控制器下實現(xiàn)文件加密就成了該項目研究的重點(diǎn)。

    1 系統(tǒng)硬件組成部分

    1.1 SD卡

    安全數(shù)碼卡(SD,Secure Digital Memory Card)是一種為滿足安全、容量、性能和使用環(huán)境等各方面的需求而設(shè)計的一種存儲介質(zhì),卡內(nèi)含一個智能控制模塊[1]。SD卡之所以稱之為安全數(shù)碼卡,是因為該智能控制模塊中固化有硬件加密技術(shù)。

    SD卡與微控制器的接口有安全數(shù)字輸入輸出(SDIO,Secure Digital Input and Output Card)和串行外設(shè)接口(SPI,Serial Peripheral Interface)兩種通信模式[2]。可以根據(jù)實際需要來選擇使用這兩種通信模式中的一種與卡進(jìn)行通信,由于不是所有微控制器都帶有SDIO接口,并且SPI協(xié)議可以通過普通IO口模擬,所以本系統(tǒng)采用SPI通信模式[3]。

    1.2 VS1003音頻解碼器

    VS1003是一款廉價的 MP3/WMA/MIDI音頻解碼芯片。芯片內(nèi)包含一個自主產(chǎn)權(quán)的低功耗DSP處理器核VS_DSP,外圍提供了一個支持SPI協(xié)議的串行控制數(shù)據(jù)接口以及一個高品質(zhì)可變采樣率的ADC和立體聲ADC[4]。

    1.3 微控制器STM32F103C8T6

    STM32F103C8T6是一款高性能、低功耗、高性價比的工業(yè)級MCU,內(nèi)部集成了2個硬件SPI控制器,正好能滿足該系統(tǒng)的設(shè)計,從而節(jié)省了硬件成本并控制了產(chǎn)品體積[5]。系統(tǒng)硬件設(shè)計框圖如圖1所示。

    圖1 系 硬件設(shè)計框圖

    2 SD卡加密優(yōu)勢及程序設(shè)計要點(diǎn)

    2.1 SD卡的加密優(yōu)勢

    SD卡在硬件上內(nèi)嵌了加密算法,當(dāng)卡上電時,若卡包含密碼,卡會自動進(jìn)入鎖定狀態(tài)[6]。在這種狀態(tài)下讀寫都是不容許的,從而保障了卡內(nèi)數(shù)據(jù)的安全。相對閃存中常見的軟件加密,SD卡硬件加密有以下幾大優(yōu)勢:

    (1)安全性高

    閃存中的軟件加密是通過加密算法把閃存中的文件進(jìn)行加密,當(dāng)該閃存被格式化后,加密功能不復(fù)存在,但此時可以通過 PC上的恢復(fù)軟件恢復(fù)卡中的數(shù)據(jù)。而SD卡硬件加密以后卡無法在PC機(jī)上識別,更無法對卡進(jìn)行格式化,具有極高的安全性。

    (2)實現(xiàn)成本低廉

    只需一個廉價的單片機(jī)就能對 SD卡內(nèi)數(shù)據(jù)加密,而常見的嵌入式設(shè)備因為主控CPU的限制很難適應(yīng)大數(shù)據(jù)通過軟件算法加密。

    (3)操作速度快

    軟件加密是對閃存中的單個文件加密,加密的速度取決于算法的難度和CPU的速度,并且加密后讀寫速度會因為要軟件解密而變慢。SD卡加密是對整個磁盤進(jìn)行加密,純硬件加密不影響讀寫速度。經(jīng)測試,一張數(shù)G的SD卡加密所需要的時間不超過1s,這是軟件加密不可能實現(xiàn)的。這也為數(shù)據(jù)加密在工業(yè)上的應(yīng)用提供了實時條件。

    2.2 SD卡的加密程序設(shè)計要點(diǎn)

    SD卡密碼和密碼長度保存在128 bit的PWD寄存器和8 bit的PWD_LEN寄存器中,這些寄存器是是非易失性的。與 SD卡加密的操作命令字為CMD42,在寫入CMD42后接著寫入SD卡的命令數(shù)據(jù)塊即可完成對SD卡硬件加密的操作。圖2是加密命令數(shù)據(jù)塊的結(jié)構(gòu)。

    圖2 與SD卡加密的命令數(shù)據(jù)塊結(jié)構(gòu)

    根據(jù)圖 2,可以把命令數(shù)據(jù)塊中的第一個字節(jié)(即Byte0)稱為命令碼,通過該命令碼的配置可以完成設(shè)置密碼、清除的密碼、上鎖與解鎖以及強(qiáng)制擦除卡片的內(nèi)容等操作。下面分析常見的接種操作方式中的要點(diǎn)。

    (1)加密并上鎖

    給 SD卡加密并上鎖后,SD卡在沒有解鎖的情況下將不能被讀寫。根據(jù)圖 2要上鎖的命令為Bit2=1,設(shè)置密碼的命令為Bit0=1,其它的位設(shè)置為0,即命令碼為0x05。在SD卡接受CMD42命令字前需要降低SPI的通信速度,這樣才能更好的接受加密指令。SD卡在讀寫數(shù)據(jù)時塊長度(block)為512Byte,但在寫入密碼前應(yīng)通過CMD16命令字設(shè)置block長度為密碼長度(PWD_LEN)加上兩個 Byte即PWD_LEN+2,在加密操作完成后恢復(fù)數(shù)據(jù)塊長度為512Byte。以設(shè)置密碼為“123456”為例,加密并上鎖的關(guān)鍵代碼如下:

    (2)解鎖

    解鎖是指當(dāng)SD卡加密并上鎖后,用戶輸入密碼操作SD卡內(nèi)數(shù)據(jù)的一種方式,在系統(tǒng)丟電后SD卡自動進(jìn)入上鎖狀態(tài)。解鎖的操作和上面的加密上鎖類似,只是把命令碼替換成0x00,然后寫入密碼長度和密碼內(nèi)容,SD卡接受這些數(shù)據(jù)后會匹配上一次寫入的密碼,如果匹配成功容許訪問卡中的數(shù)據(jù),反之卡保持為鎖定狀態(tài)。

    (3)強(qiáng)制擦除

    如果用戶忘記了SD卡的密碼,可以通過強(qiáng)制擦除命令擦除卡片上的密碼及密碼長度,但此時卡上的數(shù)據(jù)也隨之刪除。強(qiáng)制擦除的命令碼為0x80,在強(qiáng)制擦除前要將 block設(shè)置為 1Byte,具體操作流程如圖3所示。

    圖3 強(qiáng)制清除密碼流程

    3 系統(tǒng)軟件設(shè)計

    系統(tǒng)軟件設(shè)計主要主要包括 Fat32文件系統(tǒng)移植、對SD卡進(jìn)行加密與解鎖、MP3文件解碼等幾個部分。

    3.1 移植FAT32文件系統(tǒng)

    由于FAT16最大只支持2G的容量,所以大容量SD卡中的文件系統(tǒng)必須兼容FAT32文件系統(tǒng),目前嵌入式系統(tǒng)中文件系統(tǒng)很多比如 C/FS、ZLG/FS、eFSL、FatFS等,其中FatFS文件系統(tǒng)是免費(fèi)開源的文件系統(tǒng),它有占用資源少、讀寫速度快、易于移植的優(yōu)點(diǎn),并且它完全兼容 FAT32文件系統(tǒng),并提供了豐富的API[7]。

    移植的重點(diǎn)主要在于編寫 diskio.c這個文件,原理是把SD卡讀寫扇區(qū)的函數(shù)與FatFS文件系統(tǒng)中的讀寫函數(shù)進(jìn)行掛接。diskio總共需要編寫 6個函數(shù),但其中最重要的只有三個函數(shù),他們分別是 disk_initialize、disk_read和disk_write,其它的接口函數(shù)如果不需要使用,可以直接返回0。

    1)disk_initialize:該函數(shù)的功能是初始化存儲媒介,這里是指SD卡。在這個函數(shù)中加入SD卡的初始化函數(shù),這樣系統(tǒng)掛載FatFS時SD卡會隨之初始化。

    2)disk_read:讀扇區(qū)函數(shù),是通過文件系統(tǒng)讀取SD卡最基本的動作之一,此處需要把SD卡驅(qū)動中寫單個扇區(qū)和寫多個扇區(qū)的函數(shù)與其掛接。

    3)disk_write:寫扇區(qū)函數(shù),與讀扇區(qū)函一樣,這里要把SD卡驅(qū)動中讀單個扇區(qū)和讀多個扇區(qū)的函數(shù)與其掛接。

    3.2 在SD卡加密狀態(tài)下對MP3解碼

    由于VS1003是塊硬件語音解碼芯片,在微控制器從SD卡中讀取MP3文件并轉(zhuǎn)換成二進(jìn)制碼流后,通過SPI總線傳送給VS1003就能進(jìn)行MP3播放[6]。

    在系統(tǒng)第一次上電時要判斷SD卡是否有加密,如果沒有加密,在系統(tǒng)上電后馬上給SD卡加密并上鎖,以保護(hù)SD卡內(nèi)的數(shù)據(jù)的安全,然后匹配密碼進(jìn)行解鎖,最后用戶就可以操作卡中的數(shù)據(jù)了。在掛載文件系統(tǒng)后,如果能通過文件系統(tǒng)讀取到卡的信息,如卡的容量、扇區(qū)大小就表明卡沒有加密,反之如果讀不到SD卡的基本信息那么該卡已經(jīng)加密。整個系統(tǒng)軟件設(shè)計流程如圖4所示。

    圖4 系統(tǒng)軟件設(shè)計流程

    4 系統(tǒng)整體測試

    SD卡經(jīng)過該系統(tǒng)加密后通過讀卡器插入PC機(jī),PC機(jī)無法檢測到SD卡的盤符,不能對SD卡進(jìn)行任何操作。在執(zhí)行強(qiáng)制擦除命令后,SD卡中的文件系統(tǒng)被破壞,此時PC機(jī)依舊無法打開該卡,如果需要繼續(xù)使用該SD卡,需要在PC上重新格式化。在格式化前后都無法通過數(shù)據(jù)恢復(fù)軟件恢復(fù)任何數(shù)據(jù),該測試所使用的恢復(fù)軟件有:EasyRecovery、DiskGenius和金山數(shù)據(jù)恢復(fù)等等。

    經(jīng)過運(yùn)行測試,系統(tǒng)可以在加密的情況下流暢的播放320kb/s的高品質(zhì)MP3音樂文件,成功完成了帶加密功能的工業(yè)MP3的實現(xiàn)。

    [1] SanDisk Limited.SanDisk SD Card Product Manual[EB/OL].(2004-11-15)[2012-05-02].http://www.flas hgenie.net/img/productmanualsdcardv2.2final.pdf.

    [2] 孟惠霞.基于ARM的SD卡文件系統(tǒng)設(shè)計[J].通信技術(shù),2009,42(07):135-137.

    [3] 范逵.一種基于熱插拔的 SD卡在交換機(jī)上的設(shè)計與實現(xiàn)[J].通信技術(shù),2009,42(07):222-225.

    [4] VLSI Solution.VS1003 User Mannual[S]. USA:[s.l.],2008.

    [5] STMicroelectronics.RM0008 Reference Manual[S].USA:[s.l.],2009.

    [6] 婁曉晉.基于 USB 和 SD 接口智能卡的 CSP設(shè)計[J].信息安全與通信保密,2007(01):153-155.

    [7] 李世奇.基于FatFs文件系統(tǒng)的SD卡存儲器設(shè)計[J].測控技術(shù),2011(12):79-81.

    猜你喜歡
    扇區(qū)命令密碼
    分階段調(diào)整增加扇區(qū)通行能力策略
    南北橋(2022年2期)2022-05-31 04:28:07
    密碼里的愛
    只聽主人的命令
    密碼疲勞
    英語文摘(2020年3期)2020-08-13 07:27:02
    移防命令下達(dá)后
    U盤故障排除經(jīng)驗談
    密碼藏在何處
    基于貝葉斯估計的短時空域扇區(qū)交通流量預(yù)測
    這是人民的命令
    重建分區(qū)表與FAT32_DBR研究與實現(xiàn)
    集安市| 天津市| 柳州市| 湖州市| 柳林县| 南城县| 固始县| 阿鲁科尔沁旗| 桐城市| 左云县| 前郭尔| 盖州市| 固原市| 漳州市| 盖州市| 庆城县| 漳州市| 高唐县| 商南县| 东乡县| 广昌县| 福泉市| 拉孜县| 淮南市| 禹州市| 辽阳县| 金溪县| 北安市| 应城市| 且末县| 彰武县| 屏山县| 达拉特旗| 盐池县| 诸暨市| 苏尼特右旗| 施甸县| 天祝| 阿克陶县| 绿春县| 苍梧县|