CN115208553B - Triad轻量级流密码加密算法的芯片实现装置及方法 - Google Patents
Triad轻量级流密码加密算法的芯片实现装置及方法 Download PDFInfo
- Publication number
- CN115208553B CN115208553B CN202210828915.6A CN202210828915A CN115208553B CN 115208553 B CN115208553 B CN 115208553B CN 202210828915 A CN202210828915 A CN 202210828915A CN 115208553 B CN115208553 B CN 115208553B
- Authority
- CN
- China
- Prior art keywords
- feedback shift
- linear feedback
- bit
- shift register
- loaded
- 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 68
- 238000001914 filtration Methods 0.000 claims abstract description 3
- 230000008569 process Effects 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 6
- 238000010521 absorption reaction Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- CLVFWRBVFBUDQU-UHFFFAOYSA-N 1,4-bis(2-aminoethylamino)-5,8-dihydroxyanthracene-9,10-dione Chemical group O=C1C2=C(O)C=CC(O)=C2C(=O)C2=C1C(NCCN)=CC=C2NCCN CLVFWRBVFBUDQU-UHFFFAOYSA-N 0.000 description 2
- 241000282376 Panthera tigris Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开了一种TRIAD轻量级流密码加密算法的芯片实现装置及方法,实现装置包括状态控制单元、线性反馈移位寄存器、反馈生成函数单元和输出滤波函数单元;状态控制单元用于调整和控制装置状态,根据装置当前所处阶段,控制输入和输出使能,控制密钥流产生;线性反馈移位寄存器用于记录表示加密算法的256位内部状态;反馈生成函数单元在状态控制单元的控制下执行更新;输出滤波函数单元用于提取线性反馈移位寄存器的内部状态,在时钟信号的控制下,选取部分特殊位执行异或和与运算,输出密文或消息认证码。本发明所公开的装置及方法设计紧凑、节约资源、提升数据吞吐率,为不同应用场景提供参考,以达到保障机密性和完整性的安全目的。
Description
技术领域
本发明涉及加密算法技术领域,特别涉及一种TRIAD轻量级流密码加密算法的芯片实现装置及方法。
背景技术
作为新一代信息通讯技术的代表,物联网已经成为技术和工业变革的中心推动力和经济社会可持续发展的关键技术。但在物联网技术高速发展的时代,物联网安全事故的频发,安全问题已经成为了物联网行业发展必须攻克的拦路虎。只有保障用户数据和隐私的安全,物联网技术才能持续普及和推广应用。
为了保障物联网设备的终端安全,业界已经形成了较为完备成熟的标准加密算法,如AES、SHA等,同时也出现了许多集成标准加密算法的安全处理器。但在物联网终端设备中,计算资源受限,传统密码无法适应其小型化和低功耗化的要求,导致难以部署其上。
聚焦于资源受限环境和嵌入系统,轻量级密码应运而生。轻量级密码针对资源受限环境(包括芯片性能、能耗、存储、运行时间等软硬件条件)兼顾了安全和性能。但目前还没有针对轻量级密码的相应的芯片实现装置和方法。
发明内容
为解决上述技术问题,本发明提供了一种TRIAD轻量级流密码加密算法的芯片实现装置及方法,并提出对应的并行方案设计,设计紧凑、节约资源、提升数据吞吐率,为不同应用场景提供参考,以达到保障机密性和完整性的安全目的。
为达到上述目的,本发明的技术方案如下:
一种TRIAD轻量级流密码加密算法的芯片实现装置,包括状态控制单元、线性反馈移位寄存器、反馈生成函数单元和输出滤波函数单元;
所述状态控制单元用于调整和控制装置状态,根据装置当前所处阶段,控制输入和输出使能,控制密钥流产生;
所述线性反馈移位寄存器包括一个80比特的线性反馈移位寄存器a和两个88比特的线性反馈移位寄存器b和c,每位的状态为0或1,用于记录表示加密算法的256位内部状态;
所述反馈生成函数单元设置输入端口IN,其核心部分为状态更新函数TriadUpd,在状态控制单元的控制下,状态更新函数TriadUpd执行更新,即根据线性反馈移位寄存器的值和数据msg产生反馈值来更新三个线性反馈移位寄存器的内部状态值;
所述输出滤波函数单元包含Triad密钥流输出函数,用于提取线性反馈移位寄存器的内部状态,在时钟信号的控制下,选取部分特殊位执行异或和与运算,输出密文或消息认证码。
一种TRIAD轻量级流密码加密算法的实现方法,采用如上所述的实现装置,包括加密过程和消息认证码生成过程。
上述方案中,所述加密过程包括如下阶段:
(1)加载阶段:复位后,清空线性反馈移位寄存器,状态控制单元进入加载阶段,控制每个线性反馈移位寄存器的最低位为上一个线性反馈移位寄存器的最高位,构成一个256比特的连续线性反馈移位寄存器;由输入端口IN载入密钥、初始向量和常数,每个时钟周期载入1比特的值,加载后的线性反馈移位寄存器得到了初始值;
(2)初始化阶段:状态控制单元控制装置进入初始化阶段,状态更新函数TriadUpd共执行1024轮更新,每一轮都要一个时钟周期,每轮的数据msg由输入端口IN载入,每轮的数据msg都是1比特0;
(3)处理明文阶段:进入工作模式,状态更新函数TriadUpd执行更新,此时每轮吸收数据msg为1比特0;输出滤波函数单元提取线性反馈移位寄存器的部分位,利用其中的Triad密钥流输出函数生成1比特密钥流,然后将密钥流与输入端口IN载入的明文进行异或运算,生成1比特密文;
(4)重复步骤(3),直到所有明文被载入并与密钥流进行了异或运算,生成密文并输出。
上述方案中,所述消息认证码生成过程包括如下阶段:
(1)加载阶段:复位后,清空线性反馈移位寄存器,状态控制单元进入加载阶段,控制每个线性反馈移位寄存器的最低位为上一个线性反馈移位寄存器的最高位,构成一个256比特的连续线性反馈移位寄存器;由输入端口IN载入密钥、初始向量和常数,每个时钟周期载入1比特的值,加载后的线性反馈移位寄存器得到了初始值;
(2)初始化阶段:状态控制单元控制装置进入初始化阶段,状态更新函数TriadUpd共执行1024轮更新,每一轮都要一个时钟周期,每轮的数据msg由输入端口IN载入,其中,第一轮载入的数据msg是1比特1,后面的1023轮载入的数据msg是1比特0;
(3)处理关联数据阶段:由输入端口IN载入关联数据,并对关联数据进行长度填充;假设关联数据A中有adlen字节,填充后的关联数据用表示,/>的字节大小变为adlen+7,将填充后的关联数据一位一位载入作为数据msg,状态更新函数TriadUpd执行更新,直到所有关联数据被载入;
(4)处理明文阶段:由输入端口IN载入明文,将明文一位一位载入作为数据msg,状态更新函数TriadUpd执行更新,直到所有明文被载入;
(5)最终化阶段:状态控制单元控制装置进入最终化阶段,共执行1024轮,每轮需要一个时钟周期,每个时钟周期更新所需的数据msg由输入端口IN载入,该过程与初始化阶段操作相同,第一轮载入的数据msg是1比特1,后面的1023轮载入的数据msg是1比特0;
(6)生成消息认证码阶段:状态更新函数TriadUpd执行64轮更新,每轮从输入端口IN载入的数据msg为1比特的0;输出滤波函数单元提取线性反馈移位寄存器的部分位,利用其中的Triad密钥流输出函数生成64位消息认证码并输出。
进一步的技术方案中,所述加载阶段中,输入值顺序为a[80]…a[1],b[88]…b[1],c[88]…c[1],其中,a[80]代表线性反馈移位寄存器a的第80位,a[1]代表第一个线性反馈移位寄存器a的第1位,b[88]为线性反馈移位寄存器b的第88位,b[1]代表线性反馈移位寄存器b的第1位,c[88]代表线性反馈移位寄存器c的第88位,c[1]代表线性反馈移位寄存器c的第1位;
加载阶段完成后,三个线性反馈移位寄存器的值分别设置为:
a[1:80]=(N[0],K[4],con[3],K[3],con[2],K[2],con[1],K[1],con[0],K[0]);
b[1:88]=(N[11],N[10],…,N[1]);
c[1:88]=(K[15],K[14],…,K[5]);
a[1:80]代表线性反馈移位寄存器a的第1位到第80位,b[1:88]代表线性反馈移位寄存器b的第1位到第88位,c[1:88]代表线性反馈移位寄存器c的第1位到第88位,N[0]代表输入的初始向量的第0字节,K[4]代表输入的密钥的第4字节,con[3]代表输入的常数的第3字节,以此类推。
进一步的技术方案中,状态更新函数TriadUpd执行更新的方法如下:
其中,rt、pt、qt分别为线性反馈移位寄存器a、b和c的更新状态位,a[68]为线性反馈移位寄存器a的第68位,b[64]为线性反馈移位寄存器b的第64位,c[68]为线性反馈移位寄存器c的第68位,以此类推;
rt、pt、qt被三个线性反馈移位寄存器a、b和c吸收如下:
(a[1],a[2],…,a[80])←(rt,a[1],…,a[79])
(b[1],b[2],…,b[88])←(pt,b[2],…,b[87])
(c[1],c[2],…,c[88])←(qt,c[1],…,c[87])
如此,完成了三个线性反馈移位寄存器的反馈更新。
进一步的技术方案中,加密过程的处理明文阶段中,密文C[i]的生成方法如下:
其中,c[68]为线性反馈移位寄存器c的第68位,a[68]为线性反馈移位寄存器a的第68位,b[64]为线性反馈移位寄存器b的第64位,以此类推;zt为t时刻的密钥流,C[i]为第i轮生成的密文,M[i]为第i轮载入的明文。
进一步的技术方案中,所述生成消息认证码阶段中,消息认证码tag[i]的生成方法如下:
其中,tag[i]代表第i轮的消息认证码标签。
更进一步的技术方案中,所述反馈生成函数单元中有n个状态更新函数TriadUpd,分别命名为TriadUpd0、TriadUpd1,……,TriadUpd n-1,统称为TriadUpd k(k=0,1,…,n-1),这n个状态更新函数TriadUpd驱动线性反馈移位寄存器的第1位到第n位,在加载阶段,三个线性反馈移位寄存器首尾相连,一次载入n位的值;在状态更新时,每次移入n位的值;TriadUpd k的更新公式如下:
其中,c[68-k]代表线性反馈移位寄存器c的第68-k位,a[68-k]代表线性反馈移位寄存器a的第68-k位,b[64-k]代表线性反馈移位寄存器b的第64-k位,以此类推;
密钥流zt生成公式如下:
通过上述技术方案,本发明提供的TRIAD轻量级流密码加密算法的芯片实现装置及方法具有如下有益效果:
实验平台选择Xilinx Spartan-3系列FPGA,芯片型号位XC3S50A。在TRIAD-SC功能下x32最高吞吐率达到5350.40Mbps,在Spartan-3FPGA上基于关联数据验证加密的完整功能的TRIAD面积最小需要48个Slices,吞吐率最高可以达到4016.00Mbps。吞吐率/面积作为硬件效率的重要评价指标,在AEAD功能下,TRIAD的最大吞吐面积比为10.25。
因此,本发明的实现装置及方法可以在较小的面积达到较大的频率和吞吐率,基于关联数据的加密方案设计能同时满足对消息机密性和完整性的需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例所公开的一种TRIAD轻量级流密码加密算法的芯片实现装置示意图;
图2为加密过程流程图;
图3为消息认证码生成过程流程图;
图4为TRIAD算法状态转移示意图;
图5为加密过程的状态转移示意图;
图6为消息认证码生成过程的状态转移示意图;
图7为并行设计TriadUpd k更新模块结构;
图8为TRIAD并行x4结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
一、实现装置
本发明提供了一种TRIAD轻量级流密码加密算法的芯片实现装置,如图1所示,包括状态控制单元、线性反馈移位寄存器、反馈生成函数单元和输出滤波函数单元。
状态控制单元用于调整和控制装置状态,根据装置当前所处阶段,控制输入和输出使能,控制密钥流产生。
线性反馈移位寄存器(LFSR)包括一个80比特的线性反馈移位寄存器a和两个88比特的线性反馈移位寄存器b和c,每位的状态为0或1,用于记录表示加密算法的256位内部状态。
反馈生成函数单元设置输入端口IN,其核心部分为状态更新函数TriadUpd,在状态控制单元的控制下,状态更新函数TriadUpd执行更新,即根据线性反馈移位寄存器的值和数据msg产生反馈值来更新三个线性反馈移位寄存器的内部状态值。
输出滤波函数单元包含Triad密钥流输出函数,用于提取线性反馈移位寄存器的内部状态,在时钟信号的控制下,选取部分特殊位执行异或和与运算,输出密文或消息认证码。
TRIAD支持密钥K长度128位和初始向量N长度96位。TRIAD提供支持关联数据加密验证(AEAD),关联数据大小限制为不超过250-1字节,生成标签长度大小为64比特。内部状态大小为256位,包含3个LFSR(大小分别为80位、88位和88位),安全级别达到112位。
三个LFSR分别记作a=(a1||a2||…||a80),b=(b1||b2||…||b88)和c=(c1||c2||…||c88),内部状态首先在加载阶段进行初始设置,再由状态更新函数TriadUpd更新。
Triad工作时,首先需要设置LFSR的初始状态,即加载阶段。
定义32位常数:
(con[3]||con[2]||con[1]||con[0])=0xFFFFFFFE
此常数作为内部状态的一部分输入LFSR,这是为了保证密码在执行后续阶段时不存在内部全0的状态。加载完成后,三个LFSR初始状态如下(K密钥,N初始向量随机数):
a[1:80]=(N[0],K[4],con[3],K[3],con[2],K[2],con[1],K[1],con[0],K[0]);
b[1:88]=(N[11],N[10],…,N[1]);
c[1:88]=(K[15],K[14],…,K[5]);
a[1:80]代表线性反馈移位寄存器a的第1位到第80位,b[1:88]代表线性反馈移位寄存器b的第1位到第88位,c[1:88]代表线性反馈移位寄存器c的第1位到第88位,N[0]代表输入的初始向量的第0字节,K[4]代表输入的密钥的第4字节,con[3]代表输入的常数的第3字节,以此类推。
内部核心算法TriadUpd说明:
状态更新函数TriadUpd每次输入还有1比特的msg,产生更新位,执行更新的方法如下:
其中,rt、pt、qt分别为线性反馈移位寄存器a、b和c的更新状态位,a[68]为线性反馈移位寄存器a的第68位,b[64]为线性反馈移位寄存器b的第64位,c[68]为线性反馈移位寄存器c的第68位,以此类推;
Triad加密过程和生成消息认证码的过程,都基于状态更新函数TriadUpd的更新过程。
rt、pt、qt被三个线性反馈移位寄存器a、b和c吸收如下:
(a[1],a[2],…,a[80])←(rt,a[1],…,a[79])
(b[1],b[2],…,b[88])←(pt,b[2],…,b[87])
(c[1],c[2],…,c[88])←(qt,c[1],…,c[87])
如此,完成了三个线性反馈移位寄存器的反馈更新。
二、实现方法
一种TRIAD轻量级流密码加密算法的实现方法,采用如上所述的实现装置,包括加密过程和消息认证码生成过程。
加密过程是明文生成密文的过程,使信息不能被恶意用户获取,用于保证信息的机密性。消息认证码生成过程(也是生成标签过程、生成MAC过程)是对消息生成一个标签,用于判断经过验证的用户访问数据时,数据没有发生过任意改动,是原生数据,用于保证信息的完整性。两者功能不同,在TRIAD中相互独立,共同组成了完整的TRIAD加密算法,两者都是保障信息安全的手段。加密过程和消息认证码生成过程两者的核心算法相同,即上述状态更新函数TriadUpd执行更新的过程。
1、加密过程
加密过程可以有效的应用于只需要加密而不需要验证的场景,如图2所示,具体包括如下阶段:
(1)加载阶段:复位后,清空线性反馈移位寄存器,状态控制单元进入加载阶段,控制每个线性反馈移位寄存器的最低位为上一个线性反馈移位寄存器的最高位,构成一个256比特的连续线性反馈移位寄存器;由输入端口IN载入密钥、初始向量和常数,每个时钟周期载入1比特的值,加载后的线性反馈移位寄存器得到了初始值。
加载阶段中,输入值顺序为a[80]…a[1],b[88]…b[1],c[88]…c[1],其中,a[80]代表线性反馈移位寄存器a的第80位,a[1]代表第一个线性反馈移位寄存器a的第1位,b[88]为线性反馈移位寄存器b的第88位,b[1]代表线性反馈移位寄存器b的第1位,c[88]代表线性反馈移位寄存器c的第88位,c[1]代表线性反馈移位寄存器c的第1位;
加载阶段完成后,三个线性反馈移位寄存器的值分别设置为:
a[1:80]=(N[0],K[4],con[3],K[3],con[2],K[2],con[1],K[1],con[0],K[0]);
b[1:88]=(N[11],N[10],…,N[1]);
c[1:88]=(K[15],K[14],…,K[5]);
a[1:80]代表线性反馈移位寄存器a的第1位到第80位,b[1:88]代表线性反馈移位寄存器b的第1位到第88位,c[1:88]代表线性反馈移位寄存器c的第1位到第88位,N[0]代表输入的初始向量的第0字节,K[4]代表输入的密钥的第4字节,con[3]代表输入的常数的第3字节,以此类推。
(2)初始化阶段:状态控制单元控制装置进入初始化阶段,状态更新函数TriadUpd共执行1024轮更新,每一轮都要一个时钟周期,每轮的数据msg由输入端口IN载入,每轮的数据msg都是1比特0。
(3)处理明文阶段:进入工作模式,状态更新函数TriadUpd执行更新,此时每轮吸收数据msg不从输入端口IN载入,而是默认为1比特0;输出滤波函数单元提取线性反馈移位寄存器的部分位,利用其中的Triad密钥流输出函数生成1比特密钥流,然后将密钥流与输入端口IN载入的明文进行异或运算,生成1比特密文。
密文C[i]的生成方法如下:
其中,c[68]为线性反馈移位寄存器c的第68位,a[68]为线性反馈移位寄存器a的第68位,b[64]为线性反馈移位寄存器b的第64位,以此类推;zt为t时刻的密钥流,C[i]为第i轮生成的密文,M[i]为第i轮载入的明文。
(4)重复步骤(3),直到所有明文被载入并与密钥流进行了异或运算,生成密文并输出。
2、消息认证码生成过程
消息认证码生成过程直接输出验证标签作为关联数据的消息认证码,可以用于轻量化快速消息认证,如图3所示,具体包括如下阶段:
(1)加载阶段:复位后,清空线性反馈移位寄存器,状态控制单元进入加载阶段,控制每个线性反馈移位寄存器的最低位为上一个线性反馈移位寄存器的最高位,构成一个256比特的连续线性反馈移位寄存器;由输入端口IN载入密钥、初始向量和常数,每个时钟周期载入1比特的值,加载后的线性反馈移位寄存器得到了初始值。
加载阶段中,输入值顺序为a[80]…a[1],b[88]…b[1],c[88]…c[1],其中,a[80]代表线性反馈移位寄存器a的第80位,a[1]代表第一个线性反馈移位寄存器a的第1位,b[88]为线性反馈移位寄存器b的第88位,b[1]代表线性反馈移位寄存器b的第1位,c[88]代表线性反馈移位寄存器c的第88位,c[1]代表线性反馈移位寄存器c的第1位;
加载阶段完成后,三个线性反馈移位寄存器的值分别设置为:
a[1:80]=(N[0],K[4],con[3],K[3],con[2],K[2],con[1],K[1],con[0],K[0]);
b[1:88]=(N[11],N[10],…,N[1]);
c[1:88]=(K[15],K[14],…,K[5]);
a[1:80]代表线性反馈移位寄存器a的第1位到第80位,b[1:88]代表线性反馈移位寄存器b的第1位到第88位,c[1:88]代表线性反馈移位寄存器c的第1位到第88位,N[0]代表输入的初始向量的第0字节,K[4]代表输入的密钥的第4字节,con[3]代表输入的常数的第3字节,以此类推。
(2)初始化阶段:状态控制单元控制装置进入初始化阶段,状态更新函数TriadUpd共执行1024轮更新,每一轮都要一个时钟周期,每轮的数据msg由输入端口IN载入,其中,第一轮载入的数据msg是1比特1,后面的1023轮载入的数据msg是1比特0。
(3)处理关联数据阶段:由输入端口IN载入关联数据,并对关联数据进行长度填充;将填充后的关联数据一位一位载入作为数据msg,状态更新函数TriadUpd执行更新,执行轮数取决于关联数据长度,直到所有关联数据被载入。
假设关联数据A中有adlen字节,填充后的关联数据用表示,/>的字节大小变为adlen+7。详细如下:
(4)处理明文阶段:由输入端口IN载入明文,将明文一位一位载入作为数据msg,状态更新函数TriadUpd执行更新,执行轮数取决于明文长度,直到所有明文被载入;
(5)最终化阶段:状态控制单元控制装置进入最终化阶段,共执行1024轮,每轮需要一个时钟周期,每个时钟周期更新所需的数据msg由输入端口IN载入,该过程与初始化阶段操作相同,第一轮载入的数据msg是1比特1,后面的1023轮载入的数据msg是1比特0;
(6)生成消息认证码阶段:状态更新函数TriadUpd执行64轮更新,每轮从输入端口IN载入的数据msg为1比特的0;执行更新的方法如下:
rt、pt、qt被三个线性反馈移位寄存器a、b和c吸收如下:
(a[1],a[2],…,a[80])←(rt,a[1],…,a[79])
(b[1],b[2],…,b[88])←(pt,b[2],…,b[87])
(c[1],c[2],…,c[88])←(qt,c[1],…,c[87])
此时,输出滤波函数单元提取线性反馈移位寄存器的部分位,利用其中的Triad密钥流输出函数生成64位消息认证码并输出。
消息认证码tag[i]的生成方法如下:
其中,tag[i]代表第i轮的消息认证码标签。
三、并行方案
我们可以采取并行结构来获得更优的时间方案。但是,综合考虑资源面积的占用,希望两者可以复用TriadUpd核心算法功能模块,所以提出如图4所示的状态转移图串行实现以实现目标功能。
如图4所示,为TRIAD算法构建硬件结构转移有限状态机,方案依次经过IDLE启动状态、LOAD_1载入状态1、INIT_1初始状态1、WORK_1工作状态1、LOAD_2载入状态2、INIT_2初始状态2、WORK_2工作状态2、DONE结束状态。
其中,IDLE状态清空LFSR和计数器;LOAD_1状态和LOAD_2状态是加载状态,进行相同的工作,共执行256轮,初次载入LFSR;INIT_1是MAC生成前的整个LFSR更新初始化,共计进行两个1024轮和明文、关联数据比特轮加关联数据扩展7字节后的56轮;WORK_1状态进行64轮,生成64位消息认证码;INIT_2是密文生成前的LFSR状态更新工作,共进行1024轮;WORK_2状态生成密钥流与明文异或生成密文,共进行明文比特数轮。
将图4可以根据加密过程和消息认证码生成过程拆分成图5和图6。
如图5所示,TRIAD-SC加密过程,依次经过IDLE启动状态、LOAD_2载入状态2、INIT_2初始状态2、WORK_2工作状态2、DONE结束状态。
如图6所示,TRIAD-MAC消息认证码生成过程,依次经过IDLE启动状态、LOAD_1载入状态1、INIT_1初始状态1、WORK_1工作状态1、DONE结束状态。
为了更好达到实时性加密目的,尽可能提高吞吐率,吞吐率的提高可以从两方面着手:主频提高和并行度。本发明设计尽可能使寄存器配平(使较长路径缩短,较短路径加长),使其尽可能平衡以提高工作频率;并进行了多轮优化关键路径(即,从输入到输出经过延时最长的路径),降低了路径延时,使方案可以达到较高主频。
除此之外,提高吞吐率需求,本发明设计FPGA并行实现方案。流密码设计单周期吞吐为1比特,即每周期更新一轮内部状态、LFSR移位一次、加密1比特明文。
并行方案中,线性反馈移位寄存器分为两种状态,即载入状态和更新状态。
设计并行宽度为n,并行结构中,TRIAD中有n个状态更新函数TriadUpd,这n个状态更新函数驱动LFSR的第1位到第n位。在并行设计下,LFSR在载入时,3个LFSR首尾相连,可一次载入n位的值;LFSR状态更新时,移位变为每次移入n位的值,例如,LFSR[n+1]由LFSR[1]驱动,同时驱动下游的LFSR[2n+1]。
尝试进行电路展开已在单个时钟周期内执行更多的轮函数更新操作。TRIAD设计时,保持三个LFSR的前64位未被利用,没有插入抽头,以便进行有效展开。复制多个状态更新函数和Triad密钥流输出函数,允许一个时钟周期内更新n轮内部状态,和允许一个时钟周期加密n位明文和生成n位标签。
并行状态下,线性反馈移位寄存器每次更新n位,这也意味着每次会进行n位的移位。对于LFSR而言,更新部分从低位灌入,高位会由比其低n位部分驱动,所有位按照上述规律迭代驱动。
并行方案中,核心算法更新说明如下:
对于并行度为n的结构,状态更新函数TriadUpd会展开复制生成n份,分别命名为TriadUpd0、TriadUpd1,……,TriadUpd n-1,统称为TriadUpd k(k=0,1,…,n-1),这意味着之前在n个时钟周期完成的工作我们可以在1个时钟周期内进行更新完成,当然这也代表我们会多付出一部分面积为代价(可以根据所能付出的资源选择合适的并行度方案)。
对于每个TriadUpd k模块而言,会吸收1bit的输入msg和3个LFSR进行运算。如果把TriadUpd0看做串行未展开结构中进行的第一次更新,TriadUpd k其实是对应在这之后的第k轮更新。研究算法可知,线性反馈移位寄存器每轮要进行1bit的移位,所以以TriadUpd0为基准,偏移量为0,那么TriadUpd k的偏移量为k。
这n个状态更新函数TriadUpd驱动线性反馈移位寄存器的第1位到第n位,在加载阶段,三个线性反馈移位寄存器首尾相连,一次载入n位的值;在状态更新时,每次移入n位的值;TriadUpd k的更新公式如下:
其中,c[68-k]代表线性反馈移位寄存器c的第68-k位,a[68-k]代表线性反馈移位寄存器a的第68-k位,b[64-k]代表线性反馈移位寄存器b的第64-k位,以此类推;
密钥流zt生成公式如下:
由上述对应公式得,详细的TriadUpd k模块结构输入输出如图7所示。TriadUpd k四个与门提供非线性部分,其中z[k]为输出密钥流。
对于模块TriadUpd k来说,输入为LFSR1的a[68-k]、a[73-k]、a[74-k]、a[79-k]和a[80-k],LFSR2的b[64-k]、b[65-k]、b[66-k]、b[85-k]、b[87-k]和b[88-k],LFSR3的c[68-k]、c[77-k]、c[84-k]、c[85-k]、c[87-k]和c[88-k]以及1-bit msg,具体更新过程如并行部分描述上述公式所示。输出用于线性反馈移位寄存器状态更新和产生一位密钥流z[k],线性反馈移位寄存器的更新位为LFSR1 a[1+k]、LFSR2 b[1+k]和LFSR3 c[1+k]。
4输入4输出的并行度为4(x4)的TRIAD核心结构设计如图8所示。状态控制单元控制根据图4所设计的状态流程图,控制装置当前所处阶段,将影响LFSR状态更新和输出选择控制。
值得注意的是,由于每时钟周期执行4轮TriadUpd更新操作,所以计数器在每时钟周期进行+4操作。其中,明文M,生成密文C,消息认证码MAC标签TAG。标签TAG和密文C每时钟周期输出4比特,不同时输出,根据状态选择输出或不输出。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种TRIAD轻量级流密码加密算法的芯片实现装置,其特征在于,包括状态控制单元、线性反馈移位寄存器、反馈生成函数单元和输出滤波函数单元;
所述状态控制单元用于调整和控制装置状态,根据装置当前所处阶段,控制输入和输出使能,控制密钥流产生;
所述线性反馈移位寄存器包括一个80比特的线性反馈移位寄存器a和两个88比特的线性反馈移位寄存器b和c,每位的状态为0或1,用于记录表示加密算法的256位内部状态;
所述反馈生成函数单元设置输入端口IN,其核心部分为状态更新函数TriadUpd,在状态控制单元的控制下,状态更新函数TriadUpd执行更新,即根据线性反馈移位寄存器的值和数据msg产生反馈值来更新三个线性反馈移位寄存器的内部状态值;
所述输出滤波函数单元包含Triad密钥流输出函数,用于提取线性反馈移位寄存器的内部状态,在时钟信号的控制下,选取部分特殊位执行异或和与运算,输出密文或消息认证码。
2.一种TRIAD轻量级流密码加密算法的实现方法,采用如权利要求1所述的实现装置,其特征在于,包括加密过程和消息认证码生成过程。
3.根据权利要求2所述的实现方法,其特征在于,所述加密过程包括如下阶段:
(1)加载阶段:复位后,清空线性反馈移位寄存器,状态控制单元进入加载阶段,控制每个线性反馈移位寄存器的最低位为上一个线性反馈移位寄存器的最高位,构成一个256比特的连续线性反馈移位寄存器;由输入端口IN载入密钥、初始向量和常数,每个时钟周期载入1比特的值,加载后的线性反馈移位寄存器得到了初始值;
(2)初始化阶段:状态控制单元控制装置进入初始化阶段,状态更新函数TriadUpd共执行1024轮更新,每一轮都要一个时钟周期,每轮的数据msg由输入端口IN载入,每轮的数据msg都是1比特0;
(3)处理明文阶段:进入工作模式,状态更新函数TriadUpd执行更新,此时每轮吸收数据msg为1比特0;输出滤波函数单元提取线性反馈移位寄存器的部分位,利用其中的Triad密钥流输出函数生成1比特密钥流,然后将密钥流与输入端口IN载入的明文进行异或运算,生成1比特密文;
(4)重复步骤(3),直到所有明文被载入并与密钥流进行了异或运算,生成密文并输出。
4.根据权利要求2所述的实现方法,其特征在于,所述消息认证码生成过程包括如下阶段:
(1)加载阶段:复位后,清空线性反馈移位寄存器,状态控制单元进入加载阶段,控制每个线性反馈移位寄存器的最低位为上一个线性反馈移位寄存器的最高位,构成一个256比特的连续线性反馈移位寄存器;由输入端口IN载入密钥、初始向量和常数,每个时钟周期载入1比特的值,加载后的线性反馈移位寄存器得到了初始值;
(2)初始化阶段:状态控制单元控制装置进入初始化阶段,状态更新函数TriadUpd共执行1024轮更新,每一轮都要一个时钟周期,每轮的数据msg由输入端口IN载入,其中,第一轮载入的数据msg是1比特1,后面的1023轮载入的数据msg是1比特0;
(3)处理关联数据阶段:由输入端口IN载入关联数据,并对关联数据进行长度填充;假设关联数据A中有adlen字节,填充后的关联数据用表示,/>的字节大小变为adlen+7,将填充后的关联数据一位一位载入作为数据msg,状态更新函数TriadUpd执行更新,直到所有关联数据被载入;
(4)处理明文阶段:由输入端口IN载入明文,将明文一位一位载入作为数据msg,状态更新函数TriadUpd执行更新,直到所有明文被载入;
(5)最终化阶段:状态控制单元控制装置进入最终化阶段,共执行1024轮,每轮需要一个时钟周期,每个时钟周期更新所需的数据msg由输入端口IN载入,该过程与初始化阶段操作相同,第一轮载入的数据msg是1比特1,后面的1023轮载入的数据msg是1比特0;
(6)生成消息认证码阶段:状态更新函数TriadUpd执行64轮更新,每轮从输入端口IN载入的数据msg为1比特的0;输出滤波函数单元提取线性反馈移位寄存器的部分位,利用其中的Triad密钥流输出函数生成64位消息认证码并输出。
5.根据权利要求3或4所述的实现方法,其特征在于,所述加载阶段中,输入值顺序为a[80]…a[1],b[88]…b[1],c[88]…c[1],其中,a[80]代表线性反馈移位寄存器a的第80位,a[1]代表第一个线性反馈移位寄存器a的第1位,b[88]为线性反馈移位寄存器b的第88位,b[1]代表线性反馈移位寄存器b的第1位,c[88]代表线性反馈移位寄存器c的第88位,c[1]代表线性反馈移位寄存器c的第1位;
加载阶段完成后,三个线性反馈移位寄存器的值分别设置为:
a[1:80]=(N[0],K[4],con[3],K[3],con[2],K[2],con[1],K[1],con[0],K[0]);
b[1:88]=(N[11],N[10],…,N[1]);
c[1:88]=(K[15],K[14],…,K[5]);
a[1:80]代表线性反馈移位寄存器a的第1位到第80位,b[1:88]代表线性反馈移位寄存器b的第1位到第88位,c[1:88]代表线性反馈移位寄存器c的第1位到第88位,N[0]代表输入的初始向量的第0字节,K[4]代表输入的密钥的第4字节,con[3]代表输入的常数的第3字节,以此类推。
6.根据权利要求3或4所述的实现方法,其特征在于,状态更新函数TriadUpd执行更新的方法如下:
其中,rt、pt、qt分别为线性反馈移位寄存器a、b和c的更新状态位,a[68]为线性反馈移位寄存器a的第68位,b[64]为线性反馈移位寄存器b的第64位,c[68]为线性反馈移位寄存器c的第68位,以此类推;
rt、pt、qt被三个线性反馈移位寄存器a、b和c吸收如下:
(a[1],a[2],…,a[80])←(rt,a[1],…,a[79])
(b[1],b[2],…,b[88])←(pt,b[2],…,b[87])
(c[1],c[2],…,c[88])←(qt,c[1],…,c[87])
如此,完成了三个线性反馈移位寄存器的反馈更新。
7.根据权利要求3所述的实现方法,其特征在于,加密过程的处理明文阶段中,密文C[i]的生成方法如下:
其中,c[68]为线性反馈移位寄存器c的第68位,a[68]为线性反馈移位寄存器a的第68位,b[64]为线性反馈移位寄存器b的第64位,以此类推;zt为t时刻的密钥流,C[i]为第i轮生成的密文,M[i]为第i轮载入的明文。
8.根据权利要求4所述的实现方法,其特征在于,所述生成消息认证码阶段中,消息认证码tag[i]的生成方法如下:
其中,tag[i]代表第i轮的消息认证码标签。
9.根据权利要求3或4所述的实现方法,其特征在于,所述反馈生成函数单元中有n个状态更新函数TriadUpd,分别命名为TriadUpd0、TriadUpd1,……,TriadUpd n-1,统称为TriadUpd k(k=0,1,…,n-1),这n个状态更新函数TriadUpd驱动线性反馈移位寄存器的第1位到第n位,在加载阶段,三个线性反馈移位寄存器首尾相连,一次载入n位的值;在状态更新时,每次移入n位的值;TriadUpd k的更新公式如下:
其中,c[68-k]代表线性反馈移位寄存器c的第68-k位,a[68-k]代表线性反馈移位寄存器a的第68-k位,b[64-k]代表线性反馈移位寄存器b的第64-k位,以此类推;
密钥流zt生成公式如下:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210828915.6A CN115208553B (zh) | 2022-07-15 | 2022-07-15 | Triad轻量级流密码加密算法的芯片实现装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210828915.6A CN115208553B (zh) | 2022-07-15 | 2022-07-15 | Triad轻量级流密码加密算法的芯片实现装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115208553A CN115208553A (zh) | 2022-10-18 |
CN115208553B true CN115208553B (zh) | 2024-02-27 |
Family
ID=83581332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210828915.6A Active CN115208553B (zh) | 2022-07-15 | 2022-07-15 | Triad轻量级流密码加密算法的芯片实现装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115208553B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1059999A (zh) * | 1990-07-20 | 1992-04-01 | 埃利克逊Ge汽车交通控股股份有限公司 | 用于数字蜂窝式通信的加密系统 |
US6057719A (en) * | 1998-06-05 | 2000-05-02 | International Business Machines Corporation | Programmable, self-resetting divider |
WO2013069392A1 (ja) * | 2011-11-09 | 2013-05-16 | Kddi株式会社 | 非線形処理器、ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、マスク処理方法、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム |
CN108449171A (zh) * | 2018-02-09 | 2018-08-24 | 中国科学院软件研究所 | 一种轻量级杂凑密码摘要生成方法 |
CN112398639A (zh) * | 2020-11-04 | 2021-02-23 | 山东大学 | 一种Fountain轻量级加密算法的实现装置、方法及应用 |
CN112532377A (zh) * | 2020-12-08 | 2021-03-19 | 山东大学 | 一种Espresso流密码及其变体的硬件实现装置与方法 |
CN112654037A (zh) * | 2020-12-17 | 2021-04-13 | 安徽维德工业自动化有限公司 | 一种基于5g通信技术的工业网络安全加密处理方法 |
CN113612609A (zh) * | 2021-08-27 | 2021-11-05 | 山东大学 | 一种Fruit-80超轻量级加密算法的硬件实现装置及方法 |
-
2022
- 2022-07-15 CN CN202210828915.6A patent/CN115208553B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1059999A (zh) * | 1990-07-20 | 1992-04-01 | 埃利克逊Ge汽车交通控股股份有限公司 | 用于数字蜂窝式通信的加密系统 |
US6057719A (en) * | 1998-06-05 | 2000-05-02 | International Business Machines Corporation | Programmable, self-resetting divider |
WO2013069392A1 (ja) * | 2011-11-09 | 2013-05-16 | Kddi株式会社 | 非線形処理器、ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、マスク処理方法、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム |
CN108449171A (zh) * | 2018-02-09 | 2018-08-24 | 中国科学院软件研究所 | 一种轻量级杂凑密码摘要生成方法 |
CN112398639A (zh) * | 2020-11-04 | 2021-02-23 | 山东大学 | 一种Fountain轻量级加密算法的实现装置、方法及应用 |
CN112532377A (zh) * | 2020-12-08 | 2021-03-19 | 山东大学 | 一种Espresso流密码及其变体的硬件实现装置与方法 |
CN112654037A (zh) * | 2020-12-17 | 2021-04-13 | 安徽维德工业自动化有限公司 | 一种基于5g通信技术的工业网络安全加密处理方法 |
CN113612609A (zh) * | 2021-08-27 | 2021-11-05 | 山东大学 | 一种Fruit-80超轻量级加密算法的硬件实现装置及方法 |
Non-Patent Citations (3)
Title |
---|
Harttung, J.Lightweight Authenticated Encryption for Network-on-Chip Communications.《Meeting29th Great Lakes Symposium on VLSI (GLSVLSI)》.2019,全文. * |
Yun-Wen Lu. Lightweight 1.16 pJ/bit Processor for the Authenticated Encryption Scheme KetjeSR.《2019 International Symposium on VLSI Design, Automation and Test (VLSI-DAT)》.2019,全文. * |
张文哲.LED轻量级密码算法芯片的功耗优化.《电子设计工程》.2020,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN115208553A (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220138349A1 (en) | Cryptographic architecture for cryptographic permutation | |
Daemen et al. | Fast hashing and stream encryption with PANAMA | |
US9225521B2 (en) | Apparatus and method for skein hashing | |
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
CN112398639B (zh) | 一种Fountain轻量级加密算法的实现装置、方法及应用 | |
Ting et al. | An FPGA based SHA-256 processor | |
KR20170067133A (ko) | 하드웨어 지원 빠른 의사 난수 생성 방법 및 시스템 | |
Baby Chellam et al. | AES hardware accelerator on FPGA with improved throughput and resource efficiency | |
Shahbazi et al. | Design and implementation of an ASIP-based cryptography processor for AES, IDEA, and MD5 | |
TW201812637A (zh) | 低成本之密碼加速器 | |
CN116488794B (zh) | 基于fpga的高速sm4密码模组实现方法及装置 | |
WO2011123575A1 (en) | Cryptographic processor with dynamic update of encryption state | |
Pirzada et al. | Implementation of CMAC Authentication Algorithm on FPGA for Satellite Communication | |
Nabil et al. | Design and implementation of pipelined and parallel AES encryption systems using FPGA | |
Gilbert et al. | Decorrelated Fast Cipher: an AES Candidate | |
US20060230274A1 (en) | Method and system for hardware accelerator for implementing F9 integrity algorithm in WCDMA compliant handsets | |
CN115208553B (zh) | Triad轻量级流密码加密算法的芯片实现装置及方法 | |
US20090254333A1 (en) | LFSR Emulation | |
CN114826560B (zh) | 一种轻量级分组密码cref实现方法及系统 | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
Kahri et al. | An FPGA implementation and comparison of the SHA-256 and Blake-256 | |
CN103888937B (zh) | 一种适用于无线传感器网络aes加密的低开销快速轮加密装置及方法 | |
Abdellatif et al. | Efficient parallel-pipelined GHASH for message authentication | |
Park | Analysis of AES hardware implementations | |
Mujahid et al. | Efficient hardware implementation of ultralightweight RFID mutual authentication protocol |
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 |