PDCP中EEA/EIA在FPGA上的实现

2015-12-15 07:58吴彦北朱宇霞陈印峰
电子设计工程 2015年7期
关键词:加密算法移位比特

吴彦北,朱宇霞,陈印峰

(1.武汉邮电科学研究院 湖北 武汉430074;2.北方烽火科技有限公司 北京 100085)

PDCP中EEA/EIA在FPGA上的实现

吴彦北1,2,朱宇霞1,2,陈印峰2

(1.武汉邮电科学研究院 湖北 武汉430074;2.北方烽火科技有限公司 北京 100085)

随着LTE系统的发展,PDCP层需要处理的数据流量越来越大,其中EEA/EIA功能在CPU上通过软件的方式已经无法满足系统对吞吐量的需求。在分析了128-EEA3/128-EIA3[1]算法以后,提出了一种基于PFGA的PDCP加速处理实现方案,在经过编码、仿真、验证以后,实际处理性能有很大提升,并准备实际运用于4G基站设备中。

PDCP;FPGA;EEA;EIA

LTE是一种基于分组低时延无线交换网络,PDCP层位于LTE空中接口协议栈RLC层之上子层用于对用户平面和控制平面数据提供头压缩、加密与完整性保护(EEA/EIA)[2]等操作。在LTE-A中引入传输模式9,对PDCP处理能力提出了更高要求,但是通过软件的实现方式在算法优化到极限时仍不能满足系统要求,通过硬件加速是通常采取的方法。

基于FPGA(可编程门阵列)的硬件开发具有周期短、成本低和能根据系统需求的变化可以灵活的更改硬件电路的特点[3],所以这里采用FPGA用来加速PDCP中EEA/EIA处理。

1 系统功能及实现

1.1 EEA(加密/解密)功能简介

PDCP子层中EEA/EIA两者处理流程有很大的相似之处,所以这里以加密处理在FPGA上的实现为主,完整性分析的处理可以类比得到。

PDCP加密功能只针对PDCP数据PDU(控制平面数据PDU和用户平面数据PDU),实体所使用的具体算法和参数都由高层配置。

这里设计中EEA选择的加密算法为128-EEA3,该算法由中科院数据与通信保护研究教育中心设计,其核心为ZUC算法。ZUC算法作为一种流式加密算法,根据系统输入的参数生成128 bit初始化key和128 bit初始化iv,然后进入工作状态,最后在密匙流输出阶段每次运算输出32bit密匙,用于加密/解密消息。

1.2 ZUC算法简介

核心ZUC算法在逻辑上分为3层:线性反馈移位寄存器(LFSR)、比特重组(BR)和非线性函数F。ZUC算法执行时分为初始化状态、工作状态和密匙流输出状态[4],其中层一和层三在不同模工作模式下,计算流程上存在区别。

1)初始化状态

在输入初始化序列K、IV以后,将r1、r2置0,然后执行下面操作32次:

①Bitreorganization(); //比特重组

②W=F(X0,X1,X2); //非线性F函数

③LFSRWithInitialisationMode(w>>1).//线性反馈移位工作单元

2)工作阶段

仅执行下面的操作一次,不产生W,也不产生Z:

①Bitreorganization();

②F(X0,X1,X2);

③LFSRWithWorkMode().

3)密匙流输出阶段

每次执行下面的迭代运算,然后输出32 bit的Z

①Bitreorganization();

②Z=F(X0,X1,X2)⊕X3;

③LFSRWithWorkMode().

2 ZUC算法的FPGA实现

ZUC加密算法中核心功能在于线性移位单元 (LFSR)中s16状态的计算块以及非线性函数F中S盒运算,而比特重组的功能仅是从线性移位单元中提取s0、s2、s5、s7、s9、s11、s14、s15若干比特组成4个32bit的数X0、X1、X2、X3用于非线性函数F和密匙流的计算。在设计中,将层一和层二合并,扁平化设计。

2.1 线性移位单元

ZUC算法第一层线性反馈移位单元(LFSR)中,核心功能是计算。线性移位单元工作在初始化模式和非初始化模式时,关键区别在与的计算方式不同:

比较公式(1)与公式(3),可以发现:线性移位反馈单元(LFSR)在初始状态计算s16时,需要加上u,工作状态则不需要加上u。因此,在工作状态时,将公式(1)中的u置为0,即可计算工作状态时的s16。

[1]中说明:a+b mod GF(231-1),计算规则如下

1)计算v=a+b;

2)如果进位位为1,则令v=v+1。

这里将公式(1)与公式(2)合并简化,有:

同时调用Xilinx加法IP core生成一个38bit无符号的累加器,通过 6次加法运算,得到 215s15、217s13、221s10、28s0、u的和sum,然后将sum与sum的高6 bit再次相加,取低位的31 bit执行公式(4),再做判断即可得到s16。根据这种方式,避免了每次执行加法后要判断最高位的进为位是否为1。同时,若按照参考文献[1]中提供运算方式,则需要进行5次进位判断运算和12次加法运算,这里仅用7次加法运算即可完成。

2.2 非线性函数F

在完成线性移位操作以后,ZUC算法设计了基于查表方式的非线性函数F,用于破坏数据之间的线性关系,增强加密算法的破解难度,其具体计算步骤如下:

其中L1、L2同为一个32bit到32bit的线性运算:

L1(X)=X⊕(X<<2)⊕(X<<10)⊕(X<<18)⊕(X<<24)

L2(X)=X⊕(X<<8)⊕(X<<14)⊕(X<<22)⊕(X<<30)

F函数中通过S盒操作破坏比特之间的线性关系。32*32的S盒运算由4个并列的8乘8的S盒组成:S=(S0,S1,S2, S3),其中S0=S2,S1=S3。在FPGA处理能力已经满足系统要求还有余量时,从资源优化的角度考虑设计,定义2个深度256,宽度为8bit的双端口ROM,通过时分复用的方式在2个时钟周期内完成R1、R2查找,节约了片上资源[5]。

3 结果分析

在对算法系统功能明确划分以后,按照模块化开发的方法,开始对每个模块进行详细设计。在Modelsim 10.0c下仿真,输入参考文献[6]中的Test set4,在经过初始化状态、工作状态,最后在密匙流输出状态观察加密处理器的输出结果如图1所示,其中pid_k_din、pid_iv_din为输入的初始密匙,pod_key_dout为输出的密匙,pod_key_ready高指示密匙输出有效:

图1 加密算法工作模式仿真图Fig.1 The simulation of encryption algorithm in working mode

当FPGA系统时钟为312.50 MHz时,在输入初始化参数以后,ZUC加密算法经过99个时钟周期完成初始化,在工作模式下每3个时钟周期输出一个32 bit秘钥,此时系统吞吐量为:156.25*32*0.5=2.5 G/s。与中科院数据与通信保护研究教育中心提供的参考数据[6]作对比,对比结果如表1所示。

The EEA/EIA in PDCP im p lement on FPGA

WU Yan-bei1,2,ZHU Yu-xia1,2,CHEN Yin-feng2
(1.Wuhan Research Institute of Post and Telecommunication,Wuhan 430074,China; 2.Beijing Northern FiberHome Technologies Co.,Ltd,Beijing 100085,China)

With the development of LTE,the throughput of PDCP is increasing more and more,especially the EEA/EIA can't finish by software on CPU in time.After analyzing the 128-EEA3/128-EIA3[1]method,this paper put out a way to accelerate the processing of PDCP based on FPGA,after coding、modeling and testing which will be used in the 4G base station.

PDCP;FPGA;EEA;EIA

TN929.5

A

1674-6236(2015)07-0096-02

2014-07-27 稿件编号:201407210

吴彦北(1989—),男,湖北武汉人,硕士。研究方向:信号与信息处理及可编程片上系统(SOPC)。

猜你喜欢
加密算法移位比特
MDT诊疗模式在颞下颌关节盘不可复性盘前移位中的治疗效果
再生核移位勒让德基函数法求解分数阶微分方程
大型总段船坞建造、移位、定位工艺技术
比特币还能投资吗
比特币分裂
微小移位的B型股骨假体周围骨折的保守治疗
比特币一年涨135%重回5530元
HES:一种更小公钥的同态加密算法
基于小波变换和混沌映射的图像加密算法
神秘的比特币