李小文,李媚媚
(重慶郵電大學(xué) 重慶市移動通信技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶 400065)
TD-LTE是3GPP標(biāo)準(zhǔn)化組織設(shè)立的一個無線移動通信系統(tǒng)演進(jìn)計(jì)劃,其系統(tǒng)設(shè)計(jì)目標(biāo)已經(jīng)成為3G移動通信系統(tǒng)的主流演進(jìn)方向。TD-LTE系統(tǒng)基于全I(xiàn)P的無線空口傳輸,數(shù)據(jù)和信息完全暴露于網(wǎng)絡(luò)上,導(dǎo)致信息容易丟失、前后失真,所以保護(hù)信息的完整性在通信中便顯得非常重要[1]。SNOW3G技術(shù)曾應(yīng)用于3G通信網(wǎng)絡(luò)中,由于其高效的加密性能及強(qiáng)大的抗攻擊能力,所以時(shí)至今日SNOW3G仍然廣泛地運(yùn)用在TD-LTE系統(tǒng)中,有效地保證網(wǎng)絡(luò)中傳輸無線數(shù)據(jù)不被竊聽和修改,滿足了現(xiàn)代通信系統(tǒng)的安全需求[2]。
在TD-LTE系統(tǒng)中,EMM子層主要用于對EMM和ESM子層的消息提供加密和完整性保護(hù)。而SNOW3G完整性保護(hù)算法則是EMM層對數(shù)據(jù)進(jìn)行完整性保護(hù)的主要算法[3]。
在正常的RRC連接建立完成并且鑒權(quán)成功之后,執(zhí)行安全模式命令,EPC向UE發(fā)送消息Security Mode Command,如圖1所示。
圖1 安全模式命令
安全模式命令過程是為了將鑒權(quán)過程新產(chǎn)生的一個EPS Security Context激活并投入使用,以此來建立UE與EPC之間的安全信令連接。UE收到 Security Mode Command消息后,核實(shí)該消息能被接收,UE將選用的NAS安全性算法保存在本地,利用鑒權(quán)過程中保存的KASME生成KNASenc、KNASint和KeNB, 然后決定使用什么EPS Security Context。最后UE將用已選擇的NAS加密算法和完整性保護(hù)算法對Security Mode Complete消息進(jìn)行安全保護(hù)[4]。
完整性算法主要用于在發(fā)送端保護(hù)發(fā)送數(shù)據(jù)的完整性不被破壞及在接收端檢驗(yàn)接收數(shù)據(jù)的完整性是否被破壞。通過SNOW3G完整性保護(hù)算法分別對發(fā)送端和接收端的數(shù)據(jù)進(jìn)行運(yùn)算得到MAC-I和XMAC-I,兩者進(jìn)行比對可以確認(rèn)數(shù)據(jù)的完整性。
SNOW3G完整性保護(hù)算法的實(shí)現(xiàn)要用到以下10個基本功能函數(shù)[5-6]:
(1)MUL64x
該函數(shù)將128位數(shù)據(jù)轉(zhuǎn)化為64位數(shù)據(jù)。設(shè)V是128位數(shù)據(jù)的高64位,c是128位數(shù)據(jù)的低64位。
如果V的最高位為1,則MUL64x(V,c)=(V<<1)⊕c;如果V的最高位不為1,則MUL64x(V,c)=(V<<1)。其中V<<1表示左移一位,⊕表示“異或”運(yùn)算。
(2)MUL64xPOW
該函數(shù)的輸入?yún)?shù)是一個整數(shù)i和128位數(shù)據(jù),得到64位數(shù)據(jù)的輸出。設(shè)V是128位數(shù)據(jù)的高64位,c是128位數(shù)據(jù)的低64位。
如果i=0,MUL64xPOW(V,i,c)=V;如果i≠0,MUL-64xPOW(V,i,c)=MUL64x(MUL64xPOW(V,i-1,c),c)。
(3)MUL64
該函數(shù)的輸入?yún)?shù)是3個64位的數(shù)據(jù),分別為V、P、c,得到一個64位的數(shù)據(jù)result。
在函數(shù)中定義一個整數(shù)i從0遞增到63,當(dāng)V的第i位數(shù)據(jù)是1時(shí),result=result⊕MUL64xPOW(V,i,c),否則result不做處理。如此循環(huán)64次,最終得到result。
(4)MULx
該函數(shù)的輸入?yún)?shù)是一個16位的數(shù)據(jù),得到一個8位的輸出數(shù)據(jù),映射過程如下:
如果V的最高位為1,則MULx(V,c)=(V<<8)⊕c;否則MULx(V,c)=V<<8。
(5)MULxPOW
該函數(shù)的輸入?yún)?shù)是一個16位的數(shù)據(jù)和一個正整數(shù)i,得到一個8位的輸出數(shù)據(jù),V和c為8 bit輸入,映射過程如下:
如果i為0,則MULxPOW(V,i,c)=V;否則MULx-POW(V,i,c)=MULx(MULxPOW(V,i-1,c),c)。
(6)S-BOX S1
該函數(shù)的輸入?yún)?shù)是一個32位的數(shù)據(jù)w,得到一個32位的輸出數(shù)據(jù)r。w=w0||w1||w2||w3,輸入?yún)?shù)以w0開頭以w3結(jié)尾。S1(w)=r0||r1||r2||r3,以r0開頭以r3結(jié)尾。S-box S1用于更新寄存器R2,所以此處的w表示R1,S1(w)表示更新后的R2(||表示連接符)。
(7)S-BOX S2
該函數(shù)的功能與S-BOX S1相同。
w=w0||w1||w2||w3,輸入?yún)?shù)以w0開頭以w3結(jié)尾。S2(w)=r0||r1||r2||r3,以r0開頭以r3結(jié)尾。S-box S2用于更新寄存器R3,所以此處的w表示R2,S2(w)表示更新后的R3。
(8)FSM
該函數(shù)有兩個32位的輸入S15和S5,產(chǎn)生一個32位的輸出F,F(xiàn)=(S15 R1)⊕R2(表示整數(shù)和模232),然后寄存器更新數(shù)據(jù)。計(jì)算中間值r如下:r=R2 (R3⊕S5)。令R3=S2(R2),R2=S1(R1),R1=r。圖2為FSM的運(yùn)算圖示。
圖2 FSM運(yùn)算圖示
(9)MULα
該函數(shù)的輸入?yún)?shù)是一個8位數(shù)據(jù)c,得到一個32位的數(shù)據(jù):MULα(c)=(MULxPOW(c,23,0xA9)||MULxPOW(c,245,0xA9)||MULxPOW(c,48,0xA9)||MULxPOW(c,239,0xA9))。
(10)DIVα
該函數(shù)的輸入?yún)?shù)是一個8位數(shù)據(jù)c,得到一個32位的數(shù)據(jù):DIVα(c)=(MULxPOW(c,16,0xA9)||MULxPOW(c,39,0xA9)||MULxPOW(c,6,0xA9)||MULxPOW(c,64,0xA9))。
SNOW3G完整性保護(hù)算法主要分為三步,首先是初始化操作,然后是生成密鑰流,最后用得到的密鑰流和輸入?yún)?shù)通過完整性保護(hù)算法得到32位的MAC-I[7]。
2.2.1 初始化
SNOW3G的初始化指將一個128位的密鑰設(shè)定為包含4個32位字的k0、k1、k2、k3;一個128位的初始變量(Initialization Vector)包含4個32位字的IV0、IV1、IV2、IV3,且IV=IV0||IV1||IV2||IV3;設(shè)置LFSR即線性反饋移位寄存器由16部分組成:S0,S1,S2,…,S15,每部分32位;令1為全1字(0xffffffff)。令:S15=k3⊕IV0,S14=k2,S13=k1,S12=k0⊕IV1,S11=k3⊕1,S10=k2⊕1⊕IV2,S9=k1⊕1⊕IV3,S8=k0⊕1,S7=k3,S6=k2,S5=k1,S4=k0,S3=k3⊕1,S2=k2⊕1,S1=k1⊕1,S0=k0⊕1。設(shè)置完LFSR后,循環(huán)32次,實(shí)現(xiàn)對FSM的賦值。初始化操作如圖3所示。
圖3 初始化操作
2.2.2 生成密鑰流
在初始化操作后進(jìn)入密鑰流(Keystream)生成過程。執(zhí)行FSM函數(shù),生成的32位數(shù)據(jù)F將被丟棄,執(zhí)行DIVα函數(shù)。后面執(zhí)行FSM函數(shù),生成的數(shù)據(jù)將作為密鑰,循環(huán)5次后得到密鑰流Z,Z=Z1||Z2||Z3||Z4||Z5,包括5個32位字的Z1、Z2、Z3、Z4和Z5。生成密鑰流操作的圖示如圖4所示。
2.2.3 生成MAC-I
將2.2.2中得到的P(即Z1||Z2)與需要完整性保護(hù)的數(shù)據(jù)MESSAGE進(jìn)行MUL64運(yùn)算,得到的中間數(shù)據(jù)EVAL與MESSAGE的長度LENGTH進(jìn)行“異或”,得到“異或”后的EVAL,這個EVAL與步驟⑴中得到的Q(即Z3||Z4)進(jìn)行MUL64運(yùn)算,再次得到更新的EVAL。將密鑰流低位的32位數(shù)據(jù)與EVAL的高位的32位數(shù)據(jù)進(jìn)行“異或”,得到的32位數(shù)據(jù)MAC_I即為完整性保護(hù)密鑰。具體過程如圖5所示。
圖5 生成完整性保護(hù)密鑰
通過編寫C程序在Microsoft Visual C++6.0軟件運(yùn)行完整性保護(hù)算法,按照測試規(guī)范,輸入如下參數(shù)[8]:
COUNT=3E DC 87 E2;
FRESH=A4 F2 D8 E2;
DIRECTION=1;
IK=D4 2F 68 24 28 20 1C AF CD 9F 97 94 5E 6D E7 B7;
LENGTH=254 bits;
MESSAGE=B5 92 43 84 32 8A 4A E0 0B 73 71 09 F8 B6 C8 DD 2B 4D B6 3D D5 33 98 1C EB 19 AA D5 2A 5B 2B C0。
得到密鑰為MAC-I=FC 7B 18 BD.,該結(jié)果符合測試規(guī)范。通過前面的分析,利用偽代碼編寫C語言,驗(yàn)證了算法的正確性。測試結(jié)果如圖6所示。
圖6 測試結(jié)果
本文描述了SNOW3G完整性保護(hù)算法的基本操作和算法流程,并對它的實(shí)現(xiàn)過程及程序仿真作了深入分析。上面的VC運(yùn)行結(jié)果得到的完整性保護(hù)密鑰,與預(yù)期結(jié)果一致,很好地驗(yàn)證了算法。隨著通信技術(shù)的進(jìn)步,將對該算法進(jìn)行進(jìn)一步的研究。
[1]Motorola Co.Ltd..Long Term Evolution(LTE):a technical overview[R].2007.
[2]解謙.Snow 3G算法分析[J].現(xiàn)代電信科技,2011(06):23-28.
[3]3GPP TS 33.401 V940-2010.3GPP system architecture evolution(SAE)-security architecture[S].2008-16-17.
[4]3GPP TS 24.301 V920-2009.Non-Access-Stratum(NAS)protocol for Evolved Packet System(EPS)Stage 3[S].2010.
[5]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2.Document 1:UEA&UIA2 specifications[EB/OL].[2012-03-19].http://gsmworld.com/documents/etsi_sage_06_09_06.pdf.
[6]張洪銘,何登平.基于LTE系統(tǒng)的SNOW3G密算法研究[J].電視技術(shù),2010(12):91-93.
[7]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2.Document 2:SNOW3G specification[EB/OL].[2012-03-19].http://gsmworld.com/documents/snow_3g_spec.pdf.
[8]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2.Document 4:design conformance test data[EB/OL].[2012-03-19].http://gsmworld.com/documents/conformance.pdf.