CN116094711B - 一种基于指令集的后量子格密码硬件优化结构 - Google Patents
一种基于指令集的后量子格密码硬件优化结构 Download PDFInfo
- Publication number
- CN116094711B CN116094711B CN202310085437.9A CN202310085437A CN116094711B CN 116094711 B CN116094711 B CN 116094711B CN 202310085437 A CN202310085437 A CN 202310085437A CN 116094711 B CN116094711 B CN 116094711B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- sub
- unit
- buffer
- 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
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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0852—Quantum cryptography
- H04L9/0858—Details about key distillation or coding, e.g. reconciliation, error correction, privacy amplification, polarisation coding or phase coding
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- 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
-
- 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
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于指令集的后量子格密码硬件优化结构,属于信息安全技术领域,包括ARM模块与FPGA模块;所述ARM模块,用于根据指令集获得配置信息,并将配置信息和输入数据传输至FPGA模块,以及用于接收并处理状态信息和输出数据;所述FPGA模块,用于根据配置信息对输入数据进行密码处理,得到状态信息和输出数据,并将状态信息和输出数据传输至ARM模块。本发明解决了后量子格密码计算的灵活性和可扩展性欠缺的问题。
Description
技术领域
本发明属于信息安全技术领域,尤其涉及一种基于指令集的后量子格密码硬件优化结构。
背景技术
随着网络信息成为全球经济发展的重要生产要素,信息的安全性保护问题显得尤为重要。虽然云计算、边缘计算、物联网、人工智能、区块链等极大地提高了生产力水平,但也面临着巨大的安全风险。密码技术不仅具有保证信息机密性的信息加密功能,而且具有数字签名、身份验证、密码分存、系统安全等功能,可有效防止信息被篡改、伪造和假冒,是解决数据安全的核心技术。
传统的密码体制大多以RSA(Rivest Shamir Adleman)和ECC(Ellipse CurveCryptography)实现密钥交换、数字签名和身份认证等,其安全性分别依赖于整数分解问题和离散对数问题。然而,随着量子计算的发展,传统公钥密码体制面临着严重的安全问题,使得RSA和ECC能够在多项式时间内被攻破。这将严重损害数字通信的安全性、保密性和完整性。因此,为抵抗量子攻击,后量子密码应运而生,是当前的研究热点。
基于格困难的密码算法具有加密效率高、计算速度快和功能多样的优点,易于集成化和芯片化,使得它成为了极具潜力的密码方案。随着NIST(National Institute ofStandards and Technology)对后量子密码算法的征集和筛选,最终有4个被确定为后量子密码标准算法,其中有CRYSTALS-Kyber、CRYSTALS-Dilithium和Falcon这3个基于格构建的密码方案。
当前,后量子格密码在公钥加密、密钥交换和数字签名等方面都有不同程度的研究,但仍存在诸多问题。首先,后量子格密码算法较传统算法在处理逻辑、消息结构、计算速度、传输数据量方面有很大不同,加重了计算和通信开销。在海量数据的应用背景下,敏感数据的高速加解密问题、高并发的大规模用户认证问题、大数据的隐私保护及密态计算问题等,都需要底层密码算法的快速实现。其次,在格密码方案中,多项式乘法运算是关键,进而影响了密码算法的整体计算效率。在现有方案中,数论变换(Number TheoreticTransform,NTT)可以快速实现多项式的乘法,其计算复杂度为O(nlogn)。但是NTT控制逻辑包含多层循环嵌套的运算结构,对多项式系数的存取调度极为复杂。同时,蝶形运算在NTT中被多次迭代执行,包含模加减、模乘、模约简等多种运算,极大影响了硬件计算的时延。最后,当前格密码参数众多,不同的参数需要设计不同的硬件结构,对硬件设计的通用性带来了限制。为解决后量子格密码计算的灵活性和可扩展性,需要全面考虑各种算法和计算结构,建立多维可变硬件结构。因此,如何利用FPGA的可重构特性,以可重构配置实现高效的、可扩展的硬件结构,亟待解决。
发明内容
针对现有技术中的上述不足,本发明提供的一种基于指令集的后量子格密码硬件优化结构解决了后量子格密码计算的灵活性和可扩展性欠缺的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种基于指令集的后量子格密码硬件优化结构,包括ARM模块与FPGA模块;
所述ARM模块,用于根据指令集获得配置信息,并将配置信息和输入数据传输至FPGA模块,以及用于接收并处理状态信息和输出数据;
所述FPGA模块,用于根据配置信息对输入数据进行密码处理,得到状态信息和输出数据,并将状态信息和输出数据传输至ARM模块。
本发明的有益效果为:通过ARM模块和FPGA模块组合的方式向用户提供安全的数据加密服务;利用FPGA模块的可重构功能,组合形成支持各种后量子格密码算法的密钥生成、签名、验签等可重构功能模块,形成专用逻辑电路,使得后量子格密码引擎子模块支持多项式乘法、SHA3(Secure Hash Algorithm-3)-256/512、SHAKE128/256(Secure HashAlgorithm Keccak)和采样等功能,提高了数据的加解密处理效率以及密码芯片的计算效率和灵活性,为后量子格密码的产业化与实际应用提供支持。
进一步地,所述FPGA模块包括系统时钟子模块、系统复位子模块以及分别与系统时钟子模块和系统复位子模块连接的控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXI DMA子模块和AXI MEM子模块;
所述系统时钟子模块,用于为控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXI DMA子模块和AXI MEM子模块提供时钟驱动;
所述系统复位子模块,用于为控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXI DMA子模块和AXI MEM子模块提供复位信号;
所述控制子模块,用于根据时钟信号和复位信号进行运作,接收配置信息,将配置信息传输到定义的地址空间内,并将FPGA模块的状态信息反馈至ARM模块;
所述AXI子模块,用于根据时钟信号和复位信号进行运作,将配置信息传输至后量子格密码引擎子模块,并将状态信息传输至控制子模块;
所述后量子格密码引擎子模块,用于基于时钟信号和复位信号进行运作,并根据配置信息对输入数据进行密码处理,得到状态信息和输出数据,并将所述状态信息传输至AXI子模块,以及将所述输出数据传输至FIFO子模块;
所述FIFO子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至后量子格密码引擎子模块,以及将输出数据传输至AXI读写接口子模块;
所述AXI读写接口子模块,用于根据时钟信号和复位信号进行运作,控制AXI读总线将输入数据传输至FIFO子模块,以及控制AXI写总线将输出数据传输至AXI DMA子模块;
所述AXI DMA子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至AXI读写接口子模块,以及将输出数据传输至AXI MEM子模块;
所述AXI MEM子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至AXI DMA子模块,将输出数据传输至ARM模块,完成数据多路选择传输。
上述进一步方案的有益效果为:通过AXI读写接口完成AXI信号和普通FIFO信号的转换,并且各子模块相互连接配合,形成数据传输通道,为后量子格密码算法的运算提供基础。
进一步地,所述后量子格密码引擎子模块的功能模块包括通过FIFO互连的控制单元、采样器单元、密钥生成单元、签名单元和验证单元;
所述控制单元,用于根据配置信息进行参数配置,对输入数据进行初始化,得到初始化数据,并将所述初始化数据分别传输至采样器单元、密钥生成单元、签名单元和验证单元;以及用于根据密钥生成结果、签名结果和验证结果得到输出数据,并将所述输出数据传输至FIFO子模块,以及将获取的后量子格密码引擎的状态信息传输至AXI子模块;
所述采样器单元,用于根据初始化数据,采用采样算法生成采样数据,并将采样数据分别传输至密钥生成单元、签名单元和验证单元;
所述密钥生成单元,用于根据初始化数据、密钥生成指令、输入数据和采样数据,采用密钥生成算法,得到密钥生成结果,并将所述密钥生成结果传输至控制单元;
所述签名单元,用于根据初始化数据、签名指令、输入数据和采样数据,采用签名算法,得到签名结果,并将所述签名结果传输至控制单元;
所述验证单元,用于根据初始化数据、验证指令、输入数据和采样数据,采用验证算法,得到验证结果,并将所述验证结果传输至控制单元。
上述进一步方案的有益效果为:后量子格密码引擎子模块中各功能模块相互连接,形成数据传输通道,为后量子格密码算法的计算提供基础,并且后量子格密码引擎子模块中各功能模块相互独立,提高了整体可扩展性和灵活性。
进一步地,所述密钥生成单元包括第一控制子单元、第一初始化子单元和第一多项式运算子单元;所述签名单元包括预计算子单元和拒绝循环子单元;所述验证单元包括第二控制子单元、第二初始化子单元和第二多项式运算子单元;所述采样器单元包括第三控制子单元和Keccak子单元;
所述第三控制子单元,用于将初始化数据传输至Keccak子单元,以及获取Keccak子单元传输的采样数据,并将采样数据传输至第一控制子单元、第二控制子单元、预计算子单元和拒绝循环子单元;
所述Keccak子单元,用于根据初始化数据,执行Keccak算法,得到采样数据,并将采样数据传输至第三控制子单元;
所述第一控制子单元,用于将采样数据和初始化数据传输至第一初始化子单元,以及将密钥生成结果传输至控制单元;
所述第一初始化子单元,用于根据采样数据和初始化数据,采用SHAKE128/256算法,得到密钥生成数据,并将密钥生成数据传输至第一多项式运算子单元;
所述第一多项式运算子单元,用于根据密钥生成数据,对NTT的多项式和INTT的多项式进行运算,得到密钥生成结果,并将密钥生成结果传输至第一控制子单元;
所述预计算子单元,用于获取采样数据和控制单元传输的初始化数据,对采样数据和初始化数据对NTT的多项式预计算部分和INTT的多项式预计算部分进行计算,得到预计算结果,并将预计算结果传输至拒绝循环子单元;
所述拒绝循环子单元,用于获取采样数据和控制单元传输的初始化数据,对采样数据和初始化数据,对NTT的多项式和INTT的多项式进行计算,得到多项式结果,并根据多项式结果和预计算结果得到签名结果,将签名结果传输至控制单元;
所述第二控制子单元,用于获取采样数据和控制单元传输的初始化数据,并将采样数据和初始化数据传输至第二初始化子单元,以及将验证结果传输至控制单元;
所述第二初始化子单元,用于根据采样数据和初始化数据,采用SHAKE128/256算法,得到验证数据,并将验证数据传输至第二多项式运算子单元;
所述第二多项式运算子单元,用于根据验证数据,得到验证结果,并将验证结果传输至控制单元。
上述进一步方案的有益效果为:采样器单元以共享的方式向密钥生成单元、签名单元和验证单元提供采样数据,减少采样数据生成周期;同时预计算子单元和拒绝循环子单元并行计算,运算周期内互不干扰,加速了签名过程,Keccak子单元可根据模式选择计算不同算法,提高了灵活度;并通过第一FIFO器件和第二FIFO器件对数据进行缓存,减少了中间等待时间,提高了运算效率。
进一步地,所述Keccak子单元的硬件结构包括第一FIFO器件、第二FIFO器件、寄存器缓存器件、控制器件、填充器件、串并转换拼接器件、串并转换拆分器件、轮运算器件、轮计数器件和轮常数器件;
所述第一FIFO器件分别与控制器件和填充器件连接;所述控制器件分别与第二FIFO器件、串并转换拼接器件、串并转换拆分器件和轮计数器件连接;所述填充器件与串并转换拼接器件连接;所述轮运算器件分别与轮常数器件、寄存器缓存器件和串并转换拼接器件连接;所述寄存器缓存器件与串并转换拆分器件连接;所述轮常数器件与轮计数器件连接;所述串并转换拆分器件与第二FIFO器件连接。
上述进一步方案的有益效果为:Keccak子单元可根据模式选择计算不同算法,提高了灵活度;并通过第一FIFO器件和第二FIFO器件对数据进行缓存,减少了中间等待时间,提高了运算效率。
进一步地,所述后量子格密码引擎子模块的硬件结构包括初始化配置单元、均与初始化配置单元连接的若干个蝶形运算单元、与各蝶形运算单元连接的地址控制单元以及若干个多RAM通道;所述多RAM通道均包括第一RAM、第二RAM和第三RAM;所述第一RAM、第二RAM和第三RAM分别与蝶形运算单元连接;
所述初始化配置单元,用于向各蝶形运算单元传输初始化配置信息;
所述地址控制单元,用于向各多RAM通道和各蝶形运算单元发送控制信号;
各所述蝶形运算单元,均根据初始化配置信息完成初始化,并根据控制信号基于硬件结构计算NTT、INTT和PWM,得到迭代结果;
各所述多RAM通道,均用于根据控制信号对所述多项式的系数和每次的迭代结果进行存取。
上述进一步方案的有益效果为:后量子格密码引擎子模块的硬件结构以松耦合方式进行连接,可根据参数配置,灵活完成NTT算法、INTT算法和PWM算法。
进一步地,所述蝶形运算单元的硬件结构包括第一选择器、第二选择器、第三选择器、第四选择器、第五选择器、第六选择器、第一缓存3拍寄存器、第二缓存3拍寄存器、第一缓存器、第二缓存器、第三缓存器、第四缓存器、第五缓存器、模加器、模减器、乘法器、模约简运算器、第一x/2模乘运算器和第二x/2模乘运算器;
所述第一选择器分别与模加器和模减器连接;所述模加器与第一缓存器连接;所述第一缓存器分别与第一缓存3拍寄存器和第二选择器连接;所述第一缓存3拍寄存器与第一x/2模乘运算器连接;所述第一x/2模乘运算器与第二选择器连接;所述第二缓存3拍寄存器与第三选择器连接;所述第三选择器分别与模加器和模减器连接;所述模减器与第二缓存器连接;所述第二缓存器分别与第四选择器和第五选择器连接;所述第五选择器与乘法器连接;所述第三缓存器与第六选择器连接;所述第六选择器与乘法器连接;所述乘法器与第四缓存器连接;所述第四缓存器与模约简运算器连接;所述模约简运算器与第五缓存器连接;所述第五缓存器分别与第一选择器和第二x/2模乘运算器连接;所述第二x/2模乘运算器与第四选择器连接。
上述进一步方案的有益效果为:采用流水线的结构实现蝶形运算单元,根据控制信号,选择NTT算法、INTT算法和PWM算法不同的计算流程;在蝶形运算单元中设置了多个缓存寄存器,实现对中间结果的存储,降低了蝶形运算的逻辑层级,避免产生较大的路径延时。
进一步地,所述乘法器采用KOA算法,得到KOA乘法器;所述KOA乘法器的硬件结构包括第一输入端、第二输入端、输出端、第一加法运算器、第二加法运算器、第三加法运算器、第一DSP乘法器、第二DSP乘法器、第三DSP乘法器、第六缓存器、第七缓存器、第八缓存器、第九缓存器、减法运算器、n指数运算器和n/2指数运算器;
所述第一输入端的A段分别与第一加法运算器和第一DSP乘法器连接;所述第一输入端的B段分别与第一加法运算器和第二DSP乘法器连接;所述第二输入端的A段分别与第二加法运算器和第一DSP乘法器连接;所述第二输入端的B段分别与所述第二加法运算器和第二DSP乘法器连接;所述第一加法运算器和第二加法运算器均与第三DSP乘法器连接;所述第一DSP乘法器与第六缓存器连接;所述第二DSP乘法器与第七缓存器连接;所述第三DSP乘法器与第八缓存器连接;所述第六缓存器分别与减法运算器和n指数运算器连接;所述第七缓存器、第八缓存器和第九缓存均与减法运算器连接;所述第九缓存器与n/2指数运算器连接;所述第七缓存器、n指数运算器和n/2指数运算器均与第三加法运算器连接;所述第三加法运算器与输出端连接。
上述进一步方案的有益效果为:实用KOA算法降低运算的复杂度,并通过第六缓存器、第七缓存器、第八缓存器和第九缓存器对中间结果进行缓存,提高了KOA乘法器的工作频率。
进一步地,所述模约简运算器的硬件结构包括乘法器DSP1、乘法器DSP2、乘法器DSP3、乘法器DSP4、通用加法器Adder和多路复用器;所述通用加法器Adder分别与乘法器DSP1和第一移位寄存器连接;所述乘法器DSP1分别与乘法器DSP2、第三移位寄存器和第一指数运算器连接;所述乘法器DSP2分别与第二移位寄存器和乘法器DSP3连接;所述第三移位寄存器分别与第一移位寄存器、第一指数运算器和第二指数运算器连接;所述乘法器DSP3分别与第二指数运算器和乘法器DSP4连接;所述乘法器DSP4分别与多路复用器、多路选择器和第一符号选择器连接;所述多路选择器与第二符号选择器连接;所述多路复用器分别与第四移位寄存器和第一符号选择器连接。
上述进一步方案的有益效果为:模约简运算器为模约简算法提供硬件基础,降低了资源消耗,同时,节省了算法的硬件执行时间。
进一步地,所述模约简运算器采用的模约简算法的表达式为:
E=λ[45:0]=213(x[11:10]+x[9:0])-(y+x[11:10])+zmodq
x=λ[45:43]+λ[42:33]+λ[32:23]
y=λ[45:43]+λ[45:33]+λ[45:23]
z=λ[22:0]
其中,E为模约简算法;λ为待取模的输入数值;x为第一中间参数;y为第二中间参数;z为第三中间参数;mod为取模运算;q为模数。
上述进一步方案的有益效果为:利用乘法和模约减运算代替高成本的除法实现取模运算,可用于计算任何参数的模乘,提高了灵活性。
附图说明
图1为本发明结构图。
图2为本发明后量子格密码引擎的硬件结构图。
图3为本发明蝶形运算单元的硬件结构图。
图4为本发明中KOA乘法器的硬件结构图。
图5为本发明中Keccak自单元的硬件结构图。
图6为本发明实施例2中AXI读写接口数据读写流程示意图。
图7为本发明实施例2中后量子格密码引擎功能模块结构示意图。
图8为本发明模约简运算器的硬件结构图。
图9为本发明实施例2中多RAM存储流程图。
图10为本发明实施例2中RAM读写示意图。
图11为本发明实施例2中采样器的硬件结构图。
其中:1、第一选择器;2、第二选择器;3、第三选择器;4、第四选择器;5、第五选择器;6、第六选择器;7、第一缓存3拍寄存器;8、第二缓存3拍寄存器;9、第一缓存器;10、第二缓存器;11、第三缓存器;12、第四缓存器;13、第五缓存器;14、模加器;15、模减器;16、乘法器;17、模约简运算器;18、第一x/2模乘运算器;19、第二x/2模乘运算器。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
实施例1
如图1所示,在本发明的一个实施例中,一种基于指令集的后量子格密码硬件优化结构,包括ARM模块与FPGA模块;
所述ARM模块,用于根据指令集获得配置信息,并将配置信息和输入数据传输至FPGA模块,以及用于接收并处理状态信息和输出数据;
所述FPGA模块,用于根据配置信息对输入数据进行密码处理,得到状态信息和输出数据,并将状态信息和输出数据传输至ARM模块。
本实施例中,所述密码处理包括解密处理和加密处理。
所述FPGA模块包括系统时钟子模块、系统复位子模块以及分别与系统时钟子模块和系统复位子模块连接的控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXI DMA子模块和AXI MEM子模块;
所述系统时钟子模块,用于为控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXI DMA子模块和AXI MEM子模块提供时钟驱动;
所述系统复位子模块,用于为控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXI DMA子模块和AXI MEM子模块提供复位信号;
所述控制子模块,用于根据时钟信号和复位信号进行运作,接收配置信息,将配置信息传输到定义的地址空间内,并将FPGA模块的状态信息反馈至ARM模块;
所述AXI子模块,用于根据时钟信号和复位信号进行运作,将配置信息传输至后量子格密码引擎子模块,并将状态信息传输至控制子模块;
所述后量子格密码引擎子模块,用于基于时钟信号和复位信号进行运作,并根据配置信息对输入数据进行密码处理,得到状态信息和输出数据,并将所述状态信息传输至AXI子模块,以及将所述输出数据传输至FIFO子模块;
所述FIFO子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至后量子格密码引擎子模块,以及将输出数据传输至AXI读写接口子模块;
所述AXI读写接口子模块,用于根据时钟信号和复位信号进行运作,控制AXI读总线将输入数据传输至FIFO子模块,以及控制AXI写总线将输出数据传输至AXI DMA子模块;
所述AXI DMA子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至AXI读写接口子模块,以及将输出数据传输至AXI MEM子模块;
所述AXI MEM子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至AXI DMA子模块,将输出数据传输至ARM模块,完成数据多路选择传输。
所述后量子格密码引擎子模块的功能模块包括通过FIFO互连的控制单元、采样器单元、密钥生成单元、签名单元和验证单元;
所述控制单元,用于根据配置信息进行参数配置,对输入数据进行初始化,得到初始化数据,并将所述初始化数据分别传输至采样器单元、密钥生成单元、签名单元和验证单元;以及用于根据密钥生成结果、签名结果和验证结果得到输出数据,并将所述输出数据传输至FIFO子模块,以及将获取的后量子格密码引擎的状态信息传输至AXI子模块;
所述采样器单元,用于根据初始化数据,采用采样算法生成采样数据,并将采样数据分别传输至密钥生成单元、签名单元和验证单元;
所述密钥生成单元,用于根据初始化数据、密钥生成指令、输入数据和采样数据,采用密钥生成算法,得到密钥生成结果,并将所述密钥生成结果传输至控制单元;
所述签名单元,用于根据初始化数据、签名指令、输入数据和采样数据,采用签名算法,得到签名结果,并将所述签名结果传输至控制单元;
所述验证单元,用于根据初始化数据、验证指令、输入数据和采样数据,采用验证算法,得到验证结果,并将所述验证结果传输至控制单元。
所述密钥生成单元包括第一控制子单元、第一初始化子单元和第一多项式运算子单元;所述签名单元包括预计算子单元和拒绝循环子单元;所述验证单元包括第二控制子单元、第二初始化子单元和第二多项式运算子单元;所述采样器单元包括第三控制子单元和Keccak子单元;
所述第三控制子单元,用于将初始化数据传输至Keccak子单元,以及获取Keccak子单元传输的采样数据,并将采样数据传输至第一控制子单元、第二控制子单元、预计算子单元和拒绝循环子单元;
所述Keccak子单元,用于根据初始化数据,执行Keccak算法,得到采样数据,并将采样数据传输至第三控制子单元;
所述第一控制子单元,用于将采样数据和初始化数据传输至第一初始化子单元,以及将密钥生成结果传输至控制单元;
所述第一初始化子单元,用于根据采样数据和初始化数据,采用SHAKE128/256算法,得到密钥生成数据,并将密钥生成数据传输至第一多项式运算子单元;
所述第一多项式运算子单元,用于根据密钥生成数据,对NTT的多项式和INTT的多项式进行运算,得到密钥生成结果,并将密钥生成结果传输至第一控制子单元;
所述预计算子单元,用于获取采样数据和控制单元传输的初始化数据,对采样数据和初始化数据对NTT的多项式预计算部分和INTT的多项式预计算部分进行计算,得到预计算结果,并将预计算结果传输至拒绝循环子单元;
所述拒绝循环子单元,用于获取采样数据和控制单元传输的初始化数据,对采样数据和初始化数据,对NTT的多项式和INTT的多项式进行计算,得到多项式结果,并根据多项式结果和预计算结果得到签名结果,将签名结果传输至控制单元;
所述第二控制子单元,用于获取采样数据和控制单元传输的初始化数据,并将采样数据和初始化数据传输至第二初始化子单元,以及将验证结果传输至控制单元;
所述第二初始化子单元,用于根据采样数据和初始化数据,采用SHAKE128/256算法,得到验证数据,并将验证数据传输至第二多项式运算子单元;
所述第二多项式运算子单元,用于根据验证数据,得到验证结果,并将验证结果传输至控制单元。
如图5所示,所述Keccak子单元的硬件结构包括第一FIFO器件、第二FIFO器件、寄存器缓存器件、控制器件、填充器件、串并转换拼接器件、串并转换拆分器件、轮运算器件、轮计数器件和轮常数器件;
所述第一FIFO器件分别与控制器件和填充器件连接;所述控制器件分别与第二FIFO器件、串并转换拼接器件、串并转换拆分器件和轮计数器件连接;所述填充器件与串并转换拼接器件连接;所述轮运算器件分别与轮常数器件、寄存器缓存器件和串并转换拼接器件连接;所述寄存器缓存器件与串并转换拆分器件连接;所述轮常数器件与轮计数器件连接;所述串并转换拆分器件与第二FIFO器件连接。
如图2所示,所述后量子格密码引擎子模块的硬件结构包括初始化配置单元、均与初始化配置单元连接的若干个蝶形运算单元、与各蝶形运算单元连接的地址控制单元以及若干个多RAM通道;所述多RAM通道均包括第一RAM、第二RAM和第三RAM;所述第一RAM、第二RAM和第三RAM分别与蝶形运算单元连接;
所述初始化配置单元,用于向各蝶形运算单元传输初始化配置信息;
所述地址控制单元,用于向各多RAM通道和各蝶形运算单元发送控制信号;
各所述蝶形运算单元,均根据初始化配置信息完成初始化,并根据控制信号基于硬件结构计算NTT、INTT和PWM,得到迭代结果;
各所述多RAM通道,均用于根据控制信号对所述多项式的系数和每次的迭代结果进行存取。
如图3所示,所述蝶形运算单元的硬件结构包括第一选择器1、第二选择器2、第三选择器3、第四选择器4、第五选择器5、第六选择器6、第一缓存3拍寄存器7、第二缓存3拍寄存器8、第一缓存器9、第二缓存器10、第三缓存器11、第四缓存器12、第五缓存器13、模加器14、模减器15、乘法器16、模约简运算器17、第一x/2模乘运算器18和第二x/2模乘运算器19;
所述第一选择器1分别与模加器14和模减器15连接;所述模加器14与第一缓存器9连接;所述第一缓存器9分别与第一缓存3拍寄存器7和第二选择器2连接;所述第一缓存3拍寄存器7与第一x/2模乘运算器18连接;所述第一x/2模乘运算器18与第二选择器2连接;所述第二缓存3拍寄存器8与第三选择器3连接;所述第三选择器3分别与模加器14和模减器15连接;所述模减器15与第二缓存器10连接;所述第二缓存器10分别与第四选择器4和第五选择器5连接;所述第五选择器5与乘法器16连接;所述第三缓存器11与第六选择器6连接;所述第六选择器6与乘法器16连接;所述乘法器16与第四缓存器12连接;所述第四缓存器12与模约简运算器17连接;所述模约简运算器17与第五缓存器13连接;所述第五缓存器13分别与第一选择器1和第二x/2模乘运算器19连接;所述第二x/2模乘运算器19与第四选择器4连接。
如图4所示,所述乘法器16采用KOA算法,得到KOA乘法器;所述KOA乘法器的硬件结构包括第一输入端、第二输入端、输出端、第一加法运算器、第二加法运算器、第三加法运算器、第一DSP乘法器、第二DSP乘法器、第三DSP乘法器、第六缓存器、第七缓存器、第八缓存器、第九缓存器、减法运算器、n指数运算器和n/2指数运算器;
所述第一输入端的A段分别与第一加法运算器和第一DSP乘法器连接;所述第一输入端的B段分别与第一加法运算器和第二DSP乘法器连接;所述第二输入端的A段分别与第二加法运算器和第一DSP乘法器连接;所述第二输入端的B段分别与所述第二加法运算器和第二DSP乘法器连接;所述第一加法运算器和第二加法运算器均与第三DSP乘法器连接;所述第一DSP乘法器与第六缓存器连接;所述第二DSP乘法器与第七缓存器连接;所述第三DSP乘法器与第八缓存器连接;所述第六缓存器分别与减法运算器和n指数运算器连接;所述第七缓存器、第八缓存器和第九缓存均与减法运算器连接;所述第九缓存器与n/2指数运算器连接;所述第七缓存器、n指数运算器和n/2指数运算器均与第三加法运算器连接;所述第三加法运算器与输出端连接。
所述模约简运算器的硬件结构包括乘法器DSP1、乘法器DSP2、乘法器DSP3、乘法器DSP4、通用加法器Adder和多路复用器;所述通用加法器Adder分别与乘法器DSP1和第一移位寄存器连接;所述乘法器DSP1分别与乘法器DSP2、第三移位寄存器和第一指数运算器连接;所述乘法器DSP2分别与第二移位寄存器和乘法器DSP3连接;所述第三移位寄存器分别与第一移位寄存器、第一指数运算器和第二指数运算器连接;所述乘法器DSP3分别与第二指数运算器和乘法器DSP4连接;所述乘法器DSP4分别与多路复用器、多路选择器和第一符号选择器连接;所述多路选择器与第二符号选择器连接;所述多路复用器分别与第四移位寄存器和第一符号选择器连接。
所述模约简运算器采用的模约简算法的表达式为:
E=λ[45:0]=213(x[11:10]+x[9:0])-(y+x[11:10])+zmodq
x=λ[45:43]+λ[42:33]+λ[32:23]
y=λ[45:43]+λ[45:33]+λ[45:23]
z=λ[22:0]
其中,E为模约简算法;λ为待取模的输入数值;x为第一中间参数;y为第二中间参数;z为第三中间参数;mod为取模运算;q为模数。
实施例2
基于指令集的后量子格密码硬件优化结构如图1所示,通过ARM(Advanced RISCMachines)+FPGA(Field Programmable Gate Array)的方式向用户提供安全的数据加密服务。其中,后量子格密码引擎支持多项式乘法、SHA3(Secure Hash Algorithm-3)-256/512、SHAKE128/256(Secure Hash Algorithm Keccak)、采样、编码和解码等,利用FPGA可重构功能,组合形成支持各种后量子格密码算法的密钥生成、签名、验签等可重构功能模块,完成数据高效的加解密处理。
相关组件功能:
ARM模块:实时监控拟态防御防攻击算法核心中的异构执行体情况和加密系统的工作情况;状态信息反馈至负反馈机制,对执行体状态和数据输出进行处理。
系统时钟子模块:时钟IP(Internet Protocol)核,为其他子模块提供时钟驱动,时钟频率有50MHz、100MHz和150MHz,该子模块由Vivado软件集成。
系统复位子模块:复位IP核,为其他子模块提供复位信号,该子模块由Vivado软件集成。
AXI子模块(Advanced eXtensible Interface)、AXI MEM子模块(AXI Memory)、AXI DMA子模块(AXI Direct Memory Access):FPGA模块与ARM模块传输数据的接口IP核,用于传输配置信息和加密数据通路,由Vivado软件集成。其中AXI子模块用于连接控制子模块和后量子格密码引擎子模块,用于获取控制信息和状态信息。AXI MEM子模块用于连接ARM模块和AXI DMA子模块,用于数据多路选择传输。AXI DMA子模块用于连接AXI MEM子模块和AXI读写接口子模块,通过AXI总线完成数据的读写。
AXI读写接口子模块:通过对AXI总线的处理,完成数据的高速读写。
FIFO(First In First Out)子模块:数据传输IP核,用于连接AIX读写接口和后量子格密码引擎,由Vivado软件集成。
控制子模块:ARM模块将配置信息传输到各自定义的地址空间内,通过AXI子模块控制数据的读取,配置信息包括指令、开始信号。Done信号是FPGA模块将算法工作状态通过AXI接口反馈给ARM模块的信号。状态信息是将后量子加密引擎产生的结果报告至外部ARM模块。
如图6所示,AXI读写接口子模块主要包括读取控制和写入控制,以此完成AXI信号到普通FIFO信号的转变。其中读取控制模块通过对AXI读总线的处理,将数据写入FIFO子模块中,供后量子格密码引擎子模块使用。写入控制模块从FIFO子模块中读取数据,并转换为AXI写总线信号,最终再将结果传递给ARM模块。
后量子格密码引擎子模块整体功能模块结构如图7所示,主要由控制单元、采样器单元、密钥生成单元、签名单元和验签单元5个单元组成。各单元间通过FIFO互连,从FIFO接收并返回数据,单元间相互独立,提高了整体可扩展性和灵活性。
相关组件功能:
控制单元:从DMA接收输入,完成初始化工作,并根据密钥生成指令、签名指令、验签指令完成相应的功能,而后将结果返回。
采样器单元:由于采样器单元生成采样数据周期短,故以共享的方式为密钥生成、签名和验签单元提供服务。
密钥生成单元:主要包括初始化子单元、控制子单元和多项式运算子单元。其中多项式运算子单元封装了NTT算法、INTT算法、系数乘加、系数相加和系数相减等功能,为整个密钥生成提供各种运算功能。
签名单元:将签名拆分成2部分并行计算,其中多项式向量y和多项式矩阵A的乘法为预计算部分;其余为拒绝循环多项式向量的计算部分。通过并行计算,加速签名过程。
验证单元:验证单元主要包括初始化子单元、控制子单元和多项式运算子单元。其中多项式运算子单元封装了NTT算法、INTT算法、系数乘加、系数相加和系数相减等功能,为整个验签提供各种运算功能。
为提高后量子格密码算法硬件实现整体灵活性和可扩展性,在FPGA模块内放置n个蝶形运算单元完成多项式计算,各个蝶形运算单元可独立执行。其次,放置多RAM(RandomAccess Memory)通道对多项式系数和每次迭代的结果进行存取。对于参数ω,采用预计算的方式提前计算好,并以RAM的形式进行存储。最后,由控制逻辑完成对蝶形运算单元的输入输出的控制、RAM存取地址的控制及参数ω的读取控制。根据NTT算法、INTT(InverseNTT)算法流程,NTT每次迭代读取和写入的参数是不同的。因此,需要通过仲裁对RAM进行读写。同时,在PWM(Point Wise Multiplication)算法中,需要多次计算模乘,因此在蝶形运算单元中以mul输出中间模乘的结果,并再次送入蝶形运算单元进行最终结果的计算。可以看出,FPGA模块整个架构以松耦合方式互连,并可根据参数配置,灵活完成NTT、INTT和PWM运算。
蝶形运算单元是NTT、INTT和PWM计算的核心。这里,采用流水线的结构进行实现,并根据控制信号,选择NTT、INTT和PWM不同计算的流程。蝶形运算单元结构如图3所示。
由于NTT先计算模乘,再模加减,而INTT先计算模加减再模乘,两者计算的先后顺序不同。因此在蝶形运算单元中插入了多个缓存寄存器,用来缓存中间结果,并根据控制信号,进行仲裁输出。同时,通过缓存也降低了蝶形运算的逻辑层级,避免产生较大的路径延时。其次,NTT/INTT每次存取的参数的RAM不一,且输出nttE和nttO两个结果可能存入同一RAM中,因此需要nttE和nttO要按次序写入。具体的,在NTT/INTT中,输出nttE、nttO需要6个时钟。对于PWM算法,需要多次计算模乘和模加,由此需要对中间模乘结果mul进行缓存,并以调度传值完成后续计算。最后,使用DSP(Digital Signal Process)实现乘法器,充分利用FPGA芯片资源。
为提高模乘计算速度,以KOA(Karatsuba Ofman Algorithm)和Barrett算法实现。KOA算法的核心思想是“分而治之”,采用递归的方式将一个复杂的乘法运算分解成多个简单的乘法运算,较传统计算速度更快,效率更高。对于两个n位数,如果直接相乘,其复杂度为O(n2),使用KOA算法可以将复杂度降低到KOA乘法器对应的电路如图4所示。
在图4中,将数X、Y等价表示为:X=XH×2n/2+XL,Y=YH×2n/2+YL。那么P=X×Y可采用下式计算:
P=(XH×2n/2+XL)×(YH×2n/2+YL)=(XHYH)×2n+(XHYL+XLYH)×2n/2+XLYL
XHYL+XLYH=(XH+XL)(YH+YL)-XHYH-XLYL
由此整个算法只需要计算乘法XHYH,XLYL和(XH+XL)(YH+YL),从而降低了复杂度。这里,通过调用FPGA模块底层DSP乘法器进行实现。同时,为了提高KOA工作频率,以寄存器对中间结果缓存,并形成2级流水线。
Barrett算法利用乘法和模约减运算代替了高成本的除法来实现取模运算,可计算任何参数的模乘。以模数q=8380417为例,λ表示μ和ν的乘法结果,其中0≤μ<p,0≤ν<p。为了能够有效而快速的求出λmodq,根据223≡(213-1)modq这一关系,递归的调用设计好的模约简算法进行求模运算。模约简算法的具体计算流程如下公式所示:
λ[45:0]≡223λ[45:23]+λ[22:0]≡213λ[45:23]-λ[45:23]+λ[22:0]
≡223λ[45:33]+213λ[32:23]-λ[45:23]+z
≡213(λ[45:33]+λ[32:23])-(λ[45:33]+λ[45:23])+z
≡223λ[45:43]+213(λ[42:33]+λ[32:23])-(λ[45:33]+λ[45:23])+z
≡213(λ[45:43]+λ[42:33]+λ[32:23])
-(λ[45:43]+λ[45:33]+λ[45:23])+z
≡213x-y+z≡223x[11:10]+213x[9:0]-y+z
≡213(x[11:10]+x[9:0])-(y+x[11:10])+zmodq
在上述公式中,首先将λ对半分为高位和低位,并根据223≡(213-1)modq将原式变换为三部分,其中z=λ[22:0]。随后,再将λ[45:23]分为高13位和低10位,其中高13位在乘以213后变为新的项223λ[45:33]。其次,再利用模数q的特性将原式分解,整理多项式后将λ[45:33]分为高3位和低10位,其中高3位在乘以213后变为新的项223λ[45:43]。再次,利用模数q特性将原式继续分解,整理之后多项式由三部分组成,其中x=λ[45:43]+λ[42:33]+λ[32:23],y=λ[45:43]+λ[45:33]+λ[45:23]。最后,将x分为高2位和低10位,并使用相同的方法进行处理,最终化简完毕后式子变为:参数下移
213(x[11:10]+x[9:0])-(y+x[11:10])+z
快速模约简的硬件架构图如图8所示。在图8中,使用了4个DSP和1个通用加法器Adder来进行计算。其中,DSP1用于计算x和y:低位计算x,高位计算y。DSP2用于计算z-(x[11∶10]+y),并将结果送入DSP3。DSP3在DSP2计算结果的基础上,再加上213×(x[11:10]+x[9:0])。DSP4通过对DSP3结果的判断,如果DSP3的结果为负则再加上q,反之则减去q。最终选择正数结果作为输出。
此外,在图8中,Di(i=1,2,4)是移位寄存器,用于补偿其各自索引中给出DSP的计算。对于多路复用器Multiplexer的输出,符号位被丢弃,从而将位宽减小到23位。经过验证,在FPGA中可以在一个时钟之内得到λ对q取模。在降低资源消耗的同时也节省了算法的硬件执行时间。
RAM是FPGA提供的紧凑的真正双端口内存库,方便存储大量数据。在本发明中为了在一个时钟内执行n次蝶形运算,一共设计了3n个RAM块用来存储。前n个RAM块存储第一个多项式的参数,中间n个RAM块存储第二个多项式参数,后n个RAM块存储旋转因在ω。在执行NTT、INTT的时候,在同一时钟内分别从各自n个RAM块中选择取出执行蝶形操作的第2i和2i+1(1≤i≤n)的多项式参数进行n路并行执行NTT、INTT。如此,n个蝶形运算单元可独立并行存取参数并执行。多RAM存储流程如图9所示。
NTT、INTT、PWM合并执行多项式乘法运算时,将2n个RAM块平分成两组,每组按照索引地址平分成集合1和集合2。将初始化要执行多项式乘法运算的多项式A(x)和B(x)分别保存在两个RAM分组的集合1中,保存完毕后从集合1取出多项式参数执行NTT,将NTT运算结果保存在集合2中;在PWM阶段取出集合2中元素进行蝶形运算,并将结果保存在集合1中,等待INTT阶段的执行。
对于旋转因子ω,因为NTT、INTT、PWM在执行相应轮数的时候对旋转因子值的参数固定,因此在对旋转因子ω进行预处理后,按照一定的顺序存放在RAM中。
后量子格密码每轮蝶形运算读写的参数不同,且地址唯一。在读取参数时,为方便操作,对参数进行重排,统一读取一组RAM的某一地址,获取所有个参数并组成系数对。因此,在写入中间结果时,需要对输出的nttE和nttO分别按不同的地址进行存储,以保证在下一轮,可以从同一个地址再次读取到对应的系数对。具体的,根据当前蝶形运算阶段和循环次数计算得到RAM的读、写地址。由于RAM的读写需要先获取地址,然后才能读写数据,即RAM的操作需要一定的时间间隔。而蝶形运算是以流水线方式执行的,可连续对数据进行处理。因此需要处理好流水线和RAM访问之间的关系,防止数据中断出错。以256个参数和4个蝶形单元为例,其RAM读写如图10所示。
初始将数据送入流水线时,预先计算出RAM读写地址,并对地址进行打拍缓存。具体的,优先送出RAM的读地址,并在间隔8个时钟后,再送出RAM的写地址。这样,先读后写,不仅保证了数据连续读出,并在计算完成后连续写入,且防止了RAM地址冲突。对于各个阶段的等待时间均为11个时钟周期。
采样器单元的硬件结构如图11所示,主要包括控制子单元、进行SHAKE128/256运算的Keccak子单元。各功能子单元介绍如下:
控制子单元:根据输入的模式,选择密钥生成、签名和验证功能,并相应选择执行SHAKE128或SHAKE256。同时,在计算完成后根据输入的模式,截断并输出最终的结果。
Keccak子单元:主要有3个Keccak运算模块组成,前2个用于计算多项式矩阵A,后1个用于计算多项式向量S1、S2、y和多项式c,并将计算后的结果存入相应FIFO。
对于Keccak的硬件优化,如图11所示。Keccak算法首先将输入数据进行特殊的填充处理,然后在三维矩阵上进行五步迭代置换运算,最后输出杂凑值。对于置换函数Keccak-f[1600],它取1600bits状态,将其转换为一个的三维数组作为输入,并基于该数组进行24轮变换,每一轮变换包括θ,ρ,π,χ,ι5个步骤。具体的,每个计算步骤的运算如下所示:公式居中
1、步骤θ:(0≤x,y<5,0≤z<64)
C[x,y,z]=A[x,0,z]⊕A[x,1,z]⊕A[x,2,z]⊕A[x,3,z]⊕A[x,4,z]
D[x,z]=C[x-1,z]⊕ROT(C[x+1,z],1)
A'[x,y,z]=A[x,y,z]⊕D[x,z]
2、步骤ρ:(0≤x,y<5)
A[x,y,z]=ROT(A'[x,y,z],r[x,y])
3、步骤π:(0≤x,y<5,0≤z<64)
B[y,2x+3y,z]=A[x,y,z]
4、步骤χ:(0≤x,y<5,0≤z<64)
A'[x,y,z]=B[x,y,z]⊕(~(B[x+1,y,z])∧(B[x+2,y,z]))
5、步骤ι:0≤i<24
A'[0,0,z]=A'[0,0,z]⊕RC[i]
在上述运算步骤中,x和y表示模5范围内的运算,z为模64。A[x,y,z]为状态数组,B[x,y,z]、C[x,y,z]和D[x,z]为中间结果。⊕代表按位异或运算,~表示非运算,∧表示与运算,ROT函数表示循环移位。r[x][y]和RC[i]分别是移位位数和轮常数。
由此,首先采用合并处理,将θ,ρ,π,χ,ι5个步骤融合为一轮,使得一个时钟周期执行一次迭代运算,整个Keccak运算仅需要24个周期,提高运行效率。其次,对IO数据接口以64bit位宽为标准进行统一输入输出,并在执行Keccak-f[1600]时,将数据拼接为1600bit,计算完成后再拆分为64bit,以此降低资源开销并提高吞吐量。再次,对于SHA3-256/512和SHAKE128/256,其核心运算Keccak-f[1600]相同,仅消息拼接和结果截断不同。那么,可将整个SHA-3硬件结构主要分为控制单元、填充单元、轮运算单元和串并转换单元。最后,以FIFO作为缓存,将需要计算的数据预先存入FIFO,并将结果也存入FIFO,减少中间等待时间。
在图11中,各器件功能如下。
控制器件:调度控制Keccak的整体执行,包括输入输出、填充、串并转换和轮计算等。
填充器件:根据输入的计算模式对消息进行填充。当计算SHA3-256/512时,填充0x06和0x80;计算SHAKE128/256时,填充0x1f和0x80。
串并转换器件:将64bit数据拼凑为1600bit作为Keccak的输入,或将运算结果拆分为64bit进行输出。
轮运算器件:执行核心运算,一个时钟完成一次轮运算。
轮计数器件:运算开始后,轮计数器每个时钟加1,取值范围为0到23。
轮常数器件:存储了每轮运算的常数,根据轮计数输出对应轮的常数。
在本发明中,KOA乘法器和模加减可根据数据位宽参数DATA_WIDTH进行位宽配置,只需替换快速模约简即可完成各种参数的模乘运算。其次,采用多PE(ProcessingElement)并行,可通过配置旋转因子ω,模数q等,支持Dilithium、Kyber、Saber等多种后量子格密码算法。然后,对Keccak模块进行灵活性扩展,使得该模块根据输入mode的不同,灵活自主选择执行SHAKE128或SHAKE256对应的模块。最后,以指令集的方式,通过松耦合架构,方便支持多种加密服务。
Claims (7)
1.一种基于指令集的后量子格密码硬件优化结构,其特征在于,包括ARM模块与FPGA模块;
所述ARM模块,用于根据指令集获得配置信息,并将配置信息和输入数据传输至FPGA模块,以及用于接收并处理状态信息和输出数据;
所述FPGA模块,用于根据配置信息对输入数据进行密码处理,得到状态信息和输出数据,并将状态信息和输出数据传输至ARM模块;
所述FPGA模块包括系统时钟子模块、系统复位子模块以及分别与系统时钟子模块和系统复位子模块连接的控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXIDMA子模块和AXI MEM子模块;
所述系统时钟子模块,用于为控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXIDMA子模块和AXI MEM子模块提供时钟驱动;
所述系统复位子模块,用于为控制子模块、AXI子模块、后量子格密码引擎子模块、FIFO子模块、AXI读写接口子模块、AXIDMA子模块和AXI MEM子模块提供复位信号;
所述控制子模块,用于根据时钟信号和复位信号进行运作,接收配置信息,将配置信息传输到定义的地址空间内,并将FPGA模块的状态信息反馈至ARM模块;
所述AXI子模块,用于根据时钟信号和复位信号进行运作,将配置信息传输至后量子格密码引擎子模块,并将状态信息传输至控制子模块;
所述后量子格密码引擎子模块,用于基于时钟信号和复位信号进行运作,并根据配置信息对输入数据进行密码处理,得到状态信息和输出数据,并将所述状态信息传输至AXI子模块,以及将所述输出数据传输至FIFO子模块;
所述FIFO子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至后量子格密码引擎子模块,以及将输出数据传输至AXI读写接口子模块;
所述AXI读写接口子模块,用于根据时钟信号和复位信号进行运作,控制AXI读总线将输入数据传输至FIFO子模块,以及控制AXI写总线将输出数据传输至AXIDMA子模块;
所述AXIDMA子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至AXI读写接口子模块,以及将输出数据传输至AXI MEM子模块;
所述AXI MEM子模块,用于根据时钟信号和复位信号进行运作,将输入数据传输至AXIDMA子模块,将输出数据传输至ARM模块,完成数据多路选择传输;
所述后量子格密码引擎子模块的功能模块包括通过FIFO互连的控制单元、采样器单元、密钥生成单元、签名单元和验证单元;
所述控制单元,用于根据配置信息进行参数配置,对输入数据进行初始化,得到初始化数据,并将所述初始化数据分别传输至采样器单元、密钥生成单元、签名单元和验证单元;以及用于根据密钥生成结果、签名结果和验证结果得到输出数据,并将所述输出数据传输至FIFO子模块,以及将获取的后量子格密码引擎的状态信息传输至AXI子模块;
所述采样器单元,用于根据初始化数据,采用采样算法生成采样数据,并将采样数据分别传输至密钥生成单元、签名单元和验证单元;
所述密钥生成单元,用于根据初始化数据、密钥生成指令、输入数据和采样数据,采用密钥生成算法,得到密钥生成结果,并将所述密钥生成结果传输至控制单元;
所述签名单元,用于根据初始化数据、签名指令、输入数据和采样数据,采用签名算法,得到签名结果,并将所述签名结果传输至控制单元;
所述验证单元,用于根据初始化数据、验证指令、输入数据和采样数据,采用验证算法,得到验证结果,并将所述验证结果传输至控制单元。
2.根据权利要求1所述基于指令集的后量子格密码硬件优化结构,其特征在于,所述密钥生成单元包括第一控制子单元、第一初始化子单元和第一多项式运算子单元;所述签名单元包括预计算子单元和拒绝循环子单元;所述验证单元包括第二控制子单元、第二初始化子单元和第二多项式运算子单元;所述采样器单元包括第三控制子单元和Keccak子单元;
所述第三控制子单元,用于将初始化数据传输至Keccak子单元,以及获取Keccak子单元传输的采样数据,并将采样数据传输至第一控制子单元、第二控制子单元、预计算子单元和拒绝循环子单元;
所述Keccak子单元,用于根据初始化数据,执行Keccak算法,得到采样数据,并将采样数据传输至第三控制子单元;
所述第一控制子单元,用于将采样数据和初始化数据传输至第一初始化子单元,以及将密钥生成结果传输至控制单元;
所述第一初始化子单元,用于根据采样数据和初始化数据,采用SHAKE128/256算法,得到密钥生成数据,并将密钥生成数据传输至第一多项式运算子单元;
所述第一多项式运算子单元,用于根据密钥生成数据,对NTT的多项式和INTT的多项式进行运算,得到密钥生成结果,并将密钥生成结果传输至第一控制子单元;
所述预计算子单元,用于获取采样数据和控制单元传输的初始化数据,对采样数据和初始化数据对NTT的多项式预计算部分和INTT的多项式预计算部分进行计算,得到预计算结果,并将预计算结果传输至拒绝循环子单元;
所述拒绝循环子单元,用于获取采样数据和控制单元传输的初始化数据,对采样数据和初始化数据,对NTT的多项式和INTT的多项式进行计算,得到多项式结果,并根据多项式结果和预计算结果得到签名结果,将签名结果传输至控制单元;
所述第二控制子单元,用于获取采样数据和控制单元传输的初始化数据,并将采样数据和初始化数据传输至第二初始化子单元,以及将验证结果传输至控制单元;
所述第二初始化子单元,用于根据采样数据和初始化数据,采用SHAKE128/256算法,得到验证数据,并将验证数据传输至第二多项式运算子单元;
所述第二多项式运算子单元,用于根据验证数据,得到验证结果,并将验证结果传输至控制单元。
3.根据权利要求2所述基于指令集的后量子格密码硬件优化结构,其特征在于,所述Keccak子单元的硬件结构包括第一FIFO器件、第二FIFO器件、寄存器缓存器件、控制器件、填充器件、串并转换拼接器件、串并转换拆分器件、轮运算器件、轮计数器件和轮常数器件;
所述第一FIFO器件分别与控制器件和填充器件连接;所述控制器件分别与第二FIFO器件、串并转换拼接器件、串并转换拆分器件和轮计数器件连接;所述填充器件与串并转换拼接器件连接;所述轮运算器件分别与轮常数器件、寄存器缓存器件和串并转换拼接器件连接;所述寄存器缓存器件与串并转换拆分器件连接;所述轮常数器件与轮计数器件连接;所述串并转换拆分器件与第二FIFO器件连接。
4.根据权利要求3所述基于指令集的后量子格密码硬件优化结构,其特征在于,所述后量子格密码引擎子模块的硬件结构包括初始化配置单元、均与初始化配置单元连接的若干个蝶形运算单元、与各蝶形运算单元连接的地址控制单元以及若干个多RAM通道;所述多RAM通道均包括第一RAM、第二RAM和第三RAM;所述第一RAM、第二RAM和第三RAM分别与蝶形运算单元连接;
所述初始化配置单元,用于向各蝶形运算单元传输初始化配置信息;
所述地址控制单元,用于向各多RAM通道和各蝶形运算单元发送控制信号;
各所述蝶形运算单元,均根据初始化配置信息完成初始化,并根据控制信号基于硬件结构计算NTT、INTT和PWM,得到迭代结果;
各所述多RAM通道,均用于根据控制信号对所述多项式的系数和每次的迭代结果进行存取;
所述蝶形运算单元的硬件结构包括第一选择器(1)、第二选择器(2)、第三选择器(3)、第四选择器(4)、第五选择器(5)、第六选择器(6)、第一缓存3拍寄存器(7)、第二缓存3拍寄存器(8)、第一缓存器(9)、第二缓存器(10)、第三缓存器(11)、第四缓存器(12)、第五缓存器(13)、模加器(14)、模减器(15)、乘法器(16)、模约简运算器(17)、第一x/2模乘运算器(18)和第二x/2模乘运算器(19);
所述第一选择器(1)分别与模加器(14)和模减器(15)连接;所述模加器(14)与第一缓存器(9)连接;所述第一缓存器(9)分别与第一缓存3拍寄存器(7)和第二选择器(2)连接;所述第一缓存3拍寄存器(7)与第一x/2模乘运算器(18)连接;所述第一x/2模乘运算器(18)与第二选择器(2)连接;所述第二缓存3拍寄存器(8)与第三选择器(3)连接;所述第三选择器(3)分别与模加器(14)和模减器(15)连接;所述模减器(15)与第二缓存器(10)连接;所述第二缓存器(10)分别与第四选择器(4)和第五选择器(5)连接;所述第五选择器(5)与乘法器(16)连接;所述第三缓存器(11)与第六选择器(6)连接;所述第六选择器(6)与乘法器(16)连接;所述乘法器(16)与第四缓存器(12)连接;所述第四缓存器(12)与模约简运算器(17)连接;所述模约简运算器(17)与第五缓存器(13)连接;所述第五缓存器(13)分别与第一选择器(1)和第二x/2模乘运算器(19)连接;所述第二x/2模乘运算器(19)与第四选择器(4)连接。
5.根据权利要求4所述基于指令集的后量子格密码硬件优化结构,其特征在于,所述乘法器(16)采用KOA算法,得到KOA乘法器;所述KOA乘法器的硬件结构包括第一输入端、第二输入端、输出端、第一加法运算器、第二加法运算器、第三加法运算器、第一DSP乘法器、第二DSP乘法器、第三DSP乘法器、第六缓存器、第七缓存器、第八缓存器、第九缓存器、减法运算器、n指数运算器和n/2指数运算器;
所述第一输入端的A段分别与第一加法运算器和第一DSP乘法器连接;所述第一输入端的B段分别与第一加法运算器和第二DSP乘法器连接;所述第二输入端的A段分别与第二加法运算器和第一DSP乘法器连接;所述第二输入端的B段分别与所述第二加法运算器和第二DSP乘法器连接;所述第一加法运算器和第二加法运算器均与第三DSP乘法器连接;所述第一DSP乘法器与第六缓存器连接;所述第二DSP乘法器与第七缓存器连接;所述第三DSP乘法器与第八缓存器连接;所述第六缓存器分别与减法运算器和n指数运算器连接;所述第七缓存器、第八缓存器和第九缓存均与减法运算器连接;所述第九缓存器与n/2指数运算器连接;所述第七缓存器、n指数运算器和n/2指数运算器均与第三加法运算器连接;所述第三加法运算器与输出端连接。
6.根据权利要求4所述基于指令集的后量子格密码硬件优化结构,其特征在于,所述模约简运算器的硬件结构包括乘法器DSP1、乘法器DSP2、乘法器DSP3、乘法器DSP4、通用加法器Adder和多路复用器;所述通用加法器Adder分别与乘法器DSP1和第一移位寄存器连接;所述乘法器DSP1分别与乘法器DSP2、第三移位寄存器和第一指数运算器连接;所述乘法器DSP2分别与第二移位寄存器和乘法器DSP3连接;所述第三移位寄存器分别与第一移位寄存器、第一指数运算器和第二指数运算器连接;所述乘法器DSP3分别与第二指数运算器和乘法器DSP4连接;所述乘法器DSP4分别与多路复用器、多路选择器和第一符号选择器连接;所述多路选择器与第二符号选择器连接;所述多路复用器分别与第四移位寄存器和第一符号选择器连接。
7.根据权利要求6所述基于指令集的后量子格密码硬件优化结构,其特征在于,所述模约简运算器采用的模约简算法的表达式为:
E=λ[45:0]=213(x[11:10]+x[9:0])-(y+x[11:10])+zmodq
x=λ[45:43]+λ[42:33]+λ[32:23]
y=λ[45:43]+λ[45:33]+λ[45:23]
z=λ[22:0]
其中,E为模约简算法;λ为待取模的输入数值;x为第一中间参数;y为第二中间参数;z为第三中间参数;mod为取模运算;q为模数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310085437.9A CN116094711B (zh) | 2023-02-07 | 2023-02-07 | 一种基于指令集的后量子格密码硬件优化结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310085437.9A CN116094711B (zh) | 2023-02-07 | 2023-02-07 | 一种基于指令集的后量子格密码硬件优化结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116094711A CN116094711A (zh) | 2023-05-09 |
CN116094711B true CN116094711B (zh) | 2023-09-12 |
Family
ID=86198990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310085437.9A Active CN116094711B (zh) | 2023-02-07 | 2023-02-07 | 一种基于指令集的后量子格密码硬件优化结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116094711B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116865979B (zh) * | 2023-09-05 | 2023-11-10 | 南京航空航天大学 | 一种基于后量子数字签名的mdc-ntt装置 |
CN118013592B (zh) * | 2024-04-10 | 2024-06-21 | 成都时域半导体有限公司 | 一种消息摘要生成电路与方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342310A (zh) * | 2021-06-18 | 2021-09-03 | 南京大学 | 一种应用于格密码的串行参数可配快速数论变换硬件加速器 |
CN114154640A (zh) * | 2021-11-25 | 2022-03-08 | 华中科技大学 | 用于实现后量子密码Saber算法的处理器 |
CN114640454A (zh) * | 2022-04-02 | 2022-06-17 | 中山大学 | 一种后量子密码Crystals Kyber协议的密码系统 |
CN115001693A (zh) * | 2022-06-25 | 2022-09-02 | 复旦大学 | 基于fpga的格基密钥封装算法oskr的纯硬件实现结构 |
CN115412241A (zh) * | 2022-07-25 | 2022-11-29 | 华中科技大学 | 实现后量子密码算法Kyber和Saber的融合密码安全处理器 |
WO2022260672A1 (en) * | 2021-06-10 | 2022-12-15 | Pqsecure Technologies, Llc | A low footprint resource sharing hardware architecture for crystals-dilithium and crystals-kyber |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10581604B2 (en) * | 2017-10-17 | 2020-03-03 | Comsats Institute Of Information Technology | Post-quantum cryptographic communication protocol |
-
2023
- 2023-02-07 CN CN202310085437.9A patent/CN116094711B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022260672A1 (en) * | 2021-06-10 | 2022-12-15 | Pqsecure Technologies, Llc | A low footprint resource sharing hardware architecture for crystals-dilithium and crystals-kyber |
CN113342310A (zh) * | 2021-06-18 | 2021-09-03 | 南京大学 | 一种应用于格密码的串行参数可配快速数论变换硬件加速器 |
CN114154640A (zh) * | 2021-11-25 | 2022-03-08 | 华中科技大学 | 用于实现后量子密码Saber算法的处理器 |
CN114640454A (zh) * | 2022-04-02 | 2022-06-17 | 中山大学 | 一种后量子密码Crystals Kyber协议的密码系统 |
CN115001693A (zh) * | 2022-06-25 | 2022-09-02 | 复旦大学 | 基于fpga的格基密钥封装算法oskr的纯硬件实现结构 |
CN115412241A (zh) * | 2022-07-25 | 2022-11-29 | 华中科技大学 | 实现后量子密码算法Kyber和Saber的融合密码安全处理器 |
Non-Patent Citations (1)
Title |
---|
Compact domain-specific co-processor for accelerating module lattice-based KEM;Jose Maria Bermudo Mera 等;IEEE Xplore;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116094711A (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116094711B (zh) | 一种基于指令集的后量子格密码硬件优化结构 | |
Bisheh-Niasar et al. | Cryptographic accelerators for digital signature based on Ed25519 | |
Roy et al. | HEPCloud: An FPGA-based multicore processor for FV somewhat homomorphic function evaluation | |
CA2244337C (en) | Encryption processor with shared memory interconnect | |
EP3758275B1 (en) | Post quantum public key signature operation for reconfigurable circuit devices | |
CN101170406B (zh) | 双核公钥密码算法运算协处理器的一种实现方法 | |
CN113078996B (zh) | Sm4密码算法的fpga优化实现方法、系统及应用 | |
CN114640454A (zh) | 一种后量子密码Crystals Kyber协议的密码系统 | |
CN101599828A (zh) | 一种高效的rsa加解密方法及其协处理器 | |
CN114895870B (zh) | 基于fpga实现的高效可重构sm2点乘方法及系统 | |
Li et al. | Scalable and parallel optimization of the number theoretic transform based on FPGA | |
Hämäläinen et al. | 6.78 gigabits per second implementation of the IDEA cryptographic algorithm | |
CN114238205A (zh) | 一种抗功耗攻击的高性能ecc协处理器系统 | |
Wang et al. | TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm | |
CN110493003B (zh) | 一种基于四基二进制底层模运算的快速加密系统 | |
CN117155572A (zh) | 一种基于gpu并行实现密码技术中大整数乘法的方法 | |
CN116561819A (zh) | 一种基于Toom-Cook环上多项式乘法的加解密方法及环上多项式乘法器 | |
Bie et al. | An energy-efficient reconfigurable asymmetric modular cryptographic operation unit for RSA and ECC | |
Kanda et al. | Vedic Multiplier-based International Data Encryption Algorithm Crypto-Core for Efficient Hardware Multiphase Encryption Design | |
CN115412241A (zh) | 实现后量子密码算法Kyber和Saber的融合密码安全处理器 | |
Lv et al. | High-performance optimization of SM4-GCM based on FPGA | |
Hafeez et al. | High Throughput Acceleration of Scabbard Key Exchange and Key Encapsulation Mechanism Using Tensor Core on GPU for IoT Applications | |
Ji et al. | HI-Kyber: A novel high-performance implementation scheme of Kyber based on GPU | |
Kundu et al. | Rudraksh: A compact and lightweight post-quantum key-encapsulation mechanism | |
CN115765990B (zh) | 一种后量子密码算法的ntru安全协处理器 |
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 |