异构紧耦合可重构密码芯片关键技术研究

2020-07-15 05:01崔广财拾以娟
计算机技术与发展 2020年7期
关键词:密钥重构分组

崔广财,拾以娟,孟 涛

(江南计算技术研究所,江苏 无锡 214000)

0 引 言

数据安全[1]在任何时候都不可或缺,如今经常出现信息泄露和网络安全事件。2013年,美国的棱镜门事件值得警醒,表明数据安全与每个人、每个企业、每个国家都息息相关;2017年,美国陆军及NSA情报平台有超过100 GB的数据暴露在可公开访问的AWS S3存储服务器上,其中包含高度敏感、机密性的国家安全数据;2018年,Facebook公司超过5 000万用户的信息泄露事件被曝光。

密码作为最重要的安全工具,在数据安全保护方面起着关键作用。

随着大数据时代以及5G时代的到来,数据呈指数级增长,海量数据的处理需要大量的计算资源,利用专用集成电路去做加速处理是一个发展趋势,对于数据密集型的密码运算,也越来越多地采用专用密码算法芯片。但专用密码算法芯片的灵活性较差,如果需要替换或升级密码算法,只能重新设计、流片,周期很长,而且风险较大。

因此,结合FPGA及可重构计算技术[2-6]的发展,很多研究致力于构建一个具有灵活性、可扩展性和高效能的可重构密码体系结构,用户根据应用需求配置可重构的计算单元以实现特定的密码算法。可重构计算单元按照粒度可分为细粒度和粗粒度可重构单元,细粒度可重构单元的重构粒度小于4比特,重构粒度超过4比特的称为粗粒度可重构单元,FPGA是一种典型的细粒度可重构器件,其重构粒度为1比特。2001年,Yukio等[7]设计的粗粒度可重构密码芯片,可动态配置子密钥,在移动通信方面具有较好的复杂性和灵活性。2004年,姜晶菲在其博士论文中提出了一种可重构密码处理框架[8](RCPF),该框架能够合理支持各种分组密码和公钥密码算法。2009年,杨晓辉等[9]提出了一种可重构分组密码处理结构(RCPA),该结构针对分组密码算法拥有较高的性能和灵活性。同年,孟涛等[10]提出了基于专用指令集处理器的可重构分簇式分组密码处理架构(RCBCP),在指令集的控制下,各种分簇结构可以被动态重构。2014年,李校南等[11]提出了基于Crossbar互连的可重构分簇式分组密码处理架构(RCCPA),同年,陈韬等[12]提出了一种基于流处理框架的可重构分簇式分组密码处理结构(S-RCCPA),该结构可通过扩展电路规模获得很好的性能收益。

为了进一步综合提高可重构密码处理架构的灵活性和处理性能,文中提出了一种由细粒度的FPGA和粗粒度的ASIC电路组成的异构紧耦合硬件架构,基于该架构不仅能够灵活实现多种密码算法,而且可以提高密码算法的处理性能。

1 可重构密码芯片架构

传统的密码算法实现方式有两种:一种是基于通用处理器芯片的,通过CPU的软件编程,可以灵活实现各种密码算法,但这种方式的处理速度慢,且占用大量的CPU计算资源;另一种是基于专用密码芯片的,通过ASIC设计定制实现所需密码算法,这种方式的处理速度快,但是由于电路结构固定,所以灵活性差。另外,从安全角度考虑,以上两种方式均存在较大的安全隐患,容易受到软件攻击和物理攻击。因此,很多研究者为了结合CPU和ASIC两种方式的优势,设计出基于CPU+ASIC的可重构密码芯片架构,其基本架构如图1所示。

可重构密码处理阵列是用于加速密码运算的可配置ASIC电路,通过CPU的专用指令进行调度和配置ASIC阵列,以完成相应的密码算法处理过程。

随着FPGA技术的快速发展,其应用领域已经遍及信号处理、网络多媒体、航天、军事和硬件加速等各个方面。FPGA为实现可重构密码芯片提供了一种相对低成本、高性能的计算平台,尤其在硬件逻辑出现错误、故障时,或者需要升级、更换硬件逻辑时,只需对FPGA芯片重新烧录配置文件。但是FPGA芯片存在大量冗余电路和功耗较高等缺点,为了结合FPGA和ASIC的优势,文中提出了基于FPGA+ASIC的异构紧耦合密码芯片架构。

图1 基于CPU+ASIC的可重构密码芯片基本架构

设计的基于FPGA+ASIC的异构紧耦合可重构密码芯片架构——RCHA(reconfigurable cipher heterogeneous architecture),包含了细粒度的FPGA IP和粗粒度的可重构密码处理阵列ASIC电路,如图2所示。FPGA IP主要用于实现数据包的解析和算法控制逻辑,可重构密码处理阵列ASIC电路主要完成相应的密码运算。

RCHA处理架构的可重构密码处理阵列由可重构模块、互连网络和配置模块组成,其中可重构模块和互连网络负责密码运算的硬件加速,配置模块从外部接收静态配置包,在芯片初始化时完成可重构模块和互连网络的参数配置。FPGA控制电路包括数据包解析模块、密钥扩展控制逻辑模块和加解密控制逻辑模块,从外部接收到数据包后,先进行数据包的解析工作,然后控制实现密钥扩展算法和加解密算法。在FPGA控制电路与ASIC可重构密码处理阵列之间,设计了专用的数据通道、配置通道和控制通道,可高效并行地完成两者之间的交互,其中数据通道用于传输需要加解密处理的数据分组,配置通道用于传输FPGA的动态配置信息,控制通道用于传输两者之间的启动、结束及握手响应等信号。

该芯片架构在算法重构方面有很强的灵活性,一方面是因为可重构模块具有较强的重构能力,能够支持较多的分组密码算法,另一方面,FPGA的冗余资源可用于实现ASIC密码处理阵列支持不了的密码运算逻辑,解决了算法层面存在的框架重构局限性问题。对于ASIC密码处理阵列的配置,采用静态配置和动态配置相结合的方式,这样可以有效降低FPGA与ASIC密码处理阵列频繁交互带来的性能损耗。完成配置后,数据包先进入FPGA,待解析处理后发给ASIC密码处理阵列,该阵列由m行n列可重构模块组成,每一行有n个可重构模块和1个互连网络,数据流在ASIC密码处理阵列中是自上而下的,通过流水线设计可实现多级流水和高吞吐率的需求。

图2 基于FPGA+ASIC的异构紧耦合可重构密码芯片架构—RCHA

2 异构紧耦合可重构密码芯片实现的关键技术

2.1 可重构密码处理阵列设计

文中通过分析常见的分组密码算法如AES、SMS4和IDEA等,归纳总结出六种常用的密码运算单元:移位、置换、查S盒、模加、模乘、有限域乘法,针对这些密码运算设计出可重构的运算单元,通过配置改变各个运算单元的操作参数,可以实现特定算法的密码运算。不同分组算法的分组位宽并非一样,有64比特、128比特、192比特和256比特的,因此,文中设计的可重构置换单元采用256比特的互连网络实现。该互连网络可以实现256比特输入与256比特输出之间的任意比特置换,综合考虑模块设计的复杂度和面积成本,该模块采用BENES网络[13]构成,其余可重构运算单元的操作粒度是32比特的,并组合成可重构模块,其结构如图3所示。

图3 可重构模块结构

图4 可重构密码处理阵列结构

在可重构模块的入口和出口都有异或电路,因为很多分组算法在进行混淆和扩散变换之前或之后,通常会和轮密钥或常数进行异或操作,同步单元主要针对Feistel结构[14]密码算法过程中分组左右两半进行不同密码运算设计,用于同步分组的输出结果。除了异或和同步单元,其他的可重构单元采用全互连的方式进行连接,即任意可重构单元的输出可以连接到其他任意可重构单元的输入。

为了实现多级流水,减少FPGA的动态配置次数,提高加解密数据的吞吐率,文中设计了一个4行8列的可重构密码处理阵列,如图4所示。

该阵列可支持最大256比特的分组,对于不同位宽分组的密码算法,可灵活设计流水线深度,以最大化可重构密码处理阵列的使用效率。

2.2 FPGA主控逻辑设计

FPGA主控逻辑主要分为数据包解析、密钥扩展控制和加解密控制三个模块,其中,数据包解析模块完成待加解密数据包的解析,从中提取初始密钥和待加解密数据,分别发给密钥扩展控制模块和加解密控制模块。密钥扩展控制模块主要通过调度和动态配置可重构密码处理阵列完成相应的密钥扩展算法,获得加解密算法所需的轮密钥,该模块可通过有限状态机实现,如图5所示。

图5 密钥扩展控制状态机

在空闲状态下,当收到初始密钥时,跳入到动态配置状态,完成可重构密码处理阵列的相应配置,然后将初始密钥发给密码处理阵列进行运算,同时进入密钥扩展运算状态,等待阵列的输出结果,当收到阵列的返回数据时,判断是否完成密钥扩展运算,若完成了则返回空闲状态,若没有则先判断是否还需要动态配置,若不需要则继续进行密钥扩展运算,否则先进行动态配置后再进行密钥扩展运算。

加解密控制模块在得到轮密钥之后,通过调度和动态配置可重构密码处理阵列完成相应的加解密算法,该模块与密钥扩展控制模块相似,依然用有限状态机实现,只是将其中的密钥扩展运算状态替换成加解密运算状态。

加解密控制模块在空闲状态下收到轮密钥后,进入动态配置状态,完成轮密钥等参数的动态配置,然后将待加解密数据发给可重构密码处理阵列,并进入加解密运算状态,等待阵列的输出结果,当收到阵列的返回数据时,判断是否完成加解密运算,若完成了则返回空闲状态,若没有则先判断是否还需要动态配置,若不需要则继续进行加解密运算,否则先进行动态配置后再进行加解密运算。

2.3 异构紧耦合的接口设计

文中设计的异构紧耦合可重构密码芯片架构的主要创新点在于将FPGA IP与ASIC电路通过逻辑信号紧耦合的方式进行连接,而不是简单地将FPGA芯片与ASIC芯片通过板级互连或通过MCM技术[15]封装在一起,按照芯片的物理结构,如图6所示,从芯片管脚经过IO PAD到芯片内部逻辑模块的路径延时,再加上芯片与芯片之间的线延时,这将导致芯片的工作频率很难提高,芯片也很难获得理想的处理性能。

图6 芯片物理结构

文中设计的异构紧耦合架构将FPGA IP与ASIC可重构密码处理阵列之间通过逻辑信号直接互连,按照类型分为三个通道:数据通道、配置通道和控制通道。其中,数据通道用于待加解密数据的传输,分进入和外出两个方向,为防止数据溢出,采用带反压的数据接口,时序图如图7所示。

图7 带反压的数据通道接口时序图

wr_en为写使能信号,高电平有效,wr_data为写数据信号,Afull为将满信号,用于反压写使能和写数据,当Afull信号拉高后,写使能信号拉低,写数据保持,当Afull信号拉低后再继续写入数据。配置通道是单向的,FPGA IP通过该通道给ASIC密码处理阵列发送动态配置数据。控制通道用于传输FPGA与ASIC密码处理阵列之间的启动、结束等控制信号。

3 仿真验证

基于FPGA+ASIC的异构紧耦合可重构密码芯片设计模型采用Verilog语言实现,使用Synopsys公司的DC工具在130 nm CMOS工艺下对设计模型进行了综合,利用UVM验证方法学[16]和Cadence的ncsim工具进行仿真验证。

为了分析所设计的RCHA架构芯片模型的性能,通过在RCHA架构上映射AES算法,并与其他不同密码芯片结构的实现性能进行对比,结果如表1所示。

表1 不同结构上的AES算法实现性能对比

通过横向对比,基于FPGA+ASIC的异构紧耦合可重构密码芯片架构可以取得优于其他架构的处理性能,另外,不同结构的算法适配灵活性对比如表2所示。

表2 不同结构的算法适配灵活性对比

从表2中可以看出,设计的RCHA架构可以灵活适配多种密码算法,而且凭借着FPGA的可编程逻辑资源,RCHA架构可支持实现更多已知或未知的密码算法。

4 结束语

基于对可重构密码芯片的研究,创新地提出了基于FPGA+ASIC的可重构密码芯片设计模型,采用静态配置和动态配置相结合的方式,有效缩减了动态重构的时间;可重构密码处理阵列支持最大分组位宽为256比特的分组算法,结合FPGA的可编程特性,在算法适配方面具有很强的灵活性。仿真结果表明,异构紧耦合可重构密码芯片在200 MHz工作频率下,能够获得较高的处理性能。从安全角度看,该架构密码芯片需要FPGA与可重构密码处理阵列配合完成所需的密码算法,单纯拥有FPGA配置文件或芯片的物理版图,并不能得到完整的算法,与专用密码芯片相比,具有更高的安全性。

猜你喜欢
密钥重构分组
“双减”能否重构教育生态?
幻中邂逅之金色密钥
幻中邂逅之金色密钥
长城叙事的重构
基于干扰重构和盲源分离的混合极化抗SMSP干扰
Android密钥库简析
用四维的理念重构当代诗歌
分组
每个人的朋友圈里都有一个分组叫“爸妈”
一种新的动态批密钥更新算法