基于GPU實現(xiàn)的AES加密(二)
出處:電子愛好者博客 發(fā)布于:2013-07-22 15:34:48
3 AES 在GPU 上的實現(xiàn)
了解了可編程GPU 流水線及AES 算背景后,就可以開始著手設計該算法。如圖2,是AES 加密算法的流程。圖中大方框內(nèi)的內(nèi)容就是GPU 代替CPU 實現(xiàn)的步驟。首先考慮輸入問題。明文是應用程序的輸入,這可以通過二維紋理的形式存入GPU 的紋理緩存,以供GPU 使用。其實每一個Round 就是渲染,每次渲染是由四個Pass 組成,這四個Pass 分別是SubBytes,ShiftRows,MixColumns,AddRoundKey.優(yōu)化后將SubBytes 和ShiftRows 合并為一個Pass .
3. 1 初始化階段
在初始化階段,需要用CPU 來擴展密鑰,生成十組新的密鑰,用于每Round 中的AddRoundKey.
然后需要將輸入數(shù)據(jù)( 明文) InPutData [ Width]
[Height][4],綁定到一張二維紋理。輸入數(shù)據(jù)的大小是Width*Height*4 個字節(jié)。由于明文存儲在二維紋理中,所以需要快速準確地用紋理坐標中找到對應的數(shù)據(jù)。通過如下的Draw 函數(shù)能實現(xiàn)該功能,紋理坐標= (頂點坐標+1. 0) /2.由于需要將每個Pass 的結(jié)果輸出到紋理緩存,所以需要分別創(chuàng)建四張二維紋理及四個幀緩沖區(qū),并一一綁定 .

3. 2 SubBytes 操作
SubBytes 操作使用一個非線性的稱為S-box 的替換表,獨立地代替字節(jié),如圖3 所示。S-box 是提前已計算好的一個統(tǒng)一的表,所以可以直接預先存儲在GPU 內(nèi)存中,在對應的Shader(SubBytes)中聲明。

3. 3 ShiftRows 操作
ShiftRows 操作循環(huán)地移動體的三行,從而有效地讓行數(shù)據(jù)變得不規(guī)則,如圖4 所示。其實此時可以做一個簡單的優(yōu)化, 就是把SubBytes 操作和ShiftRows 操作融合到一個Pass 里 .

3. 4 MixColumns 操作
MixColumns 操作的目的是使每一列的數(shù)據(jù)變得不規(guī)則,如圖5 所示。該操作通過對每一個列向量執(zhí)行矩陣乘操作來完成,如公式(2)所示。因為乘法是在AES 的一個有限域上操作,所以不能使用一般的乘操作。


這個有限域的閉包在一個字節(jié)的范圍內(nèi)。其程序清單如下:


3. 5 AddRoundKey 操作
這個操作是很簡單的。就是用當前輪的密鑰與體對應的每個字節(jié)進行異或操作。
4 性能對比
有了一個在基于GPU 的AES 實現(xiàn),現(xiàn)在就可以測量一下該方法的性能。這里忽略了解密,因為在AES算法中,加密和解密的性能是相同的。性能對比如表1 所示。批塊大小是指,每次被送往GPU 中的數(shù)據(jù)量。
測試的機器配置如下:
?。?)CPU:Intel(R) XeOn(R) W3520 2. 67GHZ
(2)內(nèi)存:4GB
?。?)顯卡: GTX 470 顯存:1GB
?。?)系統(tǒng):Windows7 x64 旗艦版

5 結(jié)束語
從表1 可知,當批塊小于4MB 時,基于GPU 的AES 加密方法顯著地提高了加密速度。當批塊大小為4MB 時,加密速度大約是基于CPU 加密的40 倍。當批塊過大時,由于紋理大小的限制加密速度顯著降低。
此時可以把明文分割為4MB 的批塊,同時使用多張二維紋理進行加密。
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 恒玄BES2800芯片:6nm工藝+雙核M55+藍牙5.4的融合之作2025/11/5 9:30:36
- AR眼鏡芯片有哪些選擇2025/10/31 15:13:48
- 一文了解車規(guī)級芯片認證標準2025/9/16 15:40:14
- 探究 MCU 芯片靜電高但產(chǎn)品靜電指標不佳的原因2025/9/4 16:12:23
- 138譯碼器的工作原理2025/8/29 17:04:49









