一种向量化密码运算加速方法技术

技术编号:32772799 阅读:59 留言:0更新日期:2022-03-23 19:28
本发明专利技术公开了信息安全技术领域的一种向量化密码运算加速方法,包括利用SIMD技术提供的指令集实现密码算法,使算法支持多通道的数据同步运算;数据块的向量化设计,根据密码运算规则和SIMD数据输入要求,对数据块进行向量化处理;基于向量化数据块的运算引擎接口设计;算法分路请求方法设计和实现和构建合成引擎,本方法不仅能够成倍提升SM3和SM4密码算法的组合运算性能,且通过算法分路请求设计了多通道数据流下数据保序处理,充分利用了CPU硬件的运算资源,满足实际使用需求。满足实际使用需求。满足实际使用需求。

【技术实现步骤摘要】
一种向量化密码运算加速方法


[0001]本专利技术涉及信息安全
,具体为一种向量化密码运算加速方法。

技术介绍

[0002]随着互联网的飞速发展,网络流量的剧增,对网络安全的要求也越来越高,国产商用密码算法作为我国网络空间安全的“内在基因”,对国密算法的运算性能要求也越来越高。
[0003]现有发布的密码算法中,SM4和SM3是以标准的形式发布的。算法的实现方式包括硬件和软件,硬件方式实现方式主要有这几种形式:专用芯片,通过硬件描述语言编程FPGA实现,整合专用芯片和FPGA制作成专用加密卡;软件实现主要是根据发布的算法标准实现。
[0004]密码算法在开源项目实现现状:
[0005]1.openssl 1.1.1已将SM2、SM3和SM4加入源码,且对SM4进行了中表法优化,但不支持SIMD技术加速;
[0006]2.intel ipsec

mb实现了AES、MD5、SHA系列算法的并行加速和串行化方法,但不支持SM3和SM4;
[0007]3.intel ipp

crypto支持国际通用算法和国密SM2、SM3、SM4算法,且提供了一种SM4的SSE+AES指令集4路并行运算的基础运算方法,但不提供公开的调用接口和串行化方法,没有提供8路和16路运算的方法,且不支持SM3的SIMD指令加速方法,不具备实用性;
[0008]4.github上的sm4ni项目也提供了一种SM4的SSE+AES指令集4路并行运算的基础运算方法,也不提供串行化,不支持SM3的SIMD指令加速方法,不支持8路和16路运算的方法,不具备实用性。
[0009]众所周知,采用硬件方式实现密码算法,一般采用专用芯片和FPGA研制专用加密卡。密码运算性能的提升通过硬件上添加更多的密码算法芯片来实现,其成本和性能成正比。
[0010]采用软件方式实现,其性能提升通常依赖于平台自身的处理能力,以intel i77700K 4.2GHz(4核8线程)平台作为参考平台,并开启8个线程绑定8个逻辑核心,即启用了该CPU的所有运算资源,对于常用于VPN数据加密封装的的SM4

CBC+SM3

HMAC的联合运算,从图1测试数据来看,现有技术已经使得算法性能提升到了极限,但依旧无法满足实际需求,基于此,本专利技术设计了一种向量化密码运算加速方法,以解决上述问题。

技术实现思路

[0011]本专利技术的目的在于提供一种向量化密码运算加速方法,以解决上述
技术介绍
中提出的现有方案依旧无法满足实际需求的问题。
[0012]为实现上述目的,本专利技术提供如下技术方案:一种向量化密码运算加速方法,包括如下步骤:
[0013]步骤一:利用SIMD技术提供的指令集实现密码算法,使算法支持多通道的数据同
步运算;
[0014]步骤二:数据块的向量化设计,根据密码运算规则和SIMD数据输入要求,对数据块进行向量化处理;
[0015]步骤三:基于向量化数据块的运算引擎接口设计;
[0016]步骤四:算法分路请求方法设计和实现;
[0017]步骤五:构建合成引擎。
[0018]优选的,所述步骤一中利用SIMD技术实现SM3、SM4算法,其中SM3和SM4算法中多采用32位的整形运算,运算操作主要包括加、移位、与、或、异或和大小端转换。
[0019]优选的,所述步骤二中数据块的处理按照分组长度及通道进行了向量化处理,具体可采用256位SIMD向量指令,以字为单位运算,分为8个通道。
[0020]优选的,所述步骤三中向量化的数据引擎接口设计通过galois field变换实现了国产密码运算,并通过AES加速指令完成运算的加速,其中依次包括SM3的向量化引擎接口设计和SM4CBC模式的向量化引擎接口设计。
[0021]优选的,所述步骤四具体为:数据在密码运算前首先会进行填充和分组,然后按照分组进行密码运算,前一个分组的运算结果会迭代到后一个分组运算,所以必须将前一个分组运算完成,才能继续运算后一个分组,想要充分利用多路运算资源,需要将不同运算请求放到不同的运算通道。
[0022]优选的,所述步骤四中对于不同运算请求,其长度可能不同,使得它们的块运算次数也会不同的,较短的请求运算完成时,较长的请求可能还没有运算完;针对这一问题的处理方法是:通道中请求未填满时,暂时不运算,通道填满后立即开始运算,直到最短的请求运算完成,进入暂停状态,等待新的请求,新的请求到来时,继续填充上次运算腾出的通道,这种操作可能会出现通道存在请求但没有填满而且没有新的请求进入,从而造成运算无法完成情况,这种情况需要使用队列清零操作将其完成运算;
[0023]同时,由于请求长短不同,需要的运算时间不同,多通道并行计算情况下,先到的请求可能会比后到的短请求先完成运算,这样会引起数据乱序,为了保证先来的请求一定先完成,需要设计一个保序队列,让队列头的运算完成了才开始出队。
[0024]与现有技术相比,本专利技术的有益效果是:本专利技术同时对SM3和SM4算法进行了向量化处理,相对于传统方法大幅提升密码算法的处理能力,在高性能密码运算应用场景中能够大幅度降低产品成本,同时不仅能够成倍提升SM3和SM4密码算法的组合运算性能,且通过算法分路请求设计了多通道数据流下数据保序处理,充分利用了CPU硬件的运算资源,满足实际使用需求。
附图说明
[0025]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026]图1为现有方案测试数据表格;
[0027]图2为本专利技术流程图;
[0028]图3为本专利技术同步操作原理图;
[0029]图4为本专利技术向量化过程原理图;
[0030]图5为本专利技术SM3的向量化引擎接口设计原理图;
[0031]图6为本专利技术向量化的SM3运算迭代过程示意图;
[0032]图7为本专利技术SM4 CBC模式的向量化引擎接口设计原理图;
[0033]图8为本专利技术向量化的SM4 CBC模式加密运算迭代过程示意图;
[0034]图9为本专利技术向量化的SM4 CBC模式解密运算迭代过程示意图;
[0035]图10为本专利技术算法分路请求的处理流程图;
[0036]图11为本专利技术算法分路请求方法设计逻辑示意图;
[0037]图12为本专利技术一种实施例使用逻辑示意图。
具体实施方式
[0038]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种向量化密码运算加速方法,其特征在于,包括如下步骤:步骤一:利用SIMD技术提供的指令集实现密码算法,使算法支持多通道的数据同步运算;步骤二:数据块的向量化设计,根据密码运算规则和SIMD数据输入要求,对数据块进行向量化处理;步骤三:基于向量化数据块的运算引擎接口设计;步骤四:算法分路请求方法设计和实现;步骤五:构建合成引擎。2.根据权利要求1所述的一种向量化密码运算加速方法,其特征在于:所述步骤一中利用SIMD技术实现SM3、SM4算法,其中SM3和SM4算法中多采用32位的整形运算,运算操作主要包括加、移位、与、或、异或和大小端转换。3.根据权利要求1所述的一种向量化密码运算加速方法,其特征在于:所述步骤二中数据块的处理按照分组长度及通道进行了向量化处理,具体可采用256位SIMD向量指令,以字为单位运算,分为8个通道。4.根据权利要求1所述的一种向量化密码运算加速方法,其特征在于:所述步骤三中向量化的数据引擎接口设计通过galois field变换实现了国产密码运算,并通过AES加速指令完成运算的加速,其中依次包括SM3的向量化引擎接口设计和SM4CBC模式的向量化引擎接口设计。5.根据权利要...

【专利技术属性】
技术研发人员:姜伟李儒湛欢陈昌勇任浩
申请(专利权)人:中物院成都科学技术发展中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1