<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

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

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

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

  3. 物理密鑰與密碼認證

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

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

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

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

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

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

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


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

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

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

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

 



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

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>