3G的AKA协议中F1至F5的UE端的实现
关键词:AKA;f1-f5 ;Rijndael
摘 要
随着移动通信系统的不断发展,第三代移动通信系统(3G)成为当前通信领域研究开发的热点。在3G系统中,许多新型的数据业务将开放。在业务增多的同时,系统安全问题将变得更加重要。
AKA协议就是3G系统中用来实现用户终端与认证服务器端的双向认证及密钥分配机制的一个安全协议。3GPP为3G通信系统定义了12种鉴权算法:f0-f9,f1*和f5*。AKA利用了其中的f0-f5*算法。本次设计为其中的f1-f5算法在系统用户终端(user's equipment,UE端)的实现。设计采用AES作为内核加密算法,即Rijndael算法。因此,本次设计从AES入手,通过对AES的具体分析和代码实现,然后利用对AES的调用,实现f1-f5的功能。
AKA协议中的用户终端一般指智能卡,在3G系统中,也就是第三代手机卡。由于智能卡设备不像计算机系统那样充够足的资源,一般都采用8位系统。因此在设计内核算法的时候,考虑到程序在实现上花费的时间资源和硬件资源问题,采用8位的AES实现算法,而不是32位。另外,由于此次设计采用AES为核心算法,因此还对AES相关数学基础知识,实现原理做了详细的分析和了解。
目 录
1 引言... 1
1.1 课题背景... 1
1.2 国内外研究现状... 1
1.3 本课题研究的意义... 1
1.4 本课题的研究方法... 1
2 AES算法原理和C语言代码设计实现... 2
2.1 分组密码设计准则... 2
2.2 Rijndael算法综述... 2
2.3 Rijndael加密步骤及C语言代码实现... 4
2.3.1..................................................................................................... /SubBytes. 4
2.3.2................................................................................................... /ShiftRows. 5
2.3.3................................................................................................. /MixColumns. 7
2.3.4............................................................................................... /AddRoundKey. 10
2.3.5.......................................................................................... 加密过程主函数... 14
3 f1-f5算法介绍及C语言代码设计实现... 14
3.1 f1-f5介绍... 14
3.2 f1-f5的C语言代码实现... 16
4 代码测试和案例... 19
结 论... 21
参考文献... 22
致 谢... 23
声 明... 24
2.3.1 SubBytes
ByteSubstitution是一个非线性的字节替代,独立地在每个状态字节上进行运算。它包括两个变换。
/1. 在有限域GF(28)上求乘法逆,‘00’映射到它自身。
/2. 在GF(2)上进行下面的仿射变换:
仿射变换,实际上是涉及一个矩阵乘法
图2 矩阵乘法示意图
其中Y=[y7,y6…,.y0]为经SubByte作用后的值。这个变化,Rijndael采用一个S盒变化实现
图3 S盒变换图
轮密钥的产生,其实就是经历以下几个步骤:
a. 移位
对W[i-1]进行左移一位操作,如
c. 与Rcon[i/NK]异或
i是列下标,而Rcon[i] =(RC[i], ’00’, ’00’, ’00’)
RC[1] =1(即’01’)
RC[i] =(02)(i-1);i=2,3,......
由于次处操作同样的是GF(28) 乘法的基本运算,因此具体实现过程中,同样可以通过Xtime盒实现。
d. 与W[i-NK]异或,如W[4]与W[0]。
具体不同之处在于对W4,W8..等列来说,需要经历aàd四步,而对于其他列而言,只需经历最后一步即可。
算法思想:
rkr,0,0=rkr-1,0,0 ÅS-box[rkr-1,1,3] Åround_const[r]
rkr,1,0=rkr-1,1,0 ÅS-box[rkr-1,2,3]
rkr,2,0=rkr-1,2,0 ÅS-box[rkr-1,3,3]
S盒替换,移位,异或运算
产生第i轮子密钥