<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>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 以可編程方式打造加密引擎

以可編程方式打造加密引擎

作者: 時(shí)間:2011-02-15 來(lái)源:網(wǎng)絡(luò ) 收藏
設計人員時(shí)常需要通過(guò)增加計算能力和/或額外輸入的方式來(lái)延長(cháng)現有系統的壽命。在這方面,可編程系統平臺大有用武之地。我們曾經(jīng)希望采用安全網(wǎng)絡(luò )連接功能來(lái)升級一套網(wǎng)絡(luò )可編程系統。安全網(wǎng)絡(luò )連接功能需要加密才能運行安全外殼(SSH)、傳輸層安全(TLS)、安全套接層(SSL)或虛擬專(zhuān)用網(wǎng)(VPN)等協(xié)議。這種安全需求伴隨各種系統接入因特網(wǎng)的需求同步增長(cháng),例如,為了啟用遠程管理與分布式控制系統。因該領(lǐng)域仍在發(fā)展之中,而且標準尚未固定,因此成本主要取決于一次性工程費用。所以,采用FPGA技術(shù)能實(shí)現最高價(jià)值。

我們的系統基于Missing Link Electronics(MLE)公司的“軟”硬件平臺,其FPGA具有靈活的I/O,能夠連接各種傳感器和執行器。該平臺采用可編程邏輯實(shí)現片上系統,以MicroBlaze CPU或PowerPC CPU作為其核心。CPU為操作系統與用戶(hù)空間應用軟件運行MLE Linux軟件棧。由于采用MicroBlaze或PowerPC作為主CPU,當運行Linux操作系統外加強大加密功能時(shí),該系統顯然無(wú)法提供所需要的計算性能,而且也無(wú)法改變物理硬件。為了實(shí)現系統加速,我們使用可編程系統將計算從軟件域轉移到硬件側。

協(xié)處理硬件

可編程系統基本上是一個(gè)或幾個(gè)CPU(運行操作系統與應用軟件)的組合,外加一個(gè)FPGA。FPGA在其中用作靈活的接口“適配器”以及協(xié)處理硬件。我們可以在單獨輔助芯片上實(shí)現可編程系統,或者將全部都集成到單個(gè)器件上。我們可以根據FPGA器件和CPU之間的通信方式,采用不同方法調節系統性能和功能。

其中一種方法就是添加對等處理器,通過(guò)內存映射狀態(tài)和控制寄存器與CPU實(shí)現同步。因為通過(guò)同一系統總線(xiàn)運行所有通信會(huì )很快降低性能,因此我們希望把CPU數據流與對等處理器分開(kāi)。而采用賽靈思的Central DMA或多端口儲存器控制器(MPMC)等片上系統組件能夠輕松滿(mǎn)足上述愿望。

另外,也可以增加一個(gè)協(xié)處理器,這種情況下能通過(guò)增加自定義指令(也叫編譯功能)有效地擴展CPU的指令集。例如,它適合浮點(diǎn)單元,而且賽靈思的結構協(xié)處理器模塊(FCM)技術(shù)能輕松支持上述功能。此處的優(yōu)勢是在CPU和協(xié)處理器之間使用一條從內存到系統總線(xiàn)的專(zhuān)用通信通道。對于PowerPC,其為輔助處理單元(APU),而對于MicroBlaze,則是快速單工鏈路(FSL)。

在加密和解密中,大部分運算按行或列執行,剩下四項運算并行計算,硬件對此任務(wù)得心應手。

AES:黃金標準

但是沒(méi)有重大的系統重新設計,又該如何真正加速加密?對于加密,高級加密標準(AES)是一個(gè)事實(shí)標準。

采用AES加密時(shí),無(wú)法通過(guò)定義減少計算任務(wù),從而使系統很快達到性能極限。如圖1所示,其中顯示用Valgrind分析工具、通過(guò)SCP(SSH會(huì )話(huà))進(jìn)行的文件傳輸的分析結果。此時(shí)AES加密占用三分之二計算任務(wù)。

《電子系統設計》
圖1:在采用Valgrind工具的SCP傳輸中,AES加密占用三分之二的計算任務(wù)。

AES-128采用密鑰和128位塊大小,使用許多并發(fā)8字節運算。AES屬于分組密碼,基于按4x4字節陣列組織的固定分組大小運算。我們曾經(jīng)采用128位分組大小,它能抵擋所有已知攻擊,安全性甚至強于192位和256位版本。

采用128位AES時(shí),執行加密與解密需要12個(gè)回合,每個(gè)回合需要幾步運算。第一項任務(wù)是通過(guò)所謂的密鑰擴展過(guò)程從密鑰中算出回合金鑰。每個(gè)回合都采用純文本自身的回合密鑰執行純文本的逐位異或運算。然后進(jìn)行字節代替、行位移和列混合運算,并再次執行回合金鑰的異或運算。

最后一個(gè)回合稍有不同,因為其中省略了一些步驟。加密過(guò)程采用所謂的S盒(其提供非線(xiàn)性)執行替代。我們可以把它安置到一個(gè)16?16?8位矩陣中,從而能夠適應常見(jiàn)的賽靈思BRAM原語(yǔ)。多個(gè)S盒實(shí)例可以加速I(mǎi)P核,并在適當的位置為內核提供所需數據,而無(wú)需等待對主存儲器的長(cháng)時(shí)間總線(xiàn)存取。解密過(guò)程大同小異,其采用相同密鑰,但方向相反,并且使用不同S盒。

增速12倍

在加密和解密中,大部分運算按行或列執行,剩下四項運算并行計算—而硬件對此任務(wù)得心應手。這樣就能夠通過(guò)不同來(lái)源實(shí)現AES硬件的各個(gè)部分。為了加速系統,我們從龐大、快速增長(cháng)的OpenCores.org資源庫(http://opencores.org/project,avs_aes)獲取AES內核。

我們刪除了原有的總線(xiàn)接口(因為它適用于另一種FPGA架構),另外為APU添加了一個(gè)接口,以便把AES內核作為FCM協(xié)處理器連接到PowerPC上。我們共使用8個(gè)所謂的UDI指令在PowerPC和AESFCM之間傳輸數據。

工作結果非常令人滿(mǎn)意(見(jiàn)圖2)。硬件加速的系統比原實(shí)現方案快了12倍。原來(lái)用以300MHz運行的獨立的PowerPC加密一個(gè)單塊需要17.8微秒,而采用以150MHz運行的AESFCM只需1.5微秒。如果只以升級到速度稍快的CPU來(lái)加速運算,我們采用硬件加速后的1.5微秒速度表現超過(guò)基于Intel Atom1.6GHz CPU的純軟件實(shí)現(其需要2.7微秒)。上述結果證明了使用FPGA技術(shù)的硬件加速的卓越潛能。

《電子系統設計》
圖2:硬件加速系統(中間綠條)快于獨立的PowerPC或Atom處理器。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(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>