毕业设计(论文)KASUMI算法的研究与VC实现.doc

上传人:仙人指路1688 文档编号:3976755 上传时间:2023-03-30 格式:DOC 页数:10 大小:126.50KB
返回 下载 相关 举报
毕业设计(论文)KASUMI算法的研究与VC实现.doc_第1页
第1页 / 共10页
毕业设计(论文)KASUMI算法的研究与VC实现.doc_第2页
第2页 / 共10页
毕业设计(论文)KASUMI算法的研究与VC实现.doc_第3页
第3页 / 共10页
毕业设计(论文)KASUMI算法的研究与VC实现.doc_第4页
第4页 / 共10页
毕业设计(论文)KASUMI算法的研究与VC实现.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《毕业设计(论文)KASUMI算法的研究与VC实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)KASUMI算法的研究与VC实现.doc(10页珍藏版)》请在三一办公上搜索。

1、KASUMI算法的研究与VC实现摘要随着通信技术的高速发展,第三代移动通信系统(3G)将成为人们生活中重要的通信方式,3G系统中业务信息的安全性以及网络资源使用的安全性将越来越重要。为了对3G系统提供安全性,3G的国际组织3GPP(3rd Generation Partnership Project)在3G的安全结构中定义了两个标准化的核心算法f8和f9。f8算法是加密算法,f9是完整性算法,这两个算法都是基于KASUMI算法的。KASUMI算法是基于日本三菱公司的分组密码MISTY1算法,是它的改进版本,它是一种分组加密算法。 本文主要研究的是第三代移动通信技术中的一种核心加密算法:KASU

2、MI算法;详尽介绍KASUMI算法的原理、组成部分以及怎样在VC中实现。关键字:KASUMI算法;3G;安全性;FeistelThe Research and Implementation of Kasumi Algorithm with VCAbstractAs the development of communication technology is arriving at a bewildering rate, the third generation of mobile telecommunication system (3G) is doomed to dominate our w

3、ay of that. Meanwhile, how to maintain the security of operating information and network resources will be playing an ever-increasing role. In order to provide 3G with steady security, its international organization 3GPP (3rd Generation Partnership Project)has defined two standardized key arithmetic

4、: f8 and f9. The arithmetic f8 belongs to encrypted one, while f9 has kept its integrality. But they are both based on the arithmetic of KASUMI. The article is mainly focusing on the arithmetic of KASUMI, which is the key to the encrypted third generation of mobile telecommunication. And it sheds li

5、ght on the theory, composition as well as how it can be carried out in VC in detail.Key words:KASUMI;3G;Security;Feistel目 录论文总页数:26页1 引言12 KASUMI算法概述12.1 KASUMI算法的总体结构12.2 KASUMI算法的组成函数22.2.1 f函数22.2.2 FI函数32.2.3 FO函数32.2.4 FL函数42.2.5 S-box42.3 KAUSMI算法的密钥生成52.4 KAUSMI算法的安全性63 KASUMI算法流程73.1 密钥产生83.

6、2 FI函数93.3 FO函数103.4 FL函数114 系统设计124.1 KASUMI算法程序实现124.1.1 KASUMI算法程序实现的加密解决方案124.1.2 KASUMI算法程序实现的解密解决方案134.2 人机界面设计135 关键代码分析155.1 FI函数的程序实现155.2 FO函数的程序实现165.3 FL函数的程序实现175.4 密钥产生程序实现175.5 f函数的程序实现(加密时的函数)185.6 f函数的程序实现(解密时的函数)196 软件整体测试与系统缺陷206.1 软件测试环境配置206.2 软件测试界面介绍206.3 软件测试结果216.3.1 软件的加密速度

7、226.3.2 KASUMI算法加密/解密案例236.4 系统缺陷23结 论24参考文献24致 谢25声 明26 1 引言随着通信技术的高速发展,第三代移动通信系统(3G)将成为人们生活中重要的通信方式,3G系统中业务信息的安全性以及网络资源使用的安全性将越来越重要。为了对3G系统提供安全性,3G的国际组织3GPP(3rd Generation Partnership Project)在3G的安全结构中定义了两个标准化的核心算法f8和f9。f8算法是加密算法,f9是完整性算法,这两个算法都是基于KASUMI算法的。KASUMI算法是基于日本三菱公司的分组密码MISY1算法,是它的改进版本,它是

8、一种分组加密算法。本文主要目的是研究KASUMI算法,并在VC环境下实现它。KASUMI算法的实现是在Microsoft Visual C+6.0环境下实现的,但是源代码确实利用C语言编写的,因为C语言编写的程序比C+编写的程序普遍效率要高。本系统最终完成后具有以下功能:(1)满足算法的要求,明文只能输入64位二进制位,密钥只能输入128位二进制位;但在本软件中对输入做了相应的处理,输入的时候只能输入十六进制符号,其余报错。(2)此软件只是为了验证KASUMI算法的正确性,所以在输入的时候可以随机输入,以方便快速验证。(3)为了避免加密结果的偶然性,增加了解密功能;如果解密结果与原文不符,说明

9、加密不正确。2 KASUMI算法概述2.1 KASUMI算法的总体结构KASUMI算法是一个Feistel结构的分组加密算法,密钥长度为128比特,对一个64比特的输入分组进行八轮的迭代运算,产生长度为64比特的输出。轮函数保括一个输入输出为32比特的非线性混合函数F0和一个输入输出为32比特的线性混合函数FL。函数F0由一个输入输出为16比特的非线性混合函数FI进行3轮重复运算而构成。而函数FI是由使用非线性的S-盒S7和S9构成的4轮结构。KASUMI算法对64比特的分组应用128比特的密钥进行加密,生成64比特的输出,具体实现如下:输入数据Indata被分为32比特的左右两部分L0和R0

10、,即Indata= L0|R0对整数i,1 =i = 8定义Ri=Li-1 Li=Ri-1 fi(Li-1,RKi)即每轮KASUMI算法的操作:将第i-1轮的输出的左半部Li-1作为第i轮的右半部Ri;而第i轮的左半部由第i-1轮输出的右半部Ri-1与第i轮的轮函数fi的输出结果进行异或运算得到。(RKi为第i轮的子密钥) 经过8轮的迭代后,得到64比特的输出(L8|R8),如图:2.1所示。2.2 KASUMI算法的组成函数2.2.1 f函数轮函数fi对32比特的输入Indata,在32比特的轮密钥RKi的控制下,得到32比特的输出。而轮密钥由三个子密钥(KLi,KOi,KIi)组成。轮函

11、数自身由两个子 FL和FO构成,与之相关的子密钥分别为KLi(FL应用的密钥),KOi,KIi(FO应用的密钥),如图2-1所示。轮函数fi在不同的奇偶轮有不同的表达形式:对于1,3,5,7轮:fi(Indata,RKi)= FO(FL(Indata,KLi),KOi,KIi)对于2,4,6,8轮:fi(Indata,Ki)= FL(FO(Indata,KOi,KIi),KLi)这里 KOi, KIi , KLi 是子密钥,是由 key schedule产生的。keyschedule对128位密钥K进行操作,为每个周期函数生成128位的子密钥。 图2-1 f函数 图2-2 FI函数 图2-3

12、FL函数 图2-4 FO函数2.2.2 FI函数函数FI由16比特的输入数据I和16比特的子密钥KIi,j构成。输入数据Indata分为两个不等长的部分,9比特的L0和7比特的R0,即Indata=L0|R0。同样地密钥KIi,j也被分为7比特的KIi,j,1和9比特的KIi,j,2两部分,即KIi,j=KIi,j,1|KIi,j,2。在函数中使用了两个S-盒,S7将7比特的输入映射为7比特的输出,S9将9比特的输入映射为9比特的输出。函数中使用了两个辅助函数ZE()和TR()。ZE(x)表示在7比特的数据x尾部(最右边)添加2个零,将7比特转换为9比特。TR(x)表示9比特的数据x的头部(最

13、左边)删除两个比特数据,将9比特转换为7比特。函数FI也是Feistel结构,其中每轮的操作定义如下:L1=R0, R1=S9L0 ZE(R0),L2=R1KIi,j,2, R2=S7L1 TR(R1) KIi,j,1,L3=R2, R3=S9L2 ZE(R2),L4=S7L3 TR (R3), R4=R3函数FI的输出为16比特的值(L4|R4),如图2-2所示。2.2.3 FO函数输入函数由32比特的输入数据Indata和两组分别为48比特的子密钥:KOi和KIi构成。32比特的输入数据同样被分为左右两部分,即Indata=L0|R0。48比特的子密钥被分为三组16比特的子密钥:KOi=K

14、Oi,1|KOi,2|KOi,3和KIi=KIi,1|KIi,2|KIi,3对于整数j,1=j =3Rj=FI(Lj-1 KOi,j,KIi,j) Rj-1,Lj=Rj-1最后得到函数FO的32比特的输出(L3|R3)。具体实现如图2-4所示。2.2.4 FL函数函数FL包含一个32比特的输入数据Indata和一个32比特的子密钥KLi。子密钥KLi被分为16比特的左右两个子密钥,KLi,1和KLi,2即KLi=KLi,1|KLi,2同样输入数据也被分为两个16比特的左右两部分,即Indata=L|R定义:R=RROL(LKLi,1) (ROL():循环左移1位)L=LROL (RKLi,2)

15、共同构成函数FL的输出32比特(L | R)。具体实现见图2-3。输出的右半部R,由输入数据的左半部L与子密钥的左半部KLi,1进行按位与的运算,再进行循环左移一位,然后再与输入数据的右半部R进行异或(模2加)运算得到。输出的左半部L,由输出数据的右半部R,与子密钥的右半部KLi,2进行按位或的运算,再进行循环左移一位,然后再与输入数据的左半部L进行异或(模2加)运算得到。2.2.5 S-box两个S-boxes 既可以由组合逻辑实现,也可以通过查找表来实现。在本设计中由于考虑到加密的速度,所以才用了查表的方法来实现。S7和S9表如下:S7 = 54, 50, 62, 56, 22, 34,

16、94, 96, 38, 6, 63, 93, 2, 18,123, 33,55,113, 39,114, 21, 67, 65, 12, 47, 73, 46, 27, 25,111,124, 81,53, 9,121, 79, 52, 60, 58, 48,101,127, 40,120,104, 70, 71, 43,20,122, 72, 61, 23,109, 13,100, 77, 1, 16, 7, 82, 10,105, 98,117,116, 76, 11, 89,106, 0,125,118, 99, 86, 69, 30, 57,126, 87,112, 51, 17, 5

17、, 95, 14, 90, 84, 91, 8, 35,103, 32, 97, 28, 66,102, 31, 26, 45, 75, 4, 85, 92, 37, 74, 80, 49, 68, 29,115, 44,64,107,108, 24,110, 83, 36, 78, 42, 19, 15, 41, 88,119, 59, 3;S9 = 167,239,161,379,391,334, 9,338, 38,226, 48,358,452,385, 90,397,183,253,147,331,415,340, 51,362,306,500,262, 82,216,159,356

18、,177,175,241,489, 37,206, 17, 0,333, 44,254,378, 58,143,220, 81,400, 95, 3,315,245, 54,235,218,405,472,264,172,494,371,290,399, 76,165,197,395,121,257,480,423,212,240, 28,462,176,406,507,288,223,501,407,249,265, 89,186,221,428,164, 74,440,196,458,421,350,163,232,158,134,354, 13,250,491,142,191, 69,1

19、93,425,152,227,366,135,344,300,276,242,437,320,113,278, 11,243, 87,317, 36, 93,496, 27,487,446,482, 41, 68,156,457,131,326,403,339, 20, 39,115,442,124,475,384,508, 53,112,170,479,151,126,169, 73,268,279,321,168,364,363,292, 46,499,393,327,324, 24,456,267,157,460,488,426,309,229,439,506,208,271,349,4

20、01,434,236, 16,209,359, 52, 56,120,199,277,465,416,252,287,246, 6, 83,305,420,345,153,502, 65, 61,244,282,173,222,418, 67,386,368,261,101,476,291,195,430, 49, 79,166,330,280,383,373,128,382,408,155,495,367,388,274,107,459,417, 62,454,132,225,203,316,234, 14,301, 91,503,286,424,211,347,307,140,374, 3

21、5,103,125,427, 19,214,453,146,498,314,444,230,256,329,198,285, 50,116, 78,410, 10,205,510,171,231, 45,139,467, 29, 86,505, 32, 72, 26,342,150,313,490,431,238,411,325,149,473, 40,119,174,355,185,233,389, 71,448,273,372, 55,110,178,322, 12,469,392,369,190, 1,109,375,137,181, 88, 75,308,260,484, 98,272

22、,370,275,412,111,336,318, 4,504,492,259,304, 77,337,435, 21,357,303,332,483, 18, 47, 85, 25,497,474,289,100,269,296,478,270,106, 31,104,433, 84,414,486,394, 96, 99,154,511,148,413,361,409,255,162,215,302,201,266,351,343,144,441,365,108,298,251, 34,182,509,138,210,335,133,311,352,328,141,396,346,123,

23、319,450,281,429,228,443,481, 92,404,485,422,248,297, 23,213,130,466, 22,217,283, 70,294,360,419,127,312,377, 7,468,194, 2,117,295,463,258,224,447,247,187, 80,398,284,353,105,390,299,471,470,184, 57,200,348, 63,204,188, 33,451, 97, 30,310,219, 94,160,129,493, 64,179,263,102,189,207,114,402,438,477,38

24、7,122,192, 42,381, 5,145,118,180,449,293,323,136,380, 43, 66, 60,455,341,445,202,432, 8,237, 15,376,436,464, 59,461;2.3 KAUSMI算法的密钥生成KASUMI算法使用一个128比特的密钥,而在算法中的每一轮所使用的子密钥都是由这个128比特的密钥衍生而来的。每轮的密钥通过两组16比特的数组Kj和Kj,(j=1到8)以如下的方法生成:128比特的密钥被分为每组16比特的8个组:K=K1|K2|K3|K4|K5|K6|K7|K8第二组密钥Kj,由Kj以如下方法生成:Kj,=KjCj(j=1到8,Cj是表2-1所示的16进制的常量)表2-1 常量参数每轮的密钥由Kj和Kj,以表2-2所定义的规则生成。表2-2 每轮子密钥

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号