張 凱,伍忠東,劉菲菲
(蘭州交通大學(xué)電子與信息工程學(xué)院,蘭州 730070)
2001年,歐盟通過立法形式確定ETCS[1]成為強(qiáng)制性技術(shù)規(guī)范,不僅使列車能夠在歐洲各國實現(xiàn)互通運行,并且能夠提高列車運行的安全性和實時性。作為我國CTCS-3級列控通信系統(tǒng)[2]的核心安全協(xié)議,RSSP-II協(xié)議[3]的安全性[4]和實時性[5]對高速鐵路的運行起到了至關(guān)重要的作用,協(xié)議中消息鑒定安全層的消息認(rèn)證碼算法又被視為整個協(xié)議功能的核心。
提高鐵路信號安全協(xié)議消息鑒定安全層核心算法的安全性和實時性是鐵路信號安全協(xié)議中的研究熱點,目前該協(xié)議消息鑒定安全層核心算法大多數(shù)是基于TDES或者通過傳統(tǒng)軟件方式去實現(xiàn)的。張啟鶴提出了一種基于傳統(tǒng)的TDES算法的消息鑒別碼算法,通過在FPGA上面實現(xiàn)了協(xié)議核心算法的功能,提高了協(xié)議的實時性[6],A B Nasution等研究使用TDES算法保護(hù)數(shù)據(jù)的機(jī)密性和完整性[7],郭偉等從網(wǎng)絡(luò)攻擊的角度分析了協(xié)議的安全性能,并指出了目前協(xié)議的核心算法存在的安全隱患[8],Mohit Mittal等通過MATLAB軟件對DES算法和AES算法的安全性能和時間性能進(jìn)行了分析比較[9],張元玲等提出了一種基于AES的消息鑒別碼算法,通過軟件的實現(xiàn)方式提高了協(xié)議的安全性能[10],CHEN Lijie等利用彩色Petri網(wǎng)(CPN)模型對安全通信協(xié)議進(jìn)行了性能分析與驗證[11],和晟姣介紹了CSP方法建模工具,分析了RSSP-Ⅱ通信協(xié)議,從密鑰服務(wù)流程、對等實體認(rèn)證兩個方面對協(xié)議進(jìn)行CSP方法分析建模[12]。
目前RSSP-Ⅱ中消息鑒定安全層消息認(rèn)證碼算法主要是通過數(shù)據(jù)加密標(biāo)準(zhǔn)DES算法來實現(xiàn),但是隨著DES算法的廣泛應(yīng)用,其安全性和實時性方面的隱患不斷出現(xiàn):在安全性方面,首先DES算法存在弱秘鑰、半弱秘鑰問題,弱秘鑰、半弱秘鑰問題會導(dǎo)致將不同的明文加密成相同的密文,導(dǎo)致密碼攻擊者很容易破解密碼進(jìn)而對協(xié)議產(chǎn)生安全威脅,其次DES算法存在秘鑰長度過短的問題,密鑰長度僅為56 bit,但是隨著計算機(jī)數(shù)據(jù)處理能力的快速提高,使用傳統(tǒng)DES算法將不能有效抵抗窮舉攻擊,從而使得協(xié)議的安全性受到極大的威脅;在實時性方面,首先傳統(tǒng)基于DES的消息認(rèn)證碼算法對最后一個分組進(jìn)行3重DES(TDES)計算,會大大增加算法的執(zhí)行時間,其次鐵路信號安全協(xié)議中消息鑒定安全層消息認(rèn)證碼算法的傳統(tǒng)實現(xiàn)都是基于軟件進(jìn)行的,相比硬件執(zhí)行,軟件實現(xiàn)在速度方面具有很大的劣勢,難以保證列車在高速鐵路環(huán)境下的實時性要求。
針對傳統(tǒng)算法在安全性和實時性方面存在的上述問題,對鐵路信號安全協(xié)議的安全性和時間性進(jìn)行了深入研究,提出了基于高級加密標(biāo)準(zhǔn)AES算法的MASL-AES-MAC算法。該算法結(jié)合了AES加密算法的高安全性和FPGA硬件的快速實現(xiàn)性的優(yōu)勢,并對算法的硬件實現(xiàn)進(jìn)行優(yōu)化處理。通過Altera公司的Cyclone V系列5CSXFC6D6F31C6N FPGA硬件開發(fā)板的有效評估,實驗結(jié)果表明:MASL-AES-MAC算法較傳統(tǒng)的算法相比不僅具有更高的安全性,同時還縮短了算法的執(zhí)行時間。
RSSP-Ⅱ通信協(xié)議是按照歐洲無線電功能接口標(biāo)準(zhǔn)制定的,目的是能夠為數(shù)據(jù)提供安全的傳輸服務(wù)[13]。其中的消息鑒定安全層的功能就是通過發(fā)送方和接收方運行消息源安全驗證程序,為數(shù)據(jù)傳輸中消息的真實性和完整性提供安全保障,并且同時保障消息發(fā)送方的不可偽造性。
發(fā)送方驗證:
輸入:消息M,發(fā)送方A和接收方B的共享密鑰Ks,源地址SA、目的地址DA。
處理流程:
(1)發(fā)送方A的方向標(biāo)志設(shè)為0,接收方設(shè)為1。
(2)在消息M前附加消息M的目的地址(DA):DA|M。
(3)計算步驟2所生成字符串的長度L(八字節(jié)),并將該長度(2個八位字節(jié))附加到該字符串之前,格式為:L|DA|M。
(4)判斷消息(L|DA|M)的長度,若字符串長度不是64的整數(shù)倍,則在字符串后面按照通信雙方的規(guī)定進(jìn)行填充數(shù)據(jù)P,從而構(gòu)成新字符串:L|DA|M|P。
(5)用共享密鑰Ks對字符串進(jìn)行CBC-MAC[14]算法:MAC(M)=CBC-MAC(Ks,L|DA|M|P)。
輸出:將MAC(M)值附加在消息M上并發(fā)送給接收方B。
接收方驗證:
輸入:方向標(biāo)志,包含MAC(M)的消息M,發(fā)送方A和接收方B雙方共享密鑰Ks,源地址SA、目的地址DA。
處理流程:
(1)在消息M前附加消息M的目的地址(DA):DA|M。
(2)計算步驟2所生成字符串的長度L(八字節(jié)),并將該長度(2個八位字節(jié))附加到該字符串之前,格式為:L|DA|M。
(3)判斷消息(L|DA|M)的長度,若字符串長度不是64的整數(shù)倍,則在字符串后面按照通信雙方的規(guī)定進(jìn)行填充數(shù)據(jù)P,從而構(gòu)成新字符串:L|DA|M|P。
(4)用共享密鑰Ks對字符串進(jìn)行CBC-MAC算法:MAC’(M)=CBC-MAC(Ks,L|DA|M|P)。
(5)比較MAC(M)和MAC’(M)是否相等。
輸出:若MAC(M)=MAC’(M),則證明消息沒有被進(jìn)行篡改且確信消息M由發(fā)送者A發(fā)送,反之則消息M已被篡改或偽造。
圖1為消息認(rèn)證模型。其中E表示對消息M用密鑰K進(jìn)行加密生成Ck(M),||表示對消息M和Ck(M)進(jìn)行合并發(fā)送。
圖1 消息認(rèn)證模型
高速鐵路應(yīng)用中,RSSP-Ⅱ中消息鑒定安全層認(rèn)證碼算法的實時性,主要是指通信認(rèn)證雙方通過消息認(rèn)證碼算法產(chǎn)生MAC認(rèn)證碼進(jìn)行認(rèn)證時的及時性,即實時性。消息認(rèn)證碼算法產(chǎn)生MAC認(rèn)證碼的速度關(guān)乎發(fā)送方和接收方對于通信雙方消息源安全驗證程序的快慢,從而為數(shù)據(jù)傳輸中消息的真實性、完整性和可用性提供保障。若消息認(rèn)證碼算法產(chǎn)生MAC認(rèn)證碼的時間超出通信雙方認(rèn)證所設(shè)定的超時重傳時間間隔的最大值,則通信雙方認(rèn)證失敗。所以盡量縮短消息認(rèn)證碼算法產(chǎn)生MAC認(rèn)證碼的時間,提高算法的實時性,對于提高RSSP-Ⅱ協(xié)議的性能顯得尤為重要。
CBC-MAC算法是基于分組密碼算法,并且工作在分組密碼的密碼分組連接鏈CBC(Cipher Block Chain)模式下的消息認(rèn)證碼(Message Authentication Code,MAC)[14]。消息認(rèn)證碼是將消息M使用一個密鑰,底層通過分組密碼方式加密產(chǎn)生一個特定長度的數(shù)據(jù)分組。MAC類似于加密,但區(qū)別是MAC函數(shù)無需是可逆的,圖2為分組密碼工作在密碼分組連接鏈CBC模式下的流程。
圖2 分組密碼的密碼分組連接鏈模式流程
3.1.1 AES算法硬件設(shè)計
AES算法屬于分組密碼算法,采用Verilog HDL語言先對底層加密算法AES采用了自底向上的模塊化設(shè)計思路,模塊化的設(shè)計思路方便后續(xù)的頂層模塊整合和對算法的優(yōu)化處理。本文設(shè)計的AES算法FPGA[15]硬件實現(xiàn)主要包括5個子模塊,分別是字節(jié)代換模塊、行移位模塊、列混合模塊、輪密鑰加模塊和秘鑰擴(kuò)展模塊[16-17]。
(1)字節(jié)代換模塊
字節(jié)代換是一個非線性變換,目的是將輸入或者中間狀態(tài)的字節(jié)通過查表操作映射為另一個字節(jié)。映射具體辦法是將輸入字節(jié)高4位作為S盒[18]的行值,低4位作為列值,最后將該行值和列值所對應(yīng)的元素作為代換結(jié)果輸出。例如十六進(jìn)制數(shù)0x6D,則對應(yīng)S盒的行值是6,列值是D,則對應(yīng)在S盒之后的結(jié)果是0x3C。
S盒是一個由16*16字節(jié)構(gòu)成的矩陣,包括了每個字節(jié)的8位值所能表達(dá)的256種可能的變換。S盒的設(shè)計構(gòu)造方法有如下3個步驟。
Step1:把每一行字節(jié)值按照升序進(jìn)行排列來初始化S盒。第一行是{00},{01},{02},…,{0F};第二行是{10},{11},…,{1F}等。在行X和列Y的字節(jié)值是{xy}。
Step2:把S盒中的每個字節(jié)映射為它在有限域GF(28)中的逆,{00}被映射為它自身{00}。GF(28)由一組從0x00到0xFF的256個值組成,加上加法和乘法運算。
Step3:對于S盒中的每個字節(jié)都記作為(b7,b6,b5,b4,b3,b2,b1,b0)。然后對S盒中每位做如下變換:
b(i+7)mod 8⊕ci
(1)
圖3 SubBytes()實現(xiàn)非線性置換
(2)行移位模塊
ShiftRows()的設(shè)計主要是完成基于行的循環(huán)移位操作。即行移位變換作用在中間態(tài)的行上,其中第0行不變,第一行循環(huán)左移1個字節(jié),第二行循環(huán)左移2個字節(jié),第三行循環(huán)左移3個字節(jié)[19]。圖4為ShiftRows()完成循環(huán)移位操作示意。
圖4 ShiftRows()完成循環(huán)移位操作
(3)列混合模塊
MixColumns()是對每一列進(jìn)行逐列混合,其具體方法是:
s′(x)=c(x)·s(x)mod(x4+1)
(2)
式(2)中,
c(x)={03}·x3+{01}·x2+{01}·x+{02}
(3)
式(3)中{}內(nèi)的數(shù)表示的是字節(jié)
s(x)=s(0,c)+s(1,c)·x+s(2,c)·x2+s(3,c)·x3
(5)
ximod(x4+1)=ximod 4
(6)
可得
{02}·s(0,c)+{03}·s(1,c)+{01}·s(2,c)+
(7)
其余類似,因此,式(7)可用矩陣表示為式(8),圖5為MixColumns()列變換示意。
(8)
圖5 MixColumns()列變換示意
(4)輪密鑰加模塊
AddRoundKey()的目的是將輸入或中間狀態(tài)S的每一列與相對應(yīng)的一個密鑰字Ki進(jìn)行按位異或,即AddRoundKey(S,Ki)=S⊕Ki,其中Ki(i=0,1,…,10)是由初始密鑰K通過密鑰擴(kuò)展算法產(chǎn)生的。每一個輪密鑰由4個字組成,W[r*Nb+c]表示第r輪的第c個輪密鑰字[20]。圖6為AddRoundKey()變換示意,輪密鑰加具體的變換表達(dá)式為
[w(r·4+c)]
(0≤r≤10,0≤c≤4)
(9)
圖6 AddRoundKey()輪密鑰加變換示意
(5)密鑰擴(kuò)展模塊
密鑰擴(kuò)展模塊的功能是為每一輪的AES加密提供輪密鑰。通過生成器產(chǎn)生Nr+1個輪密鑰,每個輪密鑰由Nb個字組成,共有Nb*(Nr+1)個字W[i](其中i=0,1,…,Nb*(Nr+1)-1)。其中Nb和Nr分別代表中間態(tài)的列數(shù)和迭代輪數(shù)[20]。雖然AES可以使用的密鑰大小有3種,分別是128 bit、192 bit和256 bit,但是由明文分組的大小為128 bit,所以本文選擇密鑰大小和明文分組大小相等的128 bit。
在加密過程中,需要用到Nr+1個輪密鑰,需要構(gòu)造4×(Nr+1)個32位字。前十個輪常量Rcon[i]的值(用十六進(jìn)制表示)如表1所示。
表1 Rcon[i]數(shù)據(jù)
對于AES-128,AES密鑰擴(kuò)展算法的輸入是4個字(每個字32 bit,共128 bit)。輸入密鑰直接被復(fù)制到擴(kuò)展密鑰數(shù)組的前4個字中,得到W[0]、W[1]、W[2]、W[3],剩下的41個字W[i]則由W[i-1]和W[i-4](i>=4)來共同決定,根據(jù)不同i值,則有不同的算法。
對于W數(shù)組中下標(biāo)不為4的倍數(shù)的元素,采用如下計算方式
W[i]=W[i-1]⊕W[i-4]
(10)
對于W數(shù)組中下標(biāo)為4的倍數(shù)的元素,計算方式如下4個步驟:
Step1 RotWord():目的是把輸入的4個字節(jié)循環(huán)左移一個字節(jié),即把字(b0,b1,b2,b3)變?yōu)?b1,b2,b3,b0);
Step2 SubWord():基于S盒對輸入字(Step1的結(jié)果)中的每個字進(jìn)行S盒替換;
Step3 將Step2的結(jié)果再與輪常量Rcon[i/4]相異或;
Step4 將Step3的結(jié)果再與W[i-4]異或。
3.1.2 改進(jìn)的基于AES算法的MASL-MAC算法硬件實現(xiàn)
MASL-MAC算法(MASL層使用的MAC算法)是基于AES的一種更安全變形。輸入信息M被分割為P1、P2、…、Pn,若切割后最后一個消息分組塊不足128位,則用0補(bǔ)齊。使用AES算法以秘鑰Ki加密128位的分組塊的過程表示為AES(Ki,Pi),⊕表示異或運算最后輸出的MAC值由公式(11)得出
H0=0;
Hi=AES(K,Hi-1⊕Pi),i=1,2,…,n;
MAC=AES(K,Hn-1⊕Pn);
(11)
本文提出的MASL-MAC算法是以AES加密算法為基礎(chǔ),工作在分組鏈接鏈(Cipher Block Chain,CBC)狀態(tài)下的消息鑒別碼。本節(jié)MASL-MAC算法的FPGA硬件設(shè)計采用Verilog HDL語言進(jìn)行了模塊化的設(shè)計思路。MASL-AES-MAC算法結(jié)構(gòu)如圖7所示。
圖7 MASL-AES-MAC算法結(jié)構(gòu)
分組加密算法的特點是明文和秘鑰的長度都是固定的,比如DES算法的明文為64位,AES算法的明文分組長度為128位。本文中MASL-AES-MAC算法是基于AES算法的,所以當(dāng)整個輸入消息M的長度不為128的整數(shù)倍時,即需要對最后一個不滿128位的數(shù)據(jù)分組塊進(jìn)行Padding補(bǔ)位處理,使其長度達(dá)到128位,具體補(bǔ)充處理數(shù)學(xué)表達(dá)式如下
(12)
式(12)中,M_Last為最后一個不足128位的分組塊,i代表需要在其后面所加0的個數(shù),r為分組塊M_Last所表示的以8位大小為單位的向量的個數(shù),r∈[0,16)。
本文提出的基于高級加密標(biāo)準(zhǔn)AES的MASL層MAC認(rèn)證碼改進(jìn)算法,但是按照AES基本原理直接在FPGA邏輯電路上實現(xiàn),會造成大量的邏輯資源浪費,并且效率不高。所以在對核心算法改進(jìn)的基礎(chǔ)之上對改進(jìn)算法進(jìn)行進(jìn)一步的優(yōu)化處理,使得在獲得更高數(shù)據(jù)吞吐率的情況下盡可能地減少FPGA邏輯資源的消耗,最終獲取更高的效率。
3.2.1 輪代換模塊優(yōu)化
本文之前對AES算法的10輪代換模塊的設(shè)計主要有由4個模塊構(gòu)成,分別是字節(jié)代換模塊、行移位模塊、列混合模塊和輪密鑰加模塊。
結(jié)合3.1.1節(jié)AES算法硬件設(shè)計的數(shù)學(xué)基礎(chǔ),假設(shè)單個輪變化的輸入為狀態(tài)a,字節(jié)變換的過程用Sb表示,經(jīng)字節(jié)變換的輸出為狀態(tài)b,經(jīng)行移位變換的輸出為狀態(tài)c,經(jīng)列混合之后的輸出為狀態(tài)d,i和j分別表示每個狀態(tài)矩陣的行和列,則有
bi,j=Sb[ai,j]
(13)
(14)
字節(jié)代換模塊是每一輪變換的第一步操作,經(jīng)過分析發(fā)現(xiàn)字節(jié)代換模塊是非線性的字節(jié)置換,可以構(gòu)造一個查找表來實現(xiàn)字節(jié)代換的功能,從而避免大量的異或運算和乘法運算。其次輪變換的第二步是行移位模塊,是一個循移位操作,是將字節(jié)代換模塊輸出的結(jié)果按照行移位之后的順序進(jìn)行排列。
為了減少單獨進(jìn)行字節(jié)代換和行移位變換的資源消耗,對這兩個模塊進(jìn)行合并操作處理。首先通過預(yù)算的方式,計算出所有字節(jié)代換的8位輸入數(shù)據(jù)對應(yīng)的8位輸出數(shù)據(jù),然后將這個輸入數(shù)據(jù)的高4位作為行值,低4位作為列值,將輸出的8位數(shù)據(jù)作為具體的元素值,最后構(gòu)成一個16×16的S盒查找表。S盒模塊的仿真如圖8所示。
圖8 S盒模塊仿真結(jié)果
從圖8可以看出,當(dāng)S盒模塊輸入信號a為8’h0f且復(fù)位信號為高電平時,在時鐘上升沿的輸出信號b為8’h76,與理論值一致。同理,其他仿真結(jié)果均與理論值一致,仿真正確。
當(dāng)進(jìn)行字節(jié)替換和行移位時,將輸入狀態(tài)矩陣a的每個字節(jié)的高4位作為行值,低4位作為列值,取出對應(yīng)的元素值,輸出順序按照行移位模塊的輸出順序輸出,這樣就完成了字節(jié)代換和行移位模塊的功能,同時減少了邏輯資源的消耗。
(15)
其中,0≤j d(0,j)=02·c(0,j)⊕03·c(1,j)⊕c(2,j)⊕c(3,j) d(1,j)=c(0,j)⊕02·c(1,j)⊕03·c(2,j)⊕c(3,j) d(2,j)=c(0,j)⊕c(1,j)⊕02·c(2,j)⊕03·c(3,j) d(3,j)=03·c(0,j)⊕c(1,j)⊕c(2,j)⊕02·c(3,j) (16) 其中d(i,j)為變換后的狀態(tài)矩陣d的第j列,按照AES算法數(shù)學(xué)基礎(chǔ),可得 03·X=(02⊕01)·X=02·X⊕X (17) 由式(17)可知,式(16)可以轉(zhuǎn)換為式(18) d(0,j)= 02·c(0,j)⊕(02·c(1,j)⊕c(1,j))⊕c(2,j)⊕c(3,j) d(1,j)= c(0,j)⊕02·c(1,j)⊕(02·c(2,j)⊕c(2,j))⊕c(3,j) d(2,j)= c(0,j)⊕c(1,j)⊕02·c(2,j)⊕(02·c(3,j)⊕c(3,j)) d(3,j)= (02·c(0,j)⊕c(0,j))⊕c(1,j)⊕c(2,j)⊕02·c(3,j) (18) 上述運算都是在GF(28)上進(jìn)行的,在FPGA硬件實現(xiàn)中,加法運算等效為異或運算,而乘法運算則要分為兩種情況:若字節(jié)的最高位為0,則與02做乘法運算時只需將字節(jié)左移一位即可;若字節(jié)的最高位為1,則與02做乘法運算時,將字節(jié)先左移一位之后再與字節(jié)1B進(jìn)行異或運算。 在有限域中,所有元素都可以寫成02不同冪次的和,所以所有常數(shù)的乘法都可以通過分解之后進(jìn)行多次與02的乘法和異或運算實現(xiàn)??紤]到為了減少算法硬件實現(xiàn)的運算量,對于有限域中一個字節(jié)與02乘法運算的256種可能的結(jié)果用一個16×16的M盒查找表替換,這樣簡化了列混合的運算量,降低了FPGA硬件邏輯資源的消耗。 輸入的一個字節(jié)是M盒元素的地址,其中高4位對應(yīng)行值,低4位對應(yīng)列值,最后取出對應(yīng)M盒的值,這個過程表示為02×Ci,j=M(Ci,j)。優(yōu)化后列混合單列的變換過程可以表示為 d(0,j)= M(c(0,j))⊕(M(c(1,j))⊕c(1,j))⊕c(2,j)⊕c(3,j) d(1,j)= c(0,j)⊕M(c(1,j))⊕(M(c(2,j))⊕c(2,j))⊕c(3,j) d(2,j)= c(0,j)⊕c(1,j)⊕M(c(2,j))⊕(M(c(3,j))⊕c(3,j)) d(3,j)= (M(c(0,j))⊕c(0,j))⊕c(1,j)⊕c(2,j)⊕M(c(3,j)) (19) 其中,M(Ci,j)表示對于優(yōu)化后的M盒中第i行第j列所對應(yīng)的元素進(jìn)行查表操作,這樣避免了大量復(fù)雜的乘法運算,僅僅用一個查找表的資源就實現(xiàn)了原來要分多次進(jìn)行的組合邏輯運算。M盒模塊的仿真如圖9所示。 圖9 M盒模塊仿真結(jié)果 從圖9可以看出,當(dāng)M盒模塊輸入信號c為8’h0f且復(fù)位信號為高電平時,在時鐘上升沿的輸出信號d為8’h1e,與理論值一致。同理,其他仿真結(jié)果均與理論值一致,仿真正確。 3.2.2 密鑰擴(kuò)展模塊的優(yōu)化 密鑰擴(kuò)展模塊用于生成10輪循環(huán)的128位輪密鑰。輪密鑰擴(kuò)展模塊的方式存在純組合方式和流水線設(shè)計方式??紤]到FPGA硬件設(shè)計的速度和效率,對密鑰擴(kuò)展模塊設(shè)計使用了10級流水線,在每一輪基本運算后面放入寄存器進(jìn)行數(shù)據(jù)緩存,然后在每一個時鐘時刻將上一輪緩存的數(shù)據(jù)傳入下一基本運算單元,以此類推,從而構(gòu)成密鑰擴(kuò)展十級流水線。密鑰擴(kuò)展模塊10級流水線仿真如圖10所示。 圖10 輪密鑰擴(kuò)展10級流水線模塊仿真結(jié)果 輪密鑰擴(kuò)展模塊首先需要經(jīng)過10個時鐘周期產(chǎn)生第一組的10個輪密鑰,由于采用了流水線設(shè)計技術(shù),之后每經(jīng)過一個時鐘周期就會產(chǎn)生10個輪密鑰,表明正確實現(xiàn)了輪密鑰擴(kuò)展模塊10級流水線結(jié)構(gòu)。 首先編寫了頂層模塊的測試文件Testbench,然后使用Quartus II 13.0選擇Cyclone V系列5CSXFC6D6F31C6N芯片,通過使用Modelsim 10.1d仿真工具對改進(jìn)及優(yōu)化后的算法進(jìn)行了功能仿真和時序仿真。最后使用TimeQuest Timing Analyser對算法進(jìn)行綜合和時序約束。 為了驗證改進(jìn)及優(yōu)化后MASL-AES-MAC整體算法功能的正確性,需要選取測試向量進(jìn)行驗證。本文選擇的測試向量如表2所示。 表2 算法功能測試向量 首先在整體功能模塊仿真中,輸入測試明文長度為40Byte,一共有3個明文分組128’b6bc1bee22e409f96e93d7e117393172a、128’bae2d8a 571e03ac9c9eb76fac45af8e51和64’b30c81c46a35ce 411。算法功能仿真結(jié)果如圖11所示。 圖11 整體功能模塊仿真結(jié)果 從圖11可以看出,MAC驗證碼為輸出信號“TextOut”,此時輸出信號“TextOut”為128’bdfa66747de9aa63030ca32611497c827,對比表2可知,仿真結(jié)果與理論推導(dǎo)結(jié)果一致,結(jié)果正確。由圖11還可以看出,第一次128位數(shù)據(jù)的加密結(jié)果輸出需要經(jīng)過12個時鐘周期。 在硬件實現(xiàn)MASL-AES-MAC算法的相關(guān)設(shè)計中,用以下4個重要的指標(biāo)來反映設(shè)計的優(yōu)劣,分別是最高頻率(Fmax)、面積(Area)、吞吐量(ThroughOut)和效率(Efficiency)。其中最高頻率表示硬件設(shè)計的時序性能,它的值越大代表設(shè)計的時序性能越好。面積代表設(shè)計所消耗的資源,硬件設(shè)計中應(yīng)盡可能地減少邏輯資源的消耗。通過最高頻率和面積的值能夠計算出設(shè)計的吞吐量和效率。吞吐量和效率的計算公式 (20) (21) 式中,吞吐量表示設(shè)計中在單位時間可以處理的數(shù)據(jù)的位數(shù),單位為比特率(Mbps),效率表示吞吐量和面積的綜合性能指標(biāo),數(shù)值越大表示設(shè)計的優(yōu)化效果越好。 首先將初始改進(jìn)并未進(jìn)行優(yōu)化處理的算法在Quartus Ⅱ上選擇了5CSXFC6D6F31C6N芯片進(jìn)行了綜合和添加書序約束文件SDC并進(jìn)行時序約束。時序分析報告顯示設(shè)計的建立裕量和保持裕量分別為10.928 ns、0.267 ns,兩者均為正數(shù),則表示設(shè)計滿足約束文件中的時序約束。通過查看此時產(chǎn)生的FmaxSummary文件,顯示最高頻率Fmax為95.89 MHz,如圖12所示。 圖12 Fmax報告圖1 由之前的功能仿真圖9得知第一次加密結(jié)果輸出需要經(jīng)過12個時鐘周期。 將本文改進(jìn)的基于傳統(tǒng)AES算法的MASL-AES-MAC算法與文獻(xiàn)[6]中傳統(tǒng)的基于TDES算法的MASL-TDES-MAC算法進(jìn)行對比,對比結(jié)果如表3所示。通過對比可知本文的算法設(shè)計具有更高的最高頻率Fmax和更低的邏輯資源消耗。 表3 改進(jìn)算法前后性能對比 通過將MASL-MAC算法改為安全性能更好的MASL-AES-MAC算法之后,切實提高了鐵路信號安全協(xié)議在開放性系統(tǒng)中的安全性能。 其次,將改進(jìn)并優(yōu)化后的算法同樣在Cyclone V 5CSXFC6D6F31C6N芯片進(jìn)行了綜合和添加書序約束文件SDC并進(jìn)行時序約束。時序分析報告顯示設(shè)計的建立裕量和保持裕量分別為9.571 ns、0.242 ns,兩者均為正數(shù),表示設(shè)計滿足約束文件中的時序約束。通過查看此時產(chǎn)生的FmaxSummary文件,顯示最高頻率Fmax為110.23 MHz,如圖13所示。 圖13 Fmax報告圖2 通過查看設(shè)計的整體編譯報告,報告顯示設(shè)計在Altera公司的Cyclone V 5CSCFC6D6F31C6N芯片上共占用邏輯資源1595 ALMs,占用芯片總體的4%。如圖14所示。 圖14 改進(jìn)優(yōu)化后的MASL-AES-MAC算法綜合報告 最后將優(yōu)化前后MASL-AES-MAC算法性能進(jìn)行對比分析,分析結(jié)果如表4所示。 表4 改進(jìn)算法優(yōu)化前后性能對比 通過對優(yōu)化算法前后性能的對比得出:優(yōu)化后的算法不僅獲得了更高的最高頻率,同時還進(jìn)一步降低了邏輯資源的消耗。 由之前的功能仿真圖得出,本文改進(jìn)的基于高級加密標(biāo)準(zhǔn)AES算法的MASL-AES-MAC算法,在聯(lián)合仿真實驗中對第一次128位數(shù)據(jù)的加密結(jié)果輸出需要經(jīng)過12個時鐘周期,算法優(yōu)化前后的最高時鐘頻率分別為95.89,110.23 MHz。經(jīng)計算,聯(lián)合仿真實驗中對優(yōu)化前后算法在相同條件下分別進(jìn)行128位數(shù)據(jù)的加密結(jié)果輸出需要經(jīng)過的時間分別為125.14,108.86 ns。而文獻(xiàn)[6]傳統(tǒng)的基于TDES算法的MASL-TDES-MAC算法中對于第一次64位數(shù)據(jù)的加密結(jié)果輸出需要經(jīng)過26個時鐘周期,其最高時鐘頻率為72 MHz,經(jīng)計算第一組數(shù)據(jù)的加密結(jié)果輸出需要經(jīng)過的時間為361 ns。 通過上述實驗數(shù)據(jù)對比分析可知,本文提出的基于高級加密標(biāo)準(zhǔn)AES算法的MASL-AES-MAC算法(優(yōu)化前)比傳統(tǒng)的基于TDES算法的MASL-TDES-MAC算法在實時性方面提高了65.34%;通過改進(jìn)并優(yōu)化之后的MASL-AES-MAC算法比優(yōu)化前(改進(jìn)后)的MASL-AES-MAC算法在實時性方面提高了13%,比傳統(tǒng)的基于TDES算法的MASL-TDES-MAC算法在實時性方面提高了69.84%。 綜合表3、表4和上述實驗對比分析結(jié)果得出,本文先后通過對消息鑒定安全層消息認(rèn)證碼算法的改進(jìn)和優(yōu)化之后,切實提高了鐵路信號安全協(xié)議的安全性和實時性。 針對鐵路信號安全協(xié)議RSSP-II中MASL層消息認(rèn)證碼算法的低安全性和低實時性問題,提出了一種基于高級加密標(biāo)準(zhǔn)AES算法的MASL-AES-MAC算法。該算法首先充分利用AES算法的高安全性來保障協(xié)議的安全性。其次通過將改進(jìn)的MASL-AES-MAC算法在FPGA上實現(xiàn),并利用查找表技術(shù)和流水線技術(shù)進(jìn)行優(yōu)化處理,來獲取更高的最高頻率和更低的邏輯資源消耗,從而使得協(xié)議具有更高的實時性,將高安全性和高實時性結(jié)合于一體。最后在Quartus Ⅱ和Modelsim中完成了聯(lián)合仿真實驗,將改進(jìn)及優(yōu)化后的MASL-AES-MAC算法與改進(jìn)前的MASL-TDES-MAC和改進(jìn)但并未優(yōu)化的MASL-AES-MAC算法進(jìn)行對比,結(jié)果表明:無論是最高頻率還是邏輯資源消耗情況都優(yōu)于原算法,從而提高了高速鐵路通信的安全性和實時性。4 實驗
4.1 設(shè)計開發(fā)平臺與驗證工具
4.2 測試向量的選取
4.3 算法功能仿真測試
4.4 實驗評價標(biāo)準(zhǔn)
4.5 改進(jìn)及優(yōu)化算法的性能指標(biāo)分析
5 結(jié)語