目錄
111.8 Gb/s
吞吐率
372×
相較CPU效能提升
644×
相較CPU能源效率提升
20%
相較GPU效能提升
1. 緒論
在數位貨幣、區塊鏈和雲端資料加密領域中,傳統基於軟體的加解密方法面臨著重大挑戰,包括運算速度緩慢、主機資源消耗高以及功耗過大等問題。雖然使用Verilog/VHDL的FPGA實作能提供硬體加速,但存在開發週期長和維護困難的缺點。
本研究提出了一種創新的基於OpenCL的FPGA加速器設計,用於3DES演算法,透過精密的優化策略解決了這些限制,包括管線平行架構、資料儲存調整、位元寬度改善、指令流優化、核心向量化和計算單元複製。
2. 3DES演算法原理
2.1 DES演算法
DES(資料加密標準)演算法使用56位元金鑰對64位元資料區塊進行操作,透過16輪的Feistel網路運算。核心數學運算可表示為:
$L_i = R_{i-1}$
$R_i = L_{i-1} \oplus f(R_{i-1}, K_i)$
其中$L_i$和$R_i$代表資料區塊的左右半部,$K_i$是回合金鑰,$f$是涉及擴展、金鑰混合、替換和排列操作的Feistel函數。
2.2 3DES演算法結構
3DES透過使用兩個或三個不同金鑰應用DES三次來增強安全性。加密過程如下:
$C = E_{K3}(D_{K2}(E_{K1}(P)))$
其中$E$代表加密,$D$代表解密,$P$是明文,$C$是密文,$K1$、$K2$、$K3$是三個56位元金鑰。此結構提供48輪加密,具有168位元有效金鑰長度。
3. 基於OpenCL的FPGA加速器設計
3.1 架構概述
提出的加速器採用全面的管線平行結構,專門為3DES演算法設計了48次迭代。該架構包含兩個主要模組:資料傳輸模組和演算法加密模組,針對Intel Stratix 10 GX2800 FPGA的最大吞吐量進行了優化。
3.2 資料傳輸優化
資料傳輸模組實施了兩個關鍵策略:
- 資料儲存調整:優化記憶體存取模式以減少延遲
- 資料位元寬度改善:增加資料路徑寬度以最大化頻寬利用率
這些優化實現了超過85%的實際核心頻寬利用率,顯著高於傳統實作。
3.3 演算法加密模組
加密模組採用指令流優化來建立深度管線化的平行架構。關鍵特性包括:
- 3DES回合的48級管線
- 平行金鑰排程
- 優化的S-box實作
- 最小化回合間的資料相依性
3.4 效能增強策略
透過以下方式實現額外的效能改進:
- 核心向量化:利用SIMD操作進行平行資料處理
- 計算單元複製:多個平行計算單元以增加吞吐量
- 記憶體存取優化:合併記憶體存取和本地記憶體利用
4. 實驗結果
實驗評估展示了卓越的效能成就:
| 平台 | 吞吐量 (Gb/s) | 效能提升 | 能源效率提升 |
|---|---|---|---|
| Intel Core i7-9700 CPU | 0.3 | 1× (基準) | 1× (基準) |
| Nvidia GeForce GTX 1080 Ti GPU | 93.2 | 310× | 71× |
| 提出的FPGA加速器 | 111.8 | 372× | 644× |
FPGA實作實現了111.801 Gb/s的吞吐量,同時消耗的功率顯著低於CPU和GPU實作,展示了在密碼學應用中卓越的能源效率。
5. 技術分析
專家分析:四步驟關鍵評估
一針見血 (直指核心)
這項研究對傳統密碼學實作提出了嚴峻的現實檢驗。相較於現代CPU的372倍效能提升不僅是漸進式的,更是架構上的顛覆。作者基本上證明了對於3DES工作負載,通用處理器從根本上效率低下,甚至GPU也無法在此特定任務上匹配FPGA的能源效率。
邏輯鏈條 (邏輯鏈結)
效能突破遵循清晰的優化層次:首先,他們透過資料儲存調整攻擊記憶體頻寬利用率(解決記憶體牆問題)。其次,他們實施了深度管線化以利用48輪3DES結構。第三,他們應用向量化和計算單元複製來最大化平行處理。這種系統化方法反映了高效能計算文獻中看到的優化策略,特別是柏克萊ASPIRE專案中使用的Roofline模型分析。
亮點與槽點 (優點與限制)
優點:644倍的能源效率提升令人震驚,對資料中心運營具有實際影響。使用OpenCL而非傳統HDL使這種方法對軟體工程師來說更易於接觸。與CPU和GPU的比較提供了全面的基準測試。
限制:論文僅專注於3DES,而3DES在許多應用中正被AES取代。關於擴展到其他演算法的討論有限。Intel Stratix 10 GX2800是高端FPGA,使得較小部署的成本效益值得懷疑。
行動啟示 (可行見解)
對於仍在使用3DES的雲端供應商和金融機構,這項研究提供了清晰的FPGA加速遷移路徑。相較於傳統FPGA開發,OpenCL方法顯著降低了進入門檻。組織應考慮基於FPGA的密碼學加速用於高容量交易處理,並將此架構視為加速其他對稱加密演算法的模板。
原始分析 (400字)
這項研究代表了密碼學加速的重大進展,彌合了軟體可存取性和硬體效能之間的差距。作者使用OpenCL進行FPGA開發的方法解決了高效能計算中的關鍵痛點:硬體加速的專業知識障礙。正如Khronos Group的OpenCL規範中所指出的,該框架使得「使用可移植的開放標準對異質系統進行平行程式設計」成為可能,使加速計算對主流開發者來說更易於接觸。
實現的111.8 Gb/s吞吐量展示了管線平行架構對密碼學工作負載的有效性。這種效能與其他領域特定架構中觀察到的趨勢一致,例如Google用於神經網路的TPU或Intel的Habana Labs AI處理器。這裡的關鍵見解是,具有規則結構和確定性執行模式的密碼學演算法特別適合FPGA加速。
與IEEE VLSI系統交易中記載的傳統基於HDL的方法相比,OpenCL實作提供了顯著的開發效率優勢。然而,正如多倫多大學FPGA小組的研究所示,與手動優化的RTL相比,使用高階合成通常會存在效能損失。這個實作仍然實現了優於CPU和GPU的效能,這表明瞭極其有效的優化策略。
考慮到計算永續性日益增長的重要性,能源效率結果(相較CPU提升644倍)特別引人注目。隨著資料中心越來越面臨功率限制,提供每瓦特巨大效能改進的方法將變得至關重要。這項研究證明,對於像密碼學演算法這樣的特定計算模式,FPGA可以提供相較通用架構的數量級優勢。
然而,對3DES的關注引發了關於長期相關性的問題。隨著NIST在許多應用中棄用3DES並過渡到AES,這些特定優化對現代密碼學標準的適用性值得進一步研究。然而,架構模式和優化策略很可能可轉移到AES和其他對稱加密演算法。
6. 程式碼實作
OpenCL核心範例
__kernel void triple_des_encrypt(
__global const uint8_t *input,
__global uint8_t *output,
__constant uint32_t *key_schedule,
const uint num_blocks)
{
int gid = get_global_id(0);
if (gid >= num_blocks) return;
// 載入64位元區塊
uint64_t block = *((__global uint64_t*)(input + gid * 8));
// 3DES加密:E_K3(D_K2(E_K1(P)))
block = des_encrypt(block, key_schedule, 0); // 使用K1進行第一次DES
block = des_decrypt(block, key_schedule, 16); // 使用K2進行第二次DES
block = des_encrypt(block, key_schedule, 32); // 使用K3進行第三次DES
// 儲存結果
*((__global uint64_t*)(output + gid * 8)) = block;
}
uint64_t des_encrypt(uint64_t block, __constant uint32_t *keys, int key_offset)
{
// 初始排列
block = initial_permutation(block);
uint32_t left = (uint32_t)(block >> 32);
uint32_t right = (uint32_t)block;
// 16輪Feistel回合
#pragma unroll
for (int i = 0; i < 16; i++) {
uint32_t temp = right;
right = left ^ feistel_function(right, keys[key_offset + i]);
left = temp;
}
// 最終排列
return final_permutation(((uint64_t)right << 32) | left);
}
7. 未來應用
本研究中展示的架構方法在3DES加密之外具有廣泛的適用性:
- 區塊鏈與加密貨幣:高頻交易平台和挖礦作業可以利用類似的FPGA加速進行密碼學操作。
- 5G安全:管線架構可以適應基地台處理中的5G加密標準。
- 邊緣計算:較低功率的FPGA實作可以為物聯網裝置和邊緣伺服器提供密碼學加速。
- 後量子密碼學:優化策略可以應用於新興的後量子密碼學演算法。
- 多演算法加速器:未來工作可以探索支援多種加密演算法的動態可重配置FPGA設計。
研究方向包括探索這些優化技術在AES-GCM、ChaCha20-Poly1305和其他現代加密標準中的應用,以及研究可以將類似轉換應用於任意密碼學演算法的自動化優化工具。
8. 參考文獻
- K. Group, "The OpenCL Specification," Khronos Group, 2020.
- National Institute of Standards and Technology, "Recommendation for Triple Data Encryption Algorithm (TDEA) Block Cipher," NIST SP 800-67Rev2, 2017.
- J. Cong et al., "High-Level Synthesis for FPGAs: From Prototyping to Deployment," IEEE Transactions on CAD, 2011.
- M. Papadonikolakis et al., "Performance Comparison of GPU and FPGA Architectures for Cryptography," SAMOS, 2010.
- A. M. et al., "FPGA-based Accelerators of Cryptographic Algorithms," IEEE Transactions on Computers, 2013.
- Intel Corporation, "Intel FPGA SDK for OpenCL Programming Guide," 2020.
- Xilinx, "SDAccel Development Environment User Guide," 2019.
- W. Jiang et al., "A Survey of FPGA-Based Cryptographic Computing," ACM Computing Surveys, 2021.