摘要
本文介绍了GPON中嵌入AES算法的过程以及AES加解密算法。对AES计数器模式在GPON中的FPGA实现给出了优化的解决方案,详细介绍了一种轮间流水和轮内流水复用,控制简单的AES的实现方法,并给出了关键时序图和综合结果。
Abstract
This paper describes the procedure of AES encryption in GPON system and the detail method of AES encryption. We come up with a FPGA implementation of AES CTR mode in GPON system. Particularly introduce a more efficiency and more controllable AES implementation for high speed network. Finally provide key timing figure and synthesis results.
关键词 Key Words
GPON Gigabit-capable Passive Optical Networks
AES Advanced Encryption Standard
OLT Optical Line Terminal
ONU Optical Network Unit
1. 概述
随着骨干网的高速发展,接入网逐渐成为了信息高速公路的瓶颈。GPON是基于ITU-T G.984.x[1]标准的最新一代宽带无源光网络接入技术。它能提供前所未有的高比特速率(最高可达2.488Gbps)、更高的QOS、以原有数据格式传送、具有极高的效率等优势,越来越被业界认可,将成为FTTH的最主要的接入形式。
2. GPON-AES算法
GPON系统是一个点到多点的系统,对于系统中的上行数据,ONU到OLT为单播方式传输,具有良好的方向性,较难攻击。下行数据为广播式传输,用户在物理上可以接收到OLT发给所有用户的信息,所以恶意用户可以根据接受到的信息,冒充其他ONU用户,从而窃听、盗取他人信息。在GPON启动后,OLT和ONU应通过OMCI通道来协商加密算法。目前GPON仅规定支持AES[2]加密算法。
2.1 AES算法
AES算法是美国标准技术研究所(NIST)于2001年11月正式发布的,它是一种分组加密算法,处理的最小单元是一个分组,即把明文或密文分成固定长度的分组,进而进行加密或解密处理。GPON中使用的就是AES-128,分组大小为128比特,支持的密钥长度也是128比特。
AES算法定义了加密过程和解密过程,对应的流程如图1所示。加密过程和解密过程都是一个周期迭代的过程,对于AES-128迭代次数为10。由于采用了迭代过程,而且每次迭代所需要的密钥也不同,AES算法定义了密钥扩展过程。密钥扩展过程也是一个迭代过程,通过10个周期产生10个不同的密钥供加密和解密使用。
\
图1 AES的加密框图
由于介绍AES原理的文章很多,本文就不展开介绍AES的各个部分,并且重点介绍加密过程。
2.2 GPON中AES加密过程
GPON采用的是适合高速网络的计数器模式,通过这种方式可以很容易的产生随机密码流,更加难以被破译,本文将主要讨论计数器工作模式下AES-128算法的实现。
图2是计数器模式下的AES算法的实现步骤。其中 是密钥, 是计数器值; 是加密前的明文; 是加密后的密文,它们都是128bit。值得注意的是,计数器模式下,进行AES加密的并不是明文,而是计数器的值,密文由计数器加密结果与明文相异或产生。
\
图2计数器模式下的AES算法计算步骤
GPON中,加密计数器与整个GTC下行帧有关,而AES密码分组仅与数据的有效载荷有关。这两个序列的关系如图3所示,其中H表示GEM帧头,P表示GEM帧静荷。当一个数据包在OLT段发送或被ONU接受,包头的第一个字节位置将被记录,该字节位置的加密计数器的值将作为此帧静荷的密码分组计数器的起始值。对于接下来的密码分组,密码分组计数器将逐一递增。这种排列保证了OLT和ONU计数器值的一致性。
\
图3加密计数器与加密块的关系图
3. GPON-AES的具体实现
由图3可知,由于GEM帧的分组的最后一块的长度会在1字节-16字节之间。对于大多数情况的16字节分组块,要求AES在16个字节的传输时间内给出加密结果,而最严重的情况是分组块只有一个字节加上后面跟着的5字节GEM帧头,要求AES在6个字节的传输时间内给出加密结果。简言之,GPON-AES系统对AES的加密瞬时带宽的要求不是固定的。
3.1. 整体优化思路
OLT的最大下行支持2.488G的数据带宽,考虑到FPGA设计的安全性,我们将FPGA系统工作在155. 52MHz的时钟上。这样整个系统的处理数据位宽为16bit,每个时钟发送2个字节的数据,16字节的分组用8个时钟就可以发送完。对于GEM分组16字节长度净荷的情况,其对AES的加密带宽要求是2.488G。最严重的情况(最后一个分组的长度是1个字节,加上后面得5字节GEM帧头),对AES的加密带宽要求约是6.635G。如果将AES硬件模块的处理带宽设计大于6.635G,会满足系统的各种情况,但整个电路资源消耗也会非常庞大。
我们实际应用中,GPON走的是以太网业务。以65字节的以太网帧帧长(以太网的最小帧长为64字节)为例进行分析,总共要进行4次16字节的分组和一次1字节的分组。这样带宽的需求为: 。而硬件设计AES的处理带宽为W,需要满足公式: ,即 ;因此在不影响电路的性能基础上,考虑资源优先,我们将AES的处理带宽设计为4G左右,通过在AES的前后加上缓存Ram来平滑瞬时带宽的影响。
\
图4 GPON-AES的硬件结构框图
如图4所示,AES的加密带宽为4G,则在155.52MHz的时钟上,每隔5个时钟输入一次AES加密。在GPON中,最短的密码块分组是1个字节,那么加上5字节的GEM帧头,总共6个字节,下行3个时钟就能传送完,因此Cntfifo缓存加密块的密钥和计数器信息。AES会将加密结果128bit花5个时钟写入ShaperFifo中,而Datafifo的数据位宽是16bit,因此Shaperfifo设计为两级fifo,其中前一级是32位宽,后一级的写端口是8bit、16bit、32bit的可变位宽,读端口是8bit、16bit可变位宽fifo。而Datafifo只是起到一个延时的作用。而Cntfifo和Shaperfifo互相作用,用来平滑瞬时带宽。调整这三个fifo的深度,则会改变电路的平滑瞬时加密带宽的能力。
3.2. AES优化实现
传统实现方法包括基本迭代方法和流水线方法。基本迭代方法10轮函数共用同一块电路,消耗的资源最小,但AES加密至少要耗时10个时钟节拍,并且每次加密完成之前,下一组的明文无法进入加密电路。流水线方法又分为轮内流水和轮间流水,而轮内流水的增加虽然可以提高整个电路的工作频率,也导致每轮计算对时钟节拍的需求增加。因此,加密带宽也并没有大幅度提高。轮间流水级别的增加,会提高吞吐率,相应的会直接导致了电路资源的成倍增加。
根据GPON-AES的电路需求,我们使用了一个轮间、轮内流水复用的方法。这种方法结合了轮间流水和轮内流水两种方法的优点,整个电路控制方便,电路的使用效率接近100%。首先一次AES加密,要经过10轮,每一轮的处理又包括查表和一大堆的组合逻辑,我们将每一轮进行轮内二级流水设计,并且每一轮都复用这个二级流水电路,这样整个AES加密会消耗20个时钟节拍,电路会安全的工作在155MHz的时钟上。显然这种方法达不到加密带宽支持4G的设计目标。我们将10轮AES进行两级轮间流水设计,前5轮共用一块二级流水电路,后5轮共用另一块二级流水电路。这样AES加密每隔10个时钟节拍,会输出加密结果,可支持2G的处理带宽,还是达不到系统的要求。考虑到每一轮使用两个时钟节拍,一个时钟节拍分配给查找表,一个时钟节拍分配给组合逻辑。查找电路和组合电路的利用率都是50%。因此每隔5个时钟节拍,新的AES加密启动进入电路,它们占用另外的时钟进行查表和组合电路的执行。这样AES经过两次轮间流水和两次轮内,整个系统工作在155MHz,每隔5个时钟节拍就可以输出结果,整个电路支持4G的处理带宽。
\
图5两级流水的轮操作电路结构
\
图6 AES的五轮操作关键时序图
图5是一块两级轮内流水的电路结构,对应的时序图为图6。具体实现时,我们使用两块这样的电路,前一块电路的结果直接输出给后一块电路的输入端。这种方法充分利用流水和复用,时序紧凑,控制简单,电路得到百分之百的利用。
4. 综合结果比较
我们使用优化方案对AES加密电路进行综合,AES中的S-box查找表使用LUT搭建。使用Xillinx公司的Virtex5的器件,时钟可以跑到为161MHz,综合结果如下:
表1与参考文献的综合结果进行比较
\
如表1,综合结果与参考文献结果进行了比较。由于Xilinx器件的更新,其Slices的单元大小也发生了变化。我们这里统一Slices的大小为包含两个LUT和两个DF。可以看出与传统方法相比,本文使用的轮内流水轮间流水复用的方法具有很高的“加密带宽资源比”。经仿真验证,此种方案完全能够达到GPON实际系统的要求。
参考书目:
[1] TIU-T Standard G.984.3[S], 2008-03
[2] FIPS Publication 197, Advanced Encryption Standard (AES) [S]
[3] K. Gaj and P. Chodowiec, “Comparison of the Hardware Performance of the AES Candidates using Reconfigurable Hardware,” The Third Advanced Encryption Standard (AES3) Candidate Conference, New York, USA, April 13-14, 2000.
[4] Shuenn-Shyang Wang, Wan-Sheng Ni. An Efficient FPGA Implementation of Advanced Encryption Standard Algorithm. Circuits and Systems, 2004. ISCAS’04. Proceedings of the 2004 International Symposium on Volume 2, 23-26 May 2004 Page(s):II-597-600 Vol.2
[5] Kimmo U. Järvinen, Matti Tommiska, Jorma Skyttä (bib), “A fully pipelined memoryless 17.8 Gbps AES-128 encryptor”, FPGA 2003, Proceedings of the ACM/SIGDA International Symposium on Field Programmable Gate Arrays, February 23-25, 2003, Monterey, CA, USA. ACM, 2003.
[6] Muhammad H.Rais and Syed M. Qasim. A Novel FPGA Implementation of AES-128 using Reduced Residue of Prime Numbers based S-Box. IJCSNS International Journal of Computer Science and Network Security, VOL.9 No.9, September 2009 |