設計概述
1.1 設計目的
近年來,信息安全應用于生活中的各個領域。在光通信系統中,往往對速率 有著較高的追求。其中對光模塊,光纖通信中的傳輸算法,傳輸的模式以及光波 段選取有密切關聯。隨著對帶寬,速率等要求日益增加,高速通信已經成為基本 的要求。光纖通信因其具有低損耗,高抗干擾性,從而廣泛得到應用。近幾年由 于大量用戶數據的泄露,造成了極大的損失,使得信息安全成為人們關注的焦點。 目前光纖加密的研究多采用量子加密的方法,本人在中科大量子物理實驗室 下屬機構問天量子實習發現,目前國內外在實際工程上存在很多漏洞,無法做到 光纖通信中的絕對安全,實現軍用和民用任重道遠。華為傳輸加密解決方案,采用 L1 層加密技術,對業務層透明,采用高強度的 AES256 算法,確保各行業的數據安全性。此方案雖然實現簡單,但缺點是吞吐量小、端口少、速率低。 對于 ASE 算法的硬件實現,國內外研究學者大部分是基于 FPGA 的硬件實現。通過分析國內外 ASE 在硬件上實現的研究現狀,我們想要用 FPGA 硬件實現,達到 5Gbps 的傳輸速率,這是完全可行的。
1.2 應用領域
本作品應用前景廣泛。例如,各級市政機關之間在通信時,有些信息是需要嚴格加密的(如財務信息,公民戶籍隱私)。利用本設計進行加密后,即 便竊密者獲取到鏈路中的數據,也只有窮舉才能破譯。同時,基于本設計的實時性,可以做到全雙工的突發式語音通話,幫助政務人員處理突發事件;或者運用 在軍事行動中,指揮中心與前線的通信往往具有簡潔,實時,突發的特點。本作品針對上述需求進行設計和驗證。改進后的基于混沌序列的 AES 算法具有高復雜度,可防止 SPADPA 攻擊。讓指揮信息能足夠保密,防止被敵人竊取。
1.3 主要技術特點
FPGA 設計加密算法具有安全性高,加密速度快,開發周期短,開發成本較低, 可重配,可靠性高以及移植性好等優點。 系統鏈路部分采用 Aurora 協議,該協議是一款輕量級的光纖鏈路協議,具有冗余少,可定制度高,鏈路速率快等特點。
系統組成及功能說明
2.1 系統介紹
設計了一套完整的光纖通信加密系統(如圖 2-1)。系統鏈路部分采用 Aurora 協議,該協議是一款輕量級的光纖鏈路協議,具有冗余少,可定制度高,鏈路速率快等特點。加密協議采用目前 AES256 加密算法,該算法為目前國際最標準化加密算法之一,可抵抗所有已知的攻擊,并可在多個平臺上擁有速度快,編碼緊湊等特點。
2.2 各模塊介紹
針對以上的框架,我們進行了模塊化設計,我們針對視頻流數據及語音/文字 數據設計了兩套不同的方案。 視頻流數據由于其需要高實時性,故我們摒棄了具有較高冗余度的幀結構傳 輸方式,并對其采用外流水線設計進行傳輸(如圖 2-2);而語音/文字數據由于其數據流較少,往往對其安全性及正確性有更高的要求,故我們采用特定的幀結構, 針對該 AES 算法定制了其鏈路結構(如圖 2-3)。 每一個模塊都對其進行了 modelsim 仿真及論證。FPGA 與光模塊通信的速率與數據校驗,我們通過 vivado 的 IBERT ip 核進行驗證;對光纖通信中的信號完整 性,我們通過眼圖進行觀察。
?
2.3 硬件電路設計
我們硬件電路設計主要體現在 SFP+光口與 FPGA 板卡之間的設計。如圖 3-5 所示。
首先我們介紹所使用的光模塊。圖 3-6 所示為我們使用的 SFP 光口實物圖與引腳圖。使用的 SFP+的光模塊支持 8B/10B,也可支持 64B/66B 的長波(1310nm) 的單模光纖(SMF),有效傳輸距離為 2m 到 10km,事實上最高可達到 25km。光 口支持 SFP-MSA 協議,選用的光模塊支持 10GBase-LR/LW。
FPGA 與 SFP+光口的電路的原理圖設計如圖 3-7 所示。
作品難點與創新
3.1 AES 加密算法在 FPGA 上的實現
最常用的數據加密方式是軟件加密,即在通用微處理器上編程實現,但其加 密速度普遍不高,算法實現的效率較低,安全性和可靠性有限,很多時候不能滿足用戶的需求。因此,需要更加快速,更加安全可靠的加密實現方式來滿足人們 在一些場合下的數據保密要求。 由于我們傳輸的速率達到 5Gbps,這種 GTP 高速接口下若使用 FPGA+ARM 架構(如 ZYNQ),通過 ARM 完成加密算法將會使得我們效率大大降低,因此串 行通信實現 AES 加密算法已經不能滿足我們的需求,故我們采用純 PL 端 FPGA 設計來實現加密算法。FPGA 設計加密算法具有安全性高,加密速度快,開發周期短,開發成本較低,可重配,可靠性高以及移植性好等優點。 3.2 混沌序列密鑰設計 混沌序列的產生主要有兩類:一類是利用微分方程表示的混沌系統,產生時 間連續的混沌信號,系統由模擬電路來實現,它對電路固有參數及信號再生的誤差很敏感,實際實現較困難。另一類是利用迭代方程(映射)或非線性數字濾波器結構表示的混沌系統,產生時間離散的混沌序列,系統由數字電路實現,更適合在通信中應用。本設計需要在 FPGA平臺上實現,鑒于 FPGA 無法處理連續時 間系統,所以基于迭代方程來產生混沌序列,之后使用定點小數的方式對方程中的實數進行了處理,使其能在 FPGA 中進行運算。為了使該輸出混沌密鑰與發送 的明文產生時序相匹配,在輸出之前還做了部分拼接操作,使整體序列保密性更高。
3.3 AES 算法在光纖鏈路上的算法移植
算法移植通常是通過成熟的庫函數進行調用,該串行方式下一個時鐘周期只 能完成一條指令的實現,算法移植相對簡單,不會出現異步跨時鐘域處理高速數 據等問題。我們選擇純 PL 端完成算法移植,在一個時鐘周期下,既要完成算法的 數據輸出,也要考慮到此刻光纖鏈路中傳輸狀態。因此我們的效率雖然大大提升, 但對我們的設計是一個巨大的挑戰。 針對速率匹配,數據對接,緩沖設計等問題,我們分別進行了模塊化設計, 分別對其進行仿真和上板測試。在軟件調試部分有詳細的分析和設計介紹。證明 我們的算法移植是成功的。
3.4 針對語音/文字等加密數據進行特定幀結構定制
在算法移植過程中,我們針對 AES 算法對光纖協議進行了幀定制。傳統的幀 傳輸是對數據流進行傳輸,對固定長度的數據流加上幀頭幀尾進行判斷。一旦丟包,整個幀全部丟棄,造成了極大的浪費。 我們對原始的這種光纖幀協議進行了定制,在原來每一幀的基礎上,內部對 其封裝了四個子幀,每一個子幀由 128 位組成(原因是我們每次加密的數據是 128 位)。對于每一個子幀,幀頭為起始的 16 位數據,具有和其他 112 位數據不一樣 的脈寬長度,便于后續的幀解析。 通過我們的設計,即使傳輸過程中丟包,只會影響該當次的 128 位數據,且 該設計給我們幀解析,加密算法的解碼提供了便利的平臺。
3.5 針對視頻流數據進行外流水線設計
外部循環流水線結構由循環展開結構發展而來。具體方法是在組合電路與每 一輪 加密運算對應的部件之間都插入額外的寄存器。該方法可以在同一時刻處理 多個數據分組,提高系統在單位時間內處理數據的速度。 針對視頻流,采用 AES 內外流水線設計,通過外流水線設計犧牲邏輯資源使 得加密傳輸速率提高 15 倍,傳輸速率可達 2.85Gbps。
3.6 接收端對幀數據恢復
光纖接收端設計部分除了會面臨數據流緩沖,高速率通信中異步跨時鐘域處 理等問題,還要剝離原始子幀結構,并且去除光纖本身的幀頭幀尾。除了我們的加密數據,Aurora 協議本身還會不定期發送一些無效數據,我們要對其進行數據 恢復,并且拼接光纖鏈路中的 16 位數據,封裝成一個個的 128 位加密數據。這也是我們設計的一大難點。
3.7 高速通信中時序約束和信號完整性分析
對于 GTP 高速接口,我們對其做時序約束是非常有必要的。除此之外,還要 要用專業的軟件對光口進行測速,并對其信號質量進行分析和評估。 我們使用 Seiral I/O Analyzer 連接到 IBERT 核,驗證高速串行通道的狀態。從 眼圖上可以觀察出碼間串擾和噪聲的影響較小,數字信號整體的特征良好,從而 判斷出系統具有非常良好的性能。 作品的難點與創新點部分設計,將會在第四部分(軟件設計與流程)中詳細 的闡述。
完成情況及軟件設計流程
4.1 AES 算法 IP 核設計
該部分我們分加密和解密兩塊來詳細說明。 加密: 為了驗證優化后 AES 算法功能的正確性,需要選取測試向量進行驗證。我們 從官方的文檔中獲得參考基本功能測試向量。
加密過程的 modelsim 仿真圖 4-1 所示:該部分畫面放大后可觀察到有以下重 要數據: round(當前內部循環的次數), tb_round_key (測試向量特工的循環密鑰值) tb_block (送入加密模塊的數據) tb_new_block (加密后輸出的數據) Sbox (加密所需的 s 盒數據) 由于數據比較龐大,我們將重要數據打印在了 modelsim 仿真的窗口,如圖 4-2 所示為第八次迭代循環加密過程的部分信息。
?
解密過程的 modelsim 仿真圖(如圖 4-3),該部分畫面放大后可觀察到有以下重要數據:round(當前內部循環的次數),tb_round_key (測試向量特工的循環密鑰值),tb_block (送入解密模塊的數據),tb_new_block (解密后輸出的數據)。 由于數據比較龐大,我們將重要數據打印在了 modelsim 仿真的窗口,如圖 4-4 所示為第三次迭代循環解密過程的部分信息。
?
4.2 AES 算法在光纖鏈路上的算法移植
首先我們將 AES 算法分別封裝成加密、解密兩個 IP 核,內部產生上述測試向 量、密鑰等數據。 加密后數據為 128 位位寬,由于光纖中傳輸的數據為 16 位位寬,故需要設計 一個位寬轉換模塊。 AES 加密后輸出速率與光纖傳輸速率不一致,為異步信號。我們設計了一個 FIFO 控制模塊,并調用了 IP 核進行設計。 我們在 vivado 中編譯 IP 核數據,并調用 modelsim 觀察我們測試數據,放大 圖 4-5 后可觀察以下重要數據: block:送入的帶加密數據 new_block :加密以后輸出的 128 位數據(每次加密迭代循環都有輸出) DATA_TURE:當加密完成后,根據 ready 信號使能取出當前 128 位加密完成的數據 fifo_out_r:將 128 位數據轉化成 16 位數據,并從 FIFO 端輸出 next:使能拉高時,表示當前加密完成,可送入新的待加密數據 ready :當前數據加密完成,可以讀取該數據
4.3 混沌序列密鑰設計
通過前文的分析,我們選擇了 logistic 模型。在 jupyter notebook IDE 上用 python 調用 matlab 庫設計了 logistic 模型,迭代 200 次生成的序列如圖 4-6。
改變不同的 u 值產生的模型仿真圖 4-7 如下(初值 X0=0.5):
通過觀察當 u 的取值在 3.8~4.0 左右時模型進入混沌現象。 接著測試模型對初值的敏感程度,設置初值 x0=0.631999999983 u0=3.899999999906 和 x1=0.631999999284,u1=3.899999999906 兩者產生的序列的 差值變化如圖 4-8,設置初值 x0=0.631999999983 u0=3.899999999906 和 x1=0.631999999983,u1=3.899999999208 兩者產生的序列的差值變化如圖 4-9。
?
可以看出設置的初值僅僅只是相差 E-10,最后產生的序列相差很大。 將算法移植到 FPGA 平臺,包括每次迭代循環的計算模塊。為了避免模塊的 輸出直接又作為輸入引起實現違規,將每次的輸出信號引出,在另一個模塊里緩 存。等待計算模塊計算完成時,將上一次的計算結果作為新的數據作為計算模塊 的輸入。另外為了靈活與加密解密模塊的數據位寬對接,設計了拼接模塊,可以 靈活定制輸出數據位寬與時序。整體模塊化 RTL 圖如圖 4-10。
對系統進行仿真結果如圖 4-11,時序和位寬都滿足要求:
設計完成后分析系統模型輸出數據的 Lyapunov 指數(簡稱李氏指數),它刻 畫非線性系統混沌特性的有效方法之一,只要李氏指數大于零,則系統是混沌的。最終在硬件上生成的數據,通過軟件分析其李氏指數為 0.4953767618,驗證了該 模型為混沌系統。
4.4 針對語音/文字加密數據進行特定的幀定制
普通光纖傳輸的傳輸方式分為流傳輸和幀傳輸,而流傳輸由于其不可靠性, 以及不適合控制和定制的特點,我們選擇了幀傳輸,如圖 4-12 為普通的光纖通信 幀傳輸。 由于加密數據為 128 位位寬數據,而光纖中每次傳輸 16 位位寬數據,故八次 傳輸周期傳輸一個 128 位的加密數據。如果采用普通的數據流傳輸的話,一旦中 間有丟包,后續所有的數據將會錯誤,這在我們加密通信中是絕不允許的。 為了解決該問題,我們針對 AES 算法定制了一種幀結構(如圖 4-13)。我們 將每一個 128 位加密數據作為一次傳輸的幀結構,而每次的前 16 位作為該幀結構 的幀頭,這樣做的好處就是:1.幀結構傳輸不容易產生誤碼和丟包 2.即使丟包 我們也不會影響下一個數據的傳輸。 我們在該項目的測試中,測試向量為上述四個 128 位數據循環發送。我們在 原來的幀結構的基礎上,又封裝了一層光纖鏈路自帶的幀結構,以四個 128 位數 據為光纖傳輸的一個大幀結構。保證了鏈路傳輸的可靠性。
?
圖 4-13 中的 tx_d_i 信號為我們發送到鏈路中的數據信號,以 b6ed 為例,該 16 位數據為加密后的 3 號測試向量起始 16 位數據,后面緊跟 7 個剩余的 16 位數 據,組成一個完整的 128 位加密數據。通過我們的幀定制操作,極大的提高了我 們加密傳輸的可靠性。
4.5 接收端對語音/文字加密數據幀數據恢復
接收端對幀數據進行恢復,去除定制的幀頭幀尾,并消除原有 Aurora 協議不 定時發送的無效數據帶來的誤碼。 如圖 4-14 所示,我們將光纖接收端接收到的數據(rx_d_i)接收下來,并將 其進行 16 位轉 128 位操作,輸出數據為 fifo_out_rx,我們對比測試向量的數據發 現,我們的數據是正確無誤的。
4.6 發送端對視頻流數據進行外流水線設計
針對視頻流數據,我們同時使用 15 個加密模塊,分別錯開一個周期進行同時 加密。如圖 4-15 藍色箭頭所指:每個加密模塊完成加密后,將加密數據送至寄存 器緩存,使得我們的加密效率提高了 15 倍。
系統綜合測試分析
IBERT(Integrated Bit Error Ratio Tester)是 Xilinx 提供的用于調試 FPGA 芯片 內高速串行接口的工具。它通過 JTAG 總線提供了 FPGA 到 Vivado Serial I/O Analyzer 的通道。通過 IBERT 用戶可以定制線速率、參考時鐘速率、參考時鐘來 源,總線寬度。它同時還額外需要一個系統時鐘,這個時鐘可以來自 GTX 收發器 或者其它 FPGA 管腳。 使用 IBERT 進行 GTP 通道的驗證有以下三個步驟: 1.生成 ibert 核:根據硬件高速串行總線的需求來定制和生成 iber 核。 2.使用上一步的 ibert 核自動生成 ibert 參考設計并生成 Bit 文件。 3.使用 Seiral I/O Analyzer 連接到 IBERT 核,并驗證高速串行通道的狀態 我們在 vivado 中生成該測試工具,對 SFP+光口實際發出的數據進行測速和信 號完整性分析。如圖 5-1 所示。我們可以在圖的正下方觀察到該鏈路的實際速率為 5Gbps,速率完全滿足我們的設計需求;誤碼率越低,顏色越偏向藍色(深藍色);當誤碼率越高,顏色越偏向紅色,眼圖張開的大小就代表信號質量的好壞。我們 通過觀察眼圖可以發現,藍色區域很大,且角度張開合理。結合圖 5-2,通過 5Gbps 速率的光纖傳輸 4.557E10 Bit 數據后,誤碼率僅為 2.195E-11,遠低于官方規定的 誤碼率 1.E-10 標準,可以得出結論:信號完整性分析良好,信號質量傳輸可靠。
?
同時我們通過算法在硬件上的優化,可以占用很少的資源到達所需要求,如 圖 5-3 和圖 5-4 所示,可以看出很低的資源利用率。
?
總結
本設計具有很高的實用價值,在保密通信領域,視頻安防監控領域,軍用或 民用視頻/音頻傳輸領域,都有極強的應用場景。本次作品的難點和創新點在于: 1. AES 加密算法在 FPGA 上的實現; 2. AES 算法在光纖鏈路上的算法移植; 3.針對 AES 算法在光纖發送端進行特定的幀定制; 4.針對視頻流做了外流水線設計,保證視頻數據低延遲傳輸; 5.混沌序列的設計; 6.高速通信中時序約束和信號完整性分析。 ? 參考文獻 [1] 7 Series FPGAs GTX/GTH Transceivers User Guide [2] Vivado Design Suite User Guide [3] Aurora 8B/10B v11.0 LogiCORE IP Product Guide [4] Small Form-factor Pluggable (SFP) Transceiver MultiSource Agreement (MSA) [5] Xilinx.Aurora 8B/10B Protocol Specification.Revision 2.2[M].Xilinx, 2010,10:16-90 [6] L.Henzen and W.Fichtner,"FPGA parallel-pipelined AES-GCM core for 100G Ethernet applications[C]", 2010 Proceedings of ESSCIRC, Seville, 2010, pp. 202-205. [7]趙文虎,王志功,費瑞霞,朱恩,吳微.基于邏輯設計的光纖通信 8B/10B 編解碼方法 研究[J].電路與系統學報,2003(02):48-53. [8]王志功.光纖通信系統超高速集成電路設計[J].中國科學,2000(03):35-40. [9]謝郁潔.基于 FPGA 的核間高速接口的設計與驗證[D].電子科技大學,2014. [10]何少恒.基于 SFP光纖通信接口的高速IQ數據傳輸系統設計與實現[D].中北大 學,2016. [11]王小偉.AES 加密算法的研究與 IP 核設計實現[D].哈爾濱工業大學,2013. [12]Yufeng Liu,Xiangyang Xu,Hao Su.AES Algorithm Optimization and FPGA Implementation[J].IOP Conference Series: Earth and Environmental Science,2019,267(4). [13]楊靜.一種 AES 算法加密傳輸系統的設計與實現[J].電子設計工 程,2019,27(03):123-126+131. [14]何德彪,胡進,陳建華.基 FPG 的高 AE 實現[J].華中科技大學學報(自然科學 版),2010,02:101-104. ?
審核編輯:黃飛
?
評論
查看更多