kasumi算法的研究与vc实现—免费计算机毕业设计论文内容摘要:

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,401,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, 35,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,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,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,387,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}。 KAUSMI 算法的密钥生成 KASUMI 算法使用一个 128 比特的密钥,而在算法中的每一轮所使用的子密 第 6 页 共 26页 钥都是由这个 128 比特的密钥衍生而来的。 每轮的密钥通过两组 16 比特的数组Kj和 Kj, (j=1 到 8)以如下的方法生成: 128 比特的密钥被分为每组 16比特的8个组: K=K1||K2||K3||K4||K5||K6||K7||K8 第二组密钥 Kj, 由 Kj 以如下方法生成: Kj, =Kj Cj( j=1 到 8, Cj 是表 21 所示的 16 进制的常量) 表 21 常量参数 每轮的密钥由 Kj 和 Kj, 以表 22 所定义 的规则生成。 表 22 每轮子密钥 KAUSMI算法的安全性 KASUMI 算法是一种分组密码,目前它主要应用于第三代移动通信的安全算法 f8 和 f9 之中。 f8 算法是用来对 UE(移动用户设备)和 RNC(无线网络控制器)之间的无线链路上的用户数据和信令数据加密,以保证其安全性。 UE 和 RNC中都有 f8 算法。 f8 是一个密钥流发生器,它通过 KASUMI 算法生成 64 比特为一组的密钥流,将明文数据流与密钥流进行异或(模 2加)运算,得到密文流,解密是只要将同样的密钥流与密文流进行异或(模 2 加)运算,即可得到明文数据流。 f9 算法原理与此类似,通过 KASUMI 算法生成完整性消息认证码( MAC1),对 UE 和 RNC 之间的无线链路上的信令数据进行完整性保护和信令数据来源进行认证。 对信令数据( MESSAGE)使用 f9 算法算出完整性消息认证码( MAC1),将其附加在 MESSAGE 的后面,一起在无线链路上发送到接收端。 接收端也将收到的MESSAGE 用 f9 算法进行跟发送端一样的计算,算出消息认证码( XMAC1),将XMAC1 和收到发送端的 MAC1进行比较,验证数据的完整性。 KASUMI 算法是基于分组密码的设计,目前对于分组 密码的设计而言,由于 第 7 页 共 26页 出现了差分和线性密码攻击,对抗这些攻击具有可证明的安全性。 KASUMI 算法也是基于同样的原则而设计的。 它的可证明安全性是来源于算法中的被证明具有可证明安全性的较小的构成部件, Feistel 结构的 KASUMI 算法正是通过重复迭代调用较小的函数 FO和 FI 来保证其安全性。 它的安全性来源于它的四个非线性的函数: S7, S9, FI 和 FO。 S7 和 S9 这两个 S盒具有非线性映射特性。 他们映射后的每一个输出比特依赖于输入比特,具有很好的扩散性。 除了 S9,只要一个输入比特改变,输出比特都会改变。 只是因为 S9 中具有线性结构, S7 满足雪崩效应,而 S9不是。 在 3GPP 在测试中没有发现函数 FI 和 FO的线性结构,两个函数的每一个输出比特依赖于每一个输入比特,都满足雪崩效应。 KASUMI 算法降低到 4 轮已经可以满足密钥 密文,明文密文的雪崩效应了。 在 3GPP 组织的测评中, KASUMI 算法可以对抗目前的大部分密码攻击方法:差分密码分析(差分选择明文攻击、差分相关密钥攻击、不可能差分攻击),截断差分密码分析,高阶差分密码分析,线性密码分析;而且对于使用仪器的攻击:定时攻击,简单能量攻击,差分能量攻击也具有很好的安全性,尤其是 在 3G的特殊环境中。 3 KASUMI 算法流程 KASUMI 算法程序的实现语言是多种多样的,如: C、 C++、 JAVA 等等程序设计语言。 本文 KASUMI 算法程序的实现是利用 C语言来实现的,下面就简要的介绍一下算法的流程 : 第 8 页 共 26页 图 31 KASUMI算法流程图 备注 :图 31中,第 7 轮相同,第 8轮相同,所以只将第一轮与第二轮给出。 通过上图可以清晰地看出 KASUMI 算法的一个总体流程,下面就详细介绍KASUMI 算法的子流程图: 密钥产生 KASUMI 算法的密钥 K的长度为 128 位,但是 KASUMI 的每一次循环都要从 K中导出 128 位子密钥,在每一次循环中,都会产生 8 个子密钥,它们是: KLi,1[n]、FL 函数 F0 函数 FI 函数 密钥生成 32 位输入 128 位输入 密钥 KL 密钥 KI 密钥 KO 64 位输出 64 位输入 32 位输入 异或 F0 函数 FL 函数 异或 FI 函数 密钥 KI 密钥 KO 密钥 KL。 第 一轮与第二轮 第 三轮与第八轮 第 9 页 共 26页 KLi,2[n] 、 KOi,1[n]、 KOi,2[n]、 KOi,3[n]、 KIi,1[n]、 KIi,2[n]、 KIi,3[n] ( 1 = n= 8)。 产生的子密钥分别应用于 KL 函数、 KO 函数和 KI函数。 图 32 密钥产生流程图 FI 函数 FI 函数是 KASUMI 的基本随机函数,有 16 位的输入和 16 位的输出。 它由两个非线性 Sbox S7 和 S9 的 4次循环结构组成。 其中 S7 和 S9 是通过查表得到数据。 这里需要主要的是 16位的输入并不是均等分为 8位和 8位的左右输入,而是 9 位和 7位的不均等输入。 128 位输入 K8 K7 K6 K5 K4 K3 K2 K1 C8 C7 C6 C5 C4 C3 C2 C1 查表 K‘ 8 K‘ 7 K‘ 6 K‘ 5 K‘ 4 K‘ 3 K‘ 2 K‘ 1 KLi,1 KLi,2 KOi,1 KOi,2 KOi,3 KIi,1 KIi,2 KIi,3 第 10 页 共 26页 图 33 FI函数算法流程图 FO 函数 FO 函数是 KASUMI 的循环函数的非线性部分。 它是构成 feistel 结构的重要组成部分。 在 feistel 结构中, FO 函数与 FL函数是相辅相成的,在不同的轮次,它们将作为另一个的参数进行 传递。 7轮, FL 函数作为 FO函数的参数进行传递; 8 轮, FO函数作为 FL函数的参数进行传递。 S9[9 位 ] S7[7 位 ] 9 位输入 7 位输入 9 位输出 零位扩展 9 位输出 异或 9 位输出 截短 7 位输出 异或 7 位输出 S9[9 位 ] 9 位输出 异或 KIi,j,2 异或 KIi,j,1 9 位输出 7 位输出 零位扩展 异或 9 位输出 7 位输出 S7[7 位 ] 异或 7 位输出 7 位输出 9 位输出 截短 7 位输出 左移 9 位 两数相加 16 位输出 16 位输出 第 11 页 共 26页 图 34 FO函数算法流程图 FL 函数 FL 函数是 KASUMI 的循环函数的线性部分函数。 它是构成 feistel 结构的重要组成部分。 图 35 FL函数算法流程图 按位与操 作 16 位输入 KLi,1 异或 16 位输入 左循环一位 按位或操 作 左循环一位 异或 左移 16 位 两数相加 32 位输出 FIi,1 KOi,1 16 位输 入 异或 KIi,1 异或 16 位输 入 FIi,1 KOi,2 异或 KIi,2 异或 FIi,1 KOi,3 异或 KIi,3 异 或 左移 16 位 两数相加 32位输 出 第 12 页 共 26页 4 系统 设计 本系统是为验证 KASUMI 算法程序实现而设计的。 从功能上看,该系统非常简单;从界面上 看,该系统也与其他加密软件类似,但是它们有区别;从代码上看,该系统并没有把加密解密算法封装,而是作为程序的全局函数。 系统的设计从两个方面去实现它: KASUMI 算法程序实现与人机界面实现。 KASUMI 算法程序实现 KASUMI 算法程序的实现语言是多种多样的,如: C、 C++、 JAVA 等等程序设计语言,本文 KASUMI 算法程序的实现是利用 C语言来实现的。 KASUMI 算法程序实现的加密解决方案 图 41 KASUMI算法程序实现加密解决方案 上图为本系统实现加密的解决方案,此方案一共由五 个模块组成,其中包括两个 I/O 接口、一个密钥产生模块、一个加密模块和主控模块。 I/O 接口 在本方案中,包含了两个 I/O 接口:一个 I/O 接口用作明文和密钥的输入一个 I/O 接口用作密文的输出。 密钥产生模块 密钥产生模块的主要作用是产生每一轮加密所需要的子密钥。 加密模块 加密模块的主要作用是对数据进行加密。 主控程序 主控程序在此方案中起到了一个中转站的作用,它与每一个模块都有密切的关系,就输入接口而言,主控程序将从接口接收数据(明文和密钥),然后对数。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。