<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于MEMS強鏈和FPGA的USB移動硬盤數據加解密系統(tǒng)

          基于MEMS強鏈和FPGA的USB移動硬盤數據加解密系統(tǒng)

          作者: 時間:2009-09-14 來源:網絡 收藏
           

          本文引用地址:http://www.ex-cimer.com/article/202653.htm

          圖 3 中的全局控制狀態(tài)機負責整個系統(tǒng)的控制和協調,它實時的監(jiān)測PIO 寫入命令,并在恰當的時機把IDE 總線控制權切換給加密流水線或解密流水線。當加解密流水線執(zhí)行完一次 DMA 傳輸命令后,總線控制權會重新交還給全局控制狀態(tài)機。

            5. AES 加密模塊的實現

            AES 的設計原理可參考文獻[1],下面只簡單介紹算法過程。AES 是一個迭代的分組密碼, 每一輪迭代稱為一個輪變換,包括一個混合和三個代換:

           ?。?)字節(jié)代換(SubBytes):利用S 盒對狀態(tài)的每一個字節(jié)進行非線性變換。

           ?。?)行移位(ShiftRow):對狀態(tài)的每一行,按不同的位移量進行行移位。

            (3)列混合(MixColumn):對狀態(tài)中的每一列并行應用列混合,在最后一輪省略該步。

           ?。?)擴展密鑰加(AddRoundKey):與擴展密鑰異或。 加密算法的流程如圖4 所示。

            相應的,解密算法使用逆序的擴展密鑰,輪變換分別為InvSubByte,InvShiftRow, InvMixColumn,數據流程稍有不同。

            我們設計的AES 加密運算模塊以128 位為一個分組,完成一個分組的運算需要11 個時鐘 周期。第1 個時鐘周期,密鑰擴展模塊輸出第1 個擴展密碼,也就是初始密碼本身;同時初始 變換模塊用這個擴展密碼對128 位明文作AddRoundKey 操作。

            第2 個到第11 個時鐘周期,密 鑰擴展模塊依次生成10 個擴展密碼,同時,輪變換模塊利用這些擴展密碼對輸入密文作10 個 輪次的輪變換,其中最后一輪缺少列混合操作,然后輸出最終的密文,結束一個分組的運算。

            6. 數據吞吐率分析

            Ultra DMA 在模式2 下的數據傳輸率為33.33MB/s。由于 全局時鐘頻率為100MHz, 所以加解密一個128 位分組需要110ns。加上數據的輸入和輸出階段各占用一個時鐘周期,總共 需要130ns。所以加解密模塊的數據處理速率約為61.54MB/s,完全能夠達到實時處理的要求。

            7. 結束語

            本文提出了一種安全高效的 數據加解密系統(tǒng)。其中, 強鏈的應用開辟 了系統(tǒng)物理認證的新方向;Ultra DMA 協議接口的 實現大大提高了硬盤讀寫的吞吐率,同時AES 加解模塊的處理速率又能完全滿足Ultra DMA 傳輸帶寬,兩者的有機協作使得一種高 效的硬件加解密流水線得以實現。


          上一頁 1 2 3 下一頁

          關鍵詞: MEMS FPGA USB 移動硬盤

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();