CN116436709B - 一种数据的加解密方法、装置、设备和介质 - Google Patents

一种数据的加解密方法、装置、设备和介质 Download PDF

Info

Publication number
CN116436709B
CN116436709B CN202310701493.0A CN202310701493A CN116436709B CN 116436709 B CN116436709 B CN 116436709B CN 202310701493 A CN202310701493 A CN 202310701493A CN 116436709 B CN116436709 B CN 116436709B
Authority
CN
China
Prior art keywords
data
bit
bit width
encryption
modulus
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
Application number
CN202310701493.0A
Other languages
English (en)
Other versions
CN116436709A (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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry 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 Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN202310701493.0A priority Critical patent/CN116436709B/zh
Publication of CN116436709A publication Critical patent/CN116436709A/zh
Application granted granted Critical
Publication of CN116436709B publication Critical patent/CN116436709B/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
    • 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/0442Network 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 asymmetric encryption, i.e. different keys 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及数据安全技术领域,公开了一种数据的加解密方法、装置、设备和介质,现场可编程门阵列依据加解密算法生成包括加密密钥、解密密钥、模数的密钥信息;将待处理数据转换为设定比特位宽的标准化数据。根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽。基于指数位宽、模数位宽以及标准化数据所需的密钥和模数,对标准化数据进行向量迭代加和移位运算,得到加解密数据。设定比特位宽,可实现对多种类型的加解密算法的兼容。依赖于指数位宽和模数位宽,通过单元拆分、层级复用将大位宽数据的运算拆分为小位宽的运算,使得现场可编程门阵列可以实现大位宽数据的运算。并且有着更好的系统性能和安全性。

Description

一种数据的加解密方法、装置、设备和介质
技术领域
本发明涉及数据安全技术领域,特别是涉及一种数据的加解密方法、装置、设备和介质。
背景技术
伴随着互联网的迅猛发展和数字经济的快速推进,数据呈现爆发增长。数据作为前沿技术开发的重要内容,其安全性至关重要。采用密码算法对数据进行加解密可提升数据的安全性。
常采用的密码算法包括RSA算法。RSA算法是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的以大素数和模幂算法为核心的密码算法。对于RSA算法而言,不论是执行加密操作还是执行解密操作,其实质上都是进行模幂运算,而且加解密形式是相同的。常用的加密密钥e和解密密钥d的密钥长度有1024 bit(比特)、2048bit、4096bit等。
目前的计算机无法对这样大位宽的模幂运算直接运算。现场可编程门阵列(Field-Programmable Gate Array,FPGA)作为一种可编程的逻辑器件,内部含有丰富的逻辑门和触发器,可以快速方便的搭建各种硬件电路。但是FPGA在实现大位宽数据的加、减、乘、模等运算时,往往需要较为复杂的布线方式,从而导致编译时间极长或者综合编译不通过的问题。
可见,如何保证FPGA实现大位宽数据的运算,是本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供一种数据的加解密方法、装置、设备和计算机可读存储介质,可以保证FPGA实现大位宽数据的运算。
为解决上述技术问题,本发明实施例提供一种数据的加解密方法,适用于现场可编程门阵列,所述方法包括:
依据加解密算法生成密钥信息;其中,所述密钥信息包括加密密钥、解密密钥、模数;
将获取的待处理数据转换为设定比特位宽的标准化数据;
根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽;
基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据。
一方面,所述根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽包括:
依据所述加解密算法所匹配的有效比特位设置第一变量的最高有效位;
在位宽信号有效的情况下,根据所述第一变量的最高有效位对待测数据进行多次位运算,以得到新的待测数据;其中,所述待测数据为指数或模数;
将所述新的待测数据按照设定比特步进赋值给第二变量,直至所述第二变量为非零值,则根据置换规则对所述第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出所述待测数据的位宽。
一方面,所述根据所述第一变量的最高有效位对所述待测数据进行多次位运算,以得到新的待测数据包括:
依次左移所述第一变量得到待测数据的移位步长;其中,所述待测数据为指数或模数;
每得到一次移位步长,则基于所述移位步长对当前待测数据进行右移,将当前待测数据与右移后的待测数据的按位或运算的运算结果作为最新的当前待测数据,直至所述第一变量的最高有效位为一,则输出最新的当前待测数据;
对所述最新的当前待测数据执行加一操作,以得到新的待测数据。
一方面,所述将所述新的待测数据按照设定比特步进赋值给第二变量,直至所述第二变量为非零值包括:
从所述新的待测数据中截取低16比特数据赋值给第二变量;
判断所述第二变量是否为零;
在所述第二变量为零的情况下,将截取低16比特数据后的剩余数据作为新的待测数据,并返回所述从所述新的待测数据中截取低16比特数据赋值给第二变量的步骤;
在所述第二变量为非零的情况下,根据置换规则对所述第二变量进行置换,将所述第一变量与置换后的第二变量的差值作为所述待测数据的位宽。
一方面,所述根据置换规则对所述第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出所述待测数据的位宽包括:
查询变量值和置换值之间的对应关系列表,以确定出所述第二变量匹配的第二置换值;
将所述第一变量与所述第二置换值的差值作为所述待测数据的位宽。
一方面,所述基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据包括:
判断指数是否为零;
在所述指数为零的情况下,将利用所述密钥对所述标准化数据进行加解密的运算转换为模除运算,以得到加解密数据;
在所述指数不为零的情况下,将利用所述密钥对所述标准化数据进行加解密的运算转换为模乘运算;
依据所述指数位宽和所述模数位宽,将所述模乘运算拆分为多个数据加和移位操作,以得到加解密数据。
一方面,所述依据所述指数位宽和所述模数位宽,将所述模乘运算拆分为多个数据加和移位操作,以得到加解密数据包括:
从所述模数的当前低位截取所述模数位宽的待分析模数数据;从所述指数的当前低位截取所述指数位宽的待分析指数数据;
依据所述待分析指数数据的最高比特位的取值,选取匹配的运算规则;
按照所述运算规则对所述待分析指数数据、所述待分析模数数据以及所述标准化数据进行处理,以得到运算结果;
每得到一次运算结果,则将所述指数位宽减一;在当前减一后的指数位宽不为零的情况下,返回所述从所述模数的当前低位截取所述模数位宽的待分析模数数据;从所述指数的当前低位截取所述指数位宽的待分析指数数据的步骤;在当前减一后的指数位宽为零的情况下,输出当前的运算结果。
一方面,所述运算规则包括基于模数对数据进行模乘运算的第一规则,基于前一次模乘运算结果迭代的第二规则;
相应的,所述依据所述待分析指数数据的最高比特位的取值,选取匹配的运算规则包括:
在所述待分析指数数据的最高比特位为零的情况下,选取第一规则;
在所述待分析指数数据的最高比特位不为零的情况下,选取第二规则。
一方面,所述按照所述运算规则对所述待分析指数数据、所述待分析模数数据以及所述标准化数据进行处理,以得到运算结果包括:
在所述运算规则为第一规则的情况下,依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行数据加和移位操作,以得到运算结果。
一方面,所述依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行数据加操作包括:
根据所述加解密算法所匹配的有效比特位,将依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行的数据加操作拆分为多个数据加子操作;
对多个所述数据加子操作进行迭代运算。
一方面,所述按照所述运算规则对所述待分析指数数据、所述待分析模数数据以及所述标准化数据进行处理,以得到运算结果包括:
在所述运算规则为第二规则的情况下,依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行数据加和移位操作,以得到运算结果。
一方面,所述依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行数据加操作包括:
根据所述加解密算法所匹配的有效比特位,将依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行的数据加操作拆分为多个数据加子操作;
对多个所述数据加子操作进行迭代运算。
一方面,在所述基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据之后,还包括:
将所述加解密数据转换为适配双倍速率同步动态随机存储器位宽的数据,并将转换后的数据写入所述双倍速率同步动态随机存储器。
一方面,在所述基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据之后,还包括:
向上位机发送中断信号,以便于所述上位机接收到所述中断信号后从所述双倍速率同步动态随机存储器中读取数据。
一方面,所述依据加解密算法生成密钥信息包括:
利用流密码算法生成多个随机数;
从多个所述随机数中筛选出第一大素数和第二大素数;
基于所述第一大素数和所述第二大素数,确定出模数和所述模数的欧拉函数值;
将所述欧拉函数值的互质数作为加密密钥,并对所述加密密钥求模逆得到解密密钥。
一方面,所述从多个所述随机数中筛选出第一大素数和第二大素数包括:
利用设定的素数组对多个所述随机数进行筛选,得到待检测素数;
根据随机化算法对所述待检测素数进行检测,并依据检测结果从所述待检测素数中筛选出第一大素数和第二大素数。
一方面,所述将获取的待处理数据转换为设定比特位宽的标准化数据包括:
将获取的待处理数据转换为4096比特的标准化数据。
一方面,还包括:
基于当前的可用逻辑资源以及所述加解密算法的类型,确定出执行所述根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽的步骤的操作方式;其中,所述操作方式包括并行或者级联。
本发明实施例还提供了一种数据的加解密装置,适用于现场可编程门阵列,所述装置包括生成单元、转换单元、确定单元和运算单元;
所述生成单元,用于依据加解密算法生成密钥信息;其中,所述密钥信息包括加密密钥、解密密钥、模数;
所述转换单元,用于将获取的待处理数据转换为设定比特位宽的标准化数据;
所述确定单元,用于根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽;
所述运算单元,用于基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据。
一方面,所述确定单元包括设置子单元、位运算子单元、赋值子单元和置换子单元;
所述设置子单元,用于依据所述加解密算法所匹配的有效比特位设置第一变量的最高有效位;
所述位运算子单元,用于在位宽信号有效的情况下,根据所述第一变量的最高有效位对待测数据进行多次位运算,以得到新的待测数据;其中,所述待测数据为指数或模数;
所述赋值子单元,用于将所述新的待测数据按照设定比特步进赋值给第二变量,直至所述第二变量为非零值;
所述置换子单元,用于根据置换规则对所述第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出所述待测数据的位宽。
一方面,所述位运算子单元用于依次左移所述第一变量得到待测数据的移位步长;其中,所述待测数据为指数或模数;
每得到一次移位步长,则基于所述移位步长对当前待测数据进行右移,将当前待测数据与右移后的待测数据的按位或运算的运算结果作为最新的当前待测数据,直至所述第一变量的最高有效位为一,则输出最新的当前待测数据;
对所述最新的当前待测数据执行加一操作,以得到新的待测数据。
一方面,所述赋值子单元用于从所述新的待测数据中截取低16比特数据赋值给第二变量;
判断所述第二变量是否为零;
在所述第二变量为零的情况下,将截取低16比特数据后的剩余数据作为新的待测数据,并返回所述从所述新的待测数据中截取低16比特数据赋值给第二变量的步骤;
在所述第二变量为非零的情况下,根据置换规则对所述第二变量进行置换,将所述第一变量与置换后的第二变量的差值作为所述待测数据的位宽。
一方面,所述置换子单元用于查询变量值和置换值之间的对应关系列表,以确定出所述第二变量匹配的第二置换值;
将所述第一变量与所述第二置换值的差值作为所述待测数据的位宽。
一方面,所述运算单元包括判断子单元、第一转换子单元、第二转换子单元和拆分子单元;
所述判断子单元,用于判断指数是否为零;
所述第一转换子单元,用于在所述指数为零的情况下,将利用所述密钥对所述标准化数据进行加解密的运算转换为模除运算,以得到加解密数据;
所述第二转换子单元,用于在所述指数不为零的情况下,将利用所述密钥对所述标准化数据进行加解密的运算转换为模乘运算;
所述拆分子单元,用于依据所述指数位宽和所述模数位宽,将所述模乘运算拆分为多个数据加和移位操作,以得到加解密数据。
一方面,所述拆分子单元用于从所述模数的当前低位截取所述模数位宽的待分析模数数据;从所述指数的当前低位截取所述指数位宽的待分析指数数据;
依据所述待分析指数数据的最高比特位的取值,选取匹配的运算规则;
按照所述运算规则对所述待分析指数数据、所述待分析模数数据以及所述标准化数据进行处理,以得到运算结果;
每得到一次运算结果,则将所述指数位宽减一;在当前减一后的指数位宽不为零的情况下,返回所述从所述模数的当前低位截取所述模数位宽的待分析模数数据;从所述指数的当前低位截取所述指数位宽的待分析指数数据的步骤;在当前减一后的指数位宽为零的情况下,输出当前的运算结果。
一方面,所述运算规则包括基于模数对数据进行模乘运算的第一规则,基于前一次模乘运算结果迭代的第二规则;
相应的,所述拆分子单元用于在所述待分析指数数据的最高比特位为零的情况下,选取第一规则;
在所述待分析指数数据的最高比特位不为零的情况下,选取第二规则。
一方面,所述拆分子单元用于
在所述运算规则为第一规则的情况下,依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行数据加和移位操作,以得到运算结果。
一方面,所述拆分子单元用于根据所述加解密算法所匹配的有效比特位,将依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行的数据加操作拆分为多个数据加子操作;对多个所述数据加子操作进行迭代运算。
一方面,所述拆分子单元用于在所述运算规则为第二规则的情况下,依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行数据加和移位操作,以得到运算结果。
一方面,所述拆分子单元用于根据所述加解密算法所匹配的有效比特位,将依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行的数据加操作拆分为多个数据加子操作;对多个所述数据加子操作进行迭代运算。
一方面,还包括存储单元;
所述存储单元,用于将所述加解密数据转换为适配双倍速率同步动态随机存储器位宽的数据,并将转换后的数据写入所述双倍速率同步动态随机存储器。
一方面,还包括发送单元;
所述发送单元,用于在所述基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据之后,向上位机发送中断信号,以便于所述上位机接收到所述中断信号后从所述双倍速率同步动态随机存储器中读取数据。
一方面,所述生成单元包括随机子单元、筛选子单元、确定子单元和作为子单元;
所述随机子单元,用于利用流密码算法生成多个随机数;
所述筛选子单元,用于从多个所述随机数中筛选出第一大素数和第二大素数;
所述确定子单元,用于基于所述第一大素数和所述第二大素数,确定出模数和所述模数的欧拉函数值;
所述作为子单元,用于将所述欧拉函数值的互质数作为加密密钥,并对所述加密密钥求模逆得到解密密钥。
一方面,所述筛选子单元用于利用设定的素数组对多个所述随机数进行筛选,得到待检测素数;根据随机化算法对所述待检测素数进行检测,并依据检测结果从所述待检测素数中筛选出第一大素数和第二大素数。
一方面,所述转换单元用于将获取的待处理数据转换为4096比特的标准化数据。
一方面,还包括方式确定单元;
所述方式确定单元,用于基于当前的可用逻辑资源以及所述加解密算法的类型,确定出执行所述根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽的步骤的操作方式;其中,所述操作方式包括并行或者级联。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述数据的加解密方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据的加解密方法的步骤。
由上述技术方案可以看出,现场可编程门阵列依据加解密算法生成密钥信息;其中,密钥信息可以包括加密密钥、解密密钥、模数;为了兼容不同类型的加解密算法,可以基于不同类型的加解密算法的的密钥长度设定比特位宽,将获取的待处理数据转换为设定比特位宽的标准化数据。数据的加解密运算属于大位宽数据的运算,为了使得现场可编程门阵列能够顺利实现大位宽数据的运算,可以根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽。基于指数位宽、模数位宽以及标准化数据所需的密钥和模数,对标准化数据进行向量迭代加和移位运算,得到加解密数据。本发明的有益效果在于,通过设定比特位宽,实现对多种类型的加解密算法的兼容。依赖于指数位宽和模数位宽,通过单元拆分、层级复用可以将大位宽数据的运算拆分为小位宽的运算,现场可编程门阵列无需复杂的布线便能够支持小位宽的运算,通过运算方式的拆分,使得现场可编程门阵列可以实现大位宽数据的运算。并且相较与软件实现数据的加解密运算,现场可编程门阵列属于硬件设备,其有着更好的系统性能和安全性。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据的加解密方法的流程图;
图2为本发明实施例提供的一种确定指数位宽和模数位宽的方法的流程图;
图3为本发明实施例提供的一种位宽计算的示意图;
图4为本发明实施例提供的一种基于指数位宽、模数位宽对标准化数据进行加解密处理的方法的流程图;
图5为本发明实施例提供的一种大位宽运算加优化的具体实施示意图;
图6为本发明实施例提供的一种RSA加解密硬件实现的示意图;
图7为本发明实施例提供的一种数据的加解密装置的结构示意图;
图8为本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”,以及与“包括”和“具有”相关的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种数据的加解密方法。图1为本发明实施例提供的一种数据的加解密方法的流程图,适用于现场可编程门阵列,该方法包括:
S101:依据加解密算法生成密钥信息。
其中,密钥信息可以包括加密密钥、解密密钥、模数。
为了便于描述,在本发明实施例中,可以采用符号e表示加密密钥,d表示解密密钥,N表示模数。
以m表示明文数据,c表示密文数据为例,利用加解密算法对明文数据进行加密的原理为c=m e (modN),对密文数据进行解密的原理为m=c d (modN)。因此在利用加解密算法对数据执行加解密操作时,需要先获取加密密钥、解密密钥和模数。
在本发明实施例中,可以利用流密码算法生成多个随机数;从多个随机数中筛选出第一大素数和第二大素数;基于第一大素数和第二大素数,确定出模数和模数的欧拉函数值;将欧拉函数值的互质数作为加密密钥,并对加密密钥求模逆得到解密密钥。
对于随机数的生成,可以采用流密码算法的国际标准Grain算法,其对应的硬件结构主要包括线性反馈移位寄存器、非线性移位寄存器和输出函数构成。
根据素数定理,小于N的所有素数的总数大约为N/lnN,任意随机数是素数的概率为1/lnN,如果直接进行素数检测,概率是非常低的。
因此在本发明实施例中,可以利用设定的素数组对多个随机数进行筛选,得到待检测素数;根据随机化算法对待检测素数进行检测,并依据检测结果从待检测素数中筛选出第一大素数和第二大素数。
筛选第一大素数和第二大素数的具体过程可以包括:首先使用若干小素数对产生的大量随机数进行筛选,然后送入素数检测模块。小素数的范围也决定了筛选的精度。筛选原理如下:p通过了k个小素数m i (1≤ik)的筛选,未通过k+1个素数m k+1的筛选,那么将p加上筛选过的前k个小素数的乘积,即,因为/>可以被m i 整除,p不能被m i 整除,所以相加后也不能被m i 整除,同理相加后的p也不能被m k+1整除。素数检测模块可以采用素数检测方法(Miller-Rabin),它的原理简单概括就是:对于给定的待检测素数n,随机选取一个数a(1<a<n),然后计算出n-1=2^s*d的形式。计算a^dmodn,如果计算结果等于1或n-1,则n可能是素数。
筛选出两个大素数pq之后,可以根据公式N=p*qφ(N)=(p-1)*q-1),计算出Nφ(N)。φ(N)表示N的欧拉函数值。公钥指数e的选取:使0<e<φ(N)且gcd(φ(N),e)=1。从目前国际整数标准X.509中建议使用65537,最后对加密密钥e求模逆就可得到解密密钥d
S102:将获取的待处理数据转换为设定比特位宽的标准化数据。
常采用的加解密算法包括RSA1024、RSA2048和RSA4096。在本发明实施例中,为了兼容不同类型的加解密算法,设定的比特位宽可以为4096比特。在获取到待处理数据后,可以将待处理数据转换为4096比特的标准化数据。
在实际应用中,可以采用AXI4_lite接口完成各种相关控制寄存器的配置,即在控制寄存器中记录设定的比特位宽,从而兼容RSA1024、RSA2048、RSA4096这三种类型的加解密算法。
S103:根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽。
常用的密钥长度有1024bit、2048 bit和4096 bit,利用密钥进行数据的加解密运算属于大位宽数据运算,FPGA想要实现大位宽数据运算需要复杂的布线,复杂布线造成编译时间极长。并且会存在无法成功布线导致编译不通过的现象。
因此在本发明实施例中,为了降低布线难度,保证FPGA能够顺利实现大位宽数据的运算,采用了将大位宽数据运算拆分为小位宽数据运算的实现方式,小位宽数据运算所对应的布线方式简单,FPGA完全可以满足小位宽数据运算的布线需求,从而达到保证FPGA顺利实现大位宽数据运算的目的。
数据的加解密运算需要利用指数和模数,为了实现大位宽数据运算拆分为小位宽数据运算,需要确定出执行小位宽数据运算所对应的指数位宽和模数位宽。
指数位宽指的是执行数据加解密运算时所依赖的指数的位数,模数位宽指的是执行数据加解密运算时所依赖的模数的位数。
在实际应用中,指数位宽和模数位宽的取值受当前所采用的加解密算法所匹配的有效比特位的限制。
所采用的加解密算法为RSA1024时,由于210=1024,因此RSA1024对应的有效比特位为10。所采用的加解密算法为RSA2048时,由于211=2048,因此RSA2048对应的有效比特位为11。所采用的加解密算法为RSA4096时,由于212=4096,因此RSA4096对应的有效比特位为12。
在本发明实施例中,可以基于指数位宽和模数位宽的确定原理设置位宽计算优化算法。根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,可以确定出指数位宽和模数位宽。
指数位宽和模数位宽的确定原理类似,以指数位宽为例,可以利用加解密算法所匹配的有效比特位对指数进行位运算,从而确定出适合指数的指数位宽。同理,可以利用加解密算法所匹配的有效比特位对模数进行位运算,从而确定出适合模数的模数位宽。因此设置的位宽计算优化算法中可以包括对指数和模数进行位运算的具体操作方式。
在本发明实施例中,可以并行确定指数位宽和模数位宽,也可以级联确定指数位宽和模数位宽。
在实际应用中,可以基于当前的可用逻辑资源以及加解密算法的类型,确定出执行根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽的步骤的操作方式;其中,操作方式包括并行或者级联。
根据FPGA当前的可用逻辑资源和RSA算法类型,可例化多核并行,同时确定操作方式,可以提升整体运算效率。
S104:基于指数位宽、模数位宽以及标准化数据所需的密钥和模数,对标准化数据进行向量迭代加和移位运算,得到加解密数据。
利用密钥对标准化数据进行加解密的运算其本质为模幂运算,为了降低运算的难度,在本发明实施例中,可以将模幂运算转换为向量迭代加和移位运算。
由于指数和模数的长度较长,因此基于指数和模数对标准化数据进行加解密运算属于大位宽数据的运算,在本发明实施例中,依赖于指数位宽和模数位宽,可以将大位宽数据的运算拆分为小位宽数据的运算,从而使得FPGA顺利实现对标准化数据的加解密操作。
当标准化数据为密文数据时,其所需的密钥为解密密钥,最终得到的加解密数据为明文数据;当标准化数据为明文数据时,其所需的密钥为加密密钥,最终得到的加解密数据为密文数据。
由上述技术方案可以看出,现场可编程门阵列依据加解密算法生成密钥信息;其中,密钥信息可以包括加密密钥、解密密钥、模数;为了兼容不同类型的加解密算法,可以基于不同类型的加解密算法的的密钥长度设定比特位宽,将获取的待处理数据转换为设定比特位宽的标准化数据。数据的加解密运算属于大位宽数据的运算,为了使得现场可编程门阵列能够顺利实现大位宽数据的运算,可以根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽。基于指数位宽、模数位宽以及标准化数据所需的密钥和模数,对标准化数据进行向量迭代加和移位运算,得到加解密数据。本发明的有益效果在于,通过设定比特位宽,实现对多种类型的加解密算法的兼容。依赖于指数位宽和模数位宽,通过单元拆分、层级复用可以将大位宽数据的运算拆分为小位宽的运算,现场可编程门阵列无需复杂的布线便能够支持小位宽的运算,通过运算方式的拆分,使得现场可编程门阵列可以实现大位宽数据的运算。并且相较与软件实现数据的加解密运算,现场可编程门阵列属于硬件设备,其有着更好的系统性能和安全性。
图2为本发明实施例提供的一种确定指数位宽和模数位宽的方法的流程图,该方法包括:
S201:依据加解密算法所匹配的有效比特位设置第一变量的最高有效位。
在计算指数位宽和模数位宽时,可以设置两个变量,分别为第一变量和第二变量。为了便于描述,可以采用i表示第一变量,T表示第二变量。第二变量的初始值为0。
第一变量的最高有效位可以基于加解密算法所匹配的有效比特位设置。假设,加解密算法所匹配的有效比特位为10,则第一变量i的最高有效位为第10位。按照二进制的表示形式,第一变量i的第10位取值为1,剩余位取值为0。
S202:在位宽信号有效的情况下,根据第一变量的最高有效位对待测数据进行多次位运算,以得到新的待测数据。
其中,待测数据可以为指数或模数。
在位宽信号有效的情况下,说明具有确定指数位宽和模数位宽的需求,此时可以执行确定指数位宽和模数位宽的流程。
确定指数位宽和模数位宽的原理类似,在本发明实施例中,以指数位宽为例展开介绍。为了检测出指数的最高有效位,可以依次左移第一变量得到待测数据的移位步长。每得到一次移位步长,则基于移位步长对当前待测数据进行右移,将当前待测数据与右移后的待测数据的按位或运算的运算结果作为最新的当前待测数据,直至第一变量的最高有效位为一,则输出最新的当前待测数据;对最新的当前待测数据执行加一操作,以得到新的待测数据。
举例说明,对第一变量进行左移,对应的待测数据的移位步长为2i。i初始值为1,每左移一次则i的取值加1,直至左移到第一变量的最高有效位,则停止左移操作,此时输出的最新的当前待测数据是待测数据的所有有效位全部置1的结果。通过对最新的当前待测数据执行加一操作,可以得到待测数据的有效比特位清零,只保留最高有效比特位的高一位比特位数据为1。
S203:将新的待测数据按照设定比特步进赋值给第二变量,直至第二变量为非零值,则根据置换规则对第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出待测数据的位宽。
本发明实施例中,第二变量的长度可以设置为16比特。从新的待测数据中截取低16比特数据赋值给第二变量。判断第二变量是否为零。在第二变量为零的情况下,说明当前截取的数据并不包含新的待测数据的最高有效位,此时可以将截取低16比特数据后的剩余数据作为新的待测数据,并返回从新的待测数据中截取低16比特数据赋值给第二变量的步骤。
在第二变量为非零的情况下,说明当前截取的数据包含新的待测数据的最高有效位,此时可以根据置换规则对第二变量进行置换,将第一变量与置换后的第二变量的差值作为待测数据的位宽。
置换规则中可以包含不同变量所对应的置换值。可以以对应关系列表的方式记录各变量值所对应的置换值。
在实际应用中,可以查询变量值和置换值之间的对应关系列表,以确定出第二变量匹配的第二置换值;将第一变量与第二置换值的差值作为待测数据的位宽。
以第二变量为16比特为例,第二变量的取值为2 x x的取值从0至15,20对应的置换值为16,21对应的置换值为15,即x的取值每减一,对应的置换值相应的也减一。假设,第二变量为4,则对应的置换值为14。假设第一变量为32,则待测数据的位宽为32-14=18比特。
图3为本发明实施例提供的一种位宽计算的示意图,初始状态下第一变量i取值为1,第二变量T取值为0。假设加解密算法所匹配的有效比特位为10,则第一变量的最高有效位为第10位。第一变量每左移一位,i的取值加1,并将待测数据A按照移位步长2i进行右移,将当前的待测数据与右移后的待测数据进行按位或运算,即A|A>>2i。在i[max_b]==0时,则返回将第一变量左移一位,i的取值加1,并将待测数据A按照移位步长2i进行右移,将当前的待测数据与右移后的待测数据进行按位或运算的步骤。直至第一变量左移9次可以达到其最高有效位即i[max_b]==1,则将最新得到的数据A进行加1操作即A>>A+1,此时第一变量i变为0。将A每16比特步进赋值给第二变量T即T[j]= A[i+j],每赋值一次则将i加16,直至第二变量变为非零,则对最新的第二变量进行转换即fun(T),将当前的第一变量i减去fun(T)的差值作为最终的运算结果即result=i- fun(T)。最终的运算结果即为所需确定的位宽。当待测数据A为指数时,最终的运算结果为指数位宽;当待测数据A为模数时,最终的运算结果为模数位宽。
在本发明实施例中,基于实际的指数和模数以及加解密算法所匹配的有效比特位,来确定指数位宽和模数位宽,可以将大位宽数据运算拆分为若干个小位宽数据运算,极大的降低了FPGA布线的难度,更有利于FPGA支持大位宽数据运算。
图4为本发明实施例提供的一种基于指数位宽、模数位宽对标准化数据进行加解密处理的方法的流程图,该方法包括:
S401:判断指数是否为零。
在指数为零的情况下,执行S402;在指数不为零的情况下,执行S403。
S402:将利用密钥对标准化数据进行加解密的运算转换为模除运算,以得到加解密数据。
利用密钥对标准化数据进行加解密运算的本质是模幂运算。
将模幂运算转换为模除运算的方式属于目前较为常规的实现方式,在此不做赘述。
S403:将利用密钥对标准化数据进行加解密的运算转换为模乘运算。
在指数不为零的情况下,可以利用L-R转化规则将模幂运算转换为模乘运算。
S404:依据指数位宽和模数位宽,将模乘运算拆分为多个数据加和移位操作,以得到加解密数据。
在本发明实施例中,可以从模数的当前低位截取模数位宽的待分析模数数据;从指数的当前低位截取指数位宽的待分析指数数据;依据待分析指数数据的最高比特位的取值,选取匹配的运算规则。
最高比特位的取值有0和1两种情况,因此设置的运算规则可以包括两种规则,分别为第一规则和第二规则。其中,第一规则可以是基于模数对数据进行模乘运算的规则,第二规则可以是基于前一次模乘运算结果迭代的规则。
在待分析指数数据的最高比特位为零的情况下,选取第一规则;在待分析指数数据的最高比特位不为零的情况下,选取第二规则。
按照运算规则对待分析指数数据、待分析模数数据以及标准化数据进行处理,以得到运算结果;每得到一次运算结果,则将指数位宽减一;在当前减一后的指数位宽不为零的情况下,返回从模数的当前低位截取模数位宽的待分析模数数据;从指数的当前低位截取指数位宽的待分析指数数据的步骤;在当前减一后的指数位宽为零的情况下,输出当前的运算结果。
在运算规则为第一规则的情况下,可以依据待分析指数数据以及待分析模数数据对标准化数据进行数据加和移位操作,以得到运算结果。
为了降低运算的难度,在本发明实施例中,可以对数据加操作进行拆分。在具体实现中,可以根据加解密算法所匹配的有效比特位,将依据待分析指数数据以及待分析模数数据对标准化数据进行的数据加操作拆分为多个数据加子操作;对多个数据加子操作进行迭代运算。
在运算规则为第二规则的情况下,可以依据待分析指数数据以及待分析模数数据对前一次模乘运算结果进行数据加和移位操作,以得到运算结果。
为了降低运算的难度,在本发明实施例中,可以对数据加操作进行拆分。在具体实现中,可以根据加解密算法所匹配的有效比特位,将依据待分析指数数据以及待分析模数数据对前一次模乘运算结果进行的数据加操作拆分为多个数据加子操作;对多个数据加子操作进行迭代运算。
模乘运算主要是利用蒙哥马利模乘算法,其核心思想就是要计算a*b mod N,需要找到一个R,R满足两个条件:1、R=2^k>N,k是满足条件的最小整数;2、gcd(R,N)=1,即R和N互素。
基于图2的方法流程可以提前计算得到模数N的模数位宽n_len,取R=2^n_len。首先计算x=a*(2^ n_len)mod N。然后计算y=x*b*2^(-n_len)mod N,即得到最终的a*b mod N的结果。
两步模乘运算中最终都是将大位宽的模乘转化为大位宽的数据加和移位操作。在本发明实施例中,可以将大位宽数据加进一步拆分为若干小位宽的数据加。为了便于区分,可以将拆分后的小位宽的数据加称作数据加子操作。
拆分的步长可由内部寄存器控制,以此来适应不同电子设计自动化(Electronicdesign automation,EDA)软件对大位宽运算的策略,同时又优化了整体时序。大位宽运算加优化的具体实施示意图如图5所示,假设加解密算法所匹配的有效比特位为M,则可以将数据加操作拆分为以M为处理长度的多个数据加子操作。结合上述模乘运算的核心是计算a*b mod N,图5中最上侧表征的数据为数据a,拆分后的数据a分别为a1至aN。最下侧表征的数据为数据b,拆分后的数据b分别为b1至bN。在将大位宽加操作拆分为多个数据加子操作后,每个数据加子操作的输出结果会迭代进入下一个数据加子操作中。第一次数据加操作得到的运算结果称作第一运算结果,第二次数据加操作得到的运算结果称作第二运算结果,依次类推,第N-1次数据加操作得到的运算结果称作第N-1运算结果。第N次数据加操作得到的运算结果可以直接作为结果值输出。
在本发明实施例中,使用可编程逻辑器件实现了一种RSA加解密算法优化设计,相较与软件实现有着更好的系统性能和安全性。所有功能模块可以使用寄存器转换级电路(Register Transfer Level,RTL)进行设计、方便系统集成和移植。使用高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)的面向流的总线协议(AXI4-stream)完成数据通信,通过利用高级可扩展接口(Advanced eXtensible Interface,AXI)中用于低吞吐量存储映射通信的接口(AXI4_lite)完成各种相关控制寄存器的配置,兼容RSA1024、RSA2048、RSA4096三种加解密算法,同时对大位宽向量运算和大位宽长度计算相关算法进行优化处理,对大位宽运算拆分为可变步长的小位宽运算,同时使用较少的时钟周期完成大位宽长度的计算,以适应不同EDA工具对算法的综合编译和布局布线策略。
在得到加解密数据之后,可以将加解密数据转换为适配双倍速率同步动态随机存储器位宽的数据,并将转换后的数据写入双倍速率同步动态随机存储器(Double DataRate,DDR)。
在将加解密数据存储至DDR时,可以同时向上位机发送中断信号,以便于上位机接收到中断信号后从双倍速率同步动态随机存储器中读取数据。
图6为本发明实施例提供的一种RSA加解密硬件实现的示意图,基于所需实现的功能,可以在现场可编程门阵列(FPGA)中划分出寄存器控制模块、数据流控制模块、加解密模块和密钥对生成模块。
具体实施过程如下:寄存器控制模块首先根据RSA算法类型配置相关控制寄存器(密钥长度、加解密类型、分段等级等)。密钥对生成模块产生对应的公钥和私钥,公钥可以是对数据进行解密的解密密钥,私钥可以是对数据进行加密的加密密钥。为了实现FPGA与双倍速率同步动态随机存储器(DDR)的交互,可以在FPGA中设置存储器控制模块。数据流控制模块可以实现分别实现与存储器控制模块以及加解密模块的交互,基于此可以将数据流控制模块划分为格式转化子模块和位宽转换子模块。格式转化子模块在加密时将明文数据从DDR读取,在解密时将密文数据从DDR读取,然后转化为AXI4-stream格式、进而由位宽转换子模块进行一次位宽转换,转化为统一的4096bit送入加解密模块。加解密模块完成加密或解密运算后再进行一次位宽转换,转换为适配DDR控制器位宽的数据,然后将数据转化为axi4_full格式的数据写入DDR,同时产生中断给上位机,上位机将运算后的数据从DDR读取即可。
在本发明实施例中,使用FPGA作为硬件实现单元,设计了一种RSA加解密算法硬件实现的优化方法,使用AMBA AXI4-stream完成数据通信。使用AXI4_lite接口完成各种相关控制寄存器的配置,从而兼容RSA1024、RSA2048、RSA4096三种加解密算法。
图7为本发明实施例提供的一种数据的加解密装置的结构示意图,适用于现场可编程门阵列,装置包括生成单元71、转换单元72、确定单元73和运算单元74;
生成单元71,用于依据加解密算法生成密钥信息;其中,密钥信息包括加密密钥、解密密钥、模数;
转换单元72,用于将获取的待处理数据转换为设定比特位宽的标准化数据;
确定单元73,用于根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽;
运算单元74,用于基于指数位宽、模数位宽以及标准化数据所需的密钥和模数,对标准化数据进行向量迭代加和移位运算,得到加解密数据。
在一些实施例中,确定单元包括设置子单元、位运算子单元、赋值子单元和置换子单元;
设置子单元,用于依据加解密算法所匹配的有效比特位设置第一变量的最高有效位;
位运算子单元,用于在位宽信号有效的情况下,根据第一变量的最高有效位对待测数据进行多次位运算,以得到新的待测数据;其中,待测数据为指数或模数;
赋值子单元,用于将新的待测数据按照设定比特步进赋值给第二变量,直至第二变量为非零值;
置换子单元,用于根据置换规则对第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出待测数据的位宽。
在一些实施例中,位运算子单元用于依次左移第一变量得到待测数据的移位步长;其中,待测数据为指数或模数;
每得到一次移位步长,则基于移位步长对当前待测数据进行右移,将当前待测数据与右移后的待测数据的按位或运算的运算结果作为最新的当前待测数据,直至第一变量的最高有效位为一,则输出最新的当前待测数据;
对最新的当前待测数据执行加一操作,以得到新的待测数据。
在一些实施例中,赋值子单元用于从新的待测数据中截取低16比特数据赋值给第二变量;
判断第二变量是否为零;
在第二变量为零的情况下,将截取低16比特数据后的剩余数据作为新的待测数据,并返回从新的待测数据中截取低16比特数据赋值给第二变量的步骤;
在第二变量为非零的情况下,根据置换规则对第二变量进行置换,将第一变量与置换后的第二变量的差值作为待测数据的位宽。
在一些实施例中,置换子单元用于查询变量值和置换值之间的对应关系列表,以确定出第二变量匹配的第二置换值;
将第一变量与第二置换值的差值作为待测数据的位宽。
在一些实施例中,运算单元包括判断子单元、第一转换子单元、第二转换子单元和拆分子单元;
判断子单元,用于判断指数是否为零;
第一转换子单元,用于在指数为零的情况下,将利用密钥对标准化数据进行加解密的运算转换为模除运算,以得到加解密数据;
第二转换子单元,用于在指数不为零的情况下,将利用密钥对标准化数据进行加解密的运算转换为模乘运算;
拆分子单元,用于依据指数位宽和模数位宽,将模乘运算拆分为多个数据加和移位操作,以得到加解密数据。
在一些实施例中,拆分子单元用于从模数的当前低位截取模数位宽的待分析模数数据;从指数的当前低位截取指数位宽的待分析指数数据;
依据待分析指数数据的最高比特位的取值,选取匹配的运算规则;
按照运算规则对待分析指数数据、待分析模数数据以及标准化数据进行处理,以得到运算结果;
每得到一次运算结果,则将指数位宽减一;在当前减一后的指数位宽不为零的情况下,返回从模数的当前低位截取模数位宽的待分析模数数据;从指数的当前低位截取指数位宽的待分析指数数据的步骤;在当前减一后的指数位宽为零的情况下,输出当前的运算结果。
在一些实施例中,运算规则包括基于模数对数据进行模乘运算的第一规则,基于前一次模乘运算结果迭代的第二规则;
相应的,拆分子单元用于在待分析指数数据的最高比特位为零的情况下,选取第一规则;
在待分析指数数据的最高比特位不为零的情况下,选取第二规则。
在一些实施例中,拆分子单元用于在运算规则为第一规则的情况下,依据待分析指数数据以及待分析模数数据对标准化数据进行数据加和移位操作,以得到运算结果。
在一些实施例中,拆分子单元用于根据加解密算法所匹配的有效比特位,将依据待分析指数数据以及待分析模数数据对标准化数据进行的数据加操作拆分为多个数据加子操作;对多个数据加子操作进行迭代运算。
在一些实施例中,拆分子单元用于在运算规则为第二规则的情况下,依据待分析指数数据以及待分析模数数据对前一次模乘运算结果进行数据加和移位操作,以得到运算结果。
在一些实施例中,拆分子单元用于根据加解密算法所匹配的有效比特位,将依据待分析指数数据以及待分析模数数据对前一次模乘运算结果进行的数据加操作拆分为多个数据加子操作;对多个数据加子操作进行迭代运算。
在一些实施例中,还包括存储单元;
存储单元,用于将加解密数据转换为适配双倍速率同步动态随机存储器位宽的数据,并将转换后的数据写入双倍速率同步动态随机存储器。
在一些实施例中,还包括发送单元;
发送单元,用于在基于指数位宽、模数位宽以及标准化数据所需的密钥和模数,对标准化数据进行向量迭代加和移位运算,得到加解密数据之后,向上位机发送中断信号,以便于上位机接收到中断信号后从双倍速率同步动态随机存储器中读取数据。
在一些实施例中,生成单元包括随机子单元、筛选子单元、确定子单元和作为子单元;
随机子单元,用于利用流密码算法生成多个随机数;
筛选子单元,用于从多个随机数中筛选出第一大素数和第二大素数;
确定子单元,用于基于第一大素数和第二大素数,确定出模数和模数的欧拉函数值;
作为子单元,用于将欧拉函数值的互质数作为加密密钥,并对加密密钥求模逆得到解密密钥。
在一些实施例中,筛选子单元用于利用设定的素数组对多个随机数进行筛选,得到待检测素数;根据随机化算法对待检测素数进行检测,并依据检测结果从待检测素数中筛选出第一大素数和第二大素数。
在一些实施例中,转换单元用于将获取的待处理数据转换为4096比特的标准化数据。
在一些实施例中,还包括方式确定单元;
方式确定单元,用于基于当前的可用逻辑资源以及加解密算法的类型,确定出执行根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽的步骤的操作方式;其中,操作方式包括并行或者级联。
图7所对应实施例中特征的说明可以参见图1至图6所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,现场可编程门阵列依据加解密算法生成密钥信息;其中,密钥信息可以包括加密密钥、解密密钥、模数;为了兼容不同类型的加解密算法,可以基于不同类型的加解密算法的的密钥长度设定比特位宽,将获取的待处理数据转换为设定比特位宽的标准化数据。数据的加解密运算属于大位宽数据的运算,为了使得现场可编程门阵列能够顺利实现大位宽数据的运算,可以根据加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽。基于指数位宽、模数位宽以及标准化数据所需的密钥和模数,对标准化数据进行向量迭代加和移位运算,得到加解密数据。本发明的有益效果在于,通过设定比特位宽,实现对多种类型的加解密算法的兼容。依赖于指数位宽和模数位宽,通过单元拆分、层级复用可以将大位宽数据的运算拆分为小位宽的运算,现场可编程门阵列无需复杂的布线便能够支持小位宽的运算,通过运算方式的拆分,使得现场可编程门阵列可以实现大位宽数据的运算。并且相较与软件实现数据的加解密运算,现场可编程门阵列属于硬件设备,其有着更好的系统性能和安全性。
图8为本发明实施例提供的一种电子设备的结构图,如图8所示,电子设备包括:存储器80,用于存储计算机程序;
处理器81,用于执行计算机程序时实现如上述实施例数据的加解密方法的步骤。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器81可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器81可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器81也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器81可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器81还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器80可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器80还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器80至少用于存储以下计算机程序801,其中,该计算机程序被处理器81加载并执行之后,能够实现前述任一实施例公开的数据的加解密方法的相关步骤。另外,存储器80所存储的资源还可以包括操作系统802和数据803等,存储方式可以是短暂存储或者永久存储。其中,操作系统802可以包括Windows、Unix、Linux等。数据803可以包括但不限于密钥信息、设定比特位宽等。
在一些实施例中,电子设备还可包括有显示屏82、输入输出接口83、通信接口84、电源85以及通信总线86。
本领域技术人员可以理解,图8中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的数据的加解密方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对目前技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述数据的加解密方法的步骤。
以上对本发明实施例所提供的一种数据的加解密方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上对本发明所提供的一种数据的加解密方法、装置、设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (20)

1.一种数据的加解密方法,其特征在于,适用于现场可编程门阵列,所述方法包括:
依据加解密算法生成密钥信息;其中,所述密钥信息包括加密密钥、解密密钥、模数;
将获取的待处理数据转换为设定比特位宽的标准化数据;
根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽;
基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据;
所述根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽包括:
依据所述加解密算法所匹配的有效比特位设置第一变量的最高有效位;
在位宽信号有效的情况下,根据所述第一变量的最高有效位对待测数据进行多次位运算,以得到新的待测数据;其中,所述待测数据为指数或模数; 所述新的待测数据为将待测数据的有效比特位清零、最高有效比特位的高一位比特位数据为一的数据;
将所述新的待测数据按照设定比特步进赋值给第二变量,直至所述第二变量为非零值,则根据置换规则对所述第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出所述待测数据的位宽。
2.根据权利要求1所述的数据的加解密方法,其特征在于,所述根据所述第一变量的最高有效位对待测数据进行多次位运算,以得到新的待测数据包括:
依次左移所述第一变量得到待测数据的移位步长;其中,所述待测数据为指数或模数;
每得到一次移位步长,则基于所述移位步长对当前待测数据进行右移,将当前待测数据与右移后的待测数据的按位或运算的运算结果作为最新的当前待测数据,直至所述第一变量的最高有效位为一,则输出最新的当前待测数据;
对所述最新的当前待测数据执行加一操作,以得到新的待测数据。
3.根据权利要求1所述的数据的加解密方法,其特征在于,所述将所述新的待测数据按照设定比特步进赋值给第二变量,直至所述第二变量为非零值包括:
从所述新的待测数据中截取低16比特数据赋值给第二变量;
判断所述第二变量是否为零;
在所述第二变量为零的情况下,将截取低16比特数据后的剩余数据作为新的待测数据,并返回所述从所述新的待测数据中截取低16比特数据赋值给第二变量的步骤;
在所述第二变量为非零的情况下,根据置换规则对所述第二变量进行置换,将所述第一变量与置换后的第二变量的差值作为所述待测数据的位宽。
4.根据权利要求1所述的数据的加解密方法,其特征在于,所述根据置换规则对所述第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出所述待测数据的位宽包括:
查询变量值和置换值之间的对应关系列表,以确定出所述第二变量匹配的第二置换值;
将所述第一变量与所述第二置换值的差值作为所述待测数据的位宽。
5.根据权利要求1所述的数据的加解密方法,其特征在于,所述基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据包括:
判断指数是否为零;
在所述指数为零的情况下,将利用所述密钥对所述标准化数据进行加解密的运算转换为模除运算,以得到加解密数据;
在所述指数不为零的情况下,将利用所述密钥对所述标准化数据进行加解密的运算转换为模乘运算;
依据所述指数位宽和所述模数位宽,将所述模乘运算拆分为多个数据加和移位操作,以得到加解密数据。
6.根据权利要求5所述的数据的加解密方法,其特征在于,所述依据所述指数位宽和所述模数位宽,将所述模乘运算拆分为多个数据加和移位操作,以得到加解密数据包括:
从所述模数的当前低位截取所述模数位宽的待分析模数数据;从所述指数的当前低位截取所述指数位宽的待分析指数数据;
依据所述待分析指数数据的最高比特位的取值,选取匹配的运算规则;
按照所述运算规则对所述待分析指数数据、所述待分析模数数据以及所述标准化数据进行处理,以得到运算结果;
每得到一次运算结果,则将所述指数位宽减一;在当前减一后的指数位宽不为零的情况下,返回所述从所述模数的当前低位截取所述模数位宽的待分析模数数据;从所述指数的当前低位截取所述指数位宽的待分析指数数据的步骤;在当前减一后的指数位宽为零的情况下,输出当前的运算结果。
7.根据权利要求6所述的数据的加解密方法,其特征在于,所述运算规则包括基于模数对数据进行模乘运算的第一规则,基于前一次模乘运算结果迭代的第二规则;
相应的,所述依据所述待分析指数数据的最高比特位的取值,选取匹配的运算规则包括:
在所述待分析指数数据的最高比特位为零的情况下,选取第一规则;
在所述待分析指数数据的最高比特位不为零的情况下,选取第二规则。
8.根据权利要求7所述的数据的加解密方法,其特征在于,所述按照所述运算规则对所述待分析指数数据、所述待分析模数数据以及所述标准化数据进行处理,以得到运算结果包括:
在所述运算规则为第一规则的情况下,依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行数据加和移位操作,以得到运算结果。
9.根据权利要求8所述的数据的加解密方法,其特征在于,所述依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行数据加操作包括:
根据所述加解密算法所匹配的有效比特位,将依据所述待分析指数数据以及所述待分析模数数据对所述标准化数据进行的数据加操作拆分为多个数据加子操作;
对多个所述数据加子操作进行迭代运算。
10.根据权利要求7所述的数据的加解密方法,其特征在于,所述按照所述运算规则对所述待分析指数数据、所述待分析模数数据以及所述标准化数据进行处理,以得到运算结果包括:
在所述运算规则为第二规则的情况下,依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行数据加和移位操作,以得到运算结果。
11.根据权利要求10所述的数据的加解密方法,其特征在于,所述依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行数据加操作包括:
根据所述加解密算法所匹配的有效比特位,将依据所述待分析指数数据以及所述待分析模数数据对前一次模乘运算结果进行的数据加操作拆分为多个数据加子操作;
对多个所述数据加子操作进行迭代运算。
12.根据权利要求1所述的数据的加解密方法,其特征在于,在所述基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据之后,还包括:
将所述加解密数据转换为适配双倍速率同步动态随机存储器位宽的数据,并将转换后的数据写入所述双倍速率同步动态随机存储器。
13.根据权利要求12所述的数据的加解密方法,其特征在于,在所述基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据之后,还包括:
向上位机发送中断信号,以便于所述上位机接收到所述中断信号后从所述双倍速率同步动态随机存储器中读取数据。
14.根据权利要求1所述的数据的加解密方法,其特征在于,所述依据加解密算法生成密钥信息包括:
利用流密码算法生成多个随机数;
从多个所述随机数中筛选出第一大素数和第二大素数;
基于所述第一大素数和所述第二大素数,确定出模数和所述模数的欧拉函数值;
将所述欧拉函数值的互质数作为加密密钥,并对所述加密密钥求模逆得到解密密钥。
15.根据权利要求14所述的数据的加解密方法,其特征在于,所述从多个所述随机数中筛选出第一大素数和第二大素数包括:
利用设定的素数组对多个所述随机数进行筛选,得到待检测素数;
根据随机化算法对所述待检测素数进行检测,并依据检测结果从所述待检测素数中筛选出第一大素数和第二大素数。
16.根据权利要求1所述的数据的加解密方法,其特征在于,所述将获取的待处理数据转换为设定比特位宽的标准化数据包括:
将获取的待处理数据转换为4096比特的标准化数据。
17.根据权利要求1至16任意一项所述的数据的加解密方法,其特征在于,还包括:
基于当前的可用逻辑资源以及所述加解密算法的类型,确定出执行所述根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽的步骤的操作方式;其中,所述操作方式包括并行或者级联。
18.一种数据的加解密装置,其特征在于,适用于现场可编程门阵列,所述装置包括生成单元、转换单元、确定单元和运算单元;
所述生成单元,用于依据加解密算法生成密钥信息;其中,所述密钥信息包括加密密钥、解密密钥、模数;
所述转换单元,用于将获取的待处理数据转换为设定比特位宽的标准化数据;
所述确定单元,用于根据所述加解密算法所匹配的有效比特位以及设定的位宽计算优化算法,确定出指数位宽和模数位宽;
所述运算单元,用于基于所述指数位宽、所述模数位宽以及所述标准化数据所需的密钥和模数,对所述标准化数据进行向量迭代加和移位运算,得到加解密数据;
所述确定单元包括设置子单元、位运算子单元、赋值子单元和置换子单元;所述设置子单元,用于依据所述加解密算法所匹配的有效比特位设置第一变量的最高有效位;所述位运算子单元,用于在位宽信号有效的情况下,根据所述第一变量的最高有效位对待测数据进行多次位运算,以得到新的待测数据;其中,所述待测数据为指数或模数;所述新的待测数据为将待测数据的有效比特位清零、最高有效比特位的高一位比特位数据为一的数据;所述赋值子单元,用于将所述新的待测数据按照设定比特步进赋值给第二变量,直至所述第二变量为非零值;所述置换子单元,用于根据置换规则对所述第二变量进行置换,并依据置换后的第二变量与当前第一变量确定出所述待测数据的位宽。
19.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至17任意一项所述数据的加解密方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17任意一项所述数据的加解密方法的步骤。
CN202310701493.0A 2023-06-14 2023-06-14 一种数据的加解密方法、装置、设备和介质 Active CN116436709B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310701493.0A CN116436709B (zh) 2023-06-14 2023-06-14 一种数据的加解密方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310701493.0A CN116436709B (zh) 2023-06-14 2023-06-14 一种数据的加解密方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN116436709A CN116436709A (zh) 2023-07-14
CN116436709B true CN116436709B (zh) 2023-08-29

Family

ID=87087678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310701493.0A Active CN116436709B (zh) 2023-06-14 2023-06-14 一种数据的加解密方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN116436709B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117014208B (zh) * 2023-08-09 2024-04-09 海光信息技术股份有限公司 数据加密方法、装置、系统、电子设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282290B1 (en) * 1997-03-28 2001-08-28 Mykotronx, Inc. High speed modular exponentiator
CN102012876A (zh) * 2010-11-19 2011-04-13 中兴通讯股份有限公司 大位宽数据的写入、读取方法及控制器
CN109039640A (zh) * 2018-08-03 2018-12-18 广东工业大学 一种基于rsa密码算法的加解密硬件系统及方法
CN109783053A (zh) * 2019-01-16 2019-05-21 中科亿海微电子科技(苏州)有限公司 一种fpga实现可变位宽除法的方法及装置
CN111258538A (zh) * 2020-01-13 2020-06-09 电子科技大学 一种基于fpga的大位宽的高性能加法器结构
DE102020124791A1 (de) * 2019-09-23 2021-04-22 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zur Übertragung von Daten von einer ersten Recheneinheit zu einer zweiten Recheneinheit
US11296861B1 (en) * 2021-04-21 2022-04-05 Clustar Technology Co., Ltd. Paillier decryption system, IC and method
CN115756391A (zh) * 2022-11-25 2023-03-07 杭州电子科技大学 用于实现非对称算法rsa模幂计算的硬件电路及方法
CN115883059A (zh) * 2021-09-29 2023-03-31 珠海一微半导体股份有限公司 一种aes运算电路及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106411519B (zh) * 2016-11-01 2019-01-25 北京百度网讯科技有限公司 用于rsa解密的处理器及用于rsa解密处理器的控制方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282290B1 (en) * 1997-03-28 2001-08-28 Mykotronx, Inc. High speed modular exponentiator
CN102012876A (zh) * 2010-11-19 2011-04-13 中兴通讯股份有限公司 大位宽数据的写入、读取方法及控制器
CN109039640A (zh) * 2018-08-03 2018-12-18 广东工业大学 一种基于rsa密码算法的加解密硬件系统及方法
CN109783053A (zh) * 2019-01-16 2019-05-21 中科亿海微电子科技(苏州)有限公司 一种fpga实现可变位宽除法的方法及装置
DE102020124791A1 (de) * 2019-09-23 2021-04-22 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zur Übertragung von Daten von einer ersten Recheneinheit zu einer zweiten Recheneinheit
CN111258538A (zh) * 2020-01-13 2020-06-09 电子科技大学 一种基于fpga的大位宽的高性能加法器结构
US11296861B1 (en) * 2021-04-21 2022-04-05 Clustar Technology Co., Ltd. Paillier decryption system, IC and method
CN115883059A (zh) * 2021-09-29 2023-03-31 珠海一微半导体股份有限公司 一种aes运算电路及方法
CN115756391A (zh) * 2022-11-25 2023-03-07 杭州电子科技大学 用于实现非对称算法rsa模幂计算的硬件电路及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于FPGA的高性能RSA密码加速技术研究;程碧倩;中国优秀硕士论文全文数据库;第I135-389页 *

Also Published As

Publication number Publication date
CN116436709A (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
Roy et al. FPGA-based high-performance parallel architecture for homomorphic computing on encrypted data
Wang et al. FPGA-based Niederreiter cryptosystem using binary Goppa codes
CN108108614B (zh) 安全处理器以及安全处理器的操作方法
CN116436709B (zh) 一种数据的加解密方法、装置、设备和介质
CN103942031A (zh) 椭圆域曲线运算方法和椭圆域曲线运算器
CN111444518A (zh) 安全处理器及其操作方法、加密或解密数据的方法
US11902432B2 (en) System and method to optimize generation of coprime numbers in cryptographic applications
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
CA2701855C (en) Signed montgomery arithmetic
Greconici Kyber on RISC-V
KR20130128695A (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
Parihar et al. Fast Montgomery modular multiplier for rivest–shamir–adleman cryptosystem
CN103765493B (zh) 数字平方计算机实现的方法和设备
Jahani et al. Efficient big integer multiplication and squaring algorithms for cryptographic applications
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
WO2023141934A1 (en) Efficient masking of secure data in ladder-type cryptographic computations
KR102498133B1 (ko) 모듈러 곱셈 연산을 수행하는 연산 장치 및 방법
Gulen et al. Elliptic‐curve cryptography for wireless sensor network nodes without hardware multiplier support
CN114338049A (zh) 基于模归约的国密算法sm2的快速实现方法及系统
KR100480997B1 (ko) GF(p)와 GF(2^m)의 유한체 곱셈 연산 장치
CN108075889B (zh) 一种降低加解密运算时间复杂度的数据传输方法及系统
CN112487448B (zh) 一种加密信息处理装置、方法及计算机设备
JP5179933B2 (ja) データ処理装置
WO2024036429A1 (en) Paillier cryptosystem with improved performance
Lórencz et al. Subtraction-free almost Montgomery inverse algorithm

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