CN115664640B - Sha-3算法的硬件实现方法、系统、存储介质及设备 - Google Patents
Sha-3算法的硬件实现方法、系统、存储介质及设备 Download PDFInfo
- Publication number
- CN115664640B CN115664640B CN202211662810.4A CN202211662810A CN115664640B CN 115664640 B CN115664640 B CN 115664640B CN 202211662810 A CN202211662810 A CN 202211662810A CN 115664640 B CN115664640 B CN 115664640B
- Authority
- CN
- China
- Prior art keywords
- calculation
- function
- iterative
- data
- iteration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 55
- 238000004364 calculation method Methods 0.000 claims abstract description 141
- 239000011159 matrix material Substances 0.000 claims abstract description 124
- 238000013507 mapping Methods 0.000 claims abstract description 55
- 238000007906 compression Methods 0.000 claims abstract description 53
- 230000006835 compression Effects 0.000 claims abstract description 52
- 230000006870 function Effects 0.000 claims description 197
- 125000004122 cyclic group Chemical group 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- RRLHMJHRFMHVNM-BQVXCWBNSA-N [(2s,3r,6r)-6-[5-[5-hydroxy-3-(4-hydroxyphenyl)-4-oxochromen-7-yl]oxypentoxy]-2-methyl-3,6-dihydro-2h-pyran-3-yl] acetate Chemical compound C1=C[C@@H](OC(C)=O)[C@H](C)O[C@H]1OCCCCCOC1=CC(O)=C2C(=O)C(C=3C=CC(O)=CC=3)=COC2=C1 RRLHMJHRFMHVNM-BQVXCWBNSA-N 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002759 woven fabric Substances 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明提供了一种SHA‑3算法的硬件实现方法、系统、存储介质及设备,涉及芯片设计技术领域,方法包括在迭代压缩结构中对每轮迭代压缩执行以下步骤:对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵;将第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表;基于第三迭代函数、第四迭代函数与第二迭代函数的关系以及第一映射表完成第三迭代函数和第四迭代函数计算;基于第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果。本发明在硬件上提高了SHA‑3算法的迭代运算性能。
Description
技术领域
本发明涉及芯片设计技术领域,尤其涉及一种SHA-3算法的硬件实现方法、系统、存储介质及设备。
背景技术
SHA-3算法是第三代安全散列算法(Secure Hash Algorithm 3),之前名为Keccak算法,是一个加密杂凑算法。安全散列算法也称为杂凑或哈希算法。Keccak 算法可以抵御最小的复杂度为2N的攻击,其中N为散列的大小,到目前为止,第三方密码分析显示Keccak算法没有严重的安全缺陷。
SHA-3系列由四个加密哈希函数(SHA3-224、SHA3-256、SHA3-384以及SHA3-512)和两个可扩展输出函数(SHAKE-128和SHAKE-256)组成。这两个可扩展输出函数和哈希函数不同,可扩展输出函数具有一个非常重要的特性,它可以将消息扩展至任意的长度,这个特性在全域散列、随机散列、流加密以及生成消息身份验证等方面具有广泛的应用。
在算法的硬件实现中,数据一般需要经过消息分组和填充、消息初始化和多轮函数迭代压缩等过程,其中函数迭代压缩过程是核心运算步骤,其计算复杂,资源消耗最多,耗时也最多。随着SHA-3加密算法的应用越来越广泛,对其性能要求也越来越高,特别是在先进制程的芯片中。
目前,关于SHA-3算法在硬件实现方面的技术很少,且仅仅是以功能实现为目标,性能较低。因此,需要一种提高SHA-3算法的硬件运算性能的方法。
发明内容
有鉴于此,本发明的目的在于提出一种SHA-3算法的硬件实现方法、系统、存储介质及设备,用以解决现有关于SHA-3算法在硬件实现方面的技术仅仅是以功能实现为目标,性能较低的问题。
基于上述目的,本发明提供了一种SHA-3算法的硬件实现方法,包括将三维矩阵形式的消息矩阵输入迭代压缩结构,并在迭代压缩结构中对每轮迭代压缩执行以下步骤:
对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵;
将第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表;
基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算;
基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算;
基于第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果。
在一些实施例中,对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵包括:
对输入的消息矩阵的每个列按位进行异或运算,得到每个列的值;
基于每个列的值对间隔列进行异或运算,并将得到的值与每个位进行异或运算,以完成第一迭代函数计算,并得到第一消息矩阵。
在一些实施例中,将第一消息矩阵进行循环移位包括:
将第一消息矩阵中具有相同x轴和y轴坐标的lane数据沿z轴进行循环移位。
在一些实施例中,将第一消息矩阵进行循环移位包括:
通过循环移位器对第一消息矩阵进行循环移位。
在一些实施例中,通过循环移位器对第一消息矩阵进行循环移位包括:
将第一消息矩阵的每个lane数据作为输入数据;
响应于当前lane数据已输入,判断当前lane数据循环移动的位数,并根据位数选择对应的循环移位子单元,并在选中的循环移位子单元中对当前lane数据进行循环移位,得到输出数据;
将输出数据传递给全译码器进行译码,并输出完整数据。
在一些实施例中,全译码器包括多个子译码器,每一个循环移动的位数对应一个预先生成的循环移位后的数据,每个子译码器存放一个预先生成的循环移位后的数据。
在一些实施例中,将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表包括:
将第二消息矩阵的每个lane数据写入存储单元,并得到关于每个lane数据和对应的存储单元的第一映射表。
在一些实施例中,基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算包括:
基于第三迭代函数与第二迭代函数的关系将第一映射表中每个lane与存储单元的对应关系进行重新映射,得到第二映射表,以完成第三迭代函数计算。
在一些实施例中,基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算包括:
从每个存储单元的端口读出数据,并基于第四迭代函数与第二迭代函数的关系将读出的相应数据进行拼接,并对拼接后的数据进行计算,以完成第四迭代函数计算。
在一些实施例中,基于第四迭代函数和轮常数完成第五迭代函数计算包括:
响应于第四迭代函数计算完成并得到第三消息矩阵,将第三消息矩阵中的指定lane数据与轮常数进行异或运算,以完成第五迭代函数计算。
在一些实施例中,指定lane数据为第三消息矩阵中x = 0, y = 0的数据。
在一些实施例中,轮常数为根据不同的迭代轮数而变换的常数。
在一些实施例中,方法还包括:
为每轮迭代压缩设置三个时钟周期,第一个时钟周期完成第一迭代函数和第二迭代函数计算,第二个时钟周期完成第三迭代函数计算,第三个时钟周期完成第四迭代函数和第五迭代函数计算。
在一些实施例中,方法还包括:
将本轮迭代压缩结果作为下一轮迭代压缩的输入。
在一些实施例中,方法还包括:
将待压缩数据输入至SHA-3模块后,对待压缩数据在三维矩阵中进行消息填充,得到三维矩阵形式的消息矩阵。
在一些实施例中,方法还包括:
在迭代压缩结构中共进行24轮迭代压缩。
在一些实施例中,方法还包括:
响应于第24轮迭代压缩计算完成并得到最终计算结果,将最终计算结果作为本分组的待压缩数据的最终输出值,并根据后续待压缩数据继续进行下一个分组的计算。
本发明的另一方面,还提供了一种SHA-3算法的硬件实现系统,包括迭代压缩结构,配置用于接收三维矩阵形式的消息矩阵,迭代压缩结构包括:
第一迭代函数计算模块,配置用于对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵;
第二迭代函数计算模块,配置用于将第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表;
第三迭代函数计算模块,配置用于基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算;
第四迭代函数计算模块,配置用于基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算;以及
第五迭代函数计算模块,配置用于基于第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果。
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述方法。
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述方法。
本发明至少具有以下有益技术效果:
本发明的SHA-3算法的硬件实现方法,通过在迭代压缩结构中对每轮迭代压缩输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵,并将第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表,并基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算,并基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算,并基于第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果,在硬件上实现了SHA-3算法的迭代运算性能的大幅提高,并简化了计算过程,节省了硬件资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明实施例提供的SHA-3算法的硬件实现方法的流程示意图;
图2为根据本发明实施例提供的SHA-3算法实现框架示意图;
图3为根据本发明实施例提供的三维矩阵形式的消息矩阵的结构示意图;
图4为根据本发明实施例提供的自定义的64bit的循环移位器的结构示意图;
图5为根据本发明实施例提供的SHA-3算法的硬件实现系统的示意图;
图6为根据本发明实施例提供的实现SHA-3算法的硬件实现方法的计算机可读存储介质的示意图;
图7为根据本发明实施例提供的执行SHA-3算法的硬件实现方法的计算机设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
基于上述目的,本发明实施例的第一个方面,提出了一种SHA-3算法的硬件实现方法的实施例。图1示出的是本发明提供的SHA-3算法的硬件实现方法的实施例的流程示意图。如图1所示,本发明实施例包括将三维矩阵形式的消息矩阵输入迭代压缩结构,并在迭代压缩结构中对每轮迭代压缩执行以下步骤:
步骤S10、对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵;
步骤S20、将第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表;
步骤S30、基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算;
步骤S40、基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算;
步骤S50、基于第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果。
本发明实施例的SHA-3算法的硬件实现方法,通过在迭代压缩结构中对每轮迭代压缩输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵,并将第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表,并基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算,并基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算,并基于第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果,在硬件上实现了SHA-3算法的迭代运算性能的大幅提高,并简化了计算过程,节省了硬件资源。
在一些实施例中,对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵包括:对输入的消息矩阵的每个列按位进行异或运算,得到每个列的值;基于每个列的值对间隔列进行异或运算,并将得到的值与每个位进行异或运算,以完成第一迭代函数计算,并得到第一消息矩阵。
在一些实施例中,将第一消息矩阵进行循环移位包括:将第一消息矩阵中具有相同x轴和y轴坐标的lane数据沿z轴进行循环移位。
在一些实施例中,将第一消息矩阵进行循环移位包括:通过循环移位器对第一消息矩阵进行循环移位。
在一些实施例中,通过循环移位器对第一消息矩阵进行循环移位包括:将第一消息矩阵的每个lane数据作为输入数据;响应于当前lane数据已输入,判断当前lane数据循环移动的位数,并根据位数选择对应的循环移位子单元,并在选中的循环移位子单元中对当前lane数据进行循环移位,得到输出数据;将输出数据传递给全译码器进行译码,并输出完整数据。
在一些实施例中,全译码器包括多个子译码器,每一个循环移动的位数对应一个预先生成的循环移位后的数据,每个子译码器存放一个预先生成的循环移位后的数据。
在一些实施例中,将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表包括:将第二消息矩阵的每个lane数据写入存储单元,并得到关于每个lane数据和对应的存储单元的第一映射表。
在一些实施例中,基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算包括:基于第三迭代函数与第二迭代函数的关系将第一映射表中每个lane与存储单元的对应关系进行重新映射,得到第二映射表,以完成第三迭代函数计算。
在一些实施例中,基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算包括:从每个存储单元的端口读出数据,并基于第四迭代函数与第二迭代函数的关系将读出的相应数据进行拼接,并对拼接后的数据进行计算,以完成第四迭代函数计算。
在一些实施例中,基于第四迭代函数和轮常数完成第五迭代函数计算包括:响应于第四迭代函数计算完成并得到第三消息矩阵,将第三消息矩阵中的指定lane数据与轮常数进行异或运算,以完成第五迭代函数计算。
在一些实施例中,指定lane数据为第三消息矩阵中x = 0, y = 0的数据。
在一些实施例中,轮常数为根据不同的迭代轮数而变换的常数。
在一些实施例中,方法还包括:为每轮迭代压缩设置三个时钟周期,第一个时钟周期完成第一迭代函数和第二迭代函数计算,第二个时钟周期完成第三迭代函数计算,第三个时钟周期完成第四迭代函数和第五迭代函数计算。
在一些实施例中,方法还包括:将本轮迭代压缩结果作为下一轮迭代压缩的输入。
在一些实施例中,方法还包括:将待压缩数据输入至SHA-3模块后,对待压缩数据在三维矩阵中进行消息填充,得到三维矩阵形式的消息矩阵。
在一些实施例中,方法还包括:在迭代压缩结构中共进行24轮迭代压缩。
在一些实施例中,方法还包括:响应于第24轮迭代压缩计算完成并得到最终计算结果,将最终计算结果作为本分组的待压缩数据的最终输出值,并根据后续待压缩数据继续进行下一个分组的计算。
以下为本发明的SHA-3算法的硬件实现方法的一示例性实施例:
图2为根据本发明实施例提供的SHA-3算法实现框架示意图。如图2所示,SHA-3算法(Secure Hash Algorithm 3,第三代安全散列算法)模块在硬件实现时可分为3个部分:消息填充分组、消息初始化、迭代压缩。
1.消息填充
待压缩数据输入至SHA-3模块后,首先进行消息填充,即消息末尾附加一个比特1和若干比特0,之后再附加一个比特1,附加的0的比特数目使得填充后消息的长度是分组长度的整数倍。
2.消息初始化
哈希函数在运算的过程中需要进行多次迭代运算,在迭代运算刚开始时需要进行迭代变量的初始化,初始化的迭代变量固化在算法的内部。
3.迭代压缩函数
SHA-3算法总共要进行 24 轮迭代运算,其中在每一轮计算过程中,置换函数包括五步迭代置换运算,在一个三维矩阵上进行运算。图3示出了三维矩阵形式的消息矩阵的结构示意图。如图3所示,消息值M在填充消息时,是在三维矩阵中进行填充的,按照三维矩阵中的坐标轴x、y、z 进行依次填充,在x轴上的元素记作为a[∙][y][z],在y轴上的元素记作为 a[x][∙][z],在z轴上的元素记作为a[x][y][∙],x轴、y轴、z轴上的元素对应关系为s[w(5y+x)+z]=a[x][y][z]。在三维矩阵进行迭代运算时,(x,y,z)表示一个比特,分别在x轴和y轴上进行模“5”运算,在 z 轴上进行模“w”运算,模“w”一般为64。
一轮迭代运算需要完成规定的五步迭代函数。五步迭代函数作为整个循环迭代过程中的核心运算,分别被命名为θ(即第一迭代函数)、ρ(即第二迭代函数)、π(即第三迭代函数)、χ(即第四迭代函数)和ι(即第五迭代函数),其中θ、ρ和π为线性运算,χ为非线性运算,其中0 ≤ x,y ≤ 4,0 ≤ y ≤ 63且为整数。
具体硬件实现方案如下:
a. θ运算表达式如下:
1)计算320个列的异或值,每个列(column)包含5bit的数据,将其按位异或,记为col_nor(x,z):
col_nor(x,z) = a(0,x,z) ^ a(1,x,z) ^ a(2,x,z) ^ a(3,x,z) ^ a(4,x,z);
其中“^”表示硬件描述语言verilog的异或计算。
2)计算间隔列异或值,步骤1)计算出了每一列的异或值,此步骤对“间隔”的两列的异或值再次进行异或计算,记为col_ga_nor(x,z):
col_ga_nor(x,z)= col_nor(x_0,z_0) ^ col_nor(x_1,z_1);
当0<x<5时,x_0=x-1;当x=0时,x_0=4;
z_0=z;
当0<=x<4时,x_1=x+1;当x=4时,x_1=0;
当0<z<64时,z_1=z-1;当z=0时,z_1=63;
其中,x和z都是整数。
3)计算θ(x,y,z) = col_ga_nor(x,z)^ a(x,y,z) ,其中x和y的取值范围为0,1,2,3,4,z的取指范围为0,1,2……63。
使用上述3个步骤计算大大简化了计算过程,减少了硬件资源的消耗。原本每个bit需要进行9次异或运算(使用9个异或门),1600个bit共需要14400个异或门,使用本实施例只需要320*4+320+1600=3200个异或门,同时也优化了性能。
b. ρ函数本身较为复杂,将其简化为ρ(x,y,z+s(x,y)) =θ(x,y,z), 本质上是将三维矩阵中具有相同x轴和y轴坐标的数据,沿z轴循环移位,具体移动的位数s(x, y)如下表1所示:
表1
在进行循环移位时,使用图4示出的自定义的64bit的循环移位器的结构示意图。
Input_data为输入数据,在本函数中即每个lane数据(具有相同x轴和y轴坐标的数据,如图3中z轴方向的通道数据),每个lane数据为64bit 数据;S为循环移位的位数,在本函数中即为s(x,y)。数据输入后,首先跟S的高2bit位(S[5:4])进行选择,即S为0-15之间时,选择Pre_shift_0(预计算移位器0,即循环移位子单元); S为16-31之间时,选择Pre_shift_16(预计算移位器16,即循环移位子单元);S为32-47之间时,选择Pre_shift_32(预计算移位器32,即循环移位子单元);S为48-63之间时,选择Pre_shift_48(预计算移位器48,即循环移位子单元)。其中:
Pre_shift_0 = Input_data;
Pre_shift_16 = { Input_data[47:0], Input_data[63:48]};
Pre_shift_32 = { Input_data[31:0], Input_data[63:32]};
Pre_shift_48 = { Input_data[15:0], Input_data[63:16]};
将选中的Pre_shift传递给后级的shift_64bit_16(64bit位宽输入,最大移位15bit的移位器),shift_64bit_16为全译码的方式并行展开,即每一个循环移位的位数对应一个预先生成的循环移位后的数据,根据S的低4bit位(S[3:0])进行选择。
例如,需要完成这样的一次操作,输入数据为64’h0010_0000_0000_0000,(64位16进制表示),向左循环移动36位,则:
Pre_shift_0 = 64’h0010_0000_0000_0000
Pre_shift_16 = 64’h0000_0000_0000_0010
Pre_shift_32 = 64’h0000_0000_0010_0000
Pre_shift_48 = 64’h0000_0100_0000_0000
S为36,用二进制表示为10_0100,其中高2bit位S[5:4]=2’b10,因此选择Pre_shift_32传递给后级的shift_64bit_16,作为其输入。S的低4bit位(S[3:0])为4’b0100,也就是十进制的4,作为移动的位数。
对于每一个循环移位的位数对应一个预先生成的循环移位后的数据,即解释说明了全译码的实现过程,对于shift_64bit_16,一个输入值最多有16种结果输出,这里的全译码方式是提前将移动1位,移动2位……移动15位的结果计算出来,当知道实际的移动位数时,直接通过一个选择器进行选择就可以了。
在计算完成ρ后,将数据存入模块内部的ram(存储单元)中,具体如下:
1)模块内部生成或调用25个规格相同的双口ram(两个端口均可进行读写操作),记为ram_0,ram_1……ram_24,深度为1,位宽为64bit;
2)将数据存入ram中,通过ram_A端口进行写入操作,ram的数据线对应数据Bit,Ram的地址线为0。每一组(x,y)对应一个ram,从本质上看就是按照lane进行存储。例如:ram_0的数据线ram_wdata的bit0存储ρ(0,0,0);ram_0的数据线ram_wdata的bit1存储ρ(0,0,1);ram_0的数据线ram_wdata的bit2存储ρ(0,0,2);ram_5的数据线ram_wdata的bit0存储ρ(1,0,0),ram_12的数据线ram_wdata的bit3存储ρ(2,2,3)以此类推,如下表2所示:
表2
x | y | ram |
0 | 0 | ram_0 |
0 | 1 | ram_1 |
0 | 2 | ram_2 |
0 | 3 | ram_3 |
0 | 4 | ram_4 |
1 | 0 | ram_5 |
1 | 1 | ram_6 |
1 | 2 | ram_7 |
1 | 3 | ram_8 |
1 | 4 | ram_9 |
2 | 0 | ram_10 |
2 | 1 | ram_11 |
2 | 2 | ram_12 |
2 | 3 | ram_13 |
2 | 4 | ram_14 |
3 | 0 | ram_15 |
3 | 1 | ram_16 |
3 | 2 | ram_17 |
3 | 3 | ram_18 |
3 | 4 | ram_19 |
4 | 0 | ram_20 |
4 | 1 | ram_21 |
4 | 2 | ram_22 |
4 | 3 | ram_23 |
4 | 4 | ram_24 |
c. π[y, 2x + 3y, z] =ρ[x, y, z],其中ρ置换函数运算与π置换函数运算类似,具体的差别主要在置换运算的坐标轴上,ρ置换函数运算是作用在 z 坐标轴上的,π置换函数运算是作用在x,y坐标轴上的。因此只需要将每个lane与ram的对应关系进行重新映射即可,重新映射后关系如下表3所示:
表3
x | y | ram |
0 | 0 | ram_0 |
0 | 1 | ram_8 |
0 | 2 | ram_11 |
0 | 3 | ram_19 |
0 | 4 | ram_22 |
1 | 0 | ram_2 |
1 | 1 | ram_5 |
1 | 2 | ram_13 |
1 | 3 | ram_16 |
1 | 4 | ram_24 |
2 | 0 | ram_4 |
2 | 1 | ram_7 |
2 | 2 | ram_10 |
2 | 3 | ram_18 |
2 | 4 | ram_21 |
3 | 0 | ram_1 |
3 | 1 | ram_9 |
3 | 2 | ram_12 |
3 | 3 | ram_15 |
3 | 4 | ram_23 |
4 | 0 | ram_3 |
4 | 1 | ram_6 |
4 | 2 | ram_14 |
4 | 3 | ram_17 |
4 | 4 | ram_20 |
d. χ[x, y, z] = ρ[x, y, z]⨁( ~ρ[x + 1, y, z])& ρ[x + 2, y, z];
将数据从ram中通过RAM_B端口读出,每个ram读出的数据记为ram_rdata_0, ram_rdata_1, ram_rdata_2,……ram_rdata_24,并按如下方式进行拼接:
Sheet0={ ram_rdata_0, ram_rdata_8,ram_rdata_11,ram_rdata_19,ram_rdata_22},
Sheet1={ ram_rdata_2, ram_rdata_5,ram_rdata_13,ram_rdata_16,ram_rdata_24},
Sheet2={ ram_rdata_4, ram_rdata_7,ram_rdata_10,ram_rdata_18,ram_rdata_21},
Sheet3={ ram_rdata_1, ram_rdata_9,ram_rdata_12,ram_rdata_15,ram_rdata_23},
Sheet4={ ram_rdata_3, ram_rdata_6,ram_rdata_14,ram_rdata_17,ram_rdata_20};
之后计算χ的值,在计算时按照Sheet进行计算,其中“~”表示对寄存器的每一位数据按位取反,如下:
χ[0, y, z] = Sheet0 ^(~Sheet1)^ Sheet2,
χ[1, y, z] = Sheet1 ^(~Sheet2)^ Sheet3,
χ[2, y, z] = Sheet2 ^(~Sheet3)^ Sheet4,
χ[3, y, z] = Sheet3 ^(~Sheet4)^ Sheet0,
χ[4, y, z] = Sheet4 ^(~Sheet0)^ Sheet1。
e. ι: [0,0, z] =χ[0,0, z]⨁RC[j],将三维矩阵中所有x = 0, y = 0的数据异或一个64 bit的轮常数RC,以破坏三维数组原有的对称性。其中RC[j]为根据不同的迭代次数而变换的常数。
在硬件实现时,只需要将χ三维矩阵的x = 0, y = 0的对应lane按位异或RC值即可。其他的lane的数据保持不变。此时即完成了一轮迭代计算函数。
所有24轮次的迭代计算过程都是相同的。在前23轮迭代函数计算完成后,其结果作为下一轮迭代计算的输入值。当完成第24轮计算后,其结果为本分组数据的最终输出值,之后再根据后续是否有数据进行下一个分组的计算。
每轮迭代函数需要3个时钟周期(3级流水)完成,具体如下:
第一级流水线:完成θ、ρ计算,并将数据按照前述的规则写入ram中;
第二级流水线:完成π计算,将数据按照前述的映射规则由ram中读出;
第三级流水线:完成χ、ι计算。
本实施例通过对迭代压缩函数进行多种方式的优化,包括:3级流水线结构、基于lane的ram存储、ram地址的坐标变换、自定义的多位循环移位器、并行计算等,实现迭代运算性能的大幅提高,最终使SHA-3算法在硬件反面实现了较高的性能。
本发明实施例的第二个方面,还提供了一种SHA-3算法的硬件实现系统。图5示出的是本发明提供的SHA-3算法的硬件实现系统的实施例的示意图。如图5所示,一种SHA-3算法的硬件实现系统包括迭代压缩结构100,配置用于接收三维矩阵形式的消息矩阵,迭代压缩结构100包括:第一迭代函数计算模块10,配置用于对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵;第二迭代函数计算模块20,配置用于将第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表;第三迭代函数计算模块30,配置用于基于第三迭代函数与第二迭代函数的关系以及第一映射表得到第二映射表,以完成第三迭代函数计算;第四迭代函数计算模块40,配置用于基于第四迭代函数与第二迭代函数的关系以及第一映射表完成第四迭代函数计算;以及第五迭代函数计算模块50,配置用于基于第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果。
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图6示出了根据本发明实施例提供的实现SHA-3算法的硬件实现方法的计算机可读存储介质的示意图。如图6所示,计算机可读存储介质3存储有计算机程序指令31。该计算机程序指令31被处理器执行时实现上述任意一项实施例的方法。
应当理解,在相互不冲突的情况下,以上针对根据本发明的SHA-3算法的硬件实现方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的SHA-3算法的硬件实现系统和存储介质。
本发明实施例的第四个方面,还提供了一种计算机设备,包括如图7所示的存储器402和处理器401,该存储器402中存储有计算机程序,该计算机程序被该处理器401执行时实现上述任意一项实施例的方法。
如图7所示,为本发明提供的执行SHA-3算法的硬件实现方法的计算机设备的一个实施例的硬件结构示意图。以如图7所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图7中以通过总线连接为例。输入装置403可接收输入的数字或字符信息,以及产生与SHA-3算法的硬件实现系统的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的SHA-3算法的硬件实现方法对应的程序指令/模块。存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储SHA-3算法的硬件实现方法的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的SHA-3算法的硬件实现方法。
最后需要说明的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (15)
1.一种SHA-3算法的硬件实现方法,其特征在于,包括将三维矩阵形式的消息矩阵输入迭代压缩结构,并在所述迭代压缩结构中对每轮迭代压缩执行以下步骤:
对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵,其进一步包括:
对输入的消息矩阵的每个列按位进行异或运算,得到所述每个列的值;
基于所述每个列的值对间隔列进行异或运算,并将得到的值与每个位进行异或运算,以完成第一迭代函数计算,并得到第一消息矩阵;
将所述第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将所述第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表,其进一步包括:
将所述第二消息矩阵的每个lane数据写入存储单元,并得到关于所述每个lane数据和对应的存储单元的第一映射表,所述lane数据为具有相同x轴和y轴坐标的数据;
基于第三迭代函数与所述第二迭代函数的关系以及所述第一映射表得到第二映射表,以完成所述第三迭代函数计算,其进一步包括:
基于第三迭代函数与所述第二迭代函数的关系将所述第一映射表中所述每个lane数据与存储单元的对应关系进行重新映射,得到第二映射表,以完成所述第三迭代函数计算;
基于第四迭代函数与所述第二迭代函数的关系以及所述第一映射表完成所述第四迭代函数计算,其进一步包括:
从每个存储单元的端口读出数据,并基于第四迭代函数与所述第二迭代函数的关系将读出的相应数据进行拼接,并对拼接后的数据进行计算,以完成所述第四迭代函数计算;
基于所述第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果,其进一步包括:
响应于所述第四迭代函数计算完成并得到第三消息矩阵,将所述第三消息矩阵中的指定lane数据与轮常数进行异或运算,以完成第五迭代函数计算。
2.根据权利要求1所述的方法,其特征在于,将所述第一消息矩阵进行循环移位包括:
将所述第一消息矩阵中的lane数据沿z轴进行循环移位。
3.根据权利要求1所述的方法,其特征在于,将所述第一消息矩阵进行循环移位包括:
通过循环移位器对所述第一消息矩阵进行循环移位。
4.根据权利要求3所述的方法,其特征在于,通过循环移位器对所述第一消息矩阵进行循环移位包括:
将所述第一消息矩阵的每个lane数据作为输入数据;
响应于当前lane数据已输入,判断所述当前lane数据循环移动的位数,并根据所述位数选择对应的循环移位子单元,并在选中的循环移位子单元中对所述当前lane数据进行循环移位,得到输出数据;
将所述输出数据传递给全译码器进行译码,并输出完整数据。
5.根据权利要求4所述的方法,其特征在于,所述全译码器包括多个子译码器,每一个循环移动的位数对应一个预先生成的循环移位后的数据,每个子译码器存放所述一个预先生成的循环移位后的数据。
6. 根据权利要求1所述的方法,其特征在于,所述指定lane数据为所述第三消息矩阵中x = 0, y = 0的数据。
7.根据权利要求1所述的方法,其特征在于,所述轮常数为根据不同的迭代轮数而变换的常数。
8.根据权利要求1所述的方法,其特征在于,还包括:
为每轮迭代压缩设置三个时钟周期,第一个时钟周期完成所述第一迭代函数和所述第二迭代函数计算,第二个时钟周期完成所述第三迭代函数计算,第三个时钟周期完成所述第四迭代函数和所述第五迭代函数计算。
9.根据权利要求1所述的方法,其特征在于,还包括:
将所述本轮迭代压缩结果作为下一轮迭代压缩的输入。
10.根据权利要求1所述的方法,其特征在于,还包括:
将待压缩数据输入至SHA-3模块后,对所述待压缩数据在三维矩阵中进行消息填充,得到所述三维矩阵形式的消息矩阵。
11.根据权利要求10所述的方法,其特征在于,还包括:
在所述迭代压缩结构中共进行24轮迭代压缩。
12.根据权利要求11所述的方法,其特征在于,还包括:
响应于第24轮迭代压缩计算完成并得到最终计算结果,将所述最终计算结果作为本分组的所述待压缩数据的最终输出值,并根据后续待压缩数据继续进行下一个分组的计算。
13.一种SHA-3算法的硬件实现系统,其特征在于,包括迭代压缩结构,配置用于接收三维矩阵形式的消息矩阵,所述迭代压缩结构包括:
第一迭代函数计算模块,配置用于对输入的消息矩阵采取基于列的分层异或计算法,以完成第一迭代函数计算,并得到第一消息矩阵,其进一步配置用于对输入的消息矩阵的每个列按位进行异或运算,得到所述每个列的值;基于所述每个列的值对间隔列进行异或运算,并将得到的值与每个位进行异或运算,以完成第一迭代函数计算,并得到第一消息矩阵;
第二迭代函数计算模块,配置用于将所述第一消息矩阵进行循环移位,以完成第二迭代函数计算,并得到第二消息矩阵,并将所述第二消息矩阵按照预设规则写入多个存储单元中,得到第一映射表,其进一步配置用于将所述第二消息矩阵的每个lane数据写入存储单元,并得到关于所述每个lane数据和对应的存储单元的第一映射表,所述lane数据为具有相同x轴和y轴坐标的数据;
第三迭代函数计算模块,配置用于基于第三迭代函数与所述第二迭代函数的关系以及所述第一映射表得到第二映射表,以完成所述第三迭代函数计算,其进一步配置用于基于第三迭代函数与所述第二迭代函数的关系将所述第一映射表中所述每个lane数据与存储单元的对应关系进行重新映射,得到第二映射表,以完成所述第三迭代函数计算;
第四迭代函数计算模块,配置用于基于第四迭代函数与所述第二迭代函数的关系以及所述第一映射表完成所述第四迭代函数计算,其进一步配置用于从每个存储单元的端口读出数据,并基于第四迭代函数与所述第二迭代函数的关系将读出的相应数据进行拼接,并对拼接后的数据进行计算,以完成所述第四迭代函数计算;以及
第五迭代函数计算模块,配置用于基于所述第四迭代函数和轮常数完成第五迭代函数计算,并将其计算结果作为本轮迭代压缩结果,其进一步配置用于响应于所述第四迭代函数计算完成并得到第三消息矩阵,将所述第三消息矩阵中的指定lane数据与轮常数进行异或运算,以完成第五迭代函数计算。
14.一种计算机可读存储介质,其特征在于,存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-12任意一项所述的方法。
15.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-12任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211662810.4A CN115664640B (zh) | 2022-12-23 | 2022-12-23 | Sha-3算法的硬件实现方法、系统、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211662810.4A CN115664640B (zh) | 2022-12-23 | 2022-12-23 | Sha-3算法的硬件实现方法、系统、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115664640A CN115664640A (zh) | 2023-01-31 |
CN115664640B true CN115664640B (zh) | 2023-03-21 |
Family
ID=85022361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211662810.4A Active CN115664640B (zh) | 2022-12-23 | 2022-12-23 | Sha-3算法的硬件实现方法、系统、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115664640B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116186746B (zh) * | 2023-04-27 | 2023-07-14 | 暗链科技(深圳)有限公司 | 并行哈希加密方法、存储介质及电子设备 |
CN116186747A (zh) * | 2023-04-27 | 2023-05-30 | 暗链科技(深圳)有限公司 | 自适应哈希加密方法、非易失性可读存储介质及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913749A (zh) * | 2020-08-07 | 2020-11-10 | 山东大学 | 基于流水线的sm3算法fpga实现方法及系统 |
CN113300831A (zh) * | 2021-07-26 | 2021-08-24 | 苏州浪潮智能科技有限公司 | 一种安全散列算法的实现方法、系统、介质及设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017123631A1 (en) * | 2016-01-11 | 2017-07-20 | Stc.Unm | A privacy-preserving, mutual puf-based authentication protocol |
CN109005025B (zh) * | 2018-07-11 | 2021-07-02 | 桂林电子科技大学 | 一种面向散列函数的卷积压缩方法 |
US11303429B2 (en) * | 2019-06-28 | 2022-04-12 | Intel Corporation | Combined SHA2 and SHA3 based XMSS hardware accelerator |
CN114095149B (zh) * | 2021-11-12 | 2023-05-30 | 龙芯中科技术股份有限公司 | 信息加密方法、装置、设备及存储介质 |
CN114422110B (zh) * | 2022-03-30 | 2022-08-23 | 北京大学 | 一种面向长指令字的sm3哈希函数消息处理的快速实现方法 |
-
2022
- 2022-12-23 CN CN202211662810.4A patent/CN115664640B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913749A (zh) * | 2020-08-07 | 2020-11-10 | 山东大学 | 基于流水线的sm3算法fpga实现方法及系统 |
CN113300831A (zh) * | 2021-07-26 | 2021-08-24 | 苏州浪潮智能科技有限公司 | 一种安全散列算法的实现方法、系统、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115664640A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115664640B (zh) | Sha-3算法的硬件实现方法、系统、存储介质及设备 | |
KR20210130196A (ko) | 양자-보안 사물 인터넷을 위한 설정가능한 래티스 암호 프로세서 및 관련된 기법들 | |
US7856102B2 (en) | Methods and apparatus for providing a message authentication code using a pipeline | |
CN108073353B (zh) | 一种数据处理的方法及装置 | |
US5708667A (en) | Method for detecting and correcting error by means of a high-dimension matrix and device using the same | |
US7000064B2 (en) | Data handling system | |
CN110059493B (zh) | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统 | |
CN107800532B (zh) | 低成本密码加速器 | |
CN108959168B (zh) | 基于片上内存的sha512全流水电路及其实现方法 | |
JP5980274B2 (ja) | 多次元データのランダム化 | |
CN112650471A (zh) | 用于处理掩蔽数据的处理器和方法 | |
CN109144472B (zh) | 一种二元扩域椭圆曲线的标量乘法及其实现电路 | |
CN105099467A (zh) | Qc-ldpc码的编码方法及编码装置 | |
CN102355331A (zh) | 一种通用多模式译码装置 | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
US20210306134A1 (en) | Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
CN113721986B (zh) | 一种数据压缩方法、装置及电子设备和存储介质 | |
CN109672524A (zh) | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 | |
US11582039B2 (en) | Method for performing cryptographic operations in a processing device, corresponding processing device and computer program product | |
CN113741972A (zh) | 一种sm3算法的并行处理方法及电子设备 | |
CN113204372A (zh) | 存储受限型哈希算法的加速装置及方法 | |
CN102624402B (zh) | 一种ldpc译码器 | |
US20190319636A1 (en) | Component-efficient cyclic-redundancy-check-code-computation circuit | |
CN114519200B (zh) | 实时生成查找表的加密方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |