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

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

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

图5 f8算法

2.3 f8算法的描述

f8算法利用KASUMI密钥相关函数,在128位密钥的控制下将输入的64位数据块转化为输出的64位数据块。

f8算法使用了两个64位寄存器:静态寄存器A和计数器BLKCNT寄存器。寄存器A用64位初始值IV进行初始化:

IV = COUNT || BEARER || DIRECTION ||0…0

IV由32位的COUNT,5位的BEARER,1位的DIRECTION和26位全0串连接而成,其中计数器BLKCNT设为0 。f8算法使用密钥修正值KM,KM是由8位字节0x55=01010101重复16次构成。首先,用修正过的CK值和KASUMI函数算出一个预白化值:

它被存入寄存器A 。当密钥流发生器以这种方式启动后,它就做好了产生密钥流的准备。被加密/解密的明文/密文中包含LENGTH位,LENGTH的值在1-20000之间,粒度为1,而密钥流发生器按64位的整数倍产生密钥流位。最后一个密钥流块中,从0-63之间最低有效的若干位将根据LENGTH的值所要求的总比特数而舍掉。

所需要的密钥流位的数量由BLOCKS表示。BLOCKS的值由LENGTH的值决定,方式如下:LENGTH的值被64除后向上取整作为BLOCKS的值。密钥流块用来表示。设KSB0 = 0 ,n为整数且1≤n≤BLOCKS,则n=BLKCNT+1,且:

密钥流中的个别位KS[0],KS[1],……,KS[LENGTH-1]是从左到右依次从密钥流块KSB1到KSBn中提取的,具体方法如下:对于n=1,……,BLOCKS和任意的整数i(0≤i≤64),可得:

加密和解密的操作相同,都是用输入数据和产生的密钥流按位异或得到的。

2.4 f8算法的输入定义

密钥索引(CK)

CK的长度是128位。如果产生的密钥长度k小于128位,CK的最大有效位携带额定密钥信息,而剩余位重复密钥信息,具体如下:

CK=CK[0],CK[1] ,……,CK[127]

其中,CK[0],……CK[k-1]携带密钥信息,对于所有的n(k≤n≤128),CK[n]=CK[n mod k]。

基于时间的输入(COUNT)

count参数的长度是32比特。密钥流同步是基于物理层帧计数器和超帧计数器结合的使用,这样可以避免密码流的重复使用。计数器(count)在建立连接时初始化。

无线承载标识(BEARER)

BEARER的长度是5位。相同密钥可能被一个用户的多个无线承载同时使用,为了避免使用相同的密钥流加密多个承载,算法根据无线承载标识来产生不同的密钥流。

传输方向(DERECTION)

上行时(信息从UE到RNC)DIRECTION的数值是0,下行为1 。由于上行和下行的信道有可能使用相同的密钥,DIRECTION位的目的就是避免上下行传输时使用相同的密钥流。

密钥流长度(LENGTH)

LENGTH是一个1-20000之间的整数,共16位。

密钥流

密钥流块的长度等于输入参数LENGTH的值。

明文

明文块的长度等于输入参数LENGTH的值。这里设计中一次输入的明文长度为256位。

密文

密文块的长度等于输入参数LENGTH的值。

3 KASUMI IP核的实现方案

主要阐述整个系统的原理和设计过程。

3.1 IP核及其优点

IP(知识产权intellectual property rights)核将一些在电路中常用,但比较复杂的功能块设计成可修改参数的模块。IP核的重用是设计人员赢得迅速上市时间的主要策略。随着CPLD/FPGA的规模越来越大,设计越来越复杂,设计者的主要任务是在规定的时间周期内完成复杂的设计。调用IP核能避免重复劳动,大大减轻工程师的负担,因此使用IP核是一个发展趋势。

IP核包括硬IP与软IP。可配置IP是参数化后的可重定目标IP,其优点是可以对功能加以裁剪,以符合特定的应用。这些参数包括总线宽度、存储器容量、使能或禁止功能块。

硬IP最大的优点是确保性能,如速度、功耗等。然而,硬IP难以转移到新工艺或集成到新结构中,是不可重配置的。

软IP是以综合形式交付的,因而必须在目标工艺中实现,并由系统设计者验证。其优点是源代码灵活,可重定目标于多种制作工艺,在新功能级中重新配置。

3.2 KASUMI IP核设计方案论证

3.2.1 方案一

KASUMI算法的加密过程共经过8轮迭代,所以首先想到的方案是设计一个状态机,通过8个状态来实现8轮迭代加密。定义如下:

type d_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8);

通过这种方法可以很方便的实现KASUMI的加密过程,经测试能够得到正确的结果。但是,由于状态机用到了8个状态,而且每个状态的过程都很复杂,所以使用8个状态的状态机占用了很大的资源,编译速度很慢。

3.2.2 方案二

由于KASUMI的加密过程有真严格的要求,必须顺序执行。所以,此次设计的状态机只分3个状态:空闲状态,加密状态,输出

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

网站地图

Top