CN112487448A - 一种加密信息处理装置、方法及计算机设备 - Google Patents
一种加密信息处理装置、方法及计算机设备 Download PDFInfo
- Publication number
- CN112487448A CN112487448A CN202011358015.7A CN202011358015A CN112487448A CN 112487448 A CN112487448 A CN 112487448A CN 202011358015 A CN202011358015 A CN 202011358015A CN 112487448 A CN112487448 A CN 112487448A
- Authority
- CN
- China
- Prior art keywords
- module
- public key
- data
- data memory
- key engine
- 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
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 47
- 238000000034 method Methods 0.000 title claims description 24
- 230000015654 memory Effects 0.000 claims abstract description 168
- 230000008569 process Effects 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 abstract description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
Abstract
本申请提供了一种加密信息处理装置、方法及计算机设备,涉及计算机技术领域,解决大数运算的运算速度慢及运算效率低的问题。该加密信息处理装置包括处理器模块、公钥引擎模块、总线模块和根据所述公钥引擎模块运行所需的N个变量设置的P个数据存储器模块;处理器模块、公钥引擎模块、各数据存储器模块均与总线模块进行连接;其中,处理器模块将多个变量数据分别存储至不同的数据存储器模块中,并指示总线模块对P个数据存储器模块进行锁定;在公钥引擎模块接收到处理器模块发送的运行指令时,根据运行指令从已存储了变量数据的数据存储器模块中读取多个变量数据,并根据多个变量数据按照运行指令指示的运行方式进行加密信息处理。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种加密信息处理装置、方法及计算机设备。
背景技术
安全技术是芯片技术重要的组成部分,目前,在安全技术方面采用的算法主要包括对称算法、非对称算法以及哈希算法三大类。其中,非对称算法也被称为公钥算法,它是实现加解密、签名运算&验签以及秘钥协商的必要手段。而在目前的公钥算法中,比较流行的算法有RSA(Rivest-Shamir-Adleman)算法、DH(Diffe-Hellman)算法以及椭圆曲线加密(Elliptic Curves Cryptography,ECC)算法等,它们之间的共同特点都是基于大数运算来实现模乘、模幂、模逆、点乘以及点倍等运算,且都需要耗费大量的软硬件资源以及运算时间。
因此,如何提高大数运算的运算速度及运算效率是一个亟待解决的问题。
发明内容
本申请实施例提供一种加密信息处理装置、方法及计算机设备,用于解决大数运算的运算速度慢及运算效率低的问题。
一方面,提供一种加密信息处理装置,包括处理器模块、公钥引擎模块、总线模块和根据所述公钥引擎模块运行所需的N个变量设置的P个数据存储器模块;其中,N和P均为正整数,且P大于N;
所述处理器模块、所述公钥引擎模块、所述P个数据存储器模块均与所述总线模块进行连接;
其中,所述处理器模块将所述公钥引擎模块运行时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中,并指示所述总线模块对所述P个数据存储器模块进行锁定,其中,所述P个数据存储器模块被锁定时仅所述公钥引擎模块能够对所述P个数据存储器模块进行读写操作;
在所述公钥引擎模块接收到所述处理器模块发送的运行指令时,根据所述运行指令从所述已存储了变量数据的数据存储器模块中读取所述多个变量数据,并根据所述多个变量数据按照所述运行指令指示的运行方式进行加密信息处理。
可选的,所述公钥引擎模块还用于在加密信息处理得到处理结果后,将所述处理结果存储至除所述已存储了变量数据的数据存储器模块之外的其余任一数据存储器模块中;并,向所述处理器模块反馈指示加密信息处理已完成的处理完成指令;
所述处理器模块还用于根据所述处理完成指令,指示所述总线模块对所述P个数据存储器模块进行解锁,并,在解锁完成后从存储所述处理结果的数据存储器模块中读取所述处理结果。
可选的,所述公钥引擎模块包括指令解析单元;其中,所述指令解析单元用于对接收到的处理器模块发送的指令进行解析,并根据指令解析结果从所述已存储了变量数据的数据存储器模块中读取相应的变量数据,且根据所述运行指令指示的运行方式将读取到的所述多个变量数据配置到相应运行的位置。
可选的,所述公钥引擎模块设置有指令输入端口、N个数据输入端口以及输出端口,所述N个数据输入端口与所述P个数据存储器模块包括的N个数据存储器模块一一对应;
其中,所述公钥引擎模块通过所述指令输入端口接收所述处理器模块发送的运行指令,并基于所述运行指令的指示,通过所述N个数据输入端口中已存储了变量数据的数据存储器模块对应的数据输入端口读取变量数据,且对所述多个变量数据进行加密信息处理,并通过所述输出端口将得到的处理结果存储至除所述任一数据存储器模块中。
可选的,所述加密信息处理装置还包括系统存储器模块,用于存储所述处理器模块进行数据运行时所需程序。
可选的,在所述公钥引擎模块接收到所述运行指令后,在一个时钟周期内从所述已存储了变量数据的数据存储器模块中读取变量数据。
可选的,在所述运行指令为大数运算指令时,所述多个变量数据为待运算的大数,所述公钥引擎模块按照预设运算位宽对每一大数进行拆分,获得所述每一大数所对应的多个子数据,并根据所述大数运算指令指示的运算方式对每一大数所对应的多个子数据进行运算。
可选的,所述P个数据存储器模块中任一数据存储器模块的存储空间大小是根据所述公钥引擎模块运算的最大变量位宽确定的。
一方面,提供一种加密信息处理方法,应用于加密信息处理装置包括的处理器模块中,所述加密信息处理装置还包括公钥引擎模块、总线模块和根据所述公钥引擎模块运行所需的N个变量设置的P个数据存储器模块;其中,N和P均为正整数,且P大于N;
所述方法包括:
获取目标加密任务对应的变量数据;其中,所述目标加密任务包括第一子加密任务与第二子加密任务;
将所述公钥引擎模块运行所述第一子加密任务时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中;
指示所述总线模块对所述P个数据存储器模块进行锁定,其中,所述P个数据存储器模块被锁定时仅所述公钥引擎模块能够对所述P个数据存储器模块进行读写操作;
向所述公钥引擎模块发送指示运行所述第一子加密任务的运行指令,以使得在所述公钥引擎模块接收所述运行指令时,根据所述运行指令从所述已存储了变量数据的数据存储器模块中读取所述多个变量数据,并根据所述多个变量数据运行所述第一子加密任务,获得第一处理结果;
接收所述公钥引擎模块发送的处理完成指令,并指示所述总线模块对所述P个数据存储器模块进行解锁,并,在解锁完成后从存储所述第一处理结果的数据存储器模块中读取所述第一处理结果;
根据所述第二子加密任务的变量数据运行所述第二子加密任务,获得第二处理结果;
根据所述第一运算结果与所述第二运算结果得到所述目标加密信息的处理结果。
一方面,提供一种加密信息处理装置,所述装置包括:
获取单元,用于获取目标加密任务对应的变量数据;其中,所述目标加密任务包括第一子加密任务与第二子加密任务;
存储单元,用于将所述公钥引擎模块运行所述第一子加密任务时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中;
锁定单元,用于指示所述总线模块对所述P个数据存储器模块进行锁定,其中,所述P个数据存储器模块被锁定时仅所述公钥引擎模块能够对所述P个数据存储器模块进行读写操作;
第一运行单元,用于向所述公钥引擎模块发送指示运行所述第一子加密任务的运行指令,以使得在所述公钥引擎模块接收所述运行指令时,根据所述运行指令从所述已存储了变量数据的数据存储器模块中读取所述多个变量数据,并根据所述多个变量数据运行所述第一子加密任务,获得第一处理结果;
解锁单元,用于接收所述公钥引擎模块发送的处理完成指令,并指示所述总线模块对所述P个数据存储器模块进行解锁,并,在解锁完成后从存储所述第一处理结果的数据存储器模块中读取所述第一处理结果;
第二运行单元,用于根据所述第二子加密任务的变量数据运行所述第二子加密任务,获得第二处理结果;
第二运行单元,还用于根据所述第一运算结果与所述第二运算结果得到所述目标加密信息的处理结果。
一方面,提供一种计算机设备,包括所述的加密信息处理装置。
本申请实施例中,加密信息处理装置包括处理器模块、公钥引擎模块、总线模块以及根据公钥引擎模块运行所需的N个变量设置的P个数据存储器模块;处理器模块、公钥引擎模块、P个数据存储器模块均与总线模块进行连接;其中,处理器模块将公钥引擎模块运行时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中,并指示总线模块对P个数据存储器模块进行锁定,其中,P个数据存储器模块被锁定时仅公钥引擎模块能够对P个数据存储器模块进行读写操作;在公钥引擎模块接收到处理器模块发送的运行指令时,根据运行指令从已存储了变量数据的数据存储器模块中读取多个变量数据,并根据多个变量数据按照运行指令指示的运行方式进行加密信息处理。可见,本申请实施例通过将数据存储器模块与公钥引擎模块进行分离,且根据公钥引擎模块运行所需的变量的数量设置相应数量的数据存储器模块,使得公钥引擎模块可以独立并行的访问任一数据存储器模块,进而不需要任何额外的等待与延迟时间,减少了公钥引擎模块单次运算的时间,且在公钥引擎模块运行过程中,将多个变量数据及处理结果存储至公钥引擎模块专用的数据存储器模块中,使得公钥引擎模块可直接对数据存储器模块中的数据进行读写,而不需要进行额外的中间缓存的搬运操作,进而提高加密信息处理装置的运算速度及运算效率。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的加密信息处理装置的一种结构示意图;
图2为本申请实施例提供的加密信息处理方法的一种流程示意图;
图3为本申请实施例提供的加密信息处理装置的一种示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
首先,对本申请中的部分用语进行解释说明。
大数运算,顾名思义,就是很大数值的数进行一系列的运算。在数学中,数值的大小是没有上限的,但在计算机中,由于字长的限制,计算机所能表示的范围是有限的,在对数值较小的数进行运算时,例如1234+5678进行运算,这样的数值没有超出计算机的表示范围,所以可以在计算机中进行运算。然而,在实际的应用中,在进行大量数据处理时,会发现参与运算的数据往往超过计算机的基本数据类型的表示范围,例如在天文学上,如果一个星球与地球的距离为100万光年,将其化简为公里或者米时,我们会发现这是一个很大的数,这样计算机将无法对其进行直接计算。因此需要利用其他方法实现高精度数值的计算,于是产生了大数运算。大数运算主要有加、减、乘三种方法。
而大数运算在人们生活中,最常应用于公钥运算中,例如,给邮件进行公钥加密,以保证邮件安全。具体的,用户A有一对密钥对,分为公钥和私钥,这对密钥对是唯一的,是通过对一个巨大的素数进行因数分解所得。当用公钥加密过的信息,只能使用与它配对的私钥来解密,反之亦然,私钥加密码的信息也只能用公钥来解密。这样,A从认证体系生成密钥对后,把它的私钥保存好,把公钥公开出去,当一个用户B要与A通信,又想确保数据安全时,就可以使用A的公钥来加密信息,再把密文传给A,因此这个世界是只有A手中的私钥才能对这个密文进行解密,这样就确保了信息的安全。
公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),其中的一个密钥向外界公开,称为公钥;另一个自己保留的密钥,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
目前,公钥算法可以通过如下方式进行实现,第一种方式为“纯软件”的方式,该方式基于中央处理器(Central Processing Unit,CPU)自身的指令进行程序编写来实现,其优点为实现功能灵活、更新代价小,但缺点是运算时间特别长;第二种方式为“纯硬件”的方式,该方式优点为安全性更高、运算速度更快,但缺点是需要耗费大量的硬件资源。
其中,考虑到硬件实现方式中一般都是公钥引擎计算所需的变量数据与运算结果都存储在公钥引擎内部的存储器中,公钥引擎在配置运算数据时,通过串行的方式进行读取,且将运行结果存储至此存储器中,而在CPU需要读取运行结果时,CPU需要经过一系列繁琐的过程才能够读取到该运行结果,大大降低了公钥引擎的运行速度与效率,不便于CPU进行运行结果的读取。
基于此,本申请实施例提供一种加密信息处理装置,该装置包括处理器模块、公钥引擎模块、总线模块以及根据公钥引擎模块运行所需的N个变量设置的P个数据存储器模块;处理器模块、公钥引擎模块、P个数据存储器模块均与总线模块进行连接;其中,处理器模块将公钥引擎模块运行时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中,并指示总线模块对P个数据存储器模块进行锁定,其中,P个数据存储器模块被锁定时仅公钥引擎模块能够对P个数据存储器模块进行读写操作;在公钥引擎模块接收到处理器模块发送的运行指令时,根据运行指令从已存储了变量数据的数据存储器模块中读取多个变量数据,并根据多个变量数据按照运行指令指示的运行方式进行加密信息处理。可见,本申请实施例通过将数据存储器模块与公钥引擎模块进行分离,且根据公钥引擎模块运行所需的变量的数量设置相应数量的数据存储器模块,使得公钥引擎模块可以独立并行的访问任一数据存储器模块,进而不需要任何额外的等待与延迟时间,减少了公钥引擎模块单次运算的时间,且在公钥引擎模块运行过程中,将多个变量数据及处理结果存储至公钥引擎模块专用的数据存储器模块中,使得公钥引擎模块可直接对数据存储器模块中的数据进行读写,而不需要进行额外的中间缓存的搬运操作,进而提高加密信息处理装置的运算速度及运算效率。
此外,本申请实施例通过将部分任务采用软件实现,部分任务采用硬件实现,例如可以将基础运算单元,如模乘、模逆等运算以硬件形式进行实现,并借助软件调度的灵活性,较为灵活地实现公钥算法,能有效地减少公钥算法的运算时间。
本申请实施例提供的装置主要涉及公钥大数运算的硬件层面的技术,用于公钥引擎在大数运算时,提高运算速度及运算效率。
如图1所示,为本申请实施例提供的加密信息处理装置的一种结构示意图,其中,该加密信息处理装置包括处理器模块101、公钥引擎模块102、总线模块103以及数据存储器模块104。
其中,公钥引擎模块102进行运算时涉及到的变量的最大数量可以为N个,且还可以为运算结果单独设置存储区域,因此,数据存储器模块104可以设置为P个,其中,N和P均为正整数,且P大于N。例如,运算时涉及到的变量的最大数量为3,运算结果的数量为1时,则可以设置4个数据存储器,分别为SRAM1、SRAM2、SRAM3、SRAM4。
在本申请实施例中,P个数据存储器模块104与公钥引擎模块102进行了分离,如图1所示,P个数据存储器模块104设置于公钥引擎模块102的外部,与总线模块103进行连接,使得公钥引擎模块102可以独立并行的访问N个数据存储器模块104,以减小访问变量数据时的等待时间与延迟时间,进而减少公钥引擎模块102单次运算的时间。
在本申请实施例中,如图1所示,处理器模块101、公钥引擎模块102、P个数据存储器模块104均与总线模块103进行连接。
具体在通过公钥引擎模块102处理一个运算任务时,处理器模块101可以将公钥引擎模块102进行运行时所需要的N个变量数据分别存储至N个不同的数据存储器模块104中,一种变量数据对应存储至N个不同的数据存储器模块104中的一个。例如,公钥引擎模块的运算任务为“对位宽为3072bit的大数A与位宽为1024bit的大数B进行乘法运算”时,由于该运算任务包括大数A与大数B一共2个运算变量数据,所以,需要2个数据存储器模块来分别存储大数A与大数B。可以从SRAM1、SRAM2、SRAM3、SRAM4中的任意选择2个数据存储器模块来存储大数A与大数B,或者按照数据存储器模块的排列顺序选择2个数据存储器模块来存储大数A与大数B。
处理器模块101在N个变量数据存储之后,向总线模块103发送指示总线模块103对P个数据存储器模块104进行锁定的锁定指令,该总线模块103根据该锁定指令的指示,对P个数据存储器模块104进行锁定,以使得P个数据存储器模块104被锁定时仅公钥引擎模块102能够对P个数据存储器模块104进行读写操作。
在总线模块103完成锁定后,处理器模块101则可以向公钥引擎模块102发送运行指令,指示公钥引擎模块102开始运行处理上述的运算任务,进而公钥引擎模块102则可以根据运行指令从已存储了变量数据的N个数据存储器模块104中读取相应的N个变量数据,并根据N个变量数据按照运行指令指示的运行方式进行加密信息处理。
公钥引擎模块102在加密信息处理得到处理结果后,可以将处理结果存储至除已存储了变量数据的数据存储器模块104之外剩余的P-N个数据存储器模块104中的任一个,并向处理器模块101反馈指示加密信息处理已完成的处理完成指令。例如,在加密信息处理装置一共设置有SRAM1、SRAM2、SRAM3、SRAM4的4个数据存储器模块时,由于在进行运算任务“对位宽为3072bit的大数A与位宽为1024bit的大数B进行大数乘法运算”时,选择将大数A与大数B分别存储至SRAM1、SRAM2中,所以此时,还剩下SRAM3与SRAM4共2个数据存储器模块可以用来存储运算结果,因此可以从SRAM3与SRAM4中选择其中1个作为写入位宽为3145728bit的运算结果的数据存储器模块。
在运算结果写入之后,公钥引擎模块则可以向处理器模块反馈一个用于指示加密信息处理已完成的处理完成指令。
进而,处理器模块101在接收到公钥引擎模块102的处理完成指令时,可以指示总线模块103对P个数据存储器模块104进行解锁,进而在解锁完成后,处理器模块101则可以从存储处理结果的数据存储器模块104中读取处理结果。
在本申请实施例中,公钥引擎模块102可以包括指令解析单元,公钥引擎模块102可以根据指令解析单元对运行指令进行解析而获得指令解析结果,指令解析结果可以包括存储变量数据的数据存储器模块标识,进而使得公钥引擎模块102获得进行运算时所需的配置信息,并根据配置信息所指示的内容从相应数据存储器模块104中读取相应的变量数据。
例如,运行指令可以为大数乘法指令。在公钥引擎模块102接收到大数乘法指令之后,公钥引擎模块的指令解析单元会对大数乘法指令进行解析,并获得指令解析结果,例如“变量数据:位宽为3072bit的大数A、位宽为1024bit的大数B;变量数据存储地址:SRAM1、SRAM2;变量数据运算方式:大数乘法运算”等,进而,使得公钥引擎模块102知道自身将要进行运算时所需变量数据的存储位置以及相应变量数据的数据长度等信息,所以,公钥引擎模块102就可以从SRAM1读取到位宽为3072bit的大数A,并从SRAM2读取到位宽为1024bit的大数B。在本申请实施例中,由于在进行运算时需要进行变量数据的读取与写入,所以公钥引擎模块102设置有指令输入端口、N个数据输入端口以及输出端口,N个数据输入端口与P个数据存储器模块104包括的N个数据存储器模块104一一对应。
此外,在总线模块103中还设置有多个端口,如图1所示,公钥引擎模块102向数据存储器模块发送的数据读取信号,可以通过自身设置的多个数据输入端口流向总线模块的接收端口,并从总线模块的发送端口发送至数据存储器模块。
参见图1,公钥引擎模块设置有1个指令输入端口、2个数据输入端口以及1个数据输出端口。处理器模块可以通过指令输入端口向公钥引擎模块发送运算指令,进而使得公钥引擎模块通过设置的2个数据输入端口分别从SRAM1与SRAM2中读取大数A与大数B,读取过程如图1中的带箭头的实线所示。
在本实施例中,公钥引擎模块102通过指令输入端口接收处理器模块101发送的运行指令,并基于运行指令的指示,通过N个数据输入端口中已存储了变量数据的数据存储器模块104对应的数据输入端口读取变量数据,且对多个变量数据进行加密信息处理,并通过输出端口将得到的处理结果存储至数据存储器模块104中。
示例性,在公钥引擎模块接收到运行指令之后,会根据运行指令指示的内容“变量数据:位宽为3072bit的大数A、位宽为1024bit的大数B;变量数据存储地址:SRAM1、SRAM2;变量数据运算方式:大数乘法运算”,从SRAM1读取到位宽为3072bit的大数A,并从SRAM2读取到位宽为1024bit的大数B,进而根据变量数据运算方式对大数A与大数B进行运算,获得位宽为3145728bit的运算结果,并将运算结果通过公钥引擎模块的输出端口写入剩余的数据存储器SRAM3或者SRAM4中。
在本申请实施例中,由于采用软硬件结合的方式来实现公钥运算,所以还需存储器来存储进行数据运算时所需的软件程序。因此,加密信息处理装置还可以包括系统存储器模块105,系统存储器模块105可以用于存储处理器模块101进行数据运行时所需程序,在处理器模块105执行公钥算法时,会通过总线模块103从系统存储器模块105中读取执行公钥算法所需的相关程序,进而根据读取到的相关程序依据变量数据开始运行程序,以获取与变量数据相对应的运算结果。
一般来讲,公钥引擎模块102在接收到运行指令后,由于相关技术中在读取变量数据的过程时,会将变量数据缓存至数据缓存储存器中,所以,需要通过多个时钟周期才会完成对变量数据读取,导致延长了公钥引擎模块进行运算的时长。为减少时钟周期等待时间,在本申请实施例中,将存储变量数据的数据存储器模块104与公钥引擎模块102分离,并在读取变量数据的过程中将分离后的数据存储器模块104设置为公钥引擎模块102专用,可以使得公钥引擎模块102可以在接收到运行指令后,可以在一个时钟周期内完成对已存储了变量数据的数据存储器模块104的变量数据读取。
在本申请实施例中,在运行指令为大数运算指令时,多个变量数据为待运算的大数,公钥引擎模块102可以按照预设运算位宽对每一大数进行拆分,获得每一大数所对应的多个子数据,并根据大数运算指令指示的运算方式对每一大数所对应的多个子数据进行运算。
预设运算位宽根据实际芯片性能需求进行设置。例如,一般来讲,芯片的运算位宽可以包括32bit或者64bit位宽,在对芯片性能需求较高的情况时,可以采用64bit位宽,在对芯片性能需求较低的情况时,也可以采用32bit位宽。
示例性的,在公钥引擎模块102接收到“大数乘法”指令,例如运算“对位宽为3072bit的大数A与位宽为1024bit的大数B进行大数乘法运算”的乘法指令时,公钥引擎模块会通过自身的两个输入端口对应分别同时从SRAM1中SRAM2中读取位宽为32bit的两个数据,进而实现对位宽为32bit的变量数据A与位宽为32bit的变量数据B进行乘法运算,然后将运算结果输出至SRAM3中,与此同时,公钥引擎模块的两个输入端口又完成新的位宽为32bit的数据的读取,以准备下一轮的乘法运算,由于3072bit*1024bit=(32bit×96)*(32bit×32)=(32*32)bit×(96*32),所以,类似的乘法运算会重复进行96*32次。
在本申请实施例中,P个数据存储器模块104中任一数据存储器模块104的存储空间大小是根据公钥引擎模块102运算的最大变量位宽确定的。例如,进行“对位宽为3072bit的大数A与位宽为1024bit的大数B”的大数乘法运算,获得位宽为3145728bit的运算结果。由于大数A、大数B以及运算结果中的最大变量位宽为3145728bit,所以,可以将任一数据存储器模块的存储空间设置为3145728bit。
由于本申请采用“软硬结合”的方式来实现公钥算法,一方面,从公钥引擎的实现结构出发,提出将公钥引擎内部实现的大数缓存所需的SRAM设置于公钥引擎外部的网络总线上,通过硬件的方式对大数进行基础运算,另一方面,借助软件调度的灵活性,较为灵活的实现各种公钥算法。
因此,本申请实施例还提供了一种加密信息处理方法,如图2所示,为本申请实施例提供的加密信息处理方法的一种流程示意图。
在本申请实施例中,该加密信息处理方法可应用于加密信息处理装置包括的处理器模块101中,且加密信息处理装置还可以包括有公钥引擎模块102、总线模块103和根据公钥引擎模块102运行所需的N个变量设置的P个数据存储器模块104,其中,N和P均为正整数,且P大于N。
步骤S201:获取目标加密任务对应的变量数据,其中,目标加密任务包括第一子加密任务与第二子加密任务;
示例性,假设加密任务为运算“位宽为3072bit的大数A与位宽为1024bit的大数B进行乘法运算之后,加上位宽为64bit的大数D与位宽为32bit的大数E进行加法运算之后的运算结果”,则处理器会获取到位宽为3072bit的大数A、位宽为1024bit的大数B、位宽为64bit的数据D以及位宽为32bit的数据E一共4个变量数据,其中,“位宽为3072bit的大数A与位宽为1024bit的大数B进行乘法运算”可以为第一加密子任务,“位宽为64bit的数据D与位宽为32bit的数据E进行加法运算”为第二加密子任务。
所以,可以对第一加密子任务“位宽为3072bit的大数A与位宽为1024bit的大数B进行乘法运算”采用本申请实施例提出的加密信息处理装置进行硬件处理,而第二加密子任务“位宽为64bit的数据D与位宽为32bit的数据E进行加法运算”可以采用公钥算法进行软件处理。
步骤S202:将公钥引擎模块102运行第一子加密任务时所需的多个变量数据分别存储至不同的数据存储器模块104中,每一变量数据存储至其中一个数据存储器模块104中。
示例性的,第一子加密任务为“位宽为3072bit的大数A与位宽为1024bit的大数B进行乘法运算”时,则可以将“位宽为3072bit的大数A与位宽为1024bit的大数B分别存储至数据存储器模块SRAM1和SRAM2中。
步骤S203:指示总线模块103对P个数据存储器模块104进行锁定,其中,P个数据存储器模块104被锁定时仅公钥引擎模块102能够对P个数据存储器模块104进行读写操作。
步骤S204:向公钥引擎模块102发送指示运行第一子加密任务的运行指令,以使得在公钥引擎模块102接收运行指令时,根据运行指令从已存储了变量数据的数据存储器模块104中读取多个变量数据,并根据多个变量数据运行第一子加密任务,获得第一处理结果。
示例性的,公钥引擎模块在接收到处理器模块发送的运行指令之后,就会从SRAM1和SRAM2中读取出大数A与大数B,然后按照运行指令对大数A与大数B进行乘法运算,并获得位宽为3145728bit的第一处理结果,且将第一处理结果存储至SRAM3。
步骤S205:接收公钥引擎模块102发送的处理完成指令,并指示总线模块103对P个数据存储器模块104进行解锁,并,在解锁完成后从存储处理结果的数据存储器模块104中读取第一处理结果。
步骤S206:会根据系统存储器模块105中已存储的第二子加密任务的变量数据运行第二子加密任务,获得第二处理结果。
示例性的,在处理器模块获得位宽为64bit的数据D与位宽为32bit的数据E之后,会从系统存储器模块中读取相应的公钥算法程序,并根据读取出的公钥算法程序对数据D与数据E进行加法运算,并获得位宽为96bit的第二处理结果,且又将第二处理结果存储至系统存储器模块中。
步骤S207:根据第一运算结果与第二运算结果得到目标加密信息的处理结果。
示例性的,由于加密任务为运算“位宽为3072bit的大数A与位宽为1024bit的大数B进行乘法运算之后,加上位宽为64bit的数据D与位宽为32bit的数据E进行加法运算之后的运算结果”,而此时已经获取了第一子加密任务对应的位宽为3145728bit的第一处理结果,以及第二子加密任务对应的位宽为96bit的第二处理结果,所以,处理器模块就可以根据第一处理结果与第二处理结果获取目标加密信息的处理结果,即对第一处理结果与第二处理结果进行加法运算,以获得加密任务对应的位宽为3145824bit的处理结果。
基于同一发明构思,如图3所示,本申请实施例还提供一种加密信息处理装置的一种示意图,该装置包括:
获取单元301,用于获取目标加密任务对应的变量数据;其中,目标加密任务包括第一子加密任务与第二子加密任务;
存储单元302,用于将公钥引擎模块运行第一子加密任务时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中;
锁定单元303,用于指示总线模块对P个数据存储器模块进行锁定,其中,P个数据存储器模块被锁定时仅公钥引擎模块能够对P个数据存储器模块进行读写操作;
第一运行单元304,用于向公钥引擎模块发送指示运行第一子加密任务的运行指令,以使得在公钥引擎模块接收运行指令时,根据运行指令从已存储了变量数据的数据存储器模块中读取多个变量数据,并根据多个变量数据运行第一子加密任务,获得第一处理结果;
解锁单元305,用于接收公钥引擎模块发送的处理完成指令,并指示总线模块对P个数据存储器模块进行解锁,并,在解锁完成后从存储第一处理结果的数据存储器模块中读取第一处理结果;
第二运行单元306,用于根据第二子加密任务的变量数据运行第二子加密任务,获得第二处理结果;
第二运行单元307,还用于根据第一运算结果与第二运算结果得到目标加密信息的处理结果。
在一些可能的实施方式中,本申请提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行如图2所示的实施例中所执行的方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种加密信息处理装置,其特征在于,所述装置包括处理器模块、公钥引擎模块、总线模块和根据所述公钥引擎模块运行所需的N个变量设置的P个数据存储器模块;其中,N和P均为正整数,且P大于N;
所述处理器模块、所述公钥引擎模块、所述P个数据存储器模块均与所述总线模块进行连接;
其中,所述处理器模块将所述公钥引擎模块运行时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中,并指示所述总线模块对所述P个数据存储器模块进行锁定,其中,所述P个数据存储器模块被锁定时仅所述公钥引擎模块能够对所述P个数据存储器模块进行读写操作;
在所述公钥引擎模块接收到所述处理器模块发送的运行指令时,根据所述运行指令从所述已存储了变量数据的数据存储器模块中读取所述多个变量数据,并根据所述多个变量数据按照所述运行指令指示的运行方式进行加密信息处理。
2.根据权利要求1所述的装置,其特征在于,
所述公钥引擎模块还用于在加密信息处理得到处理结果后,将所述处理结果存储至除所述已存储了变量数据的数据存储器模块之外的其余任一数据存储器模块中;并,向所述处理器模块反馈指示加密信息处理已完成的处理完成指令;
所述处理器模块还用于根据所述处理完成指令,指示所述总线模块对所述P个数据存储器模块进行解锁,并,在解锁完成后从存储所述处理结果的数据存储器模块中读取所述处理结果。
3.根据权利要求1所述的装置,其特征在于,所述公钥引擎模块包括指令解析单元;其中,所述指令解析单元用于对接收到的处理器模块发送的指令进行解析,并使得公钥引擎模块根据指令解析结果获得进行运算时所需的配置信息,并根据配置信息从所述已存储了变量数据的数据存储器模块中读取相应的变量数据。
4.根据权利要求1所述的装置,其特征在于,所述公钥引擎模块设置有指令输入端口、N个数据输入端口以及输出端口,所述N个数据输入端口与所述P个数据存储器模块包括的N个数据存储器模块一一对应;
其中,所述公钥引擎模块通过所述指令输入端口接收所述处理器模块发送的运行指令,并基于所述运行指令的指示,通过所述N个数据输入端口中已存储了变量数据的数据存储器模块对应的数据输入端口读取变量数据,且对所述多个变量数据进行加密信息处理,并通过所述输出端口将得到的处理结果存储至除所述任一数据存储器模块中。
5.根据权利要求1所述的装置,其特征在于,所述加密信息处理装置还包括系统存储器模块,用于存储所述处理器模块进行数据运行时所需程序。
6.根据权利要求1所述的装置,其特征在于,在所述公钥引擎模块接收到所述运行指令后,在一个时钟周期内从所述已存储了变量数据的数据存储器模块中读取变量数据。
7.根据权利要求1所述的装置,其特征在于,在所述运行指令为大数运算指令时,所述多个变量数据为待运算的大数,所述公钥引擎模块按照预设运算位宽对每一大数进行拆分,获得所述每一大数所对应的多个子数据,并根据所述大数运算指令指示的运算方式对每一大数所对应的多个子数据进行运算。
8.根据权利要求1所述的装置,其特征在于,所述P个数据存储器模块中任一数据存储器模块的存储空间大小是根据所述公钥引擎模块运算的最大变量位宽确定的。
9.一种加密信息处理方法,其特征在于,所述方法应用于加密信息处理装置包括的处理器模块中,所述加密信息处理装置还包括公钥引擎模块、总线模块和根据所述公钥引擎模块运行所需的N个变量设置的P个数据存储器模块;其中,N和P均为正整数,且P大于N;
所述方法包括:
获取目标加密任务对应的变量数据;其中,所述目标加密任务包括第一子加密任务与第二子加密任务;
将所述公钥引擎模块运行所述第一子加密任务时所需的多个变量数据分别存储至不同的数据存储器模块中,每一变量数据存储至其中一个数据存储器模块中;
指示所述总线模块对所述P个数据存储器模块进行锁定,其中,所述P个数据存储器模块被锁定时仅所述公钥引擎模块能够对所述P个数据存储器模块进行读写操作;
向所述公钥引擎模块发送指示运行所述第一子加密任务的运行指令,以使得在所述公钥引擎模块接收所述运行指令时,根据所述运行指令从所述已存储了变量数据的数据存储器模块中读取所述多个变量数据,并根据所述多个变量数据运行所述第一子加密任务,获得第一处理结果;
接收所述公钥引擎模块发送的处理完成指令,并指示所述总线模块对所述P个数据存储器模块进行解锁,并,在解锁完成后从存储所述第一处理结果的数据存储器模块中读取所述第一处理结果;
根据所述第二子加密任务的变量数据运行所述第二子加密任务,获得第二处理结果;
根据所述第一运算结果与所述第二运算结果得到所述目标加密信息的处理结果。
10.一种计算机设备,其特征在于,所述设备包括如权利要求1-8任一所述的加密信息处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011358015.7A CN112487448B (zh) | 2020-11-27 | 2020-11-27 | 一种加密信息处理装置、方法及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011358015.7A CN112487448B (zh) | 2020-11-27 | 2020-11-27 | 一种加密信息处理装置、方法及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112487448A true CN112487448A (zh) | 2021-03-12 |
CN112487448B CN112487448B (zh) | 2024-05-03 |
Family
ID=74936283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011358015.7A Active CN112487448B (zh) | 2020-11-27 | 2020-11-27 | 一种加密信息处理装置、方法及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112487448B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070110232A1 (en) * | 2005-11-15 | 2007-05-17 | Koichiro Akiyama | Encryption apparatus, decryption apparatus, and method |
CN101170406A (zh) * | 2006-10-27 | 2008-04-30 | 北京中电华大电子设计有限责任公司 | 双核公钥密码算法运算协处理器的一种实现方法 |
CN102820969A (zh) * | 2011-06-07 | 2012-12-12 | 美国博通公司 | 用于建立加密电子邮件的通信的nfc通信装置 |
CN103067165A (zh) * | 2013-01-17 | 2013-04-24 | 广东数字证书认证中心有限公司 | 公钥密码体制中的外包计算方法、设备和服务器 |
CN107402824A (zh) * | 2017-05-31 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 一种数据处理的方法及装置 |
US20180375639A1 (en) * | 2017-06-22 | 2018-12-27 | Microsoft Technology Licensing, Llc | Multiplication Operations on Homomorphic Encrypted Data |
CN109376114A (zh) * | 2016-11-03 | 2019-02-22 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
US20190318127A1 (en) * | 2016-12-29 | 2019-10-17 | Huawei Technologies Co., Ltd. | System on Chip And Method For Implementing Secure Operating System Switching |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
CN111092718A (zh) * | 2019-12-25 | 2020-05-01 | 北京天融信网络安全技术有限公司 | 加密方法、装置及电子设备 |
-
2020
- 2020-11-27 CN CN202011358015.7A patent/CN112487448B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070110232A1 (en) * | 2005-11-15 | 2007-05-17 | Koichiro Akiyama | Encryption apparatus, decryption apparatus, and method |
CN101170406A (zh) * | 2006-10-27 | 2008-04-30 | 北京中电华大电子设计有限责任公司 | 双核公钥密码算法运算协处理器的一种实现方法 |
CN102820969A (zh) * | 2011-06-07 | 2012-12-12 | 美国博通公司 | 用于建立加密电子邮件的通信的nfc通信装置 |
CN103067165A (zh) * | 2013-01-17 | 2013-04-24 | 广东数字证书认证中心有限公司 | 公钥密码体制中的外包计算方法、设备和服务器 |
CN109376114A (zh) * | 2016-11-03 | 2019-02-22 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
US20190318127A1 (en) * | 2016-12-29 | 2019-10-17 | Huawei Technologies Co., Ltd. | System on Chip And Method For Implementing Secure Operating System Switching |
CN107402824A (zh) * | 2017-05-31 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 一种数据处理的方法及装置 |
US20180375639A1 (en) * | 2017-06-22 | 2018-12-27 | Microsoft Technology Licensing, Llc | Multiplication Operations on Homomorphic Encrypted Data |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
CN111092718A (zh) * | 2019-12-25 | 2020-05-01 | 北京天融信网络安全技术有限公司 | 加密方法、装置及电子设备 |
Non-Patent Citations (3)
Title |
---|
CHENYU YAN 等: "Improving Cost, Performance, and Security of Memory Encryption and Authentication", ACM SIGARCH COMPUTER ARCHITECTURE NEWS, vol. 34, no. 2, 1 May 2006 (2006-05-01), XP055539374, DOI: 10.1145/1150019.1136502 * |
许小龙;罗克露;: "椭圆曲线基点判断算法的多核并行化", 计算机应用研究 * |
贺涛;: "混合型公钥密码算法在无线传感器网络加密中的应用设计", 电子设计工程, no. 02, 20 January 2017 (2017-01-20) * |
Also Published As
Publication number | Publication date |
---|---|
CN112487448B (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220138349A1 (en) | Cryptographic architecture for cryptographic permutation | |
CN107683502B (zh) | 根据紧凑源代码生成加密函数参数 | |
US8670557B2 (en) | Cryptographic system with modular randomization of exponentiation | |
US20180026782A1 (en) | Modular exponentiation with transparent side channel attack countermeasures | |
EP3839788A1 (en) | Bit-length parameterizable cipher | |
CN107004084B (zh) | 用于加密操作的乘法掩码 | |
US9800407B2 (en) | Methods and apparatuses for prime number generation and storage | |
US11902432B2 (en) | System and method to optimize generation of coprime numbers in cryptographic applications | |
US20150270965A1 (en) | Method of using a token in cryptography | |
CN112152782A (zh) | 用于可重配置电路装置的后量子公钥签名操作 | |
Hutter et al. | NaCl’s crypto_box in hardware | |
US8553878B2 (en) | Data transformation system using cyclic groups | |
CN111008407A (zh) | 用于执行虚拟加密操作的加密电路 | |
US11522669B2 (en) | Using cryptographic blinding for efficient use of Montgomery multiplication | |
US20220085999A1 (en) | System and method to optimize decryption operations in cryptographic applications | |
US7113593B2 (en) | Recursive cryptoaccelerator and recursive VHDL design of logic circuits | |
CN112487448B (zh) | 一种加密信息处理装置、方法及计算机设备 | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
US11924320B2 (en) | Devices and methods for protecting cryptographic programs | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
CN114205104A (zh) | 针对功率和电磁侧信道攻击的对认证标签计算的保护 | |
US8995651B1 (en) | Multiple algorithm cryptography system | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
Oder | Efficient and side-channel resistant implementation of lattice-based cryptography | |
WO2023141934A1 (en) | Efficient masking of secure data in ladder-type cryptographic computations |
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 |