论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

3g的aka协议中f1至f5的ue端的实现(论文+程序)

3        f1-f5算法介绍及C语言代码设计实现 内容来自www.paper51.com

3.1    f1-f5介绍

paper51.com

AKA协议是由与GSM/GPRS中的认证及密钥分配相类似的“请求-响应”式协议组成的。整个AKA过程分为两个步骤。 http://www.paper51.com

(1) 认证向量从本地环境/认证中心(HE/AuC)到访问位置寄存器(VLR)的发布。此过程由VLR发起,HE/AuC收到来自VLR的认证请求后,计算出认证向量组AV(1…n)并通过响应的方式发送给VLR。

copyright paper51.com

认证向量AV=(RAND,XRES,CK,IK,AUTN<SQN[⊕AK] ‖AMF‖MAC-A>),各参数分别为:随机数RAND、预期响应XRES、加密密钥CK、完整性密钥IK和认证令牌AUTN,以及序列号SQN、匿名密钥AK(可选,用于隐藏序列号)、认证管理域码AMF(用于支持多种认证算法和设置密钥生命期)和消息认证码MAC-A。

paper51.com

(2) 认证和密钥建立过程。VLR选择新的认证向一AV(i),并向移动台(MS)发送其中的RAND‖AUTN,用户收到的RAND‖AUTN后,计算出AK并恢复SQN,以及计算XMAC-A并将其与接收到的MAC-A进行核对。 内容来自论文无忧网 www.paper51.com

AKA为了实现上述过程,利用f0-f5*算法。其中,本次设计所用到的,f1算法为消息鉴权函数,用于计算网络鉴权时的XMAC-A;f2算法为消息鉴权函数,用语用户鉴权计算XRES期望的响应值;f3算法为密钥生成函数,用于计算加密密钥CK;f4为密钥生成函数,用于计算消息完整性密钥IK;f5为密钥生成函数,用语计算匿名密钥AK,对鉴权序列号SQN加解密,防止被位置跟踪。 内容来自论文无忧网 www.paper51.com

对于f1到f5实现的问题,采用基于AES内核的算法设计,如下图流程:

copyright paper51.com

paper51.com

图9  f1-f5实现流程图

http://www.paper51.com

具体示例: 内容来自www.paper51.com

取r1=64,r2=0,r3=32,r4=64;c1=0,c2=1,c3=2,c4=4 paper51.com

SQN ||AMF|| SQN|| AMF:长度为128位。

内容来自www.paper51.com

OPC = OP ÅE[OP]K copyright paper51.com

5个128位的输出OUT1, OUT2, OUT3, OUT4,OUT5用表达式可如下表示:

copyright paper51.com

OUT1 =E[TEMP Å rot(IN1 Å OPC, r1) Å c1]K Å OPC 内容来自论文无忧网 www.paper51.com

OUT2 = E[rot(TEMPÅ OPC, r2) Å c2]K Å OPC 内容来自论文无忧网 www.paper51.com

OUT3 = E[rot(TEMPÅ OPC, r3) Å c3]K Å OPC copyright paper51.com

OUT4 = E[rot(TEMPÅ OPC, r4) Å c4]K Å OPC

内容来自论文无忧网 www.paper51.com

则有:

copyright paper51.com

f1-f5各个函数的输出定义如下:

内容来自www.paper51.com

Output of f1 = MAC-A,where MAC-A[0] .. MAC-A[63] = OUT1[0] .. OUT1[63]

paper51.com

Output of f2 = RES,where RES[0] .. RES[63] = OUT2[64] .. OUT2[127]

copyright paper51.com

Output of f3 = CK,where CK[0] .. CK[127] = OUT3[0] .. OUT3[127]

内容来自论文无忧网 www.paper51.com

Output of f4 = IK,where IK[0] .. IK[127] = OUT4[0] .. OUT4[127] http://www.paper51.com

Output of f5 = AK,where AK[0] .. AK[47] = OUT2[0] .. OUT2[47] 内容来自论文无忧网 www.paper51.com

关于OP与的OPC说明:

paper51.com

一个128位的值OP,可以理解为,不同的运营商使用不同的OP。无论OP是否公开,算法都是安全的。如果运营者保密OP的值则更好。它是由运营者自己指定的

paper51.com

3.2     f1-f5的C语言代码实现

paper51.com

²          算法 f1主要代码:

内容来自www.paper51.com

计算网络认证代码mac_a。4个输入: 密钥K, 任意随机询问数rand、顺序编号SQN 和认证管理域AMF

http://www.paper51.com

paper51.com

图10  f1程序流程图

内容来自www.paper51.com

void f1    ( u8 k[16], u8 rand[16], u8sqn[6], u8 amf[2], u8 mac_a[8] ) paper51.com

{ u8 temp[16];

paper51.com

  u8 in1[16];

内容来自www.paper51.com

u8 rijndaelInput[i16];

http://www.paper51.com

RijndaelKeySchedule( k );

内容来自www.paper51.com

  ComputeOPc( op_c );/*产生op_c*/

http://www.paper51.com

for (i=0; i<16; i++) 内容来自论文无忧网 www.paper51.com

  rijndaelInput[i] = rand[i] ^ op_c[i];

http://www.paper51.com

 RijndaelEncrypt(rijndaelInput, temp );/*产生temp数组*/

内容来自论文无忧网 www.paper51.com

/*将sqn和amf赋值给数组in1中*/

http://www.paper51.com

   for(i=0; i<16; i++) copyright paper51.com

    rijndaelInput[(i+8) % 16] =in1[i] ^ op_c[i]; 内容来自www.paper51.com

for (i=0; i<16; i++) paper51.com

rijndaelInput[i]^= temp[i];

内容来自论文无忧网 www.paper51.com

/*将in1和op_c异或后,循环左移64位后,与temp数组异或,产生rijndaelInput*/

copyright paper51.com

  RijndaelEncrypt( rijndaelInput, out1 ); paper51.com

  for (i=0; i<16; i++)

paper51.com

    out1[i] ^= op_c[i]; 内容来自www.paper51.com

for (i=0; i<8; i++) paper51.com

mac_a[i]= out1[i]; paper51.com

/* 将rijndaelInput 作为输入产生out1,并将out1与op_c异或后,取其前64位做为f1输出 */ http://www.paper51.com

return;

内容来自www.paper51.com

} http://www.paper51.com

------分隔线----------------------------
联系方式