基于LTE系统的SNOW3G密算法研究*
2010-08-09张洪铭何登平
张洪铭 ,何登平 ,2
(1.重庆邮电大学 通信新技术应用研究所,重庆 400065;2.重庆信科设计有限公司,重庆 400065)
责任编辑:孙 卓
1 引言
第二代移动通信系统是中国主要应用的通信系统,目前,全球移动通信系统 (Global System for Mobile Communications,GSM)已成为全球第一大网,如此庞大的系统,其安全性不容忽视。虽然比起模拟移动通信系统,GSM在安全方面具有很多改进,但是随着系统规模的扩大,其受到越来越多的攻击,由于加密算法自身存在一些缺陷,使得其中一些攻击很具威胁性。LTE系统出于对安全性的考虑采用了SNOW3G加密算法,该算法优于TD-SCDMA中采用的KASUMI算法。
2 SNOW3G加密算法
PDCP层主要用于数据的头压缩、加密和完整性保护,而SNOW3G加密算法就是PDCP层采用对数据进行加密的主要算法。通过接收RRC层配置的加密参数来对通过PDCP层的数据进行加密处理[1]。
2.1 加密过程概述[2-3]
在正常的RRC连接建立完成并且通过层三消息鉴权完毕后,启动安全模式命令,EUTRAN向UE发送消息SecurityModeCommand,如图1所示。
图1 安全模式命令
UE首先导出参数KeNB和消息SecurityModeCommand中给出的KRRCint,要求底层使用消息 Security Mode Command中给出的完整性算法和参数KRRCint校验消息SecurityModeCommand的完整性,当该消息通过完整性校验后,UE存储消息SecurityModeCommand中的值nextHopChainingCount,并导出加密算法和关于加密算法的参数KRRCenc,KUPenc。最后配置底层使用已选定的加密算法、KRRCenc和KUPenc,对随后的数据进行加密处理,并激活AS层的安全,向EUTRAN发送消息SecurityModeComplete。
2.2 SNOW3G加密算法说明[4]
1)功能函数说明
(1)MULX(V,c)。该函数用于将 16 bit映射成为 8 bit,映射过程为:如果 V 的最高位为 1,则 MULX(V,c)=(V<<81⊕c);否则 MULX(V,c)=(V<<81)。 其中,V 和 c 均为十六进制数 0xXX(即 8 bit),< (2)MULXPOW(V,i,c)。该函数用于将 16 bit和一个正整数i映射成8 bit,V和c为8 bit输入,映射过程为:如果 i为 0,MULXPOW(V,i,c)=V;否则,MULXPOW(V,i,c)=MULX(MULXPOW(V,i,c),c)(i>1,该函数递归)。 (3)S-boxes S1。该函数映射一个32 bit输入成为一个 32 bit输出,w=w0||w1||w2||w3(本处为 R1,||代表连接符),32 bit输入以 w0 开头,w3 结尾。S1(w)=r0||r1||r2||r3,以 r0开头,r3结尾。 (4)S-boxes S2。该函数映射一个32 bit输入成为一个 32 bit输出,w=w0||w1||w2||w3(本处为 R2),32 bit输入以 w0开头,w3 结尾。 S2(w)=r0||r1||r2||r3,以 r0开头,r3结尾。 (5)MULa(c)。该函数映射 8 bit成为 32 bit,c 为 8 bit输入,则定义为:MULa(c)=MULXPOW(c,23,0xA9)||MULXPOW(c,48,0xA9)||MULXPOW(c,239,0xA9)。 (6)DIVa(c)。 该函数映射 8 bit成为 32 bit,c 为 8 bit输 入 ,则 定 义 为 :DIVa(c)=MULXPOW(c,16,0xA9)||MULXPOW(c,6,0xA9)||MULXPOW(c,64,0xA9)。 (7)FSM(Finite State Machine)。 该函数有 2 个输入字s15和s5,其来自 LFSR,产生一个 32 bit输入字 F,则 F=(s15R1)⊕R2(代表整数和模232),然后寄存器更新数据。计算中间值r过程为:r=R2(R3⊕s5),令R3=S2(R2),R2=S1(R1),R1=r。 2)结构说明 (1)线性反馈移位寄存器(LFSR)。LFSR包括s0,s1,s2,…,s15,每部分 32 bit。 (2)有限状态机(FSM)。FSM包含R1,R2和R3三个32 bit寄存器。S-boxes S1和S-boxes S2更新寄存器R2和R3。 SNOW3G是一种面向字的流加密算法,根据输入的128 bit密钥key和初始变量IV来计算密钥流。密钥流由一系列的字组成,每个字为32 bit,产生的密钥流与明文进行异或,从而达到对明文进行加密的目的[5]。算法实现的设计思想为: SNOW3G加密算法需要的输入有COUNT-C,BEARER,DIRECTION,CK,LENGTH 和 IBS, 而输出为OBS。该算法主要由功能函数、LFSR、FSM和计时操作组成。实现过程主要包括初始化过程和密钥流(Key Stream)生成过程。 在初始化过程之前,LFSR的s0~s15值均为0,有限状态机R1,R2和R3也为0。在初始化过程开始后,有限状态机的状态均设置为0,而LFSR各个部分的状态由输入参数K和IV来决定,其计算过程为: LFSR设置完毕后,循环32次,完成最后对LFSR和FSM的赋值,此时初始化过程完毕,具体过程如图2所示。 初始化过程完毕后进入密钥流生成过程,在此过程中FSM的输出不再进入LFSR,而是作为整体的输出。第一次输出将会被丢弃,其后的输出就作为密钥流参加明文的加密过程(即密钥流与明文进行异或运算)。密钥流也以32 bit字的形式输出,输出字的个数由参数LENGTH来决定,去算法为 L=「LENGTH/32」[3],如图 3 所示。 程序主要包括3个部分:头文件、用户函数文件和主函数。其中头文件主要声明自定义的数据类型和用户函数;用户函数文件主要用于定义自定义函数的函数体;主函数完成算法的密钥流生成。密钥流生成后与明文进行异或运算,即可完成加密功能。该算法的函数调用框图如图4所示,大括号后的函数为被调用的用户自定义函数。 根据测试规范的要求[6-8],当Key:2B D6459F 82 C5 B300952C 49104881 FF 48,IV:EA 024714 AD 5C 4D 84 DF 1F 9B 251C 0B F45F,密钥流的输出为Z1:AB EE 9704,Z2:7A C31373。 在VC环境下运行SNOW3G加密算法程序的结果如图5所示。 该算法的输入与输出与测试规范相同,正确完成密钥流的生成。将密钥流与明文(IBS)进行异或运算,即可得到密文(OBS)。 描述了SNOW3G加密算法在通信系统中的应用,并对其实现过程、程序调用流程、结构体系作了深入分析。并且通过了基于TTCN标准[9-10]的软件对所实现的程序进行了测试。由于系统的复杂性,以后需要对各个模块不断地进行改进和测试,以提高和完善功能。 [1]3GPP TS 36.323 V8.5.0,Packet Data Convergence Protocol (PDCP)specification[S].2009. [2]RRC protocol specification[EB/OL].[2009-03-19].http://www.3gpp.org/ftp/Specs/archive/36_series/36.331/36331-870.zip. [3]皮埃尔,蒂埃里.演进分组系统(EPS):3G UMTS的长期演进和系统结构演进[M].李晓辉,崔伟,译.北京:机械工业出版社,2009. [4]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2.Document 2:SNOW 3G Specification[EB/OL/].[2010-03-19].http://gsmworld.com/documents/snow_3g_spec.pdf. [5]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2.Document 1:UEA2&UIA2 Specifications[EB/OL/].[2010-03-19].http://gsmworld.com/documents/etsi_sage_06_09_06.pdf. [6]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2 Document 3:Implementor′s Test Data[EB/OL/].[2010-03-19].http://gsmworld.com/documents/uea2_uia2.pdf. [7]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2 Document 4:Design Conformance Test Data[EB/OL/].[2010-03-19].http://gsmworld.com/documents/conformance.pdf. [8]Specification of the 3GPP confidentiality and integrity algorithms UEA2&UIA2.Document 5:Design and Evaluation Report[EB/OL/].[2010-03-19].http://gsmworld.com/documents/uea2_design_evaluation.pdf. [9]3GPP TS 36.523,Protocol conformance specification[S].2009. [10]3GPP TS 33.401 V8.50,3GPP System Architecture Evolution(SAE);“Security architect”[S].2009.2.3 SNOW3G加密算法的实现
2.4 SNOW3G加密算法程序上的实现与测试
3 小结