网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > 其他类别 > 正文

基于GSM/GPRS服务网络端实现

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/06

网学网为需要其他类别的朋友们搜集整理了基于GSM/GPRS服务网络端实现相关资料,希望对各位网友有所帮助!

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

 

1         f1,f2,f3,f4,f5算法的研究
1.1    f1-f5的介绍
 3G的认证使用5参数的认证向量AV(RAND□XRES□CK□IK□AUTN),执行AKA(Authen-tiCAtion and Key Agreement)认证和密钥协商协议, HE/HLR表示用户归属区的用户归属寄存器;AV表示认证向量;AUTN表示认证令牌;RES和XRES分别表示用户域的应答信息和服务网的应答信息;RAND表示生成的随机数;CK和IK分别表示数据保密密钥和数据完整性密钥。AKA用于USIM、访问位置寄存器(VLR)、归属位置寄存器(HLR)间的双向认证及密钥分配,3G系统为实现完备的安全功能定义了12个算法(f0,f1, f1*,.f2…f5,f5*,f6…f9)。其具体定义如下图所示:
14 f1-f5算法图
RAND     128位的随机询问数,f1, f1*, f2, f3, f4, f5 and f5*的输入
OP      128位的运算变量,f1, f1*, f2, f3, f4, f5 and f5*的成分
RES           至多128位至少32位
OPC             OP和K得到的128值
SQN      48位的序列值,f1and f1*的输入
SQNMS            SQN中,指用在f1*
AMF      16位的认证管理域,f1 and f1*.的输入
AMF          认证管理域码AMF(用于支持多种认证算法和设置密钥生命期)
第一组的输入:
IN1[0] .. IN1[47] = SQN[0] .. SQN[47]
IN1[48] .. IN1[63] = AMF[0] .. AMF[15]
IN1[64] .. IN1[111] = SQN[0] .. SQN[47]
IN1[112] .. IN1[127] = AMF[0] .. AMF[15]
SQN ||AMF|| SQN|| AMF:长度为128位。
OPC = OP Å E[OP]K
c1,c2,c3,c4,c5的定义如下:
c1[i] = 0 for 0 £ i £ 127
c2[i] = 0 for 0 £ i £ 127, except that c2[127] = 1
c3[i] = 0 for 0 £ i £ 127, except that c3[126] = 1
c4[i] = 0 for 0 £ i £ 127, except that c4[125] = 1
c5[i] = 0 for 0 £ i £ 127, except that c5[124] = 1
r1, r2, r3, r4, r5定义如下:
r1 = 64; r2 = 0; r3 = 32; r4 = 64; r5 = 96
移位方法是循环左移
5个128位的输出OUT1, OUT2, OUT3, OUT4, OUT5用表达式可如下表示:
OUT1 = E[TEMPÅrot(IN1 Å OPC, r1) Å c1]K Å OPC
OUT2 = E[rot(TEMPÅ OPC, r2) Å c2]K Å OPC
OUT3 = E[rot(TEMPÅ OPC, r3) Å c3]K Å OPC
OUT4 = E[rot(TEMPÅ OPC, r4) Å c4]K Å OPC
OUT5 = E[rot(TEMPÅ OPC, r5) Å c5]K Å OPC
各个不同函数f1-f5的输出定义如下:
Output of f1 = MAC_A, where MAC-A[0] .. MAC-A[63] = OUT1[0] .. OUT1[63]
Output of f2 = RES, where RES[0] .. RES[63] = OUT2[64] .. OUT2[127]
Output of f3 = CK, where CK[0] .. CK[127] = OUT3[0] .. OUT3[127]
Output of f4 = IK, where IK[0] .. IK[127] = OUT4[0] .. OUT4[127]
Output of f5 = AK, where AK[0] .. AK[47] = OUT2[0] .. OUT2[47]
关于OP与的OPC说明:
一个128位的值OP,可以理解为,不同的运营商使用不同的OP。无论OP是否公开,算法都是安全的。如果运营者保密OP的值则更好。它是由运营者自己指定的。
1.2    f1,f2,f3,f4,f5的实现
/*-------------------------------------------------------------------
 *                            算法 f1
 *-------------------------------------------------------------------
 * 计算网络认证代码mac-a 密钥K,任意随机询问数rand、顺序编号sqn 和认证管理域amf
 *-----------------------------------------------------------------*/
f1的程序流程图:

op用AES加密后再与op异或可得到opc,再将其加密
sqn.amf.opc异或后再循环左移64位
再与c1异或,然后用AES加密,密文再与opc异或
输入mac_a,key,rand,sqn,amf,op
输出64位的f1

15 f1的程序流程图
 
void f1    ( u8 k[16], u8 rand[16], u8 sqn[6], u8 amf[2],
             u8 mac_a[8] )
{
 u8 op_c[16];
 u8 temp[16];
 u8 in1[16];
 u8 out1[16];
 u8 rijndaelInput[16];
 u8 i;
RijndaelKeySchedule( k );
ComputeOPc( op_c );
for (i=0; i<16; i++)
    rijndaelInput[i] = rand[i] ^ op_c[i];
   RijndaelEncrypt( rijndaelInput, temp );
for (i=0; i<6; i++)
 {
    in1[i]    = sqn[i];
    in1[i+8] = sqn[i];
 }
 for (i=0; i<2; i++)
 {
    in1[i+6] = amf[i];
    in1[i+14] = amf[i];
 }
 /*在常数c1的128位全为0时,循环左移64位后,op_c和in1进行异或运算      */
for (i=0; i<16; i++)
    rijndaelInput[(i+8) % 16] = in1[i] ^ op_c[i];
for (i=0; i<16; i++)
    rijndaelInput[i] ^= temp[i];
   RijndaelEncrypt( rijndaelInput, out1 );
 for (i=0; i<16; i++)
    out1[i] ^= op_c[i];
for (i=0; i<8; i++)
    mac_a[i] = out1[i]; /* 64位的f1输出 */
return;
} /* f1结束 */
/*-------------------------------------------------------------------
 *                          算法 f2-f5
 *-------------------------------------------------------------------
        f2-f5的实现均在这个函数里,即res,ck,ik,ak
*-----------------------------------------------------------------*/

f2-f5的产生算法示意图:

opc异或后,循环左移r2=0位
opc异或后,循环左移r3=32位
 
opc异或后,循环左移r4=64位
 
op用AES加密后再与op异或可得到opc,再将其加密
 
再与c2异或,然后用AES加密,密文再与opc异或
 
再与c3异或,然后用AES加密,密文再与opc异或
 
再与c4异或,然后用AES加密,密文再与opc
 
输入rand,key
 
f5
 
f2
 
f3
 
f4
 

16 f2-f5的产生算法示意图
void f2345 ( u8 k[16], u8 rand[16],
             u8 res[8], u8 ck[16], u8 ik[16], u8 ak[6] )
{
 u8 op_c[16];
 u8 temp[16];
 u8 out[16];
 u8 rijndaelInput[16];
 u8 i;
RijndaelKeySchedule( k );
ComputeOPc( op_c );
for (i=0; i<16; i++)
    rijndaelInput[i] = rand[i] ^ op_c[i];
   RijndaelEncrypt( rijndaelInput, temp );
/* temp与opc的异或 */
   * 循环左移r2=0位, 然后与常数c2异或(c2的128位只有最后一位为1,其余全为0). */
for (i=0; i<16; i++)
    rijndaelInput[i] = temp[i] ^ op_c[i];
 rijndaelInput[15] ^= 1;
RijndaelEncrypt( rijndaelInput, out );
 for (i=0; i<16; i++)
out[i] ^= op_c[i];
for (i=0; i<8; i++)
    res[i] = out[i+8]; /*64位的f2输出*/
 for (i=0; i<6; i++)
    ak[i] = out[i];    /*48位的f5输出*/
 /*.循环左移r3=32位, 然后与常数c3异或(c3的128位只有倒数第二位为1,其余全为0*/
for (i=0; i<16; i++)
    rijndaelInput[(i+12) % 16] = temp[i] ^ op_c[i];
   rijndaelInput[15] ^= 2;
RijndaelEncrypt( rijndaelInput, out );
 for (i=0; i<16; i++)
    out[i] ^= op_c[i];
for (i=0; i<16; i++)
    ck[i] = out[i]; /*128位的f3输出*/
/*循环左移r4=64位, 然后与常数c4异或(c4的128位只有倒数第三位为1,其余全为0 */
for (i=0; i<16; i++)
    rijndaelInput[(i+8) % 16] = temp[i] ^ op_c[i];
   rijndaelInput[15] ^= 4;
RijndaelEncrypt( rijndaelInput, out );
 for (i=0; i<16; i++)
    out[i] ^= op_c[i];
for (i=0; i<16; i++)
    ik[i] = out[i];/* 128位的f4输出*/
return;
} /*f2-f5的实现结束 */
2         测试结果
代码运行结果:
17 运用结果图
3GPP中的测试案例:
 
1 案例表
Variable
Value
K
465b5ce8 b199b49f aa5f0a2e e238a6bc
RAND
23553cbe 9637a89d 218ae64d ae47bf35
SQN
ff9bb4d0 b607
AMF
B9b9
OP
cdc202d5 123e20f6 2b6d676a c72cb318
Plaintext
ee36f7cf 037d37d3 692f7f03 99e7949a
f1
4a9ffac3 54dfafb3
f2
a54211d5 e3ba50bf
f5
aa689c64 8370
f3
b40ba9a3 c58b2a05 bbf0d987 b21bf8cb
f4
f769bcd7 51044604 12767271 1c6d3441
Ciphertext
9e2980c5 9739da67 b136355e 3cede6a2
 
 
 
 
 
 
 
 
 
2 案例表
Variable
Value
K
fec86ba6 eb707ed0 8905757b 1bb44b8f
RAND
9f7c8d02 1accf4db 213ccff0 c7f71a6a
SQN
9d027759 5ffc
AMF
725c
OP
dbc59adc b6f9a0ef 735477b7 fadf8374
f1
9cabc3e9 9baf7281
f2
8011c48c 0c214ed2
f5
33484dc2 136b
f3
5dbdbb29 54e8f3cd e665b046 179a5098
f4
59a92d3b 476a0443 487055cf 88b2307b
3 案例表
Variable
Value
K
9e5944ae a94b8116 5c82fbf9 f32db751
RAND
ce83dbc5 4ac0274a 157c17f8 0d017bd6
SQN
0b604a81 eca8
AMF
9e09
OP
223014c5 806694c0 07ca1eee f57f004f
f1
74a58220 cba84c49
f2
f365cd68 3cd92e96
f5
f0b9c08a d02e
f3
e203edb3 971574f5 a94b0d61 b816345d
f4
0c4524ad eac041c4 dd830d20 854fc46b
4 案例表
Variable
Value
K
4ab1deb0 5ca6ceb0 51fc98e7 7d026a84
RAND
74b0cd60 31a1c833 9b2b6ce2 b8c4a186
SQN
e880a1b5 80b6
AMF
9f07
OP
2d16c5cd 1fdf6b22 383584e3 bef2a8d8
f1
49e785dd 12626ef2
f2
5860fc1b ce351e7e
f5
31e11a60 9118
f3
7657766b 373d1c21 38f307e3 de9242f9
f4
1c42e960 d89b8fa9 9f2744e0 708ccb53
 
 
 
 
 
 
5 案例表
Variable
Value
K
6c38a116 ac280c45 4f59332e e35c8c4f
RAND
ee6466bc 96202c5a 557abbef f8babf63
SQN
414b9822 2181
AMF
4464
OP
1ba00a1a 7c6700ac 8c3ff3e9 6ad08725
f1
078adfb4 88241a57
f2
16c8233f 05a0ac28
f5
45b0f69a b06c
f3
3f8c7587 fe8e4b23 3af676ae de30ba3b
f4
a7466cc1 e6b2a133 7d49d3b6 6e95d7b4
   
 通过对AKA协议中f1-f5以及高级加密标准AES的Rijdael算法的理论和实现进行研究和分析,加深了我对这些知识的认识和理解,我对第三代移动通信有了更进一步的认识,也对Rijdael算法有了更深层次的理解和认识。
AES算法自身运算单元结构比较复杂,再加上算法设计上的紧凑性使得算法本身没有足够的空间来隐藏陷门,在研究的过程中主要侧重于算法的执行速度。   
论文首先对算法的理论基础知识作了总结和归纳,介绍了Rijndael算法在变换过程中涉及到的数学基知识,为论文在下面的讨论提供数学依据。承接算法的理论基础,详细的描述了算法所遵循的设计准则和设计原理,对算法轮变换过程,即SubByte变换、ShiftRows变换、MixColumns变换和AddRoundKey变换组成进行了详细的说明和图例解释。然后对AKA协议中的f1-f5作了介绍和分析。其实f1-f5的算法实现的精髓就在于Rijndael算法的实现。
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

原创论文

设为首页 | 加入收藏 | 论文首页 |原创论文 |
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师