CN116488794A - 基于fpga的高速sm4密码模组实现方法及装置 - Google Patents

基于fpga的高速sm4密码模组实现方法及装置 Download PDF

Info

Publication number
CN116488794A
CN116488794A CN202310721393.4A CN202310721393A CN116488794A CN 116488794 A CN116488794 A CN 116488794A CN 202310721393 A CN202310721393 A CN 202310721393A CN 116488794 A CN116488794 A CN 116488794A
Authority
CN
China
Prior art keywords
data
processed
module
message
core
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.)
Granted
Application number
CN202310721393.4A
Other languages
English (en)
Other versions
CN116488794B (zh
Inventor
王滨
吴程涛
陈加栋
王星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202310721393.4A priority Critical patent/CN116488794B/zh
Publication of CN116488794A publication Critical patent/CN116488794A/zh
Application granted granted Critical
Publication of CN116488794B publication Critical patent/CN116488794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Storage Device Security (AREA)

Abstract

本申请提供一种基于FPGA的高速SM4密码模组实现方法及装置,该装置包括:协议解析模块,用于从核调度模块;SM4多核调度模块,用于选取处于空闲状态的SM4算法核,将待处理报文存储至SM4算法核的输入存储区;SM4算法核,用于对待处理报文中的待加密数据进行加密处理,或对待处理报文中的待解密数据进行解密处理,得到待输出数据;将待输出数据存储至SM4算法核的输出存储区;SM4多核调度模块,用于向输出模块发送读取消息;输出模块,用于从SM4算法核的输出存储区中读取待输出数据。通过本申请方案,能够使用FPGA实现SM4算法,节约CPU资源。

Description

基于FPGA的高速SM4密码模组实现方法及装置
技术领域
本申请涉及网络安全领域,尤其是涉及一种基于FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)的高速SM4密码模组实现方法及装置。
背景技术
SM4算法可以抵抗差分攻击、线性攻击等攻击方式,具有安全性高等优点,从而被广泛使用。SM4算法是一个分组算法,SM4算法的分组长度为128比特,密钥长度为128比特,加密算法与密钥扩展算法均采用32轮非线性迭代结构,解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。SM4算法采用非线性迭代结构,每次迭代由一个轮函数给出,轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒给出。
虽然SM4算法的安全性高,但是,在CPU(Central Processing Unit,中央处理器)运行SM4算法时,由于SM4算法涉及移位、异或、S盒、迭代循环等运算,其实现过程复杂,运算效率低,需要占用大量CPU资源。
发明内容
有鉴于此,本申请提供一种基于FPGA的高速SM4密码模组实现方法及装置,能够使用FPGA实现SM4算法,从而节约CPU资源。
本申请提供一种基于FPGA的高速SM4密码模组实现装置,应用于位于前级模块与后级模块之间的FPGA,所述装置包括:
协议解析模块,用于从前级模块获取待处理报文,所述待处理报文包括待加密数据或待解密数据,对所述待处理报文进行协议解析,若所述待处理报文的协议类型为SM4类型,则将所述待处理报文发送给SM4多核调度模块;
SM4多核调度模块,用于从多个SM4算法核中选取处于空闲状态的SM4算法核,将所述待处理报文存储至所述SM4算法核的输入存储区;
SM4算法核,用于从所述输入存储区中读取所述待处理报文,对所述待处理报文中的待加密数据进行加密处理,或者,对所述待处理报文中的待解密数据进行解密处理,得到待输出数据;将所述待输出数据存储至所述SM4算法核的输出存储区,并向所述SM4多核调度模块发送完成消息;
所述SM4多核调度模块,还用于在接收到所述完成消息之后,向输出模块发送读取消息,所述读取消息包括所述SM4算法核的核标识;
输出模块,用于在接收到所述读取消息后,从所述核标识对应的SM4算法核的输出存储区中读取所述待输出数据,将所述待输出数据发送给后级模块。
本申请提供一种基于FPGA的高速SM4密码模组实现方法,应用于位于前级模块与后级模块之间的FPGA,所述FPGA包括协议解析模块、SM4多核调度模块、多个SM4算法核、输出模块,所述方法包括:
所述协议解析模块从所述前级模块获取待处理报文,所述待处理报文包括待加密数据或待解密数据,对所述待处理报文进行协议解析,若所述待处理报文的协议类型为SM4类型,则将所述待处理报文发送给SM4多核调度模块;
所述SM4多核调度模块从多个SM4算法核中选取处于空闲状态的SM4算法核,将所述待处理报文存储至所述SM4算法核的输入存储区;
所述SM4算法核从所述输入存储区中读取所述待处理报文,对所述待处理报文中的待加密数据进行加密处理,或者,对所述待处理报文中的待解密数据进行解密处理,得到待输出数据;将所述待输出数据存储至所述SM4算法核的输出存储区,并向所述SM4多核调度模块发送完成消息;
所述SM4多核调度模块在接收到所述完成消息之后,向所述输出模块发送读取消息,所述读取消息包括所述SM4算法核的核标识;
所述输出模块在接收到所述读取消息后,从所述核标识对应的SM4算法核的输出存储区中读取所述待输出数据,将所述待输出数据发送给所述后级模块。
本申请提供一种电子设备,包括:处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令;其中,处理器用于执行机器可执行指令,以实现上述基于FPGA的高速SM4密码模组实现方法。
本申请提供一种机器可读存储介质,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现上述基于FPGA的高速SM4密码模组实现方法。
本申请提供一种计算机程序,所述计算机程序存储于机器可读存储介质,当处理器执行所述机器可读存储介质中的所述计算机程序时,促使所述处理器实现上述基于FPGA的高速SM4密码模组实现方法。
由以上技术方案可见,本申请实施例中,在FPGA实现SM4密码模组,且给出SM4密码模组的结构,如协议解析模块、SM4多核调度模块、多个SM4算法核、输出模块,通过这些模块的配合实现SM4算法,从而能够使用FPGA实现SM4算法,节约CPU资源,运算速度更高,运算效率更高,将算法速度最大化,资源占用率更少。由于在FPGA部署多个SM4算法核,由多个SM4算法核并行处理,每个SM4算法核独立工作,互不干扰,并发运行,从而提高SM4算法的处理效率,运算速度更高,能够同时对多组数据进行加解密运算。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是基于FPGA的高速SM4密码模组实现装置的结构示意图;
图2是SM4算法核的结构示意图;
图3A和图3B是ECB工作模式下的加密流程和解密流程示意图;
图4A和图4B是CBC工作模式下的加密流程和解密流程示意图;
图5A和图5B是CFB工作模式下的加密流程和解密流程示意图;
图6A和图6B是OFB工作模式下的加密流程和解密流程示意图;
图7是基于FPGA的高速SM4密码模组实现方法的流程示意图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种基于FPGA的高速SM4密码模组实现装置,可以在FPGA实现SM4密码模组,该装置可以应用于位于前级模块与后级模块之间的FPGA,即SM4密码模组位于前级模块与后级模块之间。参见图1所示,为基于FPGA的高速SM4密码模组实现装置的结构示意图,该装置可以为SM4密码模组,该装置可以包括协议解析模块、SM4多核调度模块、多个SM4算法核(以n个SM4算法核为例,n为大于1的正整数)和输出模块,即协议解析模块、SM4多核调度模块、多个SM4算法核和输出模块可以部署在FPGA。
协议解析模块,用于从前级模块获取待处理报文,该待处理报文可以包括待加密数据或待解密数据,对该待处理报文进行协议解析,若该待处理报文的协议类型为SM4类型,则将该待处理报文发送给SM4多核调度模块。
SM4多核调度模块,用于从多个SM4算法核中选取处于空闲状态的SM4算法核,将该待处理报文存储至该SM4算法核的输入存储区。
SM4算法核,用于从输入存储区中读取待处理报文,对该待处理报文中的待加密数据进行加密处理,得到待输出数据,或者,对该待处理报文中的待解密数据进行解密处理,得到待输出数据。然后,将该待输出数据存储至SM4算法核的输出存储区,并向SM4多核调度模块发送完成消息。
SM4多核调度模块,还用于在接收到该完成消息之后,向输出模块发送读取消息,该读取消息可以包括该SM4算法核的核标识。
输出模块,用于在接收到该读取消息之后,从该核标识对应的SM4算法核的输出存储区中读取待输出数据,将待输出数据发送给后级模块。
以下结合具体实施例,对协议解析模块、SM4多核调度模块、SM4算法核(以一个SM4算法核为例)和输出模块的功能进行说明。
第一,协议解析模块。
协议解析模块可以从前级模块获取待处理报文。比如说,前级模块可以是外部输入模块,如协议解析模块通过外部接口(如PCIE、USB、SATA、I2C、SPI等外部接口)与外部输入模块连接,并从外部输入模块获取待处理报文。或者,前级模块也可以是其它加解密运算模块,协议解析模块可以从其它加解密运算模块获取待处理报文,对此前级模块的类型不做限制。
该待处理报文可以包括待加密数据或者待解密数据,该待处理报文还可以包括协议类型字段,该协议类型字段用于表示该待处理报文的协议类型,如SM1类型、SM2类型、SM3类型、SM4类型等,基于此,协议解析模块还可以对该待处理报文进行协议解析,从而得到该待处理报文的协议类型。
若该待处理报文的协议类型不为SM4类型,则协议解析模块将该待处理报文分发给相应的算法模块进行处理,如该待处理报文的协议类型为SM1类型时,将该待处理报文分发给SM1算法模块进行处理,对此过程不做限制。
若该待处理报文的协议类型为SM4类型,则协议解析模块将该待处理报文发送给SM4多核调度模块。示例性的,协议解析模块将该待处理报文发送给SM4多核调度模块之前,还可以查询SM4多核调度模块的工作状态。若SM4多核调度模块的工作状态为空闲状态,则将待处理报文发送给SM4多核调度模块。
若SM4多核调度模块的工作状态为非空闲状态,则协议解析模块禁止将待处理报文发送给SM4多核调度模块,而是等到SM4多核调度模块的工作状态为空闲状态之后,才将待处理报文发送给SM4多核调度模块。在协议解析模块存在未发送的待处理报文时,协议解析模块不再从前级模块获取新待处理报文。
第二,SM4多核调度模块。
SM4多核调度模块可以维护状态表,该状态表可以包括每个SM4算法核的工作状态,该工作状态可以为空闲状态或者非空闲状态。其中,针对每个SM4算法核,该SM4算法核的工作状态的初始状态为空闲状态,即初始值均为空闲状态。SM4多核调度模块每次将待处理报文存储至某个SM4算法核的输入存储区之后,可以将该SM4算法核的工作状态修改为非空闲状态(即从空闲状态修改为非空闲状态)。SM4多核调度模块在接收到SM4算法核发送的完成消息之后,获知SM4算法核已经完成待处理报文的加解密运算,可以将该SM4算法核的工作状态修改为空闲状态(即从非空闲状态修改为空闲状态)。
基于上述状态表,SM4多核调度模块可以获知每个SM4算法核的工作状态,若不存在处于空闲状态的SM4算法核,即所有SM4算法核的工作状态均为非空闲状态,则SM4多核调度模块可以将本SM4多核调度模块的工作状态设置为非空闲状态。这样,协议解析模块可以获知SM4多核调度模块的工作状态为非空闲状态,并禁止将待处理报文发送给SM4多核调度模块。
若存在处于空闲状态的SM4算法核,即至少一个SM4算法核的工作状态为空闲状态,则SM4多核调度模块可以将本SM4多核调度模块的工作状态设置为空闲状态。这样,协议解析模块可以获知SM4多核调度模块的工作状态为空闲状态,并可以将待处理报文发送给SM4多核调度模块。
协议解析模块将待处理报文发送给SM4多核调度模块之后,SM4多核调度模块可以接收到待处理报文,并从多个SM4算法核中选取处于空闲状态的SM4算法核。比如说,基于状态表,SM4多核调度模块可以获知每个SM4算法核的工作状态,继而获知处于空闲状态的SM4算法核。从所有处于空闲状态的SM4算法核中选取一个SM4算法核。比如说,可以随机选取一个SM4算法核,也可以按照轮询顺序选取一个SM4算法核,还可以采用其它方式选取一个SM4算法核,对此选取方式不做限制,只要能够选取处于空闲状态的SM4算法核即可。
在选取处于空闲状态的SM4算法核(后续记为SM4算法核1)之后,SM4多核调度模块将待处理报文存储至SM4算法核1的输入存储区,以使SM4算法核1从输入存储区中读取待处理报文,并对该待处理报文进行加密或解密处理。
SM4多核调度模块还可以接收SM4算法核1返回的完成消息,该完成消息表示SM4算法核1已经完成待处理报文的加密或解密处理。比如说,SM4算法核1对待处理报文进行加密或解密处理后得到待输出数据,将待输出数据存储至SM4算法核1的输出存储区,并向SM4多核调度模块发送完成消息。
SM4多核调度模块在接收到该完成消息之后,可以向输出模块发送读取消息,该读取消息可以包括该SM4算法核1的核标识,该读取消息用于触发输出模块从SM4算法核1的输出存储区中读取待输出数据。
示例性的,SM4多核调度模块将待处理报文存储至SM4算法核1的输入存储区之后,还可以将该SM4算法核1的工作状态从空闲状态修改为非空闲状态。以及,SM4多核调度模块在接收到SM4算法核1发送的完成消息之后,还可以将SM4算法核1的工作状态从非空闲状态修改为空闲状态。
第三,SM4算法核。
SM4算法核可以从输入存储区中读取待处理报文,若该待处理报文包括待加密数据,则SM4算法核可以对该待处理报文中的待加密数据进行加密处理,得到待输出数据,对此加密过程不做限制。若该待处理报文包括待解密数据,则SM4算法核可以对该待处理报文中的待解密数据进行解密处理,得到待输出数据,对此解密过程不做限制。在得到待输出数据之后,SM4算法核将该待输出数据存储至SM4算法核的输出存储区,并向SM4多核调度模块发送完成消息。
第四,输出模块。
输出模块在接收到SM4多核调度模块发送的读取消息之后,可以从该读取消息中解析出SM4算法核的核标识,并从该核标识对应的SM4算法核的输出存储区中读取待输出数据,并将待输出数据发送给后级模块。
示例性的,后级模块可以是外部输入模块,如输出模块通过外部接口(如PCIE、USB、SATA、I2C、SPI等外部接口)与外部输入模块连接,并将待输出数据发送给外部输入模块。或者,后级模块也可以是其它加解密运算模块,输出模块可以将待输出数据发送给其它加解密运算模块,对此后级模块不做限制。
在一种可能的实施方式中,针对每个SM4算法核,该SM4算法核可以包括数据控制模块、加解密运算模块、密钥拓展模块、轮密钥存储区、输入存储区和输出存储区。参见图2所示,为SM4算法核的结构示意图,对此SM4算法核的结构不做限制。以下结合具体实施例,对数据控制模块、加解密运算模块、密钥拓展模块、轮密钥存储区、输入存储区和输出存储区的功能进行说明。
1、输入存储区。输入存储区用于存储待处理报文,比如说,SM4多核调度模块可以将待处理报文存储至SM4算法核的输入存储区。
输入存储区可以采用BRAM(BlockRandom Access Memory,块随机存取存储器)实现,或者,输入存储区可以采用FIFO(First Input First Output,先进先出)实现,对此不做限制,以采用BRAM实现输入存储区为例。其中,BRAM可以为双口BRAM,双口分别为a口和b口,a口为写,b口为读。信号线包括ena、enb、dina、dinb、douta、doutb、addra、addrb、wea、web等,ena和enb分别是两个口的使能信号,dina、dinb、douta、doutb是两组输入输出数据线,addra和addrb分别是两组地址线,wea和web是两个写使能端。
2、数据控制模块。
数据控制模块可以从输入存储区中读取待处理报文。比如说,SM4多核调度模块将待处理报文存储至输入存储区之后,可以向数据控制模块发送数据指令,该数据指令用于触发数据控制模块从输入存储区中读取待处理报文。基于此,数据控制模块在接收到该数据指令后,从输入存储区中读取待处理报文。
数据控制模块可以对待处理报文进行解析,得到对称密钥、工作模式、操作类型和指定长度的待处理数据,待处理数据为待加密数据或待解密数据。
示例性的,待处理报文可以包括对称密钥,数据控制模块可以从待处理报文中解析出对称密钥,如128比特的对称密钥,对此解析过程不做限制。在得到对称密钥之后,数据控制模块可以将对称密钥发送给密钥拓展模块。
待处理报文可以包括工作模式,工作模式用于表示待加密数据的加密方式或待解密数据的解密方式,数据控制模块可以从待处理报文中解析出工作模式,如ECB(Electronic Code Book,电子密码本)工作模式、CBC(Cipher Block Chaining,密码分组链接)工作模式、CFB(Cipher Feed Back,密文反馈)工作模式或者OFB(Output Feed Back,输出反馈)工作模式等,对此不做限制。
ECB工作模式是最基本的加密模式,相同的明文将加密成相同的密文,无初始化向量,容易受到密码本重放攻击。针对CBC工作模式,明文被加密前需要与前面密文进行异或运算后再加密,只要选择不同的初始化向量,相同的密文加密后会形成不同的密文。加密后的密文是上下文相关的,但明文的错误不会传递到后续分组。针对CFB工作模式,在分组加密后,按8位分组将密文和明文进行移位异或后得到输出,同时反馈回移位寄存器,最小可以按字节进行加解密。加密后的密文是上下文相关的,明文的错误会影响后面的密文。针对OFB工作模式,将分组密码作为同步序列密码运行,和CFB工作模式类似,但OFB工作模式使用前一个n位密文输出分组反馈回移位寄存器,加密后的密文是上下文相关的,明文的错误不会影响后面的密文。
待处理报文可以包括操作类型,数据控制模块可以从待处理报文中解析出操作类型,该操作类型可以为加密类型或者解密类型。在操作类型为加密类型时,待处理报文包括的是待加密数据,在操作类型为解密类型时,待处理报文包括的是待解密数据。当然,待处理报文也可以不包括操作类型,数据控制模块可以采用其它方式分析出待处理报文的操作类型,对此不做限制。
待处理报文可以包括待处理数据,数据控制模块可以从待处理报文中解析出待处理数据,该待处理数据可以为待加密数据或者待解密数据。由于加解密运算模块的分组长度为指定长度(如128比特),因此,数据控制模块可以将待处理报文中的数据分成指定长度的K组待处理数据,即数据控制模块对待处理报文进行解析时得到指定长度的K组待处理数据,K可以为正整数。
在得到工作模式、操作类型和待处理数据之后,数据控制模块可以将工作模式、操作类型和待处理数据发送给加解密运算模块。
示例性的,若工作模式为ECB工作模式,由于ECB工作模式不存在初始化向量,因此,数据控制模块可以将工作模式、操作类型和待处理数据发送给加解密运算模块。若工作模式为CBC工作模式、CFB工作模式或者OFB工作模式,由于CBC工作模式、CFB工作模式或者OFB工作模式均存在初始化向量,因此,数据控制模块还可以获取待处理数据对应的初始化向量(即IV值),并将待处理数据对应的初始化向量发送给加解密运算模块,即数据控制模块可以将工作模式、初始化向量、操作类型和待处理数据发送给加解密运算模块。
3、密钥拓展模块。
密钥拓展模块可以确定是否需要重新生成轮密钥,比如说,数据控制模块将对称密钥发送给密钥拓展模块之后,可以向密钥拓展模块发送开始使能信号,密钥拓展模块在接收到开始使能信号之后,确定是否需要重新生成轮密钥。
比如说,密钥拓展模块确定当前接收的对称密钥与轮密钥存储区内已存储的对称密钥是否相同。若不相同,则密钥拓展模块可以确定需要重新生成轮密钥。若相同,则密钥拓展模块可以确定不需要重新生成轮密钥。通过进行密钥比对,若当前接收的对称密钥与轮密钥存储区内已存储的对称密钥相同,则无需进行轮密钥运算,从而节省轮密钥的生成时间,节省加解密过程的时间。
若需要重新生成轮密钥,则密钥拓展模块可以基于对称密钥生成目标轮密钥,比如说,基于对称密钥(即输入密钥),可以通过移位、异或、S盒、迭代循环等运算得到目标轮密钥,对此目标轮密钥的生成方式不做限制。
在得到目标轮密钥之后,密钥拓展模块可以将目标轮密钥存储至轮密钥存储区,并向加解密运算模块发送轮密钥存储完成信号,该轮密钥存储完成信号用于触发加解密运算模块从轮密钥存储区中读取目标轮密钥。
其中,在将目标轮密钥存储至轮密钥存储区时,密钥拓展模块是将对称密钥(即当前接收的对称密钥)和目标轮密钥(即当前生成的目标轮密钥)一起存储至轮密钥存储区,替换轮密钥存储区内已存储的对称密钥和目标轮密钥。
若不需要重新生成轮密钥,则密钥拓展模块直接向加解密运算模块发送轮密钥存储完成信号,该轮密钥存储完成信号用于触发加解密运算模块从轮密钥存储区中读取目标轮密钥。在该情况下,不需要对轮密钥存储区内已存储的对称密钥和目标轮密钥进行更新,即保持对称密钥和目标轮密钥不变即可。
4、轮密钥存储区。轮密钥存储区用于存储对称密钥和目标轮密钥,比如说,密钥拓展模块可以将对称密钥和目标轮密钥存储至轮密钥存储区。轮密钥存储区可以采用BRAM实现,或者,可以采用FIFO实现,对此不做限制。
5、加解密运算模块。
加解密运算模块可以从轮密钥存储区中读取目标轮密钥。比如说,密钥拓展模块可以向加解密运算模块发送轮密钥存储完成信号,加解密运算模块在接收到轮密钥存储完成信号之后,可以从轮密钥存储区中读取目标轮密钥。
数据控制模块将工作模式、操作类型和待处理数据发送给加解密运算模块后,向加解密运算模块发送开始使能信号,加解密运算模块接收到开始使能信号后,基于目标轮密钥、工作模式、操作类型和待处理数据执行加解密运算。
示例性的,若操作类型为加密类型,则加解密运算模块获知待处理数据为待加密数据,且需要对待处理数据进行加密处理,基于此,加解密运算模块可以基于工作模式和目标轮密钥对待加密数据进行加密处理,得到待输出数据。
比如说,若该工作模式为ECB工作模式,则目标轮密钥和待加密数据作为输入数据,加解密运算模块采用ECB工作模式的加密流程进行加密处理,得到加密处理后的待输出数据。比如说,基于目标轮密钥和待加密数据,可以通过移位、异或、S盒、迭代循环等运算,得到加密处理后的待输出数据。
若该工作模式为CBC工作模式,则目标轮密钥和待加密数据作为输入数据,加解密运算模块采用CBC工作模式的加密流程进行加密处理,得到加密处理后的待输出数据。在工作模式为CBC工作模式时,数据控制模块还可以将初始化向量发送给加解密运算模块,即初始化向量、目标轮密钥和待加密数据作为输入数据,加解密运算模块采用CBC工作模式的加密流程进行加密处理,得到加密处理后的待输出数据。比如说,基于初始化向量、目标轮密钥和待加密数据,可以通过移位、异或、S盒、迭代循环等运算,得到加密处理后的待输出数据。
若该工作模式为CFB工作模式,则目标轮密钥和待加密数据作为输入数据,加解密运算模块采用CFB工作模式的加密流程进行加密处理,得到加密处理后的待输出数据。在工作模式为CFB工作模式时,数据控制模块还可以将初始化向量发送给加解密运算模块,即初始化向量、目标轮密钥和待加密数据作为输入数据,加解密运算模块采用CFB工作模式的加密流程进行加密处理,得到加密处理后的待输出数据。比如说,基于初始化向量、目标轮密钥和待加密数据,可以通过移位、异或、S盒、迭代循环等运算,得到加密处理后的待输出数据。
若该工作模式为OFB工作模式,则目标轮密钥和待加密数据作为输入数据,加解密运算模块采用OFB工作模式的加密流程进行加密处理,得到加密处理后的待输出数据。在工作模式为OFB工作模式时,数据控制模块还可以将初始化向量发送给加解密运算模块,即初始化向量、目标轮密钥和待加密数据作为输入数据,加解密运算模块采用OFB工作模式的加密流程进行加密处理,得到加密处理后的待输出数据。比如说,基于初始化向量、目标轮密钥和待加密数据,可以通过移位、异或、S盒、迭代循环等运算,得到加密处理后的待输出数据。
示例性的,若操作类型为解密类型,则加解密运算模块获知待处理数据为待解密数据,且需要对待处理数据进行解密处理,基于此,加解密运算模块可以基于工作模式和目标轮密钥对待解密数据进行解密处理,得到待输出数据。
比如说,若该工作模式为ECB工作模式,则目标轮密钥和待解密数据作为输入数据,加解密运算模块采用ECB工作模式的解密流程进行解密处理,得到解密处理后的待输出数据。比如说,基于目标轮密钥和待解密数据,可以通过移位、异或、S盒、迭代循环等运算,得到解密处理后的待输出数据。
若该工作模式为CBC工作模式,则目标轮密钥和待解密数据作为输入数据,加解密运算模块采用CBC工作模式的解密流程进行解密处理,得到解密处理后的待输出数据。在工作模式为CBC工作模式时,数据控制模块还将初始化向量发送给加解密运算模块,即初始化向量、目标轮密钥和待解密数据作为输入数据,采用CBC工作模式的解密流程进行解密处理,得到待输出数据。
若该工作模式为CFB工作模式,则目标轮密钥和待解密数据作为输入数据,加解密运算模块采用CFB工作模式的解密流程进行解密处理,得到解密处理后的待输出数据。在工作模式为CFB工作模式时,数据控制模块还将初始化向量发送给加解密运算模块,即初始化向量、目标轮密钥和待解密数据作为输入数据,采用CFB工作模式的解密流程进行解密处理,得到待输出数据。
若该工作模式为OFB工作模式,则目标轮密钥和待解密数据作为输入数据,加解密运算模块采用OFB工作模式的解密流程进行解密处理,得到解密处理后的待输出数据。在工作模式为OFB工作模式时,数据控制模块还将初始化向量发送给加解密运算模块,即初始化向量、目标轮密钥和待解密数据作为输入数据,采用OFB工作模式的解密流程进行解密处理,得到待输出数据。
示例性的,在得到待输出数据(即加密后的待输出数据或者解密后的待输出数据)之后,加解密运算模块还可以将该待输出数据发送给数据控制模块,由数据控制模块将该待输出数据存储至SM4算法核的输出存储区。
6、输出存储区。输出存储区用于存储待输出数据,比如说,数据控制模块可以将加密后的待输出数据或者解密后的待输出数据存储至输出存储区。输出存储区可以采用BRAM实现,或者,可以采用FIFO实现,对此不做限制。
在一种可能的实施方式中,参见图3A所示,为ECB工作模式下的加密流程示意图,明文分组1、明文分组2、明文分组3和明文分组4为4组待加密数据。加解密运算模块对明文分组1进行加密处理,得到密文分组1,对明文分组2进行加密处理,得到密文分组2,对明文分组3进行加密处理,得到密文分组3,对明文分组4进行加密处理,得到密文分组4。密文分组1、密文分组2、密文分组3和密文分组4分别为4组待加密数据对应的4组待输出数据。
参见图3B所示,为ECB工作模式下的解密流程示意图,密文分组1、密文分组2、密文分组3和密文分组4为4组待解密数据。对密文分组1进行解密处理,得到明文分组1,对密文分组2进行解密处理,得到明文分组2,对密文分组3进行解密处理,得到明文分组3,对密文分组4进行解密处理,得到明文分组4,明文分组1、明文分组2、明文分组3和明文分组4为4组待输出数据。
在一种可能的实施方式中,针对CBC工作模式下的加密流程或者解密流程,数据控制模块还可以将待处理数据对应的初始化向量发送给加解密运算模块。比如说,在当前待处理数据是第一组待处理数据时,数据控制模块可以从待处理报文中解析当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。在当前待处理数据不是第一组待处理数据时,若当前待处理数据为待加密数据,则数据控制模块将前一组待处理数据对应的待输出数据作为当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。若当前待处理数据为待解密数据,则数据控制模块将前一组待处理数据作为当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。
参见图4A所示,为CBC工作模式下的加密流程示意图,数据控制模块从待处理报文中解析明文分组1(待加密数据)对应的初始化向量,将初始化向量发送给加解密运算模块。加解密运算模块基于明文分组1和初始化向量进行异或(XOR),对异或后的数据进行加密,得到密文分组1(待输出数据)。
加解密运算模块可以将密文分组1发送给数据控制模块,数据控制模块可以将密文分组1(即前一组待处理数据对应的待输出数据)作为明文分组2(即当前待处理数据)的初始化向量,并将明文分组2和密文分组1发送给加解密运算模块。加解密运算模块基于明文分组2和密文分组1进行异或,对异或后的数据进行加密,得到密文分组2,将密文分组2发送给数据控制模块。数据控制模块可以将密文分组2作为明文分组3的初始化向量,以此类推。
参见图4B所示,为CBC工作模式下的解密流程示意图,数据控制模块从待处理报文中解析密文分组1(即待解密数据)对应的初始化向量,将密文分组1和初始化向量发送给加解密运算模块。加解密运算模块对密文分组1进行解密,基于解密后数据和初始化向量进行异或,异或后数据为明文分组1(待输出数据)。
参见图4B所示,数据控制模块可以将密文分组1(即前一组待处理数据)作为密文分组2(即当前待处理数据)对应的初始化向量,并将密文分组2和密文分组1发送给加解密运算模块。加解密运算模块对密文分组2进行解密,基于解密后数据和密文分组1进行异或,异或后数据为明文分组2。数据控制模块可以将密文分组2作为密文分组3对应的初始化向量,以此类推。
在一种可能的实施方式中,针对CFB工作模式下的加密流程或者解密流程,数据控制模块还可以将待处理数据对应的初始化向量发送给加解密运算模块。比如说,在当前待处理数据是第一组待处理数据时,数据控制模块可以从待处理报文中解析当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。在当前待处理数据不是第一组待处理数据时,若当前待处理数据为待加密数据,则数据控制模块将前一组待处理数据对应的待输出数据作为当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。若当前待处理数据为待解密数据,则数据控制模块将前一组待处理数据作为当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。
参见图5A所示,为CFB工作模式下的加密流程示意图,数据控制模块从待处理报文中解析明文分组1(即待加密数据)对应的初始化向量,将明文分组1和初始化向量发送给加解密运算模块。加解密运算模块对初始化向量进行加密,基于明文分组1和加密后的初始化向量进行异或,得到密文分组1(待输出数据)。
加解密运算模块将密文分组1发送给数据控制模块,数据控制模块将密文分组1(即前一组待处理数据对应的待输出数据)作为明文分组2(即当前待处理数据)的初始化向量,并将明文分组2和密文分组1发送给加解密运算模块。加解密运算模块对初始化向量(即密文分组1)进行加密,基于明文分组2和加密后的初始化向量进行异或,得到密文分组2,将密文分组2发送给数据控制模块。数据控制模块将密文分组2作为明文分组3的初始化向量,以此类推。
参见图5B所示,为CFB工作模式下的解密流程示意图,数据控制模块从待处理报文中解析密文分组1(即待解密数据)对应的初始化向量,将密文分组1和初始化向量发送给加解密运算模块。加解密运算模块对初始化向量进行加密,基于密文分组1和加密后的初始化向量进行异或,得到明文分组1(待输出数据)。
数据控制模块可以将密文分组1(即前一组待处理数据)作为密文分组2(即当前待处理数据)对应的初始化向量,并将密文分组2和密文分组1发送给加解密运算模块。加解密运算模块对初始化向量(即密文分组1)进行加密,基于密文分组2和加密后的初始化向量进行异或,得到明文分组2。数据控制模块可以将密文分组2作为密文分组3对应的初始化向量,以此类推。
在一种可能的实施方式中,针对OFB工作模式下的加密流程或者解密流程,数据控制模块还可以将待处理数据对应的初始化向量发送给加解密运算模块。比如说,在当前待处理数据是第一组待处理数据时,数据控制模块可以从待处理报文中解析当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。在当前待处理数据不是第一组待处理数据时,数据控制模块将前一组待处理数据对应的待输出数据与前一组待处理数据异或运算后的结果作为当前待处理数据对应的初始化向量,并将初始化向量发送给加解密运算模块。
参见图6A所示,为OFB工作模式下的加密流程示意图,数据控制模块从待处理报文中解析明文分组1(即待加密数据)对应的初始化向量,将明文分组1和初始化向量发送给加解密运算模块。加解密运算模块对初始化向量进行加密,基于明文分组1和加密后的初始化向量进行异或,得到密文分组1(待输出数据)。
加解密运算模块将密文分组1发送给数据控制模块,数据控制模块将密文分组1(即前一组待处理数据对应的待输出数据)与明文分组1(即前一组待处理数据)异或运算后的结果作为明文分组2(即当前待处理数据)对应的初始化向量,参见图6A所示,密文分组1与明文分组1异或运算后的结果,就是对明文分组1对应的初始化向量进行加密后的结果,因此,异或运算后的结果可以作为明文分组2对应的初始化向量。数据控制模块将明文分组2和明文分组2对应的初始化向量发送给加解密运算模块。加解密运算模块对该初始化向量进行加密,基于明文分组2和加密后的初始化向量进行异或,得到密文分组2,将密文分组2发送给数据控制模块。数据控制模块将密文分组2与明文分组2异或运算后的结果作为明文分组3对应的初始化向量,以此类推。
参见图6B所示,为OFB工作模式下的解密流程示意图,数据控制模块从待处理报文中解析密文分组1(即待解密数据)对应的初始化向量,将密文分组1和初始化向量发送给加解密运算模块。加解密运算模块对初始化向量进行加密,基于密文分组1和加密后的初始化向量进行异或,得到明文分组1(待输出数据)。
加解密运算模块将明文分组1发送给数据控制模块,数据控制模块将明文分组1(即前一组待处理数据对应的待输出数据)与密文分组1(即前一组待处理数据)异或运算后的结果作为密文分组2(即当前待处理数据)对应的初始化向量,参见图6B所示,明文分组1与密文分组1异或运算后的结果,就是对密文分组1对应的初始化向量进行加密后的结果,因此,异或运算后的结果可以作为密文分组2对应的初始化向量。数据控制模块将密文分组2和密文分组2对应的初始化向量发送给加解密运算模块。加解密运算模块对该初始化向量进行加密,基于密文分组2和加密后的初始化向量进行异或,得到明文分组2,将明文分组2发送给数据控制模块。数据控制模块将明文分组2与密文分组2异或运算后的结果作为密文分组3对应的初始化向量,以此类推。
以下结合一个具体例子对上述过程进行说明。在该例子中,输入存储区、轮密钥存储区和输出存储区均可以采用BRAM来实现。
协议解析模块:等待接收前级模块的使能信号,若有待处理报文输入,开始接收并判断此待处理报文是否为SM4类型,以SM4类型为例。检测SM4多核调度模块是否空闲,若空闲,则将待处理报文发送给SM4多核调度模块。
示例性的,所有BRAM的wea、addra、dina信号,都由协议解析模块进行控制,所有BRAM的ena信号,都由SM4多核调度模块进行控制。
SM4多核调度模块:轮询多个SM4算法核的空闲状态,有一个SM4算法核为空闲状态时,SM4多核调度模块对外表现为空闲状态;若有待处理报文输入,且有空闲SM4算法核,SM4多核调度模块负责开启SM4多核调度模块输入到BRAM的ena引脚,同时使此SM4算法核的状态变为非空闲状态,然后给出使能信号告知该SM4算法核开始运算。由于数据在FPGA内部传输的速度远远高于SM4算法核运算的速度,因此,可以实现多个SM4算法核并发运算。
等待SM4算法核运算完成后,SM4多核调度模块通知输出模块启动数据输出,等待输出模块全部取出数据后,释放该SM4算法核,恢复空闲状态。
SM4算法核的数据控制模块:等待SM4多核调度模块的使能信号之后,数据控制模块开始从输入存储区取出待处理报文,提取出初始化向量、对称密钥、工作模式、操作类型和指定长度的待处理数据(如128比特的分组数据)。将初始化向量、工作模式、操作类型和指定长度的待处理数据发送给加解密运算模块,将对称密钥发送给密钥拓展模块,使能加解密运算模块和密钥拓展模块,等待加解密运算模块返回结果(即待输出数据)以及完成信号。数据控制模块等到加解密运算模块返回待输出数据后,将待输出数据存储到输出存储区。
假设数据长度超过128比特,即存在多个待处理数据,则非第一组待处理数据(如第二组待处理数据)对应的初始化向量,可以根据工作模式进行控制:针对CBC加密、CFB加密,下一个分组运算的初始化向量为上一个分组运算的输出。针对CBC解密、CFB解密,下一个分组运算的初始化向量为上一个分组运算的密文。针对OFB加密、OFB解密,下一个分组运算的初始化向量为上一个分组运算的输出与输入明文(密文)的异或值。
在全部运算完成后,即多个待处理数据的加解密运算完成,数据控制模块通知SM4多核调度模块运算完成,由SM4多核调度模块通知输出模块取数据。
SM4算法核的密钥拓展模块:等待数据控制模块输入使能信号,判断本次的对称密钥是否与上一次的对称密钥相同,若相同,直接告知加解密运算模块启动轮函数运算,这样总的运算时间能减半,若不相同,则将对称密钥存储到轮密钥存储区,并开始轮密钥运算,将得到的目标轮密钥存储到轮密钥存储区。比如说,在轮密钥运算过程中,通过组合逻辑进行移位、S盒变换等操作,每一个轮次使用一个时钟周期,同时将每一轮次的轮密钥存入轮密钥存储区,地址从0-31递增存储。轮密钥运算完成后,通知加解密运算模块启动轮函数运算。
SM4算法核的加解密运算模块:等待数据控制模块输入使能信号,加解密运算模块根据工作模式和操作类型,对初始Xi、Xi+1、Xi+2、Xi+3进行赋值,对应关系如下:针对ECB加密、ECB解密、CBC解密,初始Xi、Xi+1、Xi+2、Xi+3为输入的明文(密文)值。针对CBC加密,初始Xi、Xi+1、Xi+2、Xi+3为输入的明文与初始化向量的异或值。针对OFB加密、OFB解密、CFB解密、CFB解密,初始Xi、Xi+1、Xi+2、Xi+3为输入的初始化向量。
等待轮密钥全部存储完成后,启动轮函数运算,加解密运算模块从轮密钥存储区中取出轮密钥与Xi、Xi+1、Xi+2、Xi+3进行异或,取轮密钥的顺序根据加密和解密决定,加密则从轮密钥存储区的地址0-31的顺序依次取轮密钥,解密则从轮密钥存储区的地址31-0的顺序依次取轮密钥。
通过组合逻辑进行移位、S盒变换等操作,每一轮次使用一个时钟周期,最后经历32轮的轮函数之后,输出结果(即待输出数据)。输出的结果也根据工作模式和操作类型进行不同的处理,对应关系如下:针对ECB加密、ECB解密、CBC加密,直接将结果X35、X34、X33、X32输出。针对CBC解密,将X35、X34、X33、X32与初始化向量异或后输出。针对OFB加密、OFB解密、CFB加密、CFB解密,将X35、X34、X33、X32与输入明文(密文)异或后输出。
输出模块:轮询或同时检测SM4多核调度模块给出的存储完成信号,取相应的收模算法核的待输出数据向后级模块发送。在待输出数据读取完成或向后级模块发送待输出数之后告知SM4多核调度模块,以释放此SM4算法核的资源。
由以上技术方案可见,在FPGA实现SM4密码模组,如协议解析模块、SM4多核调度模块、多个SM4算法核、输出模块,通过这些模块的配合实现SM4算法,从而能够使用FPGA实现SM4算法,节约CPU资源,运算速度更高,运算效率更高,将算法速度最大化,资源占用率更少。由于在FPGA部署多个SM4算法核,由多个SM4算法核并行处理,每个SM4算法核独立工作,互不干扰,并发运行,从而提高SM4算法的处理效率,运算速度更高,能够同时对多组数据进行加解密运算。针对SM4加解密的ECB、CBC、OFB、CFB等工作模式,多核并行运算给出完整实现方案,运算速度更高,大数据运算下,CBC、OFB、CFB的运算速度与ECB运算速度一致,均只需要32个时钟周期。输入存储区、输出存储区和轮密钥存储区均可以采用BRAM资源,资源占用率更少。
基于与上述装置同样的申请构思,本申请实施例中提出一种基于FPGA的高速SM4密码模组实现方法,应用于位于前级模块与后级模块之间的FPGA,FPGA包括协议解析模块、SM4多核调度模块、多个SM4算法核、输出模块,参见图7所示,为该方法的流程示意图,该方法可以包括:
步骤701、协议解析模块从前级模块获取待处理报文,该待处理报文包括待加密数据或待解密数据,对该待处理报文进行协议解析,若该待处理报文的协议类型为SM4类型,则将该待处理报文发送给SM4多核调度模块。
步骤702、SM4多核调度模块从多个SM4算法核中选取处于空闲状态的SM4算法核,将该待处理报文存储至SM4算法核的输入存储区。
步骤703、SM4算法核从输入存储区中读取待处理报文,对该待处理报文中的待加密数据进行加密处理,得到待输出数据,或者,对该待处理报文中的待解密数据进行解密处理,得到待输出数据;将该待输出数据存储至SM4算法核的输出存储区,并向SM4多核调度模块发送完成消息。
步骤704、SM4多核调度模块在接收到该完成消息之后,向输出模块发送读取消息,该读取消息可以包括SM4算法核的核标识。
步骤705、输出模块在接收到该读取消息后,从核标识对应的SM4算法核的输出存储区中读取该待输出数据,将该待输出数据发送给后级模块。
示例性的,SM4多核调度模块还可以维护状态表,该状态表可以包括每个SM4算法核的工作状态,且工作状态的初始状态为空闲状态。SM4多核调度模块在将待处理报文存储至SM4算法核的输入存储区之后,将SM4算法核的工作状态修改为非空闲状态。SM4多核调度模块在接收到SM4算法核发送的完成消息后,将SM4算法核的工作状态从非空闲状态修改为空闲状态。
若存在处于空闲状态的SM4算法核,SM4多核调度模块将本SM4多核调度模块的工作状态设置为空闲状态;若不存在处于空闲状态的SM4算法核,SM4多核调度模块将本SM4多核调度模块的工作状态设置为非空闲状态。
协议解析模块将该待处理报文发送给SM4多核调度模块,可以包括但不限于:若SM4多核调度模块的工作状态为空闲状态,则协议解析模块将该待处理报文发送给SM4多核调度模块;若SM4多核调度模块的工作状态为非空闲状态,则协议解析模块禁止将该待处理报文发送给SM4多核调度模块。
示例性的,SM4算法核可以包括数据控制模块、加解密运算模块、密钥拓展模块和轮密钥存储区。基于此,数据控制模块从输入存储区中读取待处理报文,对该待处理报文进行解析,得到对称密钥、工作模式、操作类型和指定长度的待处理数据,该待处理数据可以为待加密数据或待解密数据;将该对称密钥发送给密钥拓展模块,将该工作模式、操作类型和待处理数据发送给加解密运算模块。密钥拓展模块在需要重新生成轮密钥时,基于该对称密钥生成目标轮密钥,将该目标轮密钥存储至轮密钥存储区。加解密运算模块从该轮密钥存储区中读取该目标轮密钥;若操作类型为加密类型,该待处理数据为待加密数据,基于工作模式和目标轮密钥对待加密数据进行加密处理,得到待输出数据;若操作类型为解密类型,该待处理数据为待解密数据,基于工作模式和目标轮密钥对待解密数据进行解密处理,得到待输出数据;将待输出数据发送给数据控制模块,由数据控制模块将该待输出数据存储至输出存储区。
示例性的,密钥拓展模块还可以确定对称密钥与轮密钥存储区内已存储的对称密钥是否相同;若否,则确定需要重新生成轮密钥,并基于对称密钥生成目标轮密钥,将对称密钥和目标轮密钥存储至轮密钥存储区,并向加解密运算模块发送轮密钥存储完成信号,由加解密运算模块从轮密钥存储区中读取目标轮密钥;若是,则确定不需要重新生成轮密钥,并向加解密运算模块发送轮密钥存储完成信号,由加解密运算模块从轮密钥存储区中读取目标轮密钥。
示例性的,工作模式为ECB工作模式、CBC工作模式、CFB工作模式或者OFB工作模式。若工作模式为CBC工作模式、CFB工作模式或者OFB工作模式,数据控制模块获取待处理数据对应的初始化向量,并将待处理数据对应的初始化向量发送给加解密运算模块;加解密运算模块在待处理数据为待加密数据时,基于工作模式、初始化向量和目标轮密钥对待加密数据进行加密处理,得到待输出数据;在待处理数据为待解密数据时,基于工作模式、初始化向量和目标轮密钥对待解密数据进行解密处理,得到待输出数据。
示例性的,若对待处理报文进行解析时得到指定长度的K组待处理数据,K大于等于1,数据控制模块获取待处理数据对应的初始化向量,可以包括但不限于:针对CBC工作模式或CFB工作模式,在当前待处理数据是第一组待处理数据时,从待处理报文中解析当前待处理数据对应的初始化向量;在当前待处理数据不是第一组待处理数据时,若当前待处理数据为待加密数据,则将前一组待处理数据对应的待输出数据作为当前待处理数据对应的初始化向量;若当前待处理数据为待解密数据,则将前一组待处理数据作为当前待处理数据对应的初始化向量;或者,针对OFB工作模式,在当前待处理数据是第一组待处理数据时,从待处理报文中解析当前待处理数据对应的初始化向量;在当前待处理数据不是第一组待处理数据时,将前一组待处理数据对应的待输出数据与前一组待处理数据异或运算后的结果作为当前待处理数据对应的初始化向量。
由以上技术方案可见,本申请实施例中,在FPGA实现SM4密码模组,且给出SM4密码模组的结构,如协议解析模块、SM4多核调度模块、多个SM4算法核、输出模块,通过这些模块的配合实现SM4算法,从而能够使用FPGA实现SM4算法,节约CPU资源,运算速度更高,运算效率更高,将算法速度最大化,资源占用率更少。由于在FPGA部署多个SM4算法核,由多个SM4算法核并行处理,每个SM4算法核独立工作,互不干扰,并发运行,从而提高SM4算法的处理效率,运算速度更高,能够同时对多组数据进行加解密运算。
基于与上述方法同样的申请构思,本申请实施例提出一种电子设备,该电子设备可以包括处理器和机器可读存储介质。其中,机器可读存储介质存储有能够被处理器执行的机器可执行指令;处理器用于执行机器可执行指令,以实现上述基于FPGA的高速SM4密码模组实现方法。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,机器可读存储介质上存储有若干计算机指令,计算机指令被处理器执行时,能够实现上述示例的基于FPGA的高速SM4密码模组实现方法。
其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种基于FPGA的高速SM4密码模组实现装置,其特征在于,应用于位于前级模块与后级模块之间的FPGA,所述装置包括:
协议解析模块,用于从前级模块获取待处理报文,所述待处理报文包括待加密数据或待解密数据,对所述待处理报文进行协议解析,若所述待处理报文的协议类型为SM4类型,则将所述待处理报文发送给SM4多核调度模块;
SM4多核调度模块,用于从多个SM4算法核中选取处于空闲状态的SM4算法核,将所述待处理报文存储至所述SM4算法核的输入存储区;
SM4算法核,用于从所述输入存储区中读取所述待处理报文,对所述待处理报文中的待加密数据进行加密处理,或者,对所述待处理报文中的待解密数据进行解密处理,得到待输出数据;将所述待输出数据存储至所述SM4算法核的输出存储区,并向所述SM4多核调度模块发送完成消息;
所述SM4多核调度模块,还用于在接收到所述完成消息之后,向输出模块发送读取消息,所述读取消息包括所述SM4算法核的核标识;
输出模块,用于在接收到所述读取消息后,从所述核标识对应的SM4算法核的输出存储区中读取所述待输出数据,将所述待输出数据发送给后级模块。
2.根据权利要求1所述的装置,其特征在于,
所述SM4多核调度模块,还用于维护状态表,所述状态表包括每个SM4算法核的工作状态,且所述工作状态的初始状态为空闲状态;
所述SM4多核调度模块,还用于在将所述待处理报文存储至所述SM4算法核的输入存储区之后,将所述SM4算法核的工作状态修改为非空闲状态;
所述SM4多核调度模块,还用于在接收到SM4算法核发送的所述完成消息后,将所述SM4算法核的工作状态从非空闲状态修改为空闲状态。
3.根据权利要求1或2所述的装置,其特征在于,
所述SM4多核调度模块,还用于若存在处于空闲状态的SM4算法核,则将所述SM4多核调度模块的工作状态设置为空闲状态;若不存在处于空闲状态的SM4算法核,则将所述SM4多核调度模块的工作状态设置为非空闲状态;
所述协议解析模块将所述待处理报文发送给SM4多核调度模块时具体用于:若SM4多核调度模块的工作状态为空闲状态,则将所述待处理报文发送给SM4多核调度模块;或者,所述协议解析模块,还用于若SM4多核调度模块的工作状态为非空闲状态,则禁止将所述待处理报文发送给SM4多核调度模块。
4.根据权利要求1所述的装置,其特征在于,所述SM4算法核包括数据控制模块、加解密运算模块、密钥拓展模块和轮密钥存储区;
所述数据控制模块,用于从所述输入存储区中读取待处理报文,对待处理报文进行解析,得到对称密钥、工作模式、操作类型和指定长度的待处理数据,待处理数据为待加密数据或待解密数据;将所述对称密钥发送给密钥拓展模块,将所述工作模式、所述操作类型和所述待处理数据发送给加解密运算模块;
所述密钥拓展模块,用于若需要重新生成轮密钥,则基于所述对称密钥生成目标轮密钥,将所述目标轮密钥存储至轮密钥存储区;
所述加解密运算模块,用于从轮密钥存储区中读取目标轮密钥;若所述操作类型为加密类型,所述待处理数据为待加密数据,基于所述工作模式和所述目标轮密钥对待加密数据进行加密处理,得到待输出数据;若所述操作类型为解密类型,所述待处理数据为待解密数据,基于所述工作模式和所述目标轮密钥对待解密数据进行解密处理,得到待输出数据;将所述待输出数据发送给数据控制模块,由数据控制模块将所述待输出数据存储至输出存储区。
5.根据权利要求4所述的装置,其特征在于,所述密钥拓展模块,还用于确定所述对称密钥与轮密钥存储区内已存储的对称密钥是否相同;
若否,则确定需要重新生成轮密钥,并基于所述对称密钥生成目标轮密钥,将所述对称密钥和所述目标轮密钥存储至轮密钥存储区,向加解密运算模块发送轮密钥存储完成信号,由加解密运算模块从轮密钥存储区中读取目标轮密钥;
若是,则确定不需要重新生成轮密钥,并向加解密运算模块发送轮密钥存储完成信号,由加解密运算模块从轮密钥存储区中读取目标轮密钥。
6.根据权利要求4所述的装置,其特征在于,所述工作模式为ECB工作模式、CBC工作模式、CFB工作模式或者OFB工作模式;
所述数据控制模块,还用于若所述工作模式为CBC工作模式、CFB工作模式或者OFB工作模式,则获取所述待处理数据对应的初始化向量,并将所述待处理数据对应的初始化向量发送给所述加解密运算模块;
所述加解密运算模块,还用于在所述待处理数据为待加密数据时,基于所述工作模式、所述初始化向量和所述目标轮密钥对待加密数据进行加密处理,得到待输出数据;在所述待处理数据为待解密数据时,基于所述工作模式、所述初始化向量和所述目标轮密钥对待解密数据进行解密处理,得到待输出数据。
7.根据权利要求6所述的装置,其特征在于,若所述数据控制模块对待处理报文进行解析时得到指定长度的K组待处理数据,K大于等于1,所述数据控制模块获取所述待处理数据对应的初始化向量时具体用于:针对CBC工作模式或者CFB工作模式,在当前待处理数据是第一组待处理数据时,从所述待处理报文中解析当前待处理数据对应的初始化向量;在当前待处理数据不是第一组待处理数据时,若当前待处理数据为待加密数据,则将前一组待处理数据对应的待输出数据作为当前待处理数据对应的初始化向量;若当前待处理数据为待解密数据,则将前一组待处理数据作为当前待处理数据对应的初始化向量;
或者,针对OFB工作模式,在当前待处理数据是第一组待处理数据时,从所述待处理报文中解析当前待处理数据对应的初始化向量;在当前待处理数据不是第一组待处理数据时,将前一组待处理数据对应的待输出数据与前一组待处理数据异或运算后的结果作为当前待处理数据对应的初始化向量。
8.一种基于FPGA的高速SM4密码模组实现方法,其特征在于,应用于位于前级模块与后级模块之间的FPGA,所述FPGA包括协议解析模块、SM4多核调度模块、多个SM4算法核、输出模块,所述方法包括:
所述协议解析模块从所述前级模块获取待处理报文,所述待处理报文包括待加密数据或待解密数据,对所述待处理报文进行协议解析,若所述待处理报文的协议类型为SM4类型,则将所述待处理报文发送给SM4多核调度模块;
所述SM4多核调度模块从多个SM4算法核中选取处于空闲状态的SM4算法核,将所述待处理报文存储至所述SM4算法核的输入存储区;
所述SM4算法核从所述输入存储区中读取所述待处理报文,对所述待处理报文中的待加密数据进行加密处理,或者,对所述待处理报文中的待解密数据进行解密处理,得到待输出数据;将所述待输出数据存储至所述SM4算法核的输出存储区,并向所述SM4多核调度模块发送完成消息;
所述SM4多核调度模块在接收到所述完成消息之后,向所述输出模块发送读取消息,所述读取消息包括所述SM4算法核的核标识;
所述输出模块在接收到所述读取消息后,从所述核标识对应的SM4算法核的输出存储区中读取所述待输出数据,将所述待输出数据发送给所述后级模块。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述SM4多核调度模块维护状态表,所述状态表包括每个SM4算法核的工作状态,所述工作状态的初始状态为空闲状态;所述SM4多核调度模块在将所述待处理报文存储至所述SM4算法核的输入存储区之后,将所述SM4算法核的工作状态修改为非空闲状态;所述SM4多核调度模块在接收到SM4算法核发送的完成消息后,将所述SM4算法核的工作状态从非空闲状态修改为空闲状态;
若存在处于空闲状态的SM4算法核,所述SM4多核调度模块将本SM4多核调度模块的工作状态设置为空闲状态;若不存在处于空闲状态的SM4算法核,所述SM4多核调度模块将本SM4多核调度模块的工作状态设置为非空闲状态;
所述协议解析模块将所述待处理报文发送给SM4多核调度模块,包括:若SM4多核调度模块的工作状态为空闲状态,所述协议解析模块将所述待处理报文发送给所述SM4多核调度模块;若SM4多核调度模块的工作状态为非空闲状态,所述协议解析模块禁止将所述待处理报文发送给SM4多核调度模块。
10.根据权利要求8所述的方法,其特征在于,所述SM4算法核包括数据控制模块、加解密运算模块、密钥拓展模块和轮密钥存储区;所述方法还包括:
所述数据控制模块从所述输入存储区中读取待处理报文,对待处理报文进行解析,得到对称密钥、工作模式、操作类型和指定长度的待处理数据,待处理数据为待加密数据或待解密数据;将所述对称密钥发送给密钥拓展模块,将所述工作模式、所述操作类型和所述待处理数据发送给加解密运算模块;
所述密钥拓展模块在需要重新生成轮密钥时,基于所述对称密钥生成目标轮密钥,将所述目标轮密钥存储至轮密钥存储区;
所述加解密运算模块从轮密钥存储区中读取目标轮密钥;若所述操作类型为加密类型,所述待处理数据为待加密数据,基于所述工作模式和所述目标轮密钥对待加密数据进行加密处理,得到待输出数据;若所述操作类型为解密类型,所述待处理数据为待解密数据,基于所述工作模式和所述目标轮密钥对待解密数据进行解密处理,得到待输出数据;将所述待输出数据发送给所述数据控制模块,由所述数据控制模块将所述待输出数据存储至输出存储区;
其中,所述方法还包括:所述密钥拓展模块确定所述对称密钥与所述轮密钥存储区内已存储的对称密钥是否相同;若否,则确定需要重新生成轮密钥,并基于所述对称密钥生成目标轮密钥,将所述对称密钥和所述目标轮密钥存储至所述轮密钥存储区,并向所述加解密运算模块发送轮密钥存储完成信号,由所述加解密运算模块从所述轮密钥存储区中读取所述目标轮密钥;若是,则确定不需要重新生成轮密钥,并向所述加解密运算模块发送轮密钥存储完成信号,由所述加解密运算模块从所述轮密钥存储区中读取目标轮密钥;
其中,所述工作模式为ECB工作模式、CBC工作模式、CFB工作模式或者OFB工作模式;所述方法还包括:若所述工作模式为CBC工作模式、CFB工作模式或者OFB工作模式,所述数据控制模块获取所述待处理数据对应的初始化向量,并将所述待处理数据对应的初始化向量发送给所述加解密运算模块;所述加解密运算模块在所述待处理数据为待加密数据时,基于所述工作模式、所述初始化向量和所述目标轮密钥对待加密数据进行加密处理,得到待输出数据;在所述待处理数据为待解密数据时,基于所述工作模式、所述初始化向量和所述目标轮密钥对待解密数据进行解密处理,得到待输出数据;
其中,若对待处理报文进行解析时得到指定长度的K组待处理数据,K大于等于1,所述数据控制模块获取所述待处理数据对应的初始化向量,包括:针对CBC工作模式或CFB工作模式,在当前待处理数据是第一组待处理数据时,从所述待处理报文中解析当前待处理数据对应的初始化向量;在当前待处理数据不是第一组待处理数据时,若当前待处理数据为待加密数据,则将前一组待处理数据对应的待输出数据作为当前待处理数据对应的初始化向量;若当前待处理数据为待解密数据,则将前一组待处理数据作为当前待处理数据对应的初始化向量;或者,针对OFB工作模式,在当前待处理数据是第一组待处理数据时,从所述待处理报文中解析当前待处理数据对应的初始化向量;在当前待处理数据不是第一组待处理数据时,将前一组待处理数据对应的待输出数据与前一组待处理数据异或运算后的结果作为当前待处理数据对应的初始化向量。
CN202310721393.4A 2023-06-16 2023-06-16 基于fpga的高速sm4密码模组实现方法及装置 Active CN116488794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310721393.4A CN116488794B (zh) 2023-06-16 2023-06-16 基于fpga的高速sm4密码模组实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310721393.4A CN116488794B (zh) 2023-06-16 2023-06-16 基于fpga的高速sm4密码模组实现方法及装置

Publications (2)

Publication Number Publication Date
CN116488794A true CN116488794A (zh) 2023-07-25
CN116488794B CN116488794B (zh) 2023-09-19

Family

ID=87223506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310721393.4A Active CN116488794B (zh) 2023-06-16 2023-06-16 基于fpga的高速sm4密码模组实现方法及装置

Country Status (1)

Country Link
CN (1) CN116488794B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116980110A (zh) * 2023-09-21 2023-10-31 深圳市纽创信安科技开发有限公司 一种分组密码运算方法、装置、系统、设备和存储介质
CN117272352A (zh) * 2023-11-21 2023-12-22 北京国科天迅科技股份有限公司 多核并行加解密方法、装置、计算机设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101854353A (zh) * 2010-04-28 2010-10-06 国网电力科学研究院 一种基于fpga的多芯片并行加密方法
CN104579636A (zh) * 2015-02-16 2015-04-29 滨州职业学院 一种超高速实现sm4算法的系统及其运行方法
CN110880967A (zh) * 2019-12-24 2020-03-13 北京炼石网络技术有限公司 采用分组对称密钥算法对多消息并行加解密方法
CN211293972U (zh) * 2019-12-17 2020-08-18 全球能源互联网研究院有限公司 一种加密卡
CN111832051A (zh) * 2020-07-10 2020-10-27 郑州信大捷安信息技术股份有限公司 一种基于fpga的对称加解密方法及系统
CN214122946U (zh) * 2020-08-12 2021-09-03 北京数盾信息科技有限公司 一种基于fpga的高速国密算法密码卡
WO2022001128A1 (zh) * 2020-06-30 2022-01-06 浪潮电子信息产业股份有限公司 Fpga板卡内存数据的读取方法、装置及介质
CN116070292A (zh) * 2023-03-07 2023-05-05 苏州宏存芯捷科技有限公司 一种基于fpga的sm4加密异构加速系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101854353A (zh) * 2010-04-28 2010-10-06 国网电力科学研究院 一种基于fpga的多芯片并行加密方法
CN104579636A (zh) * 2015-02-16 2015-04-29 滨州职业学院 一种超高速实现sm4算法的系统及其运行方法
CN211293972U (zh) * 2019-12-17 2020-08-18 全球能源互联网研究院有限公司 一种加密卡
CN110880967A (zh) * 2019-12-24 2020-03-13 北京炼石网络技术有限公司 采用分组对称密钥算法对多消息并行加解密方法
WO2022001128A1 (zh) * 2020-06-30 2022-01-06 浪潮电子信息产业股份有限公司 Fpga板卡内存数据的读取方法、装置及介质
CN111832051A (zh) * 2020-07-10 2020-10-27 郑州信大捷安信息技术股份有限公司 一种基于fpga的对称加解密方法及系统
CN214122946U (zh) * 2020-08-12 2021-09-03 北京数盾信息科技有限公司 一种基于fpga的高速国密算法密码卡
CN116070292A (zh) * 2023-03-07 2023-05-05 苏州宏存芯捷科技有限公司 一种基于fpga的sm4加密异构加速系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王腾腾: "SM4国密算法的异构可重构计算系统研究", 计算机应用研究 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116980110A (zh) * 2023-09-21 2023-10-31 深圳市纽创信安科技开发有限公司 一种分组密码运算方法、装置、系统、设备和存储介质
CN116980110B (zh) * 2023-09-21 2024-01-30 深圳市纽创信安科技开发有限公司 一种分组密码运算方法、装置、系统、设备和存储介质
CN117272352A (zh) * 2023-11-21 2023-12-22 北京国科天迅科技股份有限公司 多核并行加解密方法、装置、计算机设备和存储介质
CN117272352B (zh) * 2023-11-21 2024-01-30 北京国科天迅科技股份有限公司 多核并行加解密方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN116488794B (zh) 2023-09-19

Similar Documents

Publication Publication Date Title
CN108073353B (zh) 一种数据处理的方法及装置
CN116488794B (zh) 基于fpga的高速sm4密码模组实现方法及装置
US9537657B1 (en) Multipart authenticated encryption
JP4486680B2 (ja) Rc4暗号化を実行するための装置および方法
KR20110129932A (ko) 암호 시스템을 위한 키 복구 메커니즘
EP3371928B1 (en) Key sequence generation for cryptographic operations
US8879733B2 (en) Random bit stream generator with guaranteed minimum period
KR20090092735A (ko) 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치
JP2017107195A (ja) ハードウェア支援型の擬似乱数の高速生成
CN111310222B (zh) 文件加密方法
CN110880967B (zh) 采用分组对称密钥算法对多消息并行加解密方法
EP3086585B1 (en) Method and system for securing data communicated in a network
US10536264B2 (en) Efficient cryptographically secure control flow integrity protection
US9418245B2 (en) Encryption processing device, encryption processing method, and program
US9696965B2 (en) Input-dependent random number generation using memory arrays
Sleem et al. TestU01 and Practrand: Tools for a randomness evaluation for famous multimedia ciphers
US20170365191A1 (en) Iterative encryption and random generation and serialization of cryptographic functions
CN104219045A (zh) Rc4 流密码生成器
CN113098675B (zh) 基于多项式完全同态的二进制数据加密系统及方法
CN114629665B (zh) 一种用于可信计算的硬件平台
US10594476B1 (en) Reduced-latency packet ciphering
US20120321079A1 (en) System and method for generating round keys
CN116073987A (zh) 一种分组密码模式的可靠性设计方法、密码卡、服务器
CN110071927B (zh) 一种信息加密方法、系统及相关组件
KR20150105405A (ko) 컴퓨팅 가능하고, 대형이며, 가변적이며 안전한 치환 박스를 위한 방법 및 장치

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