吴彦北,朱宇霞,陈印峰
(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 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().
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]。
在对算法系统功能明确划分以后,按照模块化开发的方法,开始对每个模块进行详细设计。在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)。