logo资料库

论文研究-GCM算法的FPGA设计与实现 .pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
中国科技论文在线 http://www.paper.edu.cn GCM 算法的 FPGA 设计与实现 张瑶,寿国础** (北京邮电大学信息与通信工程学院,北京 100876) 摘要:GCM(伽罗华域/计数器模式)主要由工作在计数器模式下的分组密码和在伽罗华域 GF(2^128)上的哈希运算组成。本文提出了一种基于 FPGA 的低空间复杂度的 GCM 设计与实 现,实现的 GCM 资源消耗低并且能适用于面向大量应用的高速的网络中。本文开发了一款 FPGA 平台----FPGAnic,在这款平台上实现了本文提出的低复杂度的 GCM 设计,能对网络数 据帧进行加密与认证。在此平台上,加密认证与解密认证能同时进行,并且其工作性能可以 达到线路的最大速率。另外,本文提出了一种低开销的帧加密认证的方案。在 FPGAnic 平台 上实现的 GCM 在千兆网络中进行了测试,在没有丢包与误包的情况下,结果显示 GCM 输出的 最大速率能达到线路的最大速率,表明实现的低复杂度的 GCM 能实际的应用于高速的网络 中。 关键词:FPGA;GCM;低复杂度;实现;GF(2^128) 中图分类号:TN918.91 FPGA Design and Implementation of GCM Algorithm (Information and Communication Engineering School, Beijing University of Posts and ZHANG Yao, SHOU Guochu Telecommunications, Beijing 100876) Abstract: GCM (The Galois/Counter Mode) is mainly composed of block cipher working on CTR mode and a hash function over Galois fields GF(2^128). This paper presents a FPGA-based low space complexity GCM design and implementation which has low resource consumption and can be used in high-speed networks. An FPGA development platform----FPGAnic is developed. On this platform, high-speed network authenticated encryption applications is achieved based on this low space complexity GCM. Authenticated encryption and decryption can work simultaneously on a single platform, and the performance can achieve the line rate of the high-speed networks. Besides, a frame authenticated encryption method with low overhead is proposed. In the FPGAnic platform, the implementation of GCM is tested in the gigabit network, in the case of no packet loss and error, the results show that the output throughput of the GCM can reach the maximum line rate, and the low-complexity GCM implementation can be applied to high-speed network environment. Keywords: FPGA; GCM; low complexity; implementation; GF(2^128) 5 10 15 20 25 30 35 0 引言 40 GCM[1][2]是一种使用分组密码进行加密并在伽罗华域(GF(2^128))上计算认证标签 的加密认证算法。它工作在计数器模式(CTR),能很好的抵抗位翻转攻击,并能为数据进 行认证。GCM 算法有两个重要的部分:一个用于数据加密的 AES,另一个用于计算认证标 签的伽罗华域乘法器。AES 实现有流水线式[3][4]与迭代式两种;对于在 GF(2^128)乘法器 实现,Arash 使用矩阵的方法[5]优化了 Mastrovito 乘法器[6],Karatsuba 提出了一种 K 算法能 有效降低 Mastrovito 乘法器[7],降维方法是对 K 算法的一种扩展,相比于 Mastrovito 乘法器, 它能有效的降低乘法器实现的空间复杂度[8][9],大量减少资源的使用量。有一些的基于 ASIC 的速率优化的 GCM 硬件实现结构已使其速率达到了 15Gbps[10]。在文献[11]中,有将 GCM 在 2Gbps 光纤通道中实现了数据的加解密认证,但在[11]中,其内部处理的加密位宽是 64 作者简介:张瑶,(1987-),男,北京邮电大学信息与通信工程学院研究生,主要研究方向:光与无线接 入,网络安全。 通信联系人:寿国础,(1965-),男,教授,主要研究方向:通信网络与测试技术. E-mail: gcshou@bupt.edu.cn - 1 -
45 50 55 60 65 70 中国科技论文在线 http://www.paper.edu.cn 位,认证的位宽是 128×64 位,其密文空间的大小与认证强度不能保证其安全性。本文在 FPGA 平台 FPGAnic 上实现了一种低复杂度的 GCM 设计方法。通过在实际的千兆网络中进 行的测试,结果表明,该实现能很好的用于高速的网络中对高速网络数据帧进行加密与认证, 当光纤网络中的业务数据繁忙时,实现的 GCM 能高效的对网络帧进行处理,并且对数据帧 进行处理后的输出的数据流量能达到网络的最高流量。低复杂度 GCM 内部的数据处理位宽 是 128 位,其安全性与资源消耗都要优于在文献[11]中实现的 GCM 算法,适合用于高速的 面向大量应用的高速网络。 本文提出了一种能应用于高速网络的低复杂度 GCM 实现方案,该方案在 FPGA 平台上 进行了物理实现。本文还展示了一款新型的 FPGA 平台 FPGAnic 用于承载低复杂度的 GCM 功能。在此平台上,加密认证与解密认证能同时并独立的工作,密钥可支持 128 位,192 位 和 256 位。基于此平台,将低复杂度 GCM 在实际的千兆网络中进行了测试,结果表明,GCM 输出最大流量可达到线路最大速率,加密后的帧间间隔能达到千兆以太网的最小帧间间隔 96ns。 本文结构如下:第一章描述了 GCM 算法。第二章首先提出了基于 FPGA 的低空间复杂 度 GCM 的结构,结构内 AES 采用了迭代式结构,哈希乘法器则采用了降维方法[8][9]实现, 在减少了资源使用的前提下,有效的提高了性能。然后提出了一种帧加密认证的方案,最后 对新型 FPGA 平台 FPGAnic 进行了介绍。在第三章中,通过 FPGAnic 平台对实现的 GCM 在千兆网络中进行了实际的测试并得出了测试结果。第四章总结了低复杂度 GCM 实现方案。 1 GCM 算法 GCM 算法是一种在 GF(2^128)域上提供加密认证的算法,它通过分组加密算法 AES 以 CTR 的模式将明文按 128 位为分组单位进行加密为密文,然后通过二元有限域的乘法, 将一帧的数据与散列密钥 H 进行连续的相乘,最后得出一个固定长度的消息摘要,这个长 度一般选取为 128 位。然后将这个消息摘要附加在密文的后面作为认证标签。GCM 算法数 学描述如式 2-1 与式 2-2: 0 1 if le n ( = IV 9 6 ) ) o th e rw is e n 1, ..., )) − n 1 , { } = IV , i 1, ..., ) fo r = E K Y ( i , n H Y 0 Y i C C i * n ) 3 1 1 2 8 , 0 E K ( = IV ⎧ ⎪= ⎨ G H A S H ( ⎪⎩ in c r ( P ⊕ i P * n Y i 1 − E K Y ( i M S B ( u H ) fo r = = = ⊕ , (2-1) 在式 2-1 中,GHASH 函数定义如式 2-2: G H A S H H A C X = ( ) , , m n + + 1 X i = ⎧ ⎪ ⎪ ⎪⎪ ⎨ ⎪ ⎪ ⎪ ⎪⎩ i 1 − m ⋅ * m ) i A ⊕ ⊕ ⊕ i 0 fo r i X ( fo r X i fo r 0 ( i H X fo r ( X i ( fo r i A X fo r ( ⋅ 0 1 2 8 H A ( C ) ⋅ i m − C ( * ⊕ n (le n ( )) ⋅ C le n ( H ))) 1 − ⊕ m n )) H H 1 2 8 ) ⋅ − − 1 − i − 1 + m n + v u = = = = = = 0 1, ..., m m m m + + + m − 1 1, ..., n n + 1 m + n − 1 (2-2) 在式 2-2 中,m 表示附加认证数据的分组个数,n 表示数据帧的分组个数。 输入的数据帧将会以 128 位长度为单位进行分组,当最后一个分组不是 128 位时,将会 添加 0 使最后一个分组达到 128 位。每一个分组将通过 AES 的读数器模式加密为密文,密 文将与散列密钥进行循环相乘,当最后一个分组与散列密钥相乘完毕后,附加认证数据 A 75 - 2 -
中国科技论文在线 http://www.paper.edu.cn 与密文 C 的长度信息会与相乘的结果进行异或,最终得到 128 位的认证标签。 2 低复杂度 GCM 的硬件实现 GCM 有两个关键部分:AES 与乘法器。为了使资源消耗尽可能低,我们采用了迭代的 方法来实现 AES,对于乘法器的实现,则采用降维方法[8][9]。低复杂度的 GCM 内部处理位 宽是 128 位,内部处理频率是 125MHz,这也是千兆网络中的时钟频率。基于这种低复杂度 的 GCM 实现方案,实现的资源消耗比一般的 GCM 实现要低,并且性能也能达到高速应用 的要求。 2.1 GCM 的设计与实现 在 GCM 中,其内部的数据处理位宽是 128 位,在数据处理之前,待处理的数据帧将会 被储存并划分成 128 位的分组,然后每一个分组将会通过 AES 的计数器模式进行加密并生 成密文。在认证过程中,每个分组的密文将会与附加认证数据 ADD 与散列密钥通过 GHASH 函数进行计算,之后,产生一个 128 位的认证标签。一般来说,数据帧的长度不是 128 的整 数倍。在这样的情况下,最后一个分组的密文采用如下的方法产生:最后一个计数器数的值 进行 AES 加密后将截取与最后一个明文分组相同的长度再与明文分组进行异或从而得到其 密文。与密文长度不同的是,不管数据帧有多长,认证标签的长度一直都是 128 位。认证标 签是密文的一个消息摘要,它具有很强的抗碰撞性与不可逆性。它由密文 C,附加认证数据 ADD 与散列密钥通过 GHASH 一起产生。 GCM 中的两个核心部分是 AES 与伽罗华域乘法器。AES 实现方法采用迭代的方案,其 硬件结构如图 1a 所示。 Key Plain text Initial key AddRoundkey SubBytes ShiftRows MixColumns Key expansion AddRoundkey Round 1~9 Round 10 128bits A 128bits B 128×8 FIFO l o r t n o C [120:127] [112:119] ... [8:15] [0:7] 8bits 128bits Mult (128×8) 图 1a AES 迭代式实现结构 1b 基于降维算法的低空间复杂度乘法器 Cipher text Out C AES 包括两个主要部分,一个是加密轮函数,另一个是密钥扩展。对于 128 位密钥, 加密轮函数有 10 轮,对于 192 位密钥,加密轮函数有 12 轮,对于 256 密钥,加密轮函数有 14 轮。每一个轮函数由 4 个子函数组成,分别是 S 盒置换,行移位,列混合,密钥加,但 最后一个轮函数没有列混合。AES 中 S 盒采用 FPGA 块 RAM 储存器模式实现的。图 1a 表 示了采用一个循环结构来实现 10 个轮函数的迭代式结构。乘法模块的实现是采用降维的方 法,将 128bits×128bits 分为 16 个 128bits×8bits 的小乘法器,并使用这种循环迭代的结构 来实现,大大的减少了资源的消耗,每一个周期将计算一个 128bits×8bits,加上输出需要 一个周期,完全完成 128bits×128bits 的乘法需要 17 周期,也就是说计算完一个分组的长度 - 3 - 80 85 90 95 100 105
中国科技论文在线 的时间是 17 个周期。其硬件结构如图 1b 所示。 http://www.paper.edu.cn 在乘法器运算期间,AES 的处理是并行的,这样采用迭代实现的 AES 与乘法器的实现 的处理时序非常吻合,因为下一个分组进入到乘法器时间有 17 周期,对于 AES 的 256 位密 钥,采用迭代式的实现一共需要 16 个周期,包括 14 个周期用于 14 个轮函数计算,(其中 每一轮包括四个子过程: 非线性字节替换,行循环左移,使用常量多项式的乘法,轮密钥异 或),1 个周期用于初始化密钥扩展,1 个周期用于输出),加上计数器值的加密结果与明 文进行异或需要一个周期,刚好为 17 个周期;而对于 AES 的 128 位密钥的加密,采用迭代 式的实现一共需要 13 个周期,包括 10 个周期用于 10 轮函数计算,1 个周期用于初始化密 钥扩展,1 个周期用于输出;对于 AES 的 192 位密钥的加密,则需要 15 个周期,因为 AES192 位密钥只需要 12 轮函数。低复杂度的 GCM 结构如图 2 与图 3 所示: 110 115 Plain frame RX FIFO1 SP Increasing value Incr Iterative  AES Secured frame TX ack PS FIFO2 8-bit path 128-bit path Feedback signal Control signal P C XOR lower-dimensional multiplier C T GCM authenticated encryption 图 2 低复杂度加密认证 GCM 结构设计 120 125 130 GCM 设计主要包括 6 个模块,RX,Incr,Iterative AES,XOR, multiplier,TX.对网络帧进行 加密认证时,先接收完一帧数据,并对数据进行加密,计算认证标签,再将此帧数据发送。 在 GCM 进行加密认证时,RX 模块在开始接收数据时,会由控制信号来开启 Incr 模块, Incr 模块将全零数据输出,AES 模块计算 H 以后,传递给 XOR 模块,开启 XOR 模块,XOR 模块将 H 透明传输给 multiplier 模块,并使反馈信号产生一个高电平,读取一次 FIFO1,Incr, XOR 都分别接受到 Y0,XOR 模块将 Y0 存储, Incr 模块将 Y0 传递给 AES 模块,AES 模块计算完 E(K,Y0),传递给 XOR 模块,并触发 Incr 模块将 Y0 自增,XOR 模块将 E(K,Y0) 透明传输 multiplier 模块,在下下一个周期将 Y0 也透明传输给 multiplier 模块,并触发反馈 信号一个高电平,一个周期以后,RX_FIFO 模块输出 Y1,Incr 模块根据接收到的 rx_xor_rdy 信号输出 Y0 的自增值,同时 XOR 模块接收到 Y1,等待 AES 模块的输出,完成异或运算 后,输出,直到完成一帧的异或加密。multiplier 模块对前面接收到的 Y0,C1,…..,一方 面透明传输给 FIFO2 模块,另一方面计算认证标签。最后在完成一帧的计算后,把认证标 签也传递给 FIFO2 模块。 - 4 -
中国科技论文在线 http://www.paper.edu.cn Secured frame RX FIFO1 Increasing value Incr Iterative  AES SP C lower-dimensional multiplier XOR Plain frame TX PS FIFO2 ack P Compare Fail or pass T` T GCM authenticated decryption 图 3 低复杂度解密认证 GCM 结构设计 8-bit path 128-bit path Feedback signal Control signal 对于 GCM 的解密认证,如图 3,它将由密文与附加认证数据生成一个新的认证标签, 将它与原来的认证标签进行比较,如果两个标签不一致,则 compare 模块将控制 FIFO2 模 块使其数据清空,不输出数据,如果标签一致,则控制 FIFO2 模块继续输出数据。 输入与输出数据长度为 8 位,SP 与 PS 模块用于将数据从 8 位转化为 128 位或将 128 位转化为 8 位,以适应实现的光纤链路数据传输。系统的工作频率是 125MHz,这也是千兆 网络的线路时钟频率。 2.2 帧加密认证方案 对于网络数据帧,加密认证方案如图 4 所示。 Preamble SOF Header Payload FCS 135 140 145 150 Key AAD IV plaintext GCM ciphertext Preamble SOF Header Payload 图 4 GCM 网络帧加密认证方案 TAG FCS* 如图 4 所示,对于每一个数据帧,GCM 一共有四个输入,其中 Key 与 AAD 是要秘密 保存的,IV 主要由网络帧的 header 来充当,并且透明的作为 GCM 输出帧的 Header,payload 作为明文,GCM 产生的密文作为输出帧的净荷,起到加密效果,产生的 TAG 附加在密文 后面,最后的 FCS 字段中的 CRC 重新对新产生的帧从 Header 到 TAG 进行计算得到一个新 的帧,从加密方案可以看出,每一个加密认证后的帧多出了一个 128 比特 TAG 的开销,这 比在文献[11]中提出到两个方案的开销都要小,而且每一帧的 IV 都不同。 2.3 硬件平台 为了在实际的网络中验证低复杂度 GCM,我们开发了一款基于 FPGA 的平台―― 155 FPGAnic,如图 5。 - 5 -
中国科技论文在线 http://www.paper.edu.cn 图 5 FPGAnic 平台 160 165 170 FPGAnic 开发板的核心芯片是 Virtex-5 LXT XC5VLX110T-FFG11361C,包含丰富的串 行与并行接口,其中串行接口包括 8 通道 PCIe 插卡连接器,2 个 SFP 收发器模块端口,2 个 G_Ethernet 千兆网端口,1 个串行 ATA 磁盘驱动器接口连接器,4 对用于实现板外 GTP 收发器连接功能的 SMA 端口,其中 2 对 SMA RX,2 对 SMA TX,1 个 USB 2.0 端口; 并行接口包括两个 samtec 高速扩展插座,每个插座提供 120 个并行 IO。除此之处,还具有 200 引脚 1.8V SODIMM 插座,带有 256MB(32M x 64 位)DDR2 SDRAM,并能为千兆 以太网的应用提供精确的时钟频率。在进行板卡级验证时,我们的物理接口选用了 2 个 SFP 光纤接口,其工作在 1Gbps 的速度上。 我们采用了 TEMAC 的 IPcore 来实现千兆以太网的物理接口,工作模式是 1000base-X, MAC 层与物理层之间的接口采用了 SGMII(Serial Gigabit Media Independent Interface),它 将并行的接口中的数据转化为串行的格式,并且可以减少 I/O 管脚数目,通过这种接口,它 将以太网的 MAC 层与一个高速的串行以发器连接,其工作的速率为 1.25Gbps。 3 结果与验证 3.1 资源使用 我 们 在 Xilinx ISE 中 采 用 verilog HDL 实 现 了 低 复 杂 度 GCM , 目 标 芯 片 为 175 xc5vlx110t-1ff1136。模式使用结果如表 1 所示。 - 6 - 表 1 在 Virtex xc5vlx110t 中 GCM 资源使用情况 Module Processing data width AES counter mode Multiplier GCM core 128bits 128×128bits 128bit Slice Block ROM 1917 795 4454 20 0 20
中国科技论文在线 3.2 网络测试与验证分析 http://www.paper.edu.cn 180 在 FPGAnic 平台上,对实现的 GCM 在千兆网络环境下进行了测试。网络测试仪采用 IXIA400T,采用的 SFP 波长工作在 1310nm 波段,在没有任何丢包与误包的情况下(每一 个帧的测试时间为 30 分钟),得出了高速网络中,GCM 最大输入流量与帧长的关系,如图 6 所示。 185 190 195 200 图 6 在没有丢包与误包情况下中千兆网络中低复杂度 GCM 性能 我们对每一种帧长从 64 字节到 1518 字节进行了测试,在没有任何丢包与误码的情况下 得出了如图 6 所示的 GCM 性能曲线。 由于对数据帧进行加密认证之后,会有认证开销,并且每一帧后都会附加一个 128 比特 (16 字节)的认证标签,这样每一帧的开销是 128 比特。对于不同长度的帧,因为认证标 签都是 16 字节,所以其开销比例将不一样。当帧长小时,开销比例相对大些,输入数据流 吐吞量将会有所下降。加密认证后吞吐量可以由下式得到: Throughout/L×100%=(S+P+FI)/(S+P+FI+ge) (3-1) 其中 L 是线路速率,S 是帧的长度,P 是帧的前序部分长度(P=8 字节),FI 是最小 帧间间隔,由于千兆以太网最小帧间间隔为 96ns,其时钟频率为 125MHz,周期为 8ns,一 个周期传送一字节数据,96ns 相当于 96/8=12 字节,因此 FI=12),ge 为认证标签的长度, 这里 ge=16 字节。 因此,从式 3-1 得出,当帧长为 64 字节时,将 S=64 代入 3-1 式,吞吐量与线路速率比 为 84%;当帧长为 1518 字节时,吞吐量与线路速率比为 99%。这与图 6 所示的测试曲线吻 合,说明实现的 GCM 输出的数据流能达到线路速率。 从另一个角度来看,输入的明文帧帧长为 64 字节时,当输入流量为 840Mbps 时,其帧 间间隔是 224ns,经过 GCM 加密认证后的得到的数据帧每一帧的帧长都会增加 16 字节的认 证标签,千兆以太网的时钟频率为 125MHz,周期为 8ns,16 字节认证标签所占用时间为 - 7 -
中国科技论文在线 http://www.paper.edu.cn 128ns,即经过 GCM 算法处理后的输出的帧间隔已经减小为 224ns-128ns=96ns,达到帧间间 隔的最小值,说明输出流量为线路速率。因此,由于每处理一帧都要在帧结尾处附加 16 字 节认证的数据,因此,输入的帧间隔最小值为 224ns,如果输入帧的帧间隔过小,会导致由 于附加的 16 字节数据而使输出数据帧的帧间间隔小于 96ns,导致丢包误包。 对于其它的 帧长,从图 6 中得出,在没有丢包的情况下,其输出帧的间间隔都能达到 96ns,因此,GCM 输出的数据流为 1000Mbps,达到了线路速率。说明实现的 GCM 完全可以应用于千兆以太 网环境中。 4 结论 本文提出了低复杂度 GCM 算法并在 FPGA 平台上进行了实现,实现的 GCM 能同时进 行加密认证与解密认证。基于 FPGAnic 平台,通过实际的千兆以太网数据流对低复杂度 GCM 进行了测试与分析,结果表明实现的 GCM 能应用于高速的网络中,并且其资源消耗低。另 外,本文还提出了一种网络数据帧加密认证方案,相比于文献 11,此方案具有更低的开销。 [参考文献] (References) [1] D.McGrew and J.Viega.The Galois/Counter Mode of Operation (GCM)[S].Submission to NIST Modes of Operation Process, January 15, 2004. [2] D. McGrew and J. Viega.The Galois/Counter Mode of Operation (GCM)[S].Updated submission to NIST Modes of Operation Process, May 31, 2005. [3] Shanxin Qu Guochu Shou Yihong Hu Zhigang Guo Zongjue Qian. High Throughput,Pipelined Implementation of AES on FPGA[A]. International Symposium on Information Engineering and Electronic Commerce 2009[C].IEEE Computer Society:Ternopil, Ukraine,2009.542~545. [4] Dong Chen,Guochu Shou,Yihong Hu,Zhigang Guo.Efficient Architecture and Implementations of AES[J].2010 3rd International Conference on Advanced Computer Theory and Engineering 2010,2010,6:295~298. [5] Arash Reyhani-Masoleh,M. Anwar Hasan.Low Complexity Bit Parallel Architecture for Polynomial Basis Multiplication over GF (2m)[J]. IEEE Transaction on Computers,2004,53(8):945~959. [6] E.D.Mastrovito.VLSI designs for multiplication over finite fields GF(2m).Proc. 6th International Conference Error- Correcting Codes (AAECC-6)[C],Rome,1988.297~309. [7] M.Machhout,M.Zeghid.Efficient Large Numbers Karatsuba-Offman Multiplier Designs for Embedded System[Z].International Journal of Electronic.Circuits and Systems, 2009. [8] G.Shou,Z.Mao,Y.Hu, Z.Guo and Z.Qian, Low complexity architecture of bit parallel multipliers for GF (2^m)[J].Electronics Letters, 2010,46 (19):1326~1327. [9] Z.Mao, G.Shou,Y.Hu and Z.Guo.Design of multipliers for GF(2^m)[J].Electronics Letters, 2010 46(6):419~420. [10] G.Zhou,H.Michalik,and L.Hinsenkamp.Efcient and highthroughput implementations of AES-GCM on FPGAs[A].Proceedings of the Int. Conf.on Field-Programmable Technology[C],Kitakyushu:2007.185~192. [11] L.Henzen,F.Carbognani,N.Felber,and W.Fichtner.FPGA Implementation of a 2G Fibre Channel Link Encryptor with Authenticated Encryption Mode GCM[A].International Symposium on System-on-Chip 2008[C].Tampere, Finland:2008.1~4 on Applied Algebra, Algebraic Algorithms, and 205 210 215 220 225 230 235 240 - 8 -
分享到:
收藏