TD-LTE系统中的SNOW3G完整性保护算法研究*

2013-09-07 02:52李小文李媚媚
电子技术应用 2013年7期
关键词:寄存器完整性密钥

李小文,李媚媚

(重庆邮电大学 重庆市移动通信技术重点实验室,重庆 400065)

TD-LTE是3GPP标准化组织设立的一个无线移动通信系统演进计划,其系统设计目标已经成为3G移动通信系统的主流演进方向。TD-LTE系统基于全IP的无线空口传输,数据和信息完全暴露于网络上,导致信息容易丢失、前后失真,所以保护信息的完整性在通信中便显得非常重要[1]。SNOW3G技术曾应用于3G通信网络中,由于其高效的加密性能及强大的抗攻击能力,所以时至今日SNOW3G仍然广泛地运用在TD-LTE系统中,有效地保证网络中传输无线数据不被窃听和修改,满足了现代通信系统的安全需求[2]。

1 SNOW3G完整性保护算法概述

在TD-LTE系统中,EMM子层主要用于对EMM和ESM子层的消息提供加密和完整性保护。而SNOW3G完整性保护算法则是EMM层对数据进行完整性保护的主要算法[3]。

在正常的RRC连接建立完成并且鉴权成功之后,执行安全模式命令,EPC向UE发送消息Security Mode Command,如图1所示。

图1 安全模式命令

安全模式命令过程是为了将鉴权过程新产生的一个EPS Security Context激活并投入使用,以此来建立UE与EPC之间的安全信令连接。UE收到 Security Mode Command消息后,核实该消息能被接收,UE将选用的NAS安全性算法保存在本地,利用鉴权过程中保存的KASME生成KNASenc、KNASint和KeNB, 然后决定使用什么EPS Security Context。最后UE将用已选择的NAS加密算法和完整性保护算法对Security Mode Complete消息进行安全保护[4]。

2 SNOW3G完整性保护算法研究

完整性算法主要用于在发送端保护发送数据的完整性不被破坏及在接收端检验接收数据的完整性是否被破坏。通过SNOW3G完整性保护算法分别对发送端和接收端的数据进行运算得到MAC-I和XMAC-I,两者进行比对可以确认数据的完整性。

2.1 基本函数

SNOW3G完整性保护算法的实现要用到以下10个基本功能函数[5-6]:

(1)MUL64x

该函数将128位数据转化为64位数据。设V是128位数据的高64位,c是128位数据的低64位。

如果V的最高位为1,则MUL64x(V,c)=(V<<1)⊕c;如果V的最高位不为1,则MUL64x(V,c)=(V<<1)。其中V<<1表示左移一位,⊕表示“异或”运算。

(2)MUL64xPOW

该函数的输入参数是一个整数i和128位数据,得到64位数据的输出。设V是128位数据的高64位,c是128位数据的低64位。

如果i=0,MUL64xPOW(V,i,c)=V;如果i≠0,MUL-64xPOW(V,i,c)=MUL64x(MUL64xPOW(V,i-1,c),c)。

(3)MUL64

该函数的输入参数是3个64位的数据,分别为V、P、c,得到一个64位的数据result。

在函数中定义一个整数i从0递增到63,当V的第i位数据是1时,result=result⊕MUL64xPOW(V,i,c),否则result不做处理。如此循环64次,最终得到result。

(4)MULx

该函数的输入参数是一个16位的数据,得到一个8位的输出数据,映射过程如下:

如果V的最高位为1,则MULx(V,c)=(V<<8)⊕c;否则MULx(V,c)=V<<8。

(5)MULxPOW

该函数的输入参数是一个16位的数据和一个正整数i,得到一个8位的输出数据,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

该函数的输入参数是一个32位的数据w,得到一个32位的输出数据r。w=w0||w1||w2||w3,输入参数以w0开头以w3结尾。S1(w)=r0||r1||r2||r3,以r0开头以r3结尾。S-box S1用于更新寄存器R2,所以此处的w表示R1,S1(w)表示更新后的R2(||表示连接符)。

(7)S-BOX S2

该函数的功能与S-BOX S1相同。

w=w0||w1||w2||w3,输入参数以w0开头以w3结尾。S2(w)=r0||r1||r2||r3,以r0开头以r3结尾。S-box S2用于更新寄存器R3,所以此处的w表示R2,S2(w)表示更新后的R3。

(8)FSM

该函数有两个32位的输入S15和S5,产生一个32位的输出F,F=(S15 R1)⊕R2(表示整数和模232),然后寄存器更新数据。计算中间值r如下:r=R2 (R3⊕S5)。令R3=S2(R2),R2=S1(R1),R1=r。图2为FSM的运算图示。

图2 FSM运算图示

(9)MULα

该函数的输入参数是一个8位数据c,得到一个32位的数据:MULα(c)=(MULxPOW(c,23,0xA9)||MULxPOW(c,245,0xA9)||MULxPOW(c,48,0xA9)||MULxPOW(c,239,0xA9))。

(10)DIVα

该函数的输入参数是一个8位数据c,得到一个32位的数据:DIVα(c)=(MULxPOW(c,16,0xA9)||MULxPOW(c,39,0xA9)||MULxPOW(c,6,0xA9)||MULxPOW(c,64,0xA9))。

2.2 算法流程

SNOW3G完整性保护算法主要分为三步,首先是初始化操作,然后是生成密钥流,最后用得到的密钥流和输入参数通过完整性保护算法得到32位的MAC-I[7]。

2.2.1 初始化

SNOW3G的初始化指将一个128位的密钥设定为包含4个32位字的k0、k1、k2、k3;一个128位的初始变量(Initialization Vector)包含4个32位字的IV0、IV1、IV2、IV3,且IV=IV0||IV1||IV2||IV3;设置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。设置完LFSR后,循环32次,实现对FSM的赋值。初始化操作如图3所示。

图3 初始化操作

2.2.2 生成密钥流

在初始化操作后进入密钥流(Keystream)生成过程。执行FSM函数,生成的32位数据F将被丢弃,执行DIVα函数。后面执行FSM函数,生成的数据将作为密钥,循环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)与需要完整性保护的数据MESSAGE进行MUL64运算,得到的中间数据EVAL与MESSAGE的长度LENGTH进行“异或”,得到“异或”后的EVAL,这个EVAL与步骤⑴中得到的Q(即Z3||Z4)进行MUL64运算,再次得到更新的EVAL。将密钥流低位的32位数据与EVAL的高位的32位数据进行“异或”,得到的32位数据MAC_I即为完整性保护密钥。具体过程如图5所示。

图5 生成完整性保护密钥

3 算法实现与验证

通过编写C程序在Microsoft Visual C++6.0软件运行完整性保护算法,按照测试规范,输入如下参数[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.,该结果符合测试规范。通过前面的分析,利用伪代码编写C语言,验证了算法的正确性。测试结果如图6所示。

图6 测试结果

本文描述了SNOW3G完整性保护算法的基本操作和算法流程,并对它的实现过程及程序仿真作了深入分析。上面的VC运行结果得到的完整性保护密钥,与预期结果一致,很好地验证了算法。随着通信技术的进步,将对该算法进行进一步的研究。

[1]Motorola Co.Ltd..Long Term Evolution(LTE):a technical overview[R].2007.

[2]解谦.Snow 3G算法分析[J].现代电信科技,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系统的SNOW3G密算法研究[J].电视技术,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.

猜你喜欢
寄存器完整性密钥
STM32和51单片机寄存器映射原理异同分析
幻中邂逅之金色密钥
石油化工企业设备完整性管理
密码系统中密钥的状态与保护*
Lite寄存器模型的设计与实现
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
莫断音动听 且惜意传情——论音乐作品“完整性欣赏”的意义
精子DNA完整性损伤的发生机制及诊断治疗
高速数模转换器AD9779/AD9788的应用