欢迎来到天天文库
浏览记录
ID:15796318
大小:104.50 KB
页数:18页
时间:2018-08-05
《vc2983g的aka协议中f1至f5的ue端的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC2983G的AKA协议中F1至F5的UE端的实现
2 AES算法原理和C语言代码设计实现2.1 分组密码设计准则 Rijndael算法是分组密码,也具有分组密码的一般设计准则,分组密码的设计就是要求算法能在密钥控制下置换,对输入的明文进行加密变换。好的分组密码应该是既难破译高效又容易实现。(1)安全性准则 安全性原则主要是指由香农提出的混乱和扩散原则。 混乱原则是指人们所设计的密码应使得密钥和明文以及密文之间的依赖关系相当
2、复杂,以至于这种依赖关系对密码分析者来说无法利用。 扩散原则是指人们所设计的密码应使得密钥的每一位数字影响密文的许多位数字,以防止对密钥进行逐段破译,而且明文的每一位数字也应该影响密文的许多位数字,以便隐蔽明文数字的统计特性。 当然这种密码体制必须能抵抗现在所有的己知密码攻击。 (2)效率性准则 效率准则是与安全性准则互补的,指的是算法在执行加/解密时所要占用的资源量,加密/解密在软件的实现中,主要与
3、所要求的内存和存储程序所占用的内存有关,在硬件的实现中,与要求的芯片的面积有关。 (3)易实现准则 分组密码可以用软件和硬件来实现。硬件实现的优点是可获得较高的加密解密速度,软件实现的优点是灵活性强、代价低。2.2 Rijndael算法综述 AES,高级数据加密标准的简称,由美国国家标准和技术研究所(NIST)在1997年宣布征集,最终,在2000年,它宣布采用了比利时的密码专家JoanDaemen博士和VincentRijmen博士开发的Rijn
4、dael算法做为最终算法。Rijndael加密算法是分组长度可变、密钥长度也可变的分组密码。分组长度、密钥长度彼此独立地确定为128、192、256比特。总体来说,AES作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。 Rijndael是一个密钥迭代分组密码,包含了轮变换对状态的重复作用。轮数Nr的值取决于分组和密钥的长度。对于AES,当密钥长度为128比特时,Nr=10;当密钥长度为192比特时,Nr=12;当密钥长度为256比特时,Nr=14。算法的加密过程如图1所示。它包括一个初始密钥加法,记作AddRoundKey
5、,接着进行Nr-1次轮变换(Round),最后再使用一个轮变换(FinalRound)。轮变换由4个步骤组成:SubBytes,ShiftRows,MixColumns和AddRoundKey。最后一轮与前Nr-1次轮变换稍有不同,省掉了其中的MixColumns步骤。
图1Rijndeal加密C语言实现过程图相关的术语定义和表示•状态(State):密码运算的中间结果称为状态。 •State的表示:状态用以字节为基本构成元素的矩阵阵列来表示,该阵列有4行,列数记为Nb。&nbs
6、p; Nb=分组长度(bits)÷32 Nb可以取的值为4,6,8,对应的分组长度为128,192,256bits。•密码密钥(CipherKey)的表示:CipherKey(简称Key)类似地用一个4行的矩阵阵列来表示,列数记为Nk。 Nk=密钥长度(bits)÷32 Nk可以取的值为4,6,8,对应的密钥长度为128,192,256bits。2.3 Rijndael加密步骤及C语言代码实
7、现本次设计采用128位明文分组,128位密钥,下面结合具体实现代码,依照加密流程,对加密的几个具体步骤进行分析。
2.3.1 SubBytes ByteSubstitution是一个非线性的字节替代,独立地在每个状态字节上进行运算。它包括两个变换。 1. 在有限域GF(28)上求乘法逆,‘00’映射到它自身。 2. 在GF(2)上进行下面的仿射变换:
仿射变换,实际上是涉及一个矩阵乘法 图2&nbs
此文档下载收益归作者所有