兼容AES和SM4两种分组密码算法的方法及系统与流程

文档序号:29742127发布日期:2022-04-21 19:36阅读:163来源:国知局
兼容AES和SM4两种分组密码算法的方法及系统与流程
兼容aes和sm4两种分组密码算法的方法及系统
技术领域
1.本发明涉及分组加密算法的技术领域,尤其涉及一种兼容aes和sm4两种分组密码算法的方法及系统。


背景技术:

2.由中国信息安全标准化技术委员会组织制定的sm4对称密码算法,作为一种商用分组密码算法,于2012年发布为密码行业标准、2016年转化为中国国家标准、2021年6月成为了iso/iec国际标准,这标志着我国商用密码科技水平和国际标准化能力的不断提升。
3.由美国国家标准与技术研究所(nist)组织制定的aes对称密码算法,于2001年11月被正式发布,早已成为国际范围内基于对称秘钥加密密码的很多应用所采用的实际标准。
4.近年来随着sm4标准化的推进,及其在许多应用平台上的广泛采用,已然频繁出现了在同一平台上兼容支持这两种成熟算法的应用需求。尤其是在制定中国超高清电视之高速接口传输保护系统标准时,就出现了针对8k清晰度的图像帧数据时需要兼容完成sm4或aes标准的节目码流加/解密的应用需求。
5.但是现有的可兼容sm4和aes两种算法的方法及系统的性能都比较差,不能达到对应的吞吐率要求,以及同时做到资源开销的节省。


技术实现要素:

6.为了解决现有技术中的可兼容sm4和aes两种算法的方法及系统的性能较差的技术问题,本发明提出了兼容aes和sm4两种分组密码算法的方法及系统。
7.本发明提出的兼容aes和sm4两种分组密码算法的方法,包括:将sm4的统一轮运算与aes的统一轮运算中的第1轮至第8轮中的单个一般迭代轮的运算过程统一转换为前线性变换、s盒查替变换以及后线性变换的全局流水线式运算过程;
8.所述前线性变换包括至少一级时序隔离段,任意一级所述时序隔离段由至少一个异或门所构成或者为实现置换处理的线性变换时序隔离段。
9.进一步,还包括:将aes与sm4的所述s盒查替变换统一转换为前映射变换、复合域求逆变换、后映射变换的局部流水线式运算过程,使得所述s盒查替变换包含多级时序隔离段,任意一级所述时序隔离段由至少一个异或门和/或至少一个与门构成,在一个实施例中,异或门可以是两输入异或门,与门可以是两输入与门;
10.所述前映射变换将所述s盒查替变换中aes与sm4不同的gf(2^8)域上元素转换到同一个、与各自原始gf(2^8)域都线性同构的目标复合域中。
11.进一步,通过设计单个一般迭代轮中sm4所需的前线性变换的时序隔离段级数与s盒查替变换的时序隔离段级数之和来达到处理性能及存储资源开销的预设标准。
12.进一步,所述aes的统一轮运算中的第9轮至最后一轮中单个迭代轮运算过程也统一转换为前线性变换、s盒查替变换以及后线性变换的全局流水线式运算过程。
13.进一步,当处理的算法为aes时,首个迭代轮只有加轮密钥子变换,其他迭代轮的所述前线性变换包括aes的行移位操作,所述后线性变换包括aes的列混淆和加轮密钥操作合并而成的异或网络变换,且最末个迭代轮的后线性变换不含aes的列混淆;
14.当处理的算法为sm4时,所述前线性变换包括sm4的加轮密钥操作,所述后线性变换包括sm4的l变换和xor结合操作合并而成的异或网络变换,且最后一轮后线性变换结束后再执行fp置换。
15.进一步,当处理的算法为aes的加密算法时,所述后映射变换在进行aes对应的gf(2^8)同构逆映射之后,进行aes标准的仿射变换;当处理的算法为aes的解密算法时,所述前映射变换在进行aes标准的逆仿射变换之后,进行aes对应的gf(2^8)同构映射;
16.当处理的算法为sm4时,所述前映射变换在将gf(2^8)转换为目标复合域之前,进行sm4标准的第一仿射变换,同时,所述sm4的后映射变换在将目标复合域进行gf(2^8)同构逆映射之后,进行sm4标准的第二仿射变换。
17.进一步,所述目标复合域为gf((2^4)^2)域。
18.进一步,所述时序隔离段的划分原则为每一隔离段的组合路径延迟不超过n级基础门单元的电路延迟之和,所述n的取值根据处理性能及存储资源开销的预设标准而制定。
19.本发明提出的实现上述技术方案所述的兼容aes和sm4两种分组密码算法的方法的系统,包括多个迭代轮实现电路,所述多个迭代轮实现电路包括一般迭代轮实现电路,单个一般迭代轮实现电路包括:
20.前线性变换电路,其用于实现aes的行移位操作以及sm4的加轮密钥操作;
21.s盒查替变换电路,其用于实现前线性映射、复合域求逆变换、后映射变换;
22.后线性变换电路,其用于实现aes的列混淆和加轮密钥操作合并而成的异或网络变换(xnwa),以及sm4的l变换和xor结合操作合并而成的异或网络变换(xnws)。
23.进一步,所述前线性变换电路包括至少一个异或门以及一个复用器。
24.本发明基于上述技术方案实现了兼容支持aes和sm4两种分组密码算法的统一轮运算的高性能实施,其基于全局和局部两种层次的流水线机制的设计方法而实现。
25.用于兼容支持aes和sm4两种分组密码算法的统一轮运算的高性能实现,其对s盒查替变换逻辑采用复合域转换+dacse算法结合的设计方法而实现。
26.用于兼容支持aes和sm4两种分组密码算法的统一轮运算的低资源开销实现,其基于最大程度地复用s盒查替变换逻辑、次优程度地复用其它线性变换逻辑的设计思路而实现。
27.用于兼容支持aes和sm4两种分组密码算法的统一版s盒查替变换逻辑,其查找替换操作采用依序为前映射变换、复合域求逆变换、后映射变换的电路结构而实现。
28.用于兼容支持aes和sm4两种分组密码算法的统一版轮运算处理逻辑(rnd),其单个一般迭代轮运算操作采用依序为“前线性变换、s盒查替变换、后线性变换”的电路结构而实现。
29.用于分别支持aes、sm4两种分组密码算法的独立版轮密钥扩展逻辑(kep),其整体的扩展运算操作即可基于本地的硬件电路实现,也可基于外地的硬件电路实现。而扩展运算所得的各个轮密钥,将采用非易失性的存储元件而保存(常见如d触发器),以便可同时而快速地获得轮运算于流水线阶段中所需求的大量的各个轮密钥数据。
30.用于支持“针对多套的各个轮密钥的硬件自主选用”的切换选控逻辑,其基于多路复用器的电路结构而实现。
31.针对高处理性能和低资源开销两个实现指标的平衡考量,sm4算法在其轮运算流水线阶段中对state变量进行多级移存所需存储元件的集成级数(其与该部分子电路的硬件资源开销成正比)以及统一版轮运算中相关线性变换逻辑的时序隔离段级数(其与整个硬件模块的最高工作频率成正比)将根据整个密码系统所期待的具体应用需求而权衡实施。
32.上述全局层次的流水线机制被定义为:实现分组密码算法的轮运算逻辑的整体处理,将采用流水线式的设计架构而实现,也即各个迭代轮的轮运算处理将采用物理上独立的不同组电路逻辑分开实现。
33.上述局部层次的流水线机制被定义为:实现分组密码算法的轮运算逻辑的单个迭代轮处理将采用流水线式的设计架构而实现,也即单轮的轮运算子变换处理将经过相关权衡考量而从时序上拆分为多个分段、每一分段采用应做时序隔离的一组电路逻辑分开实现。
34.上述兼容支持两种分组密码算法的统一轮运算中的s盒查替变换逻辑将采用复合域转换+dacse算法结合的设计方法、并采用依序为“前映射变换、复合域求逆变换、后映射变换”的电路结构而实现。
35.其中的前映射变换和/或后映射变换将包含所述复合域转换中的转换这一部分处理,而复合域求逆变换则对应在复合域上的查替这一部分处理。而针对本质为线性变换的前映射变换及后映射变换,可进一步地采用简称为dacse的优化算法、基于目标算法电路的特定物理实现环境(包括但不限于底层平台(asic或fpga)、代工厂的制程&工艺、后端实现的eda工具)而分析推断出所述前(后)映射变换所需基础门单元电路的最少数目或最短延迟,从而针对高处理性能和低资源开销两个实现指标做出权衡取舍。
36.上述sbox逻辑(即s盒查替变换逻辑)在两种算法的轮运算中总是存在的(注:aes的#0轮除外),且其作为分组密码算法中唯一的非线性变换逻辑,它本身在时序性能和资源开销两方面都是最为关键的,所以应最大程度地去考虑针对sbox逻辑的复用实现。而所述算法的轮运算的其它线性变换逻辑,因为aes和sm4算法自身定义的天然差异,针对它们的复用实现在资源开销方面可能会得不偿失,所以不应较高程度地去考虑。
37.aes轮运算的#1~#8轮将和sm4轮运算的所有轮(即#0~#31轮)实施相应变换逻辑的复用实现。
38.aes轮运算的#9~#n轮(n=10/12/14for aes-128/192/256)无需和sm4轮运算进行复用实现的考虑,即它的相应变换逻辑(尤其是s盒查替变换逻辑)可为仅支持aes算法的独立版本,如此便可节省相应的硬件资源开销。
39.上述目标复合域包括但不限于gf((2^4)^2)。
40.上述统一轮运算的前线性变换包括:aes的行移位操作,以及sm4的加轮密钥操作。
41.上述统一轮运算的s盒查替变换为:针对state变量的整体或部分、以字节(8-bits)为颗粒度而展开的字节替换操作。
42.上述统一轮运算的后线性变换包括:aes的列混淆和加轮密钥两种操作合并而成的异或网络变换操作,以及sm4的l变换和xor变换两种操作合并而成的异或网络变换操作。
43.所有线性属性的变换操作,可以采用诸如“两输入异或门、两输入与门”的基础门单元电路去实现,以便于得出如上所述的硬件实现在高处理性能和低资源开销两个实现指标下的权衡量度。
44.上述统一轮运算的s盒查替变换操作,将采用可兼容支持aes和sm4的各种sbox逻辑的复用实现版本。注意:专用于aes后几轮轮运算的s盒查替变换操作可为不包含sm4之sbox逻辑的另一种复用实现版本(即它只是aes的正向版和反向版sbox逻辑的复用)。
45.上述统一轮运算的后线性变换针对aes和sm4两种算法将实现独立的两套不同异或网络变换电路,其理由已在上述描述中阐述。
46.aes算法轮运算的解密方向处理将采用业界熟知的子变换顺序重构法而达到和加密方向处理的流程一致化,因此这两个处理方向在硬件实现流程控制方面不再具有本质上的差异,故而在本文中不再予以区分说明。
47.在以高性能处理为较优先目标的应用场景下(注:此场景下认为初始秘钥的更新频率很低),负责为轮运算提供作为

轮密钥’数据的kep逻辑将独立于轮运算逻辑而被分开实现。
48.一般地,所述kep逻辑可跟轮运算逻辑一起、由当前硬件电路模块来集成实现。
49.可选地,所述kep逻辑则由当前硬件电路模块范围之外的其它电路模块来集成实现。
50.无论上述哪种选择,扩展运算所得的各个轮密钥,将采用非易失性的存储元件而保存(常见如d触发器),以便可同时而快速地获得轮运算于流水线阶段中所需求的大量的各个轮密钥数据。
51.又可选地,在上述“一般地”的实现前提下,轮密钥扩展处理所需的sbox逻辑可复用轮运算中的对应逻辑电路、以节省一些硬件资源开销。
52.在同一种分组密码算法的前提下,为了支持针对诸如“在一段连续时间内会接收到抵达顺序无法预知的、基于不同初始秘钥而加密的密文数据”之应用场景的密码处理,当前硬件电路模块中将实现可存储适当数量的若干套各轮轮密钥的存储电路,并预先定义好相应的初始秘钥标识符(kid),然后在如上所述的轮运算的全局层次流水线中基于上述kid标识符、以及多路复用器的电路结构而由硬件实时自动地选出正确的某套轮密钥的某一个而使用。
53.基于sm4算法本身的定义特性和上述的流水线设计机制,本发明对sm4轮运算在流水线阶段中相应的state逻辑变量需要进行多级的流水线移存。
54.其所需非易失性存储元件(譬如d触发器)的集成级数将依赖于sm4轮运算的前线性变换和s盒查替变换这两部分变换逻辑加起来的时序隔离段级数之和。所述时序隔离段级数越多,每个工作时钟周期内需完成的计算任务就越简单、而整个硬件电路能稳定运行的时钟频率也就能提得越高,继而整个硬件电路的处理性能也就会提到更高水平;但如此实现的代价则是会因较多的时序隔离段级数而导致流水线移存需用的存储资源开销变得较大。
55.因此,若实际应用中不需要整个硬件电路模块必须运行在其最高时钟频率下,则设计者就可通过减少上述两部分变换逻辑的时序隔离段级数来显著降低所述流水线移存需用的存储资源开销。而且,当整个硬件电路模块的工作时钟频率被约束在较低的水平时,
物理实现时相关eda工具也能选取延迟较大的基础门单元电路,这样也会给硬件资源开销的节省带来一定程度的收益。
附图说明
56.下面结合实施例和附图对本发明进行详细说明,其中:
57.图1为本发明兼容支持aes和sm4两种算法的统一轮运算的单个迭代轮的设计架构。
58.图2为本发明对aes和sm4两种算法的各种sbox逻辑的局部流水线的架构设计。
59.图3为本发明兼容支持aes和sm4两种算法的整个分组运算在全局流水线机制下的电路实现。
60.图4为本发明一实施例的统一轮运算在全局流水线设计架构下的一份基础流水线逻辑的电路实现架构。
61.图5为本发明的一实施例的统一轮运算的复用sbox逻辑在局部流水线设计架构下的一种电路实现。
62.图6为本发明的一实施例的复用sbox逻辑中的非乘法求逆逻辑在局部流水线设计架构下的一种电路实现。
63.图7为本发明的一实施例的复用sbox逻辑的目标复合域上乘法求逆逻辑在局部流水线设计架构下的一种电路实现。
64.图8为本发明的一实施例的统一轮运算在全局流水线机制下的一种整体电路实现。
具体实施方式
65.为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
66.由此,本说明书中所指出的一个特征将用于说明本发明的一个实施方式的其中一个特征,而不是暗示本发明的每个实施方式必须具有所说明的特征。此外,应当注意的是本说明书描述了许多特征。尽管某些特征可以组合在一起以示出可能的系统设计,但是这些特征也可用于其他的未明确说明的组合。由此,除非另有说明,所说明的组合并非旨在限制。
67.对于一般的对称秘钥分组密码算法而言,无论是加密或解密处理,其本质上都是针对“位宽为一个block(分组)大小的数据变量”的反复迭代处理。这个被迭代处理的数据块变量通常称为state(也有叫做“状态矩阵”的)。对于aes和sm4这两种state都是16字节宽之算法的硬件电路实现,不以性能指标为优先的实现架构通常为:物理上仅集成一套时序逻辑元件(如d触发器)来寄存轮运算的每个迭代轮的运算后state结果,而每个迭代轮的各个子变换则由相应的组合逻辑元件来实现。显然地,这种以资源开销指标为优先的实现架构满足不了超高吞吐率的实现指标,因此一般就会转而采用基于流水线机制的实现架构来考虑算法的硬件电路实现。
68.本发明通过流水线机制设计构架来实现本发明的兼容aes和sm4两种分组密码算
法的方法,本发明的方法是将sm4的统一轮运算与aes的统一轮运算中的第1轮至第8轮中的单个一般迭代轮运算过程统一转换为前线性变换、s盒查替变换以及后线性变换的全局流水线式运算过程。其中,前线性变换包括至少一级时序隔离段,任意一级时序隔离段由至少一个异或门构成或者为实现置换处理的线性变换时序隔离段。
69.其中aes算法有n+1个迭代轮,n=10,或n=12,或n=14,除了第一个可记为“#0轮”的迭代轮之外,其他迭代轮都可以称为一般迭代轮。aes算法除最后一个一般迭代轮以外的其他一般迭代轮包含了4种子变换,最后一个一般迭代轮只含了3种子变换,属于较为特殊的一般迭代轮。sm4算法有32个迭代轮,均为一般迭代轮。单个一般迭代轮与其他单个迭代轮均是单个迭代轮。
70.在一个较优实施例中,可以将aes与sm4的统一轮运算的单个迭代轮运算过程统一转换为前线性变换、s盒查替变换以及后线性变换的全局流水线式运算过程,即aes的统一轮运算中的第9轮至最后一轮中单个迭代轮运算过程也统一转换为前线性变换、s盒查替变换以及后线性变换的全局流水线式运算过程。
71.当处理的算法为aes时,首个迭代轮只有加轮密钥子变换,其他迭代轮的前线性变换包括aes的行移位操作,在一个实施例中,行移位操作具体采用了实现置换处理的线性变换时序隔离段,在其他实施例中,行移位操作也可以不采用时序隔离段的方式实现。后线性变换包括aes的列混淆和加轮密钥操作合并而成的异或网络变换,且最末个迭代轮的后线性变换不含aes的列混淆。
72.当处理的算法为sm4时,前线性变换包括sm4的加轮密钥操作,后线性变换包括sm4的l变换和xor结合操作合并而成的异或网络变换,且最后一轮后线性变换结束后再执行fp置换(final permutation)。
73.本发明将兼容支持所述两种算法的统一轮运算的单个迭代轮的设计架构抽象地展示为图1所示的构架实现。该实现架构在单个迭代轮中以“s盒查替变换”为中心,将其前存在的子变换操作定义为“前线性变换(mlpre)”,将其后存在的子变换操作定义为“后线性变换(mlaft)”。以此种抽象划分,可便于对所述三个部分分而治之地进一步开展局部层次的流水线机制的架构设计和实现。即实现统一轮运算的单个迭代轮的前线性变换的电路部分包括:aes的行移位操作,以及sm4的加轮密钥操作。实现统一轮运算的单个迭代轮的s盒查替变换的电路是针对state变量的整体或部分、以字节(8-bit)为颗粒度而开展的字节替换操作,实现统一轮运算的单个迭代轮的后线性变换的电路包括:aes的列混淆和加轮密钥操作合并而成的异或网络变换(xnwa),以及sm4的l变换和xor结合操作合并而成的异或网络变换(xnws)。
74.在上述基础上,本发明采用复合域转换结合同一目标复合域上乘法求逆的基本思路,将aes与sm4的s盒查替变换统一转换为前映射变换、复合域求逆变换、后映射变换的局部流水线式运算过程,使得所述s盒查替变换包含多级时序隔离段,任意一级时序隔离段由至少一个异或门和/或至少一个与门所构成,其中异或门可以是二输入异或门,与门可以是二输入与门。其中前映射变换将所述s盒查替变换中aes与sm4不同的gf(2^8)域上元素转换到同一个的、与各自原始gf(2^8)域都线性同构的目标复合域中。
75.兼容实现sm4和aes分组密码算法的专用硬件加速器(也即本文前述的硬件电路模块)的先前解决方案一般为:使用硬件电路模块内部的同一块物理存储器逻辑(譬如sram)
来时分复用地承载所述两种算法不同的sbox逻辑,即在某一种算法被激活的使用期间将存储器逻辑加载为此算法对应的s盒查替结果。
76.在这种一般方案的前提下,sbox逻辑通常采用查找表(lut)的实现方式,再加上相应存储器逻辑的访问性能在集成电路既定制程工艺的框架下是有上限的,就会致使其往往满足不了在一些特定应用场景下对于较高数据吞吐率的性能指标要求。
77.而如果不采用上述lut+sram式的解决方案,且又想在满足超高吞吐率要求的前提下尽量节省硬件资源开销,其中的难点和关键点就在于:对两种算法不同的sbox逻辑的高效重用实现,以及在流水线机制下对轮运算其它的子变换逻辑的适当重用实现。
78.本发明针对两种算法在轮运算中的不同sbox逻辑的高效重用实现采用了复合域转换+乘法求逆的总体思路,令sbox逻辑本身的非线性部分(即在gf(2^8)域上的乘法求逆)可于两种算法不同定义中找到相同的可重用部分。另外,对于sbox逻辑本身的线性部分(即(逆)仿射变换)以及在gf(2^8)域和目标复合域之间元素相互转换所涉及的同构(逆)映射变换(注:均属线性变换),在超高吞吐率/性能的实现指标下,可选地,它们可以基于dacse优化算法而权衡考量出具体的电路实现。
79.诸如sm4和aes等对称秘钥密码算法在其轮运算的多种子变换操作中都涉及到了有限域的概念(也称伽罗瓦域,简记为gf)以及在相应有限域上的加法、乘法求逆等算术操作。在现代计算机应用和cmos数字逻辑设计的上下文中,由于有关的集成实现限制,相应的数据通常都是以二进制的形式而被处理/存储/传输的。因此,aes和sm4等对称秘钥密码算法在制定之初就考虑到了实现平台方面的这种特性。
80.域是一个可以在其上进行加法、减法、乘法和除法等运算而结果不会超出该域的元素集合。包含有限个元素的域被称为有限域,其元素个数被称为“有限域的阶”。每个有限域的阶必为素数的幂,即有限域的阶可表示为p^n(p是素数、n是正整数)。有限域通常也会称为伽罗瓦域(galois fields),记为gf(p^n)。
81.当n=1、p为某素数时,存在着的有限域gf(p)也称为素数域。
82.当n=1、p=2时,对应为最小素数域gf(2),在密码学中它的元素就是0和1(1-bit的二进制数),而该域上的加法、乘法分别相当于逻辑异或(xor)、逻辑与(and)操作。
83.当n》1、p=2时,对应为gf(2^n)域,在密码学中它的元素一般不以整数来表示,而是被表示为一个“最高项为x^(n-1)、每一项的系数为gf(2)域内元素”的多项式。
84.在密码学中,有限域得到了广泛应用。最常用的则是素数域gf(p)和gf(2^n)域。
85.对于sm4和aes这两种对称秘钥密码算法,其轮运算的s盒查替子变换具体涉及的均是gf(2^8)域,而一个8-bit的字节数据可映射为“256种可能的7阶多项式中的一个”。基于此,密码学中对gf(2^8)域上的加法、减法操作就定义为:两个操作数对应多项式的各个系数按阶次的xor操作,其等效相当于“对要相加/减的两个字节实施按位异或"的操作。类似地,密码学中对gf(2^8)域上的乘法、除法操作的定义基础包括:指定一个8阶的不可约多项式,以及基于它的取模操作。
86.由此对于乘法,它被定义为:两个操作数先做多项式相乘,接着对不可约多项式取模,取模的余数即为乘法结果,乘法结果必为gf(2^8)域内的某个元素。针对乘法求逆,它等效于“被除数限定为gf(2^8)域内元素1的除法操作”。换言之,对元素x的乘法求逆就是要找到元素y、使得x和y相乘后再取模不可约多项式的余数为所述元素1。
87.aes和sm4算法的sbox逻辑显然是不同的,除了仿射变换的定义不同外,更关键的是因为gf(2^8)域上乘法求逆所依赖不可约多项式的相异性。
88.aes的所述8阶不可约多项式为sa(x)=(x^8+x^4+x^3+x+1),而sm4的则为ss(x)=(x^8+x^7+x^6+x^5+x^4+x^2+1)。
89.为了找到aes和sm4两种算法的sbox逻辑在gf(2^8)域上乘法求逆操作的共同之处,需要采用解复合操作将两种不同的gf(2^8)域转换为相同的、与各自原始gf(2^8)域都线性同构的某个目标复合域。基于此,在gf(2^8)域上的乘法求逆操作就可转换为目标复合域上的、更适于二进制基底的数字电路实现的某种相应同构性操作。另外,因为gf(2^8)域与目标复合域是线性同构的,这使得在这两类域之间的元素映射转换可通过“实现方式为矩阵乘法”的同构(逆)映射变换而完成。
90.在一个实施例中,目标复合域可以为gf((2^4)^2)域,它基于指定的2阶不可约多项式(p(y)=y^2+y+ν,ν={0010}2)由基域gf(2^4)而生成,而该gf(2^4)基域则由另一指定的4阶不可约多项式(q(x)=x^4+x^3+x^2+x+1)由gf(2)域而生成。由此,在gf(2^8)域上的乘法求逆操作可被同构映射为目标复合域上的乘法求逆操作。而为了实现两个gf域中元素的同构(逆)映射,将采用相应的基于单个算法而特定的同构(逆)映射变换来实现。在硬件电路实现方面,在目标复合域上的乘法求逆将采用依序为“gf(2^8)域

gf((2^4)^2)域的元素同构映射、gf((2^4)^2)域上的乘法求逆、gf((2^4)^2)域

gf(2^8)域的元素同构逆映射”的电路结构组合来实现。
91.为了能兼容支持两种算法的超高性能实现,本发明的一个较优实施例中设计了上述全局和局部两种层次的流水线机制来实现兼容aes和sm4两种分组密码算法的方法。
92.图2显示了对aes和sm4这两种算法的各种sbox逻辑的局部流水线的架构设计。aes算法针对加密和解密两种处理方向会对应采用正向和反向这两种版本的sbox逻辑,而sm4算法针对加/解密方向则采用同一版本的sbox逻辑。无论是哪种算法、抑或是aes的正向版/反向版sbox,这些sbox逻辑都可拆分成依序为“前仿射变换、gf(2^8)域上乘法求逆、后仿射变换”的子变换电路组合而实现(注:这种拆分对应算法标准的原始定义)。
93.具体而言,aes的正向sbox、aes的反向sbox、sm4的sbox这三种sbox逻辑的“前仿射变换”分别为:空变换、aes标准的逆仿射变换、sm4标准的第一仿射变换。而这三种sbox逻辑的“后仿射变换”分别为:aes标准的仿射变换、空变换、sm4标准的第二仿射变换。
94.而在本说明书描述的“复合域转换+乘法求逆”的总体思路下,可将上述标准拆分调整为如图2最左列示意的优化拆分。即当处理的算法为aes的加密算法时,后映射变换在将目标复合域进行gf(2^8)同构逆映射之后,进行aes标准的仿射变换;当处理的算法为aes的解密算法时,前映射变换在将gf(2^8)转换为目标复合域之前,进行aes标准的逆仿射变换;当处理的算法为sm4时,前映射变换在将gf(2^8)转换为目标复合域之前,进行sm4标准的第一仿射变换,同时,sm4的后映射变换在将目标复合域进行gf(2^8)同构逆映射之后,进行sm4标准的第二仿射变换。
95.基于如上的sbox逻辑优化拆分描述、以及前文所述关于伽罗瓦域上乘法求逆的“基于复合域转换的同构实现”相应描述,本发明将兼容支持两种算法的统一轮运算的sbox逻辑的电路实现架构抽象总结为:前映射变换、复合域求逆变换、后映射变换的依序组合。
96.本发明还保护实现上述技术方案的兼容aes和sm4两种分组密码算法的方法的系
统,该系统包括多个迭代轮实现电路,其中单个迭代轮实现电路包括前线性变换电路,s盒查替变换电路,以及后线性变换电路。
97.前线性变换电路用于实现aes的行移位操作以及sm4的加轮密钥操作。
98.s盒查替变换电路用于实现前线性映射、复合域求逆变换、后映射变换。
99.后线性变换电路用于实现aes的列混淆和加轮密钥操作合并而成的异或网络变换(xnwa),以及sm4的l变换和xor结合操作合并而成的异或网络变换(xnws)。
100.图3显示了兼容支持两种所述算法的整个分组运算在全局流水线机制下的电路实现。如前文所述,统一轮运算的一般迭代轮可依序由“前线性变换、s盒查替变换、后线性变换”的电路组合而实现。而除了这种一般的迭代轮外,还需要注意以下几点:
101.(1)对于sm4算法,state(31)获得后还得执行"fp置换"才能得到输出分组结果,即sm4在统一轮运算完成后再执行fp置换得到输出分组结果。
102.(2)aes算法的#0轮只有"加轮密钥"子变换。
103.(3)aes算法的#n轮(即最末轮,n=10/12/14)的mlaft不含列混淆(注:为有所区别,在图3中标为mlaft')。
104.(4)图中所示两种算法的s盒查替逻辑框中的资源配比是不同的,具体比例是4:1(aes:sm4)。这里所指的资源配比是两种算法调用s盒逻辑的次数(注:在硬件电路实现中也即单个s盒逻辑电路的数目)。
105.图4显示了在一个实施例中,所述统一轮运算在全局流水线设计架构下的一份基础流水线逻辑(电路子模块)的电路实现架构,即一般的单个迭代轮的实现电路。
106.其中k和a/b/c/d分别表征该子模块的轮密钥输入和state激励输入,po和na/nb/nc表征该子模块的state结果输出。po=primary output,na=new a,这些信号的位宽都是一个字(32-bit)。
107.上部标有xor字样的浅灰框对应即为sm4算法的所述"前线性变换"的电路实现(注:aes算法的行移位这个前线性变换未被包含在该基础流水线逻辑中)。该xor部分电路具体可以采用一组四输入异或门实现,也可以采用多组两输入异或门实现。
108.从该具体示例可以看出,前线性变换电路包括至少一个异或门以及一个复用器就可以实现。
109.中部标有sb4x字样的浅灰框对应即为两种算法复用的所述"s盒查替变换"的电路实现(注:4x表示针对4个字节的查替处理)。
110.下部标有xnwa/xnws字样的浅灰框对应即为所述"后线性变换"的电路实现,即对应aes/sm4算法各自的异或网络子变换。
111.is_aes信号为1/0分别表示当前选中激活的是aes/sm4算法。
112.标有dffun字样的浅灰框(n=1,2...)对应为sm4算法在局部流水线设计架构下对输入a/b/c/d信号的多级移存电路实现,其所需的具体移存级数应等于本图中xor和sb4x两部分子电路的时序隔离段级数之和。其中涉及到的关于高处理性能和低资源开销两个实现指标的权衡考量,请参见权利要求3等相关描述。
113.图5显示了在一个实施例中,统一轮运算的复用sbox逻辑在局部流水线设计架构下的一种电路实现架构。
114.aiso和siso分别表示所述两种算法各自的、负责将gf(2^8)域上某元素同构映射
为gf((2^4)^2)复合域上对应元素的同构映射变换逻辑,即aiso为aes的同构映射变换逻辑,siso为sm4的同构映射变换逻辑。
115.aiso-1
和siso-1
分别表示上述两种同构映射的逆变换,也即算法各自的同构逆映射变换逻辑。
116.aaf和aaf-1
分别表示aes算法的仿射变换逻辑和逆仿射变换逻辑。
117.saf1和saf2分别表示sm4算法的第一仿射变换逻辑和第二仿射变换逻辑。
118.mi on gf((2^4)^2)表示所述统一的、在目标复合域上的乘法求逆逻辑。
119.本图中从上到下的三行,依次对应aes反向版、aes正向版、sm4的sbox逻辑。
120.图6显示了在一个实施例中,所述复用sbox逻辑中的非乘法求逆逻辑(图中仅以aes算法的仿射变换逻辑aaf为例)在局部流水线设计架构下的一种电路实现。
121.同构(逆)映射变换类逻辑都等效于某种矩阵乘法逻辑,在所述多项式之各项系数均为gf(2)域上元素(即0或1)的前提下,它们的电路实现可抽象为:输入数据是位宽为8的x,其各位记为x7,x6...,x0;输出数据是位宽为8的y,其各位记为y7,y6...,y0;某个输出位yi(i∈[0,7])的求算函数可表示为公式yi=fi(x7,x6...,x0)。简言之,一个输出位yi是若干输入位的异或结果。例如在一个实施例中,sm4算法基于相应的目标复合域的同构映射逻辑(即图5所示的siso)的实现表达式可表示为(这里“^”符号表示单bit的异或处理):
[0122]
y7=x6^x5^x4^x3^x2,
[0123]
y6=x7^x3^x2^x1,
[0124]
y5=x7^x5^x3^x2,
[0125]
y4=x5^x3^x2,
[0126]
y3=x7^x6^x5^x1,
[0127]
y2=x6^x5^x4^x2,
[0128]
y1=x6^x5^x2^x1,
[0129]
y0=x6^x5^x1^x0,
[0130]
由上述实现表达式观察得之,各个yi输出位对应有各自的xi组合异或求算函数,即所述fi(x7,x6...,x0)函数。注意,因xi最多就8个,故求算某个yi的异或处理对象不会超过8个。
[0131]
将上述实现表达式基于hdl语言进行rtl编码时,既可以类似于伪代码的风格来编写,也可基于dacse优化算法而以一种人工干预的风格来编写。在一个实施例中,所述人工干预的编写风格可采用最基础的xor2/and2(二输入的异或/相与)门单元电路来实施rtl编码。而更广泛地,针对不同的电路实现底层平台(譬如asic或fpga)、不同的代工厂制程工艺(譬如smic 40ll或umc 55ulp)、或者不同厂商的后端eda工具,所述两种风格的rtl代码在性能和资源两方面都可能会存在难以预判的差异,因此针对某种既定的实现场景组合、对两种编码风格的实际实现结果进行比较分析,才是可快速地获得较优结果的应有策略。
[0132]
与同构映射变换的实现类似地,(逆)仿射变换类逻辑也都等效于某种矩阵乘法逻辑,但它的输入数据可能会多出个常量1或0(注:原始的仿射变换相当于输入先乘以某个指定常数矩阵,然后再加上某个指定8-bit的常数向量)。其求算函数可表示为公式“yi=fi(x7,x6...,x0,c);(c=0,1)”。简言之,一个输出位yi是若干输入位、及一个非0即1之单bit常量的异或结果。例如sm4算法的第一仿射变换逻辑(saf1)的实现表达式可表示为(这里“^”符号表示单bit的异或处理;记c1=单bit的常量1)
[0133]
y7=x7^x6^x4^x1^x0^c1,
[0134]
y6=x7^x6^x5^x3^x0^c1,
[0135]
y5=x7^x6^x5^x4^x2,
[0136]
y4=x6^x5^x4^x3^x1^c1,
[0137]
y3=x5^x4^x3^x2^x0,
[0138]
y2=x7^x4^x3^x2^x1,
[0139]
y1=x6^x3^x2^x1^x0^c1,
[0140]
y0=x7^x5^x2^x1^x0^c1,
[0141]
由上述实现表达式观察得之,各个yi输出位对应有各自的xi&c1组合异或求算函数,即所述fi(x7,x6...,x0,c)函数。注意,因实际xi不会在同一表达式中出现8个,故求算某个yi的异或处理对象不会超过8个。
[0142]
综上所述,无论是同构(逆)映射变换还是(逆)仿射变换,这两类逻辑都可用只含xor门单元的逻辑电路来实现。具体到某种确定的实现场景组合下,基于所述伪代码的和人工干预的两种rtl编码风格而获得的实现结果电路,它们在处理性能和资源开销两方面往往就会有一定的表现差别。
[0143]
譬如,某个厂商的后端eda工具性能强大、能够花费较短时间而做出多次迭代尝试,那么就比较适合采用伪代码的编码风格,如此工具能获得更高的自动选择权、从而实现出更加满足实现约束的结果电路。反之,若已知eda厂商的后端工具表现不大稳定,则可考虑人工干预的编码风格、直接采用某种确定的xorn/andn门单元(n表示输入的数量)而获得“路径延迟可预判”的电路实现。再搭配上基于各种可能的实现场景组合的门单元调用分支,便可以最小的改动工作量而获得“基于某个指定性能指标而放松电路时钟频率约束以减少资源开销”的可重用性设计。
[0144]
图7显示了在一个实施例中,所述复用sbox逻辑的目标复合域上乘法求逆逻辑在局部流水线设计架构下的一种电路实现。我们可假设所述乘法求逆的输入、输出分别为xi、yo;若干级and2门单元的电路延迟之和为na,若干级xor2门单元的电路延迟之和为nx(n=1,2...表示级数,a/x代表单级的门单元电路延迟)。
[0145]
图中灰色斜体字表示求逆算法之中间变量的原理性标记,正体字表示电路实现中的信号名标记,斜体带底线字体表示gf(2^4)基域上相应的乘法、乘法求逆的逻辑子电路。
[0146]
图中灰底带小三角的矩形框表示诸如d触发器之类的时序逻辑元件,白底的椭圆框表示相应的门单元组合逻辑元件(其内的1x、2a等字样即为上述的门单元电路延迟之和)。图7中每一个d触发器是其左右两侧的时序隔离段的一个分隔点。
[0147]
图中h代表高4位输入数据,l代表低4位输入数据,m1/m2/m3是其左侧虚线框中运算电路的输出结果(注:m字样表示所述虚线框电路是相应的乘法逻辑)。
[0148]
在当前实施例中,由本图所示,时序隔离段的划分原则是:每一隔离段的组合路径延迟不超过n级基础门单元的电路延迟之和,n的取值根据处理性能及存储资源开销的预设标准而制定,例如在一个具体实施例中每一隔离段的组合路径延迟不超过3级基础门单元的电路延迟之和。譬如在u_mip子电路中,它的第一级d触发器之前的电路延迟之和为“1x+2a”(注意:其“从h_ff2到hhv的p变换”属于按位置换类处理,故在硬件电路实现中可认为不
mapping。
[0158]
aes算法之正向版sbox逻辑的前映射变换为“将gf(2^8)域上元素映射到目标复合域的同构映射变换
”‑
afiso。
[0159]
aes算法之正向版sbox逻辑的有限域求逆变换为“在目标复合域上的乘法求逆变换
”‑
cfinv。
[0160]
aes算法之正向版sbox逻辑的后映射变换包括“将目标复合域上元素映射回gf(2^8)域的同构逆映射变换,以及aes标准中的仿射变换
”‑
afiia。
[0161]
aes算法之反向版sbox逻辑的前映射变换包括“aes标准中的逆仿射变换,以及将gf(2^8)域上元素映射到目标复合域的同构映射变换
”‑
abiai。
[0162]
aes算法之反向版sbox逻辑的有限域求逆变换为“在目标复合域上的乘法求逆变换
”‑
cfinv。
[0163]
aes算法之反向版sbox逻辑的后映射变换为“将目标复合域上元素映射回gf(2^8)域的同构逆映射变换
”‑
abii。
[0164]
sm4算法的sbox逻辑的前映射变换包括“sm4标准中的第一仿射变换,以及将gf(2^8)域上元素映射到目标复合域的同构映射变换
”‑
saiso。
[0165]
sm4算法的sbox逻辑的有限域求逆变换为“在目标复合域上的乘法求逆变换
”‑
cfinv。
[0166]
sm4算法的sbox逻辑的后映射变换包括“将目标复合域上元素映射回gf(2^8)域的同构逆映射变换,以及sm4标准中的第二仿射变换
”‑
siia。
[0167]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1