微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 3GPP 内核算法KASUMI的IP设计与测试

3GPP 内核算法KASUMI的IP设计与测试

时间:11-03 来源:3721RD 点击:

第三代移动通信系统是一个能在全球范围无线接入使用的网络系统,它提供了传统的语音业务和无线高速的数据业务。作为3G系统中信息安全的核心技术,相关的密码算法在第三代移动通信技术中占有重要的地位。

本文基于第三代伙伴关系计划标准化组织(3GPP)制定和实施的标准,介绍了第三代移动通信系统的安全算法KASUMI,分析了其应用背景和结构原理。本文同时详细描述了基于FPGA的KASUMI IP核的实现过程。设计出了对64位数据进行加密的KASUMI算法的IP核。在此基础上,进一步完成了f8算法的软核。其中KASUMI算法都通过串口完成了硬件数据的测试。

1 系统的功能和指标

本系统主要完成了KASUMI 的IP核设计及测试,可在硬件上实现对数据的加密。并在此基础上设计出了f8算法的软核,通过了软件仿真测试。

最大时钟频率:141.54MHZ

吞 吐 量:3019.58Mbps

密 钥 大 小:128比特

2 系统的理论基础

主要阐述KASUMI算法的结构原理,分析了其整体结构及各个组成部分。

2.1 KASUMI算法分析

KASUMI算法是基于日本三菱公司的分组密码MISTY1算法,是一个采用Feistel结构的分组加密算法,采用128比特的密钥输入和64比特的明文输入,产生64比特的密文输出,在此过程中要进行8轮迭代。KASUMI算法的设计遵循了三条原则:⑴安全性有足够的数学基础;⑵算法的软件实现在任何处理器上要足够的快,硬件实现也足够的快;⑶算法能够对抗差分和线性密码分析,流程图如图1所示。

图1 KASUMI算法

输入数据I被分为32比特的左右两部分L0和R0,即I= 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.1 KASUMI算法中的函数

2.1.1.1 第i轮的轮函数fi

轮函数fi对32比特的输入I,在32比特的轮密钥RK的控制下,得到32比特的输入。而轮密钥由三个一组的子密钥(KLi,KOi,KIi)组成。轮函数自身由两个子函数FL和FO构成,与之相关的子密钥分别为KLi和KOi ,KIi

轮函数在奇数轮与偶数轮有不同的表达式:

对于1,3,5,7轮:fi(I,RKi)= FO(FL(I,KLi),KOi,KIi

对于2,4,6,8轮:fi(I,Ki)= FL(FO(I,KOi,KIi),KLi

⑴ 函数FL:FL函数是一个线性函数,但是这并不意味着算法的安全性要依赖于它,也不能依赖于它。它的目的是通过一个简单的方式增加附加干扰,使得单个的比特位在传输过程中更难被追踪。FL函数还有一个特性,就是FL输入的微小变化在输出端也只引起微小的变化,这对FL函数正向或反向的计算都是有用的。流程图如图2:

图2 FL函数算法

⑵ 函数FO:KASUMI的循环函数的非线性部分是由FO函数构成的。在统一分配使用子密钥的情况下,FO的平均线性差分来率小于2-28 。对于任意一个固定的密钥,FO可以看 作是32比特的分组置换,但是由于它只有3轮结构,容易被四选择的随机明文排列辨别出。不过可以象FI函数的结构那样,通过在FO函数中增加一轮来改进它的扩散性能。但这样是以增加实现复杂性和能耗为代价来使算法安全得到改进。然而目前还没有任何证据表明3轮结构FO函数的缺点能被用来对整个8轮的KASUMI进行攻击。流程图如图3:

图3 FO函数算法

⑶ 函数FI: FI函数是KASUMI的基本随机函数,有16比特的输入和16位的输出。它由两个非线性S7和S9盒进行4次循环组成。如果子密钥统一分配使用,那么,FI的平均线性差分概论小于(2-9+1)(2-7+1)=2-14 。设计S7和S9盒的目的是为了避免FI中出现线性结构,使算法的安全性更高。流程图如图4:

图4 FI函数算法

⑷ S盒KASUMI算法中有两个S盒:7比特输入7比特输出的S7 以及 9比特输入9比特输出的S9。它们也是算法的核心部分之一,用来构成FI函数。它们可以通过联合逻辑实现,也可以通过查表实现。在本设计中是使用逻辑算法实现的。设输入数据X(7比特或9比特)的每一位分别为:

(X8 || X7 ||)X6 || X5 || X4 || X3 || X2 || X1 || X0

输出数据Y(7比特或9比特)的每一位分别为:

(Y8 || Y7 ||)Y6 || Y5 || Y4 || Y3 || Y2 || Y1 || Y0

则S7的逻辑表达式定义如下:

则S9的逻辑表达式定义如下

2.1.1.2 子密钥的生成

KASUMI算法输入一个128比特的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top