關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于MEMS強(qiáng)鏈和FPGA的USB移動(dòng)硬盤(pán)數(shù)據(jù)加解密系統(tǒng)

基于MEMS強(qiáng)鏈和FPGA的USB移動(dòng)硬盤(pán)數(shù)據(jù)加解密系統(tǒng)

作者: 時(shí)間:2009-09-14 來(lái)源:網(wǎng)絡(luò) 收藏

  3. 物理密鑰與密碼認(rèn)證

  物理密鑰是相對(duì)于邏輯密鑰而言的,邏輯密鑰通常以二進(jìn)制形式存在于芯片內(nèi)部ROM 區(qū), 容易被破解。而物理密鑰固化在機(jī)械結(jié)構(gòu)內(nèi)部。本設(shè)計(jì)采用的反向嚙合齒輪集鑒碼機(jī)構(gòu)所蘊(yùn)含 的密鑰就屬于物理密鑰。它的結(jié)構(gòu)相當(dāng)隱含,不是專(zhuān)業(yè)人士即使知道了鑒碼機(jī)構(gòu),也很難推出 其密碼。

  密碼認(rèn)證開(kāi)始時(shí), 控制器把接收到的來(lái)自PC 的24 位待驗(yàn)證二進(jìn)制密碼以脈沖的形 式傳遞給強(qiáng)鏈。強(qiáng)鏈的電機(jī)會(huì)根據(jù)脈沖驅(qū)動(dòng)碼輪。若密碼正確,反干涉齒輪*無(wú)摩擦的走通 一周回到原位;只要有一位密碼錯(cuò)誤,反干涉齒輪*在該位卡死。 控制器根據(jù)強(qiáng)鏈的反 饋信號(hào)作出判斷,如果驗(yàn)證通過(guò),則將該系統(tǒng)枚舉成一個(gè)可移動(dòng)磁盤(pán),并把該正確密碼傳遞給 ,作為AES 加密算法的密鑰;否則向PC 機(jī)返回驗(yàn)證失敗的信息。

  4. ATA 協(xié)議控制器的實(shí)現(xiàn)

  從密碼認(rèn)證通過(guò),枚舉開(kāi)始的那一刻起, 控制器得到了對(duì)硬盤(pán)的訪問(wèn)權(quán)。 根據(jù) ATA 協(xié)議,對(duì)支持Ultra DMA 傳輸方式的IDE 硬盤(pán)而言,操作歸結(jié)為兩種,對(duì)硬盤(pán)接 口寄存器讀寫(xiě)以及對(duì)硬盤(pán)扇區(qū)進(jìn)行Ultra DMA 批量扇區(qū)。為了對(duì)硬盤(pán)數(shù)據(jù)進(jìn)行加解密,我們把 插入連接GPIF 接口和硬盤(pán)接口的IDE 總線,這樣所有控制信號(hào)和數(shù)據(jù)信號(hào)都要通過(guò) ,受到FPGA 的監(jiān)視和控制。

  FPGA 必須實(shí)現(xiàn)有限狀態(tài)機(jī),能夠?qū)π盘?hào)進(jìn)行協(xié)議解析,區(qū) 分出那些需要加解密的扇區(qū)數(shù)據(jù),也就是在Ultra DMA 傳輸過(guò)程中出現(xiàn)在數(shù)據(jù)總線上的數(shù)據(jù)。 在PIO 狀態(tài)時(shí),F(xiàn)PGA 讓所有信號(hào)保持直通,因而讀寫(xiě)硬盤(pán)接口寄存器的操作不受任何影響,但狀態(tài)機(jī)監(jiān)測(cè)對(duì)硬盤(pán)接口寄存器的寫(xiě)入操作。一旦發(fā)現(xiàn)寫(xiě)入命令寄存器的命令代碼為DMA 讀 (0xC8 或0x25)或DMA 寫(xiě)(0xCA 或0x35)命令,則有限狀態(tài)機(jī)進(jìn)入DMA 狀態(tài)。

  因?yàn)榭紤]到數(shù)據(jù)經(jīng)加解密模塊會(huì)有200ns 左右的延時(shí),如果控制信號(hào)仍然直通一定不能滿 足DMA 傳輸協(xié)議的時(shí)序要求,所以理想的辦法是把控制信號(hào)也延時(shí)相應(yīng)的時(shí)間。

  延時(shí)多少的確定很困難,況且也沒(méi)有必要,我們采取的方法是設(shè)計(jì)了三個(gè)主要模塊:數(shù)據(jù) 接收模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)發(fā)送模塊,連成一條處理流水線,這樣既能對(duì)數(shù)據(jù)流進(jìn)行完全 時(shí)序化的控制,又能維持較高的數(shù)據(jù)吞吐。如圖3 所示。數(shù)據(jù)接收模塊的任務(wù)是把硬盤(pán)發(fā)送過(guò)來(lái)的讀扇區(qū)數(shù)據(jù)或者USB 控制器發(fā)送來(lái)的寫(xiě)扇區(qū)數(shù) 據(jù)正確的接收和緩存;數(shù)據(jù)處理模塊的任務(wù)是對(duì)扇區(qū)數(shù)據(jù)進(jìn)行加密或解密處理;數(shù)據(jù)發(fā)送模塊 的任務(wù)是把處理完的結(jié)果數(shù)據(jù)發(fā)送出去。


  由于數(shù)據(jù)流是雙向的,所以?xún)蓚€(gè)方向上各有一條數(shù)據(jù) 收發(fā)流水線。在一次DMA 傳輸中,只有一條流水線是工作的,且它們暫時(shí)獲得IDE 總線的控 制權(quán)。

  不失一般性,我們討論下執(zhí)行DMA 讀命令的全過(guò)程。首先,在PIO 狀態(tài)下將DMA 讀命 令的代碼0xC8(或0x25)寫(xiě)入硬盤(pán)的命令寄存器。此后狀態(tài)機(jī)進(jìn)入DMA 讀狀態(tài),總線切換給 DMA 讀數(shù)據(jù)接收模塊和DMA 讀數(shù)據(jù)發(fā)送模塊。DMA 讀數(shù)據(jù)接收模塊與硬盤(pán)進(jìn)行握手確認(rèn), 啟動(dòng)UDMA 讀傳輸,此后每當(dāng)硬盤(pán)DMA strobe 信號(hào)(DMA 同步信號(hào))發(fā)生跳變,就對(duì)16 位 硬盤(pán)數(shù)據(jù)總線進(jìn)行采樣,并更新CRC 接收校驗(yàn);每采樣8 次則整合成一個(gè)128 位并行數(shù)據(jù),提 供給AES 解密模塊,該模塊取走這128 位數(shù)據(jù)開(kāi)始新一輪AES 解密迭代運(yùn)算,同時(shí)輸出前一 輪處理完的128 位解密數(shù)據(jù),并拆分為8 個(gè)16 位并行數(shù)據(jù),陸續(xù)存入一個(gè)16 位寬的FIFO。與 此同時(shí),DMA 讀數(shù)據(jù)發(fā)送模塊查詢(xún)到FIFO 中出現(xiàn)了數(shù)據(jù),就開(kāi)始不斷的從中讀取,并放在16 位數(shù)據(jù)總線上提供給USB 控制器,每放一次數(shù)據(jù),便翻轉(zhuǎn)一次DMA strobe 電平使得USB 控制 器的GPIF 接口能夠同步接收數(shù)據(jù),同時(shí)更新CRC 發(fā)送校驗(yàn)。

  當(dāng)硬盤(pán)把所有指定數(shù)量的加密數(shù)據(jù)都發(fā)送給FPGA 后會(huì)收到FPGA 的CRC 接收校驗(yàn)反饋, 若與硬盤(pán)內(nèi)部的CRC 校驗(yàn)一致,則硬盤(pán)認(rèn)為這次DMA 讀命令被正確執(zhí)行。

  當(dāng) FPGA 把所有處理完的解密數(shù)據(jù)都發(fā)送給USB 控制器后也會(huì)收到USB 控制器的CRC 校 驗(yàn)反饋,若與FPGA 內(nèi)部的CRC 發(fā)送校驗(yàn)一致,則可以認(rèn)為一次完整的含解密的DMA 讀命令 被正確執(zhí)行。

 



關(guān)鍵詞: MEMS FPGA USB 移動(dòng)硬盤(pán)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉