概述
近年來,信息安全應用于生活中的各個領域.在光通信系統中,往往對速率有著較高的追求。其中對光模塊,光纖通信中的傳輸算法,傳輸的模式以及光波段選取有密切關聯。傳統的光通信系統在于保證傳輸帶寬和吞吐量而并未考慮到對信息安全的保護。隨著對帶寬,速率等要求日益增加,高速通信已經成為基本的要求。光纖通信因其具有低損耗,高抗干擾性,從而廣泛得到應用。近幾年由于大量用戶數據的泄露,造成了極大的損失,使得信息安全成為人們關注的焦點。
目前光纖加密的研究多采用量子加密的方法,本人在中科大量子物理實驗室下屬機構問天量子實習發現,目前國內外在實際工程上存在很多漏洞,無法做到光纖通信中的絕對安全,實現軍用和民用任重道遠。華為傳輸加密解決方案,采用L1層加密技術,對業務層透明,采用高強度的美學256算法,確保各行業的數據安全性。此方案雖然實現簡單,但缺點是吞吐量小、端口少、速率低。
對于AES算法的硬件實現,國內外研究學者大部分是基于FPGA的硬件實現。解放軍理工大學的呂游等人研究高級加密標準俄歇算法的設計原理,并通過加密部分和密鑰拓展共用S盒以減少資源占用,然后在FPGA上完成加密部分的優化實現,其加密模塊的最大吞吐率可達到1.326 Gbit/s,消耗1507個樂(1 BLM=1 LE=0.5 Slice)。埃及開羅德國大學的Mazen ei Maraghi,Salma Hesham等人研究速度與面積優化的俄歇算法的FPGA實現,利用循環迭代的方法減少邏輯資源的消耗,在FPGA芯片Xilinx Virtex 5 XC5VLX 50上實現,使用了303個可編程邏輯單元(切片)、加密速度為1.33 Gbit/s...通過分析國內外ASE在硬件上實現的研究現狀,我們想要用FPGA硬件實現,達到5 Gbps的傳輸速率,這是完全可行的。
主要創新點
1.AES加密算法在上的實現
最常用的數據加密方式是軟件加密,即在通用微處理器上編程實現,但其加密速度普遍不高,算法實現的效率較低,安全性和可靠性有限,很多時候不能滿足用戶的需求。因此,需要更加快速,更加安全可靠的加密實現方式來滿足人們在一些場合下的數據保密要求。
由于我們傳輸的速率達到5 Gbps、這種GTP高速接口下若使用FPGA+ARM架構(如Zynq)、通過手臂完成加密算法將會使得我們效率大大降低,因此串行通信實現俄歇加密算法已經不能滿足我們的需求,故我們采用純Pl端FPGA設計來實現加密算法。FPGA設計加密算法具有安全性高,加密速度快,開發周期短,開發成本較低,可重配,可靠性高以及移植性好等優點。
2.AES算法在光纖鏈路上的算法移植
算法移植通常是通過成熟的庫函數進行調用,該串行方式下一個時鐘周期只能完成一條指令的實現,算法移植相對簡單,不會出現異步跨時鐘域處理高速數據等問題.我們選擇純Pl端完成算法移植,在一個時鐘周期下,既要完成算法的數據輸出,也要考慮到此刻光纖鏈路中傳輸狀態。因此我們的效率雖然大大提升,但對我們的設計是一個巨大的挑戰。
針對速率匹配,數據對接,緩沖設計等問題,我們分別進行了模塊化設計,分別對其進行仿真和上板測試。在軟件調試部分有詳細的分析和設計介紹。證明我們的算法移植是成功的。
3.針對AES算法在光纖發送端進行特定的幀定制
在算法移植過程中,我們針對俄歇算法對光纖協議進行了幀定制。傳統的幀傳輸是對數據流進行傳輸,對固定長度的數據流加上幀頭幀尾進行判斷。一旦丟包,整個幀全部丟棄,造成了極大的浪費。
我們對原始的這種光纖幀協議進行了定制,在原來每一幀的基礎上,內部對其封裝了四個子幀,每一個子幀由128位組成(原因是我們每次加密的數據是128位)。對于每一個子幀,幀頭為起始的16位數據,具有和其他112位數據不一樣的脈寬長度,便于后續的幀解析。
通過我們的設計,即使傳輸過程中丟包,只會影響該當次的128位數據,且該設計給我們幀解析,加密算法的解碼提供了便利的平臺。
4.接收端對幀數據恢復
光纖接收端設計部分除了會面臨數據流緩沖,高速率通信中異步跨時鐘域處理等問題,還要剝離原始子幀結構,并且去除光纖本身的幀頭幀尾。除了我們的加密數據,奧羅拉協議本身還會不定期發送一些無效數據,我們要對其進行數據恢復,并且拼接光纖鏈路中的16位數據,封裝成一個個的128位加密數據.這也是我們設計的一大難點。
5.高速通信中時序約束和信號完整性分析
對于GTP高速接口,我們對其做時序約束是非常有必要的。除此之外,還要要用專業的軟件對光口進行測速,并對其信號質量進行分析和評估。
我們使用Seiral I/O分析儀連接到艾伯特核,驗證高速串行通道的狀態.從眼圖上可以觀察出碼間串擾和噪聲的影響較小,數字信號整體的特征良好,從而判斷出系統具有非常良好的性能。
作品的難點與創新點部分設計,將會在第四部分(軟件設計與流程)中詳細的闡述。
系統架構
1.AES加密算法
俄歇算法屬于對稱密碼體制中的一種分組密碼,有AES-128、192和256三種密鑰長度。以AES-256算法為例,算法的分組長度是256位,密鑰長度同樣是256位,在分組或密鑰長度不足256位時,需按照相應的補位規則補足256位。
在算法中有多輪的重復的變換稱為輪變換,輪變換有三種類型,分別為初始輪、重復輪和最終輪.每一輪中又包括:字節代換、行移位、列混合和子密鑰加幾個步驟,而最終輪沒有列混合這一步驟。這幾個步驟的大致過程如下,如圖3-1。
圖3-1:俄歇加解密過程
如圖3-2和圖3-3所示所示為S盒,逆S盒。字節代換是通過字節代換表(S)盒)對數據矩陣進行非線性代換,行移位是以字節為單位對數據矩陣進行有序的循環移位,列混合是將列混合矩陣與數據矩陣進行一種矩陣乘法運算,子密鑰加是將數據矩陣與子密鑰矩陣進行按位的異或運算,子密鑰按照特定的密鑰擴展方法生成。由于屬于對稱密碼體制,算法的解密即為加密的逆運算。
圖3-2:S盒構造
圖3-3:逆S盒構造
2.AES加密算法在硬件上的優化
2.1字節替換與行位移
在俄歇算法迭代的過程中第一步就是進行字節替代,它屬于非線性變換.按照它的替換規則,輸入A對應唯一的輸出B、這中間的運算過程如果用硬件組合邏輯實現的話,會浪費大量的邏輯資源,而且也需要一定運算的時間。既然輸入和輸出一一對應,輸入為8位字節,那么輸出最多也就256種情況,而且對應規則也知道,所以我們可以先用其他軟件,如MATLAB計算出輸入和輸出的置換表:輸入的低四位對應列地址,高四位對用行地址的16*16的置換表.這樣通過輸入的8位二進制數可以快速查找到對應的8位二進制數。相應的在解密的過程中,也可以用置換表的方式完成逆字節的替換。這種優化方法可以減少邏輯資源的消耗,也提高了運算速度。
按照AES算法,進行完字節替換后,緊接著是行位移.但是我們可以在進行字節替換時同時進行行變換,如輸入A矩陣的第3行,即第5、8、10、15字節,對應輸出新的矩陣B的第8、5、15、10字節,這樣就可以同時完成字節替換和行位移,節省時間和資源。
2.2列混淆
完成字節替換和行位移后進行列混淆,列混淆就是通過輸入矩陣的列重新加權再組合形成新的輸出矩陣。在這個計算過程中,加法運算等價于異或運算,乘法可以進行優化。乘法運算則需要分為兩種情況考慮:如果8位二進制數BIJ最高位為1、與02做乘法運算時,需要先左移一位,然后與00011011進行異或運算;如果它的最高位為0、與02做乘法運算時,只需要左移一位。而所有的數都能分解成02不同次冪的和,所以可以做一個02乘法查找表,這樣任何一個數都可以通過先分解成02的不同冪和,在通過查找表找到對應的值,這樣就完成了乘法的優化。在解密的過程也是一樣,通過查找表的方法優化乘法。這樣僅用一個查找表的資源完成了多次組合邏輯運算,極大的減少了邏輯資源的消耗。
2.3輪迭代內部流水線結構
俄歇算法加密過程包括10輪迭代,每輪迭代的組合邏輯模塊包括AddRoundkey,SubBytes與漂流,混合柱,密鑰擴展。前面在每輪迭代之間引入了流水線,但單次輪迭代內部中仍有3個組合邏輯模塊,為了降低延遲,所以在輪迭代內部引入流水線結構提升加密速度。
我們在加密過程中,加密算法消耗的實際時間為68個時鐘周期,以100米晶振為例,一次編碼過程僅消耗680 ns,保證了我們實際傳輸過程中在安全保密的基礎上,還能實現高速率通信。
2.4極光光纖鏈路協議
西林公司針對高速數據傳輸開發了一種輕量級的可定制的鏈路層協議--奧羅拉協議。協議內部集成了與其相應的GTP收發器,通過連接多個GTP可以實現傳輸帶寬的拓展,同時它也可以被上層的自定義協議或者其他行業標準協議采用。
奧羅拉協議描述了用戶數據在Aurora 8B/10B通道(頻道)之間的傳輸過程。一個Aurora 8B/10B通道(頻道)包含一個或者多個鏈路(里)、每個鏈路都是一個全雙工的串行通路。Aurora 8B/10B通道上的通信雙方被稱為通道對(頻道合伙人),如圖3-4。
? ?
圖3-4:奧羅拉鏈路框架
奧羅拉協議通用數據鏈路速率在480 Mb/s到84.48 Gb/。該協議具有如此強大的功能,究其原因是其內部有一個專用硬核,這個硬核專門用來進行數據的高速傳輸,并且它的傳輸方式可以由用戶根據實際需求來設置為全雙工或者單工。該硬核主要利用GTP收發器來進行數據的傳輸。
奧羅拉協議主要對物理層接口、初始化和錯誤處理機制、數據排列、鏈路層以及流程控制作了定義和要求。其中物理層接口講述了電氣特性和時鐘編碼等;初始化和錯誤處理機制則定義了單通道和多通道兩種情況下,數據傳送之前對通道進行初始化的步驟,同時介紹了在遇到錯誤代碼傳輸時該如何應對處理的機制。數據排列描述了數據在通過一個通道后,如何在多個串行鏈路中進行傳輸。鏈路層定義了一個用戶數據單元如何開始傳送以及如何結束傳送,同時還描述了在數據傳輸過程中如何暫停數據流并插入更高優先級數據的過程.除此之外,鏈路層還提供了當出現接收器和發射器在時鐘速率上出現差異問題時該如何解決的方案措施。最后,流程控制則是規定了鏈路層流程控制機制,以及上層用戶流程控制信息的傳輸機制。
我們之所以選擇奧羅拉協議,放棄了PCIe,SRIO 2.0,UDP等協議,考慮到以下一些因素:奧羅拉協議除了可以達到很高傳輸速率外,在鏈路數目選擇的靈活性,協議的可定制性上,遠遠超過了上述的協議。由于我們需要用到奧羅拉協議傳輸加密數據,故冗余信息越少越好,否則對冗余信息加密將造成很大的帶寬損失.奧羅拉協議的可定制性主要表現在:
1.可以很方便的使用AXI 4-流進行幀傳輸/流傳輸;
2.可附加16位的加擾器/解擾器;
3.可選16位/32位的啟聯校驗;
4.支持熱拔插(熱插拔)等方面。
4.硬件電路設計
我們硬件電路設計主要體現在SFP+光口與FPGA板卡之間的設計。如圖3-5所示。
圖3-5:FPGA與SFP+連接設計
首先我們介紹所使用的光模塊。圖3-6所示為我們使用的SFP光口實物圖與引腳圖。使用的SFP+的光模塊支持8B/10B,也可支持64b/66B的長波(1310 nm)的單模光纖(SMF),有效傳輸距離為2M到10公里。事實上最高可達到25公里。光口支持SFP-MSA協議,選用的光模塊支持10 GBase-LR/LW。
圖3-6:SFP+實物圖與引腳圖 FPGA與SFP+光口的電路的原理圖設計如圖3-7所示。
圖3-7:FPGA與SFP+光口連接圖
設計演示
艾伯特(綜合誤碼率測試儀)是西林提供的用于調試FPGA芯片內高速串行接口的工具。它通過JTAG總線提供了FPGA到Vivado串行I/O分析儀的通道.通過艾伯特用戶可以定制線速率、參考時鐘速率、參考時鐘來源,總線寬度。它同時還額外需要一個系統時鐘,這個時鐘可以來自GTX收發器或者其它FPGA管腳。
使用艾伯特進行GTP通道的驗證有以下三個步驟:
1.生成艾伯特核:根據硬件高速串行總線的需求來定制和生成伊伯核。
2.使用上一步的艾伯特核自動生成艾伯特參考設計并生成鉆頭文件。
3.使用Seiral I/O分析儀連接到艾伯特核,并驗證高速串行通道的狀態。
我們在維瓦多中生成該測試工具,對SFP+光口實際發出的數據進行測速和信號完整性分析。如圖5-1所示。我們可以在圖的正下方觀察到該鏈路的實際速率為5 Gbps、速率完全滿足我們的設計需求;誤碼率越低,顏色越偏向藍色(深藍色);當誤碼率越高,顏色越偏向紅色,眼圖張開的大小就代表信號質量的好壞。我們通過觀察眼圖可以發現,藍色區域很大,且角度張開合理。結合圖5-2,通過5 Gbps速率的光纖傳輸4.557E10位數據后,誤碼率僅為2.195E-11,遠低于官方規定的誤碼率1.E-10標準,可以得出結論:信號完整性分析良好,信號質量傳輸可靠。
圖5-1:二維眼掃描眼圖
圖5-2:誤碼率結果圖
同時我們通過算法在硬件上的優化,可以占用很少的資源到達所需要求,如圖5-3和圖5-4所示,可以看出很低的資源利用率。
圖5-3:發送端資源利用率統計圖
圖5-4:接收端資源利用率統計圖
審核編輯:劉清
-
FPGA
+關注
關注
1626文章
21675瀏覽量
601979 -
收發器
+關注
關注
10文章
3399瀏覽量
105870 -
FPGA設計
+關注
關注
9文章
428瀏覽量
26489 -
信號完整性
+關注
關注
68文章
1398瀏覽量
95389 -
光纖通信
+關注
關注
20文章
484瀏覽量
44704 -
AES加密算法
+關注
關注
0文章
5瀏覽量
5931
原文標題:基于FPGA的AES256光纖加密設計
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論