CN113625994A - 一种数据处理方法和处理核 - Google Patents

一种数据处理方法和处理核 Download PDF

Info

Publication number
CN113625994A
CN113625994A CN202111184431.4A CN202111184431A CN113625994A CN 113625994 A CN113625994 A CN 113625994A CN 202111184431 A CN202111184431 A CN 202111184431A CN 113625994 A CN113625994 A CN 113625994A
Authority
CN
China
Prior art keywords
state
calculation
montgomery
data
input
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
CN202111184431.4A
Other languages
English (en)
Other versions
CN113625994B (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.)
Huakong Tsingjiao Information Technology Beijing Co Ltd
Original Assignee
Huakong Tsingjiao Information Technology Beijing 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 Huakong Tsingjiao Information Technology Beijing Co Ltd filed Critical Huakong Tsingjiao Information Technology Beijing Co Ltd
Priority to CN202111184431.4A priority Critical patent/CN113625994B/zh
Publication of CN113625994A publication Critical patent/CN113625994A/zh
Application granted granted Critical
Publication of CN113625994B publication Critical patent/CN113625994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例提供一种数据处理方法和处理核。其中的方法包括:接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。本发明实施例在减小电路面积开销的基础上,可以提高模运算的速度和并发性。

Description

一种数据处理方法和处理核
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法和处理核。
背景技术
安全隐私计算采用以半同态或同态加密协议为基础的密码协议进行大数据的密文计算及传输。大整数的模乘运算和模幂运算,是实现半同态、同态加密算法的基础运算单元。此外,在一个典型的半同态、同态算法中,通常是既有模乘运算也有模幂运算,因此,算法的底层实现需要同时支持大整数的模乘运算和大整数的模幂运算。
大整数的模乘运算和模幂运算需要进行多次迭代操作,计算代价较高,若直接通过软件进行计算,计算效率难以满足海量数据的运算场景需求。若通过硬件电路进行计算,由于模乘运算和模幂运算各自为单独的模块,整体电路面积将是各运算单元电路面积之和,导致电路资源开销较大,不仅需要消耗大量的硬件成本,而且影响隐私计算系统的计算性能。
发明内容
本发明实施例提供一种数据处理方法和执行所述数据处理方法的处理核,可以减少电路面积的开销,提高隐私计算系统的计算性能。
为了解决上述问题,本发明实施例公开了一种数据处理方法,所述方法应用于芯片中的处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器,所述方法包括:
接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;
根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;
根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;
在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。
可选地,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。
可选地,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));
在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
可选地,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));
在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);
在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
可选地,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。
可选地,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述方法还包括:
在所述状态机的各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。
可选地,所述处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。
另一方面,本发明实施例公开了一种处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器;所述处理核用于执行所述芯片分配的计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型,所述计算类型发送至所述状态机;其中,
所述多路选择器,分别与所述状态机、所述蒙哥马利计算单元、以及相应输入数据的存储器相连,用于在接收到所述状态机输出的第一控制信号时,从相应的存储器中读取计算数据,并将读取的计算数据输入所述蒙哥马利计算单元;
所述状态机,分别与所述多路选择器和所述蒙哥马利计算单元相连,用于根据所述计算类型,确定状态序列,根据所述状态序列切换状态,并在各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;
所述蒙哥马利计算单元,分别与所述多路选择器和所述状态机相连,用于在各状态下接收相应的多路选择器输出的计算数据,并基于接收的计算数据执行各状态对应的运算步骤,在所述状态序列的最后一个状态对应的运算步骤执行完成后,输出所述计算指令的计算结果。
可选地,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。
可选地,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述状态机,具体用于:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));
在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
可选地,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述状态机,具体用于:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));
在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);
在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
可选地,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。
可选地,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述状态机还用于在各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。
可选地,所述芯片中的处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。
再一方面,本发明实施例公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如前述一个或多个所述的数据处理方法。
本发明实施例包括以下优点:
本发明实施例提出一种应用于芯片处理核的电路结构设计,所述处理核的电路结构包括:状态机、蒙哥马利计算单元、以及多路选择器。处理核接收到计算指令之后,可以识别计算指令中携带的计算类型(模乘类型或者模幂类型),并根据识别的计算类型,确定所述状态机的状态序列,根据所述状态序列切换状态机的状态。在所述状态机的不同状态下,可以向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤。所述状态序列中的各状态对应预设的运算步骤,通过切换状态机的状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过切换状态机的状态,可以控制输入所述蒙哥马利计算单元的计算数据。由此,本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一种数据处理方法实施例的步骤流程图;
图2是本发明的一种状态机的状态序列中各状态转换的示意图;
图3是本发明的一种用于芯片处理核的电路结构示意图;
图4是本发明的一种处理核400实施例的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例
参照图1,示出了本发明的一种数据处理方法实施例的步骤流程图,所述方法应用于芯片中的处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器,所述方法具体可以包括如下步骤:
步骤101、接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;
步骤102、根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;
步骤103、根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;
步骤104、在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。
在以密码学为基础的隐私计算应用中,需要在数据中心或者服务器上进行大量的模运算,如模乘运算、模幂运算等,这些模运算是隐私计算中的基础运算。
本发明的核心在于,提出一种应用于芯片处理核的集成电路设计,该集成电路既可以实现模乘运算又可以实现模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销。该集成电路可应用于芯片中的处理核,使得芯片中的每个处理核都可以同时支持模乘运算和模幂运算。通过该芯片可以并行处理大数据量的模乘运算和/或模幂运算,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。
所述芯片可应用于以密码学为基础的隐私计算系统中,例如,一个应用场景是基于该隐私计算系统实现的私有信息检索(Private Information Retrieval,PIR)系统,在进行数据查询时,原始的明文数据首先通过半同态的密码协议,生成相应的密文数据,之后基于密文数据进行查询操作。由此可以实现在用户向数据库提交查询时,可以在用户的私有信息不被泄露计算的情况下完成查询。其中,半同态的密码协议中主要进行了批量的模幂运算。
又如,另一个应用场景是政务大数据的隐私计算应用场景、医疗科研、银行金融业务相关应用场景中,使用多方数据进行XGBoost等机器学习进行建模。具体地,传统机器学习算法中明文的加法运算,通过同态密码协议后,转变为密文的同态加法运算,而密文的同态加法运算需要进行批量的模幂运算。
进一步地,所述芯片可以包括但不限于FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)芯片或ASIC(Application Specific Integrated Circuit,专用集成电路)芯片。
可选地,所述芯片包含的处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。
在具体实施中,每个芯片所包含的运算核的数量,根据芯片大小不同而不同。如FPGA,可以容纳上百个运算核;而定制的ASIC芯片,可以达到上千个运算核。
蒙哥马利模乘是实现模乘运算和模幂运算的基础算子。本发明实施例将蒙哥马利模乘算法记为算法1,算法1的描述如下:
输入:
Figure 391384DEST_PATH_IMAGE001
输出:
Figure 839683DEST_PATH_IMAGE002
初始化:S0=0;
1:
Figure 150579DEST_PATH_IMAGE003
2:
Figure 280209DEST_PATH_IMAGE004
3:
Figure 891319DEST_PATH_IMAGE005
4:
Figure 244940DEST_PATH_IMAGE006
5:end
6:
Figure 246394DEST_PATH_IMAGE007
7: end
8:
Figure 242032DEST_PATH_IMAGE008
算法1为基为r=2k的蒙哥马利模乘算法。算法1中的符号说明如下:
n为输入数据及模数的位数,示例性的,n=2048bit。
k为基的位数,示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。
r=2k表示基的大小。
yi表示输入变量Y的第i个块。
xj表示输入变量X的第j个块;x0表示变量X的第0个块。
qi表示在第i次循环中,中间变量q的取值。
pj表示模数P的第j个块。
Figure 645331DEST_PATH_IMAGE009
表示在第i次循环中,中间变量S的第j个块。
Figure 435433DEST_PATH_IMAGE010
表示在第i+1次循环中,中间变量S的第j个块。
Figure 720920DEST_PATH_IMAGE011
的求解方式为:先计算中间变量
Figure 192353DEST_PATH_IMAGE012
,再计算
Figure 512476DEST_PATH_IMAGE013
求出结果。
为便于描述,本发明实施例将蒙哥马利模乘运算用符号mont_mul来表示,则上述算法1的计算可以表示为:
Figure 676741DEST_PATH_IMAGE014
基于算法1的蒙哥马利模乘运算可以实现模幂运算xe(mod P),模幂运算可以由若干个蒙哥马利模乘算法进行反复迭代实现。模幂运算的核心思想是先将原始的输入数据x由初始域(数域)转换至蒙哥马利域;然后根据幂数的位宽,进行若干次蒙哥马利模乘操作;最后再将结果从蒙哥马利域转换回到数域。发明实施例将模幂运算的算法记为算法2,算法2的描述如下:
输入:x、e、p、r,且满足:
Figure 470033DEST_PATH_IMAGE015
输出:
Figure 541894DEST_PATH_IMAGE016
1:
Figure 919786DEST_PATH_IMAGE017
2:
Figure 51690DEST_PATH_IMAGE018
3:
Figure 311770DEST_PATH_IMAGE019
4:
Figure 125005DEST_PATH_IMAGE020
5:
Figure 419720DEST_PATH_IMAGE021
6:
Figure 925788DEST_PATH_IMAGE022
算法2中的符号说明如下:
n为输入数据及模数的位数,示例性的,n=2048bit。
x为输入的长度上限为n的底数。
e为输入的长度上限为n的指数。
P为输入的长度上限为n的模数。
k为基的位数。示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。
Figure 673164DEST_PATH_IMAGE023
,其中,
Figure 86828DEST_PATH_IMAGE024
是指
Figure 173732DEST_PATH_IMAGE025
的上限,如果n能够整除k,那么取
Figure 913018DEST_PATH_IMAGE026
,如k=16bit,n=2048bit,
Figure 85374DEST_PATH_IMAGE027
;如果n不能够整除k,取相除后的整数上限,如k=20bit,n=2048bit,
Figure 37149DEST_PATH_IMAGE028
在算法2中,mont_mul表示前述的蒙哥马利模乘运算。需要说明的是,在算法2的第1行中增加了“mod P”,是因为r2的值可能超出P,因此需要再对P取模,转回到0~P的范围内。
基于算法1的蒙哥马利模乘运算可以实现模乘运算x*y(mod P)。发明实施例将模乘运算的算法记为算法3,算法3的描述如下:
输入:x、y、p、r,且满足:
Figure 306457DEST_PATH_IMAGE029
输出:
Figure 154327DEST_PATH_IMAGE030
1:
Figure 876295DEST_PATH_IMAGE017
2:
Figure 631762DEST_PATH_IMAGE031
3:
Figure 427679DEST_PATH_IMAGE032
4:
Figure 508768DEST_PATH_IMAGE033
算法3中的符号说明如下:
n为输入数据及模数的位数,示例性的,n=2048bit。
x为输入的长度上限为n的乘数,y为输入的长度上限为n的乘数。
P为输入的长度上限为n的模数。
k为基的位数。示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。
Figure 655715DEST_PATH_IMAGE023
,其中,
Figure 214873DEST_PATH_IMAGE024
是指
Figure 193193DEST_PATH_IMAGE025
的上限,如果n能够整除k,那么取
Figure 117287DEST_PATH_IMAGE026
,如k=16bit,n=2048bit,
Figure 813847DEST_PATH_IMAGE027
;如果n不能够整除k,取相除后的整数上限,如k=20bit,n=2048bit,
Figure 114378DEST_PATH_IMAGE028
算法2和算法3的第一步操作均为通过计算mont_mul(x, r2(mod p)),将输入数据从初始域转换至蒙哥马利域(其中x是初始域的元素)。算法2和算法3的最后一步操作均为通过计算mont_mul(C,1),将结果从蒙哥马利域转换至初始域(其中C是初始域的元素)。此外,算法2和算法3的中间操作步骤均为蒙哥马利模乘运算,区别在于二者对应不同的输入数据并且模幂运算中包含了循环操作。
本发明实施例根据算法2和算法3中相同的操作步骤和不同的操作步骤,对算法2和算法3进行改进和融合,得到算法4。具体地,提取二者相同的操作步骤,对于不同的操作步骤,通过设置状态机,在不同状态下控制蒙哥马利模乘运算的输入,来实现相应的运算步骤。算法4的描述如下:
输入:x、y、e、p、r,且满足:
Figure 950135DEST_PATH_IMAGE015
输出:
Figure 107447DEST_PATH_IMAGE034
或者
Figure 228987DEST_PATH_IMAGE035
1:
Figure 129946DEST_PATH_IMAGE017
2:
Figure 817280DEST_PATH_IMAGE036
3:
Figure 348755DEST_PATH_IMAGE037
4:
Figure 754329DEST_PATH_IMAGE038
5:
Figure 458980DEST_PATH_IMAGE019
6:
Figure 204082DEST_PATH_IMAGE020
7:
Figure 968775DEST_PATH_IMAGE039
8:
Figure 799328DEST_PATH_IMAGE033
算法4中的符号说明如下:
mode表示计算类型。示例性的,mode=1表示模幂类型,mod=0表示模乘类型。n为输入数据及模数的位数,示例性的,n=2048bit。
x为模幂运算中输入的长度上限为n的底数,或者,x为模乘运算中输入的长度上限为n的乘数。
y为模乘运算中输入的长度上限为n的乘数。
e为模幂运算中输入的长度上限为n的指数。
P 为输入的长度上限为n的模数。
k为基的位数。示例性的,k=64bit。以基数k,将n分解成多个块,每个块的大小为k位,如果n=2048bit,k=64bit,那么一个2048bit的大整数将被分解为32个块,每个块的位宽为64bit。
Figure 42091DEST_PATH_IMAGE023
,其中,
Figure 704016DEST_PATH_IMAGE024
是指
Figure 577294DEST_PATH_IMAGE025
的上限,如果n能够整除k,那么取
Figure 957460DEST_PATH_IMAGE026
,如k=16bit,n=2048bit,
Figure 941597DEST_PATH_IMAGE027
;如果n不能够整除k,取相除后的整数上限,如k=20bit,n=2048bit,
Figure 458028DEST_PATH_IMAGE028
在算法4中,当mod=0(模乘运算)时,需要执行第1行、第2行、第4行、第8行的步骤。当mod=1(模幂运算)时,需要执行第1行、第3行、第5行、第6行、第7行、第8行的步骤。本发明实施例基于算法4,实现了一种应用于芯片处理核的集成电路设计。所述处理核的电路结构主要包括如下模块:状态机、蒙哥马利计算单元、以及至少一个多路选择器。其中,所述蒙哥马利计算单元可用于执行上述算法1的蒙哥马利模乘运算。在不同的计算类型下,可以设置不同的状态序列,也即,状态机可以经历不同的状态。在状态机的不同状态下,可以向不同的多路选择器输出第一控制信号以控制输入蒙哥马利计算单元的计算数据。所述状态序列中的各状态对应预设的运算步骤,状态机通过切换自身的状态,可以控制蒙哥马利计算单元接收当前状态下待执行的运算步骤所需的计算数据,并基于接收到的计算数据执行当前状态对应的运算步骤。
在具体实施中,通过包含多个所述处理核的芯片,可以实现批量的模运算。例如,主机侧可以将待进行批量模运算的n份输入数据传输至芯片,芯片中的输入控制模块基于多核调度算法,产生相应的控制信号,将接收到的n份输入数据分配到n个运算核并触发计算指令,以使n个运算核并行进行模运算。每个运算核能够基于算法4独立实现模乘运算或模幂运算。
处理核接收到计算指令之后,可以解析得到计算指令中携带的计算类型,并将计算类型发送至状态机,状态机根据接收到的计算类型确定状态序列,并根据状态序列切换自身的状态。不同状态可以对应不同计算类型下的不同运算步骤。通过状态机所处的不同状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过状态机所处的不同状态,可以控制所述蒙哥马利计算单元获取的计算数据。由此,本发明实施例通过切换所述状态机的状态,可以控制蒙哥马利计算单元执行相应计算类型下的相应运算步骤。例如,在mod=0(模乘运算)时,通过切换所述状态机的状态,可以控制蒙哥马利计算单元依次执行算法4中第1行、第2行、第4行、第8行的步骤。在mod=1(模幂运算)时,通过切换所述状态机的状态,可以控制蒙哥马利计算单元依次执行算法4中第1行、第3行、第5行、第6行、第7行、第8行的步骤。
此外,通过切换所述状态机的状态,还可以控制蒙哥马利计算单元在执行某个运算步骤时获取的计算数据。具体地,本发明实施例在所述处理核的电路结构中增加了多路选择器。进一步地,每个输入数据可以存储在独立的存储器中,每个输入数据的存储器可以对应有多路选择器。本发明实施例可以根据状态机的状态,向相应的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据。
一个示例中,在计算模乘运算时,处理核接收到的输入数据包括:x、y、r2、P、以及计算类型mode(如mode=0)。处理核在接收到上述输入数据后,将数据x存储到存储器A中;将数据y存储到存储器B中;将数据r2存储到存储器r2中;将数据P存储到存储器P中。存储器A、存储器B、存储器P分别对应有各自的多路选择器。需要说明的是,每个存储器可以分别对应一个多路选择器,或者,多个存储器可以对应一个多路选择器。
假设在状态机所处的某个状态下,状态机向存储器A对应的多路选择器输出第一控制信号,以控制存储器A对应的多路选择器从存储器A中读取数据x,并将数据x输入所述蒙哥马利计算单元;同时,状态机向存储器r2对应的多路选择器输出第一控制信号,以控制存储器r2对应的多路选择器从存储器r2中读取数据r2,并将数据r2输入所述蒙哥马利计算单元。由此,在该状态下,所述蒙哥马利计算单元获取的计算数据包括输入数据x和r2
在本发明实施例中,所述计算数据可以根据所述输入数据和/或之前状态下计算得到的中间结果所得到。例如,在mod=0(模乘运算)时,蒙哥马利计算单元执行算法4中第1行的步骤时,所需的计算数据为计算指令中携带的输入数据,如x和r2。蒙哥马利计算单元执行算法4中第4行的步骤时,所需的计算数据为之前状态计算得到的中间结果x'和y'。
当最后一个状态对应的运算步骤执行完毕后,可以得到所述计算指令的计算结果,如模乘运算结果或者模幂运算结果。
在本发明的一种可选实施例中,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。
本发明实施例对算法4中的各操作步骤,设置对应状态机的不同状态。参照图2,示出了本发明的一种状态机的状态序列中各状态转换的示意图。
如图2所示,在mode=0(模乘类型)时,状态机的状态序列包括如下状态:状态1、状态2、状态4、以及状态7。状态机启动之后经历如下状态转换:状态1、状态2、状态4、以及状态7。状态7对应的运算步骤执行完成之后即可输出模乘运算的结果。在mode=1(模幂类型)时,状态机的状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7。状态机启动之后经历如下状态转换:状态1、状态3、状态5、状态6、以及状态7。状态7对应的运算步骤执行完成之后即可输出模幂运算的结果。
状态序列中各状态对应预设的运算步骤。具体地,在mode=0(模乘类型)时,状态1对应运算步骤:x'=mont_mul(x,r2(mod P));状态2对应运算步骤:y'=mont_mul(y,r2(modP));状态4对应运算步骤:C=mont_mul(x',y');状态7对应运算步骤:mont_mul(C,1)。
在mode=1(模幂类型)时,状态1对应运算步骤:x'=mont_mul(x,r2(mod P));状态3对应运算步骤:C=mont_mul(1,r2(mod P));状态5对应运算步骤:C=mont_mul(C,C);状态6对应运算步骤:预设循环操作;状态7对应运算步骤:mont_mul(C,1)。其中,预设循环操作为算法4的第5行至第7行。
其中,状态1对应模乘运算和模幂运算中的从初始域向蒙哥马利域转换的运算步骤,状态7对应模乘运算和模幂运算中的从蒙哥马利域向初始域转换的运算步骤。状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤。状态3和状态5对应模幂运算过程中的蒙哥马利模乘运算步骤。状态6对应模幂运算中的迭代循环运算步骤。
如图2所示,模乘运算中的状态2和状态4,与模幂运算中的状态3和状态5,均对应蒙哥马利模乘运算步骤,但是需要输入的计算数据不同。本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。
在本发明的一种可选实施例中,所述输入数据中的每个数据可以存储在单独的存储器中;所述处理核的电路结构中包括至少一个多路选择器,每个输入数据的存储器对应有多路选择器。
如图2所示,在状态机的不同状态下,蒙哥马利计算单元执行不同的运算步骤,并且不同的运算步骤所需的计算数据不同。此外,有些计算数据在中间过程中需要再次使用,比如模数P,每一步运算都要使用;又比如模幂运算中的指数e,在整个循环过程中都要使用。因此,本发明实施例将接收到的输入数据中的每个数据存储在单独的存储器中。
一个示例中,在计算模乘运算时,输入数据包括:x、y、r2、P、以及计算类型mode(如mode=0)。处理核在接收到上述输入数据后,将数据x存储到存储器A中;将数据y存储到存储器B中;将数据r2存储到存储器r2中;将数据P存储到存储器P中。
需要说明的是,上述存储器A、存储器B、存储器r2、以及存储器P的名称仅为了便于描述,并不用于限制存储器的种类。所述存储器A、存储器B、存储器r2、以及存储器P可以为半导体存储器,如SRAM(Static Random-Access Memory,静态随机存取存储器)/DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
处理核可以根据状态机的状态,控制相应的多路选择器从相应的存储器中获取数据,并将所述多路选择器获取的数据作为所述蒙哥马利计算单元的输入数据。例如,在状态机启动并进入到状态1时,可以向存储器A对应的多路选择器输出第一控制信号,以控制存储器A对应的多路选择器从存储器A中读取数据x,并将读取的数据x输入至蒙哥马利计算单元;同样地,可以向存储器r2对应的多路选择器输出第一控制信号,以控制存储器r2对应的多路选择器从存储器r2中读取数据r2,并将读取的数据r2输入至蒙哥马利计算单元。
本发明实施例通过多路选择器实现通过不同状态下状态机的输出,来控制多路选择器的输入和输出,使得在不同状态下蒙哥马利计算单元可以获取待执行的操作步骤所需的不同的计算数据,进而可以通过蒙哥马利计算单元执行不同状态下的操作步骤,实现了模乘运算和模幂运算的高度融合。由于多路选择器的体积较小可以忽略,因此,本发明实施例能够在仅增加多路选择器而不增加电路体积的情况下,通过一个电路模块实现模乘运算和模幂运算,在提高模运算效率的同时,可以降低芯片的硬件成本。
在本发明的一种可选实施例中,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));
在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
在本发明实施例中,当处理核接收到的计算指令中携带的计算类型为模乘类型时,状态机需经历如下状态:状态1、状态2、状态4、以及状态7,每个状态对应蒙哥马利计算单元待执行的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模乘运算的结果。
参照图3,示出了本发明实施例的一种用于芯片处理核的电路结构示意图。在本发明实施例中,多路选择器用MUX表示。
如图3所示,处理核接收到的计算指令中携带的计算类型为模乘类型(如mode=0)时,输入数据包括:x、y、r2、P、以及mode。其中,数据x存储在存储器A中;数据y存储在存储器B中;数据r2存储在存储器r2中;数据P存储在存储器P中;mode发送至状态机,并启动状态机。
状态机接收到mode=0的计算类型之后,首先进行状态1,然后向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据x和r2,以通过蒙哥马利计算单元计算x'=mont_mul(x,r2(mod P))(算法4中第1行)。
在本发明的一种可选实施例中,所述处理核还包括可以解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述方法还可以包括:
在所述状态机的各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。
例如,在该示例中,状态机还可以向解码器(本发明实施例中记为DEMUX)输出第二控制信号,以将蒙哥马利计算单元本次计算输出的中间结果x'通过解码器输出至指定的存储器,如输出到存储器A中。
待状态1对应的运算步骤执行完毕后,状态机切换至状态2,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据y和r2,以通过蒙哥马利计算单元计算y'=mont_mul(y,r2(mod P))(算法4中第2行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果y'通过解码器输出至指定的存储器,如输出到存储器B中。
待状态2对应的运算步骤执行完毕后,状态机切换至状态4,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过蒙哥马利计算单元计算C=mont_mul(x',y')(算法4中第4行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果C通过解码器输出至指定的存储器,如输出到存储器B中。
待状态4对应的运算步骤执行完毕后,状态机切换至状态7,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态4下得到的中间结果C,以通过蒙哥马利计算单元计算mont_mul(C,1)(算法4中第8行),该计算值即为模乘运算的最终结果prod=x*y(modP);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的模乘运算结果prod通过解码器输出至指定的存储器,如输出到存储器B中。
在本发明的一种可选实施例中,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));
在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);
在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
在本发明实施例中,当处理核接收到的计算指令中携带的计算类型为模幂类型时,状态机需经历如下状态:状态1、状态3、状态5、状态6、以及状态7,每个状态对应蒙哥马利计算单元待执行的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模幂运算的结果。
如图3所示,处理核接收到的计算指令中携带的计算类型为模幂类型(如mode=1)时,输入数据包括:x、e、r2、P、以及mode。其中,数据x存储在存储器A中;数据e存储在存储器e中;数据r2存储在存储器r2中;数据P存储在存储器P中;数据mode发送至状态机,并启动状态机。
状态机接收到mode=1之后,首先进行状态1,然后向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据x和r2,以通过蒙哥马利计算单元计算x'=mont_mul(x,r2(mod P))(算法4中第1行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果x'通过解码器输出至指定的存储器,如输出到存储器A中。
待状态1对应的运算步骤执行完毕后,状态机切换至状态3,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括输入数据r2,以通过蒙哥马利计算单元计算C=mont_mul(1,r2(mod P))(算法4中第3行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果C通过解码器输出至指定的存储器,如输出到存储器B中。
待状态3对应的运算步骤执行完毕后,状态机切换至状态5,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态3下得到的中间结果C,以通过蒙哥马利计算单元计算C=mont_mul(C,C)(算法4中第6行);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的中间结果C通过解码器输出至指定的存储器,如输出到存储器B中。
待状态5对应的运算步骤执行完毕后,状态机切换至状态6,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作(算法4中第5行至第7行),循环次数根据e确定;
其中,循环次数根据输入数据中的指数e确定。具体地,可以根据指数e的位宽确定循环次数。比如e的位宽(e_bit_num)为1024,则循环次数为1024次;e的位宽为2048bit,则循环次数为2048次。第i轮循环中输入蒙哥马利计算单元中的计算数据根据e[i]确定。其中,e[i]指e中的第i个位。比如e的二进制表示为011101,那么e[0]=1,e[1]=0,e[2]=1,e[5]=0。
在状态6下,当e[i]=1时,所述蒙哥马利计算单元执行的运算步骤为C=mont_mul(C,x')。
进一步地,如图3所示,所述处理核的电路结构还可以包括循环控制模块。所述循环控制模块分别与状态机以及存储指数e的存储器相连,用于对指数e进行解析,并向状态机输入e[i]。
待状态6对应的运算步骤执行完毕后,状态机切换至状态7,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入到蒙哥马利计算单元中的计算数据包括状态6下得到的中间结果C,以通过蒙哥马利计算单元计算mont_mul(C,1)(算法4中第8行),该计算值即为模幂运算的最终结果prod=xe(mod P);进一步地,状态机还可以向解码器输出第二控制信号,以将蒙哥马利计算单元本次计算得到的模幂运算结果prod通过解码器输出至指定的存储器,如输出到存储器B中。
进一步地,在蒙哥马利计算单元执行完成当前状态下的运算步骤之后,可以向状态机发送执行完成的通知消息,状态机接收到该通知消息后,切换至下一个状态。在最后一个状态对应的运算步骤完成之后,可以得到模乘运算结果或者模幂运算结果。在本发明实施例中,状态机可用于根据自身的状态控制输入蒙哥马利计算单元的计算数据,以控制蒙哥马利计算单元在不同状态下执行相应的运算步骤。此外,所述处理核的电路结构中还可以包括解码器(DEMUX),如图3所示,所述解码器(DEMUX)分别与蒙哥马利计算单元和状态机相连。所述状态机还可用于根据自身的状态控制将蒙哥马利计算单元输出的计算结果通过解码器输出至指定的存储器。也即,通过状态机可以控制所述电路结构中所有的数据流向。
在本发明的一种可选实施例中,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。由此可以节省模运算过程中所需的存储空间。
在模乘运算过程中,乘数x在状态1对应的运算步骤执行完毕之后,后面的步骤中不再使用乘数x,因此,本发明实施例可以利用乘数x的存储器存储状态1之后计算过程中产生的中间结果。例如,在上述模乘计算的示例中,状态1下得到的中间结果x'复用了乘数x的存储器A,状态2下得到的中间结果y'复用了乘数y的存储器B,状态4下得到的中间结果C复用了乘数y的存储器B。此外,计算结果也可以复用乘数数据的存储器,如模乘计算结果复用了乘数y的存储器B。
同理,乘数y在状态2对应的运算步骤执行完毕之后,后面的步骤中不再使用乘数y,因此,本发明实施例可以利用乘数y的存储器存储状态2之后计算过程中产生的中间结果。
在模幂运算过程中,底数x在状态1对应的运算步骤执行完毕之后,后面的步骤中不再使用底数x,因此,本发明实施例可以利用底数x的存储器存储状态1之后计算过程中产生的中间结果。
综上,本发明实施例提出一种应用于芯片处理核的电路结构设计,所述处理核的电路结构包括:状态机、蒙哥马利计算单元、以及多路选择器。处理核接收到计算指令之后,可以识别计算指令中携带的计算类型(模乘类型或者模幂类型),并根据识别的计算类型,确定所述状态机的状态序列,根据所述状态序列切换状态机的状态。在所述状态机的不同状态下,可以向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤。所述状态序列中的各状态对应预设的运算步骤,通过切换状态机的状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过切换状态机的状态,可以控制输入所述蒙哥马利计算单元的计算数据。由此,本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
装置实施例
参照图4,示出了本发明的一种处理核400实施例的结构框图,所述处理核应用于芯片,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器;所述处理核用于执行所述芯片分配的计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型,所述计算类型发送至所述状态机;其中,
所述多路选择器403,分别与所述状态机、所述蒙哥马利计算单元、以及相应输入数据的存储器相连,用于在接收到所述状态机输出的第一控制信号时,从相应的存储器中读取计算数据,并将读取的计算数据输入所述蒙哥马利计算单元;
所述状态机401,分别与所述多路选择器和所述蒙哥马利计算单元相连,用于根据所述计算类型,确定状态序列,根据所述状态序列切换状态,并在各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;
所述蒙哥马利计算单元402,分别与所述多路选择器和所述状态机相连,用于在各状态下接收相应的多路选择器输出的计算数据,并基于接收的计算数据执行各状态对应的运算步骤,在所述状态序列的最后一个状态对应的运算步骤执行完成后,输出所述计算指令的计算结果。
如图4所示,所述处理核可以接收芯片分配的计算指令,如模乘类型的计算指令或者模幂类型的计算指令。所述处理核对接收到的计算指令进行解析,将计算指令中携带的输入数据存储到存储器中,以及将计算指令中携带的计算类型输入至状态机,并启动状态机。状态机根据接收到的计算类型,确定状态序列,根据所述状态序列切换自身的状态,并根据自身的状态向相应的多路选择器输出第一控制信号。接收到第一控制信号的多路选择器,从其对应的存储器中读取计算数据,并将所述计算数据输入所述蒙哥马利计算单元。所述蒙哥马利计算单元接收到该计算数据之后,根据接收到的计算数据执行当前状态对应的运算步骤。在蒙哥马利计算单元执行完成当前状态下的运算步骤之后,向状态机发送执行完成的通知消息,状态机接收到该通知消息后,切换至下一个状态。在最后一个状态对应的运算步骤完成之后,可以得到模乘运算结果或者模幂运算结果。
需要说明的是,图4中示出了两个存储器和两个多路选择器,仅作为一种示例,本发明实施例对所述处理核中包含的存储器和多路选择器的数量不做限制。状态机分别与每个多路选择器相连。
本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。由于多路选择器的体积较小可以忽略,因此,本发明实施例能够在仅增加多路选择器而不增加电路体积的情况下,通过一个电路模块实现模乘运算和模幂运算,在提高模运算效率的同时,可以降低芯片的硬件成本。
可选地,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。
可选地,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述状态机,具体用于:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));
在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
可选地,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述状态机,具体用于:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));
在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);
在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
参照图3,示出了本发明的一种用于芯片处理核的电路结构示意图。如图3所示,所述电路结构包括如下模块:状态机、蒙哥马利计算单元、各输入数据对应的存储器、各存储器对应的多路选择器、以及解码器。
如图3所示,处理核接收到的计算指令中携带的计算类型为模乘类型(如mode=0)时,输入数据包括:x、y、r2、P、以及mode。其中,数据x存储在存储器A中;数据y存储在存储器B中;数据r2存储在存储器r2中;数据P存储在存储器P中;数据mode发送至状态机,并启动状态机。
状态机接收到mode=0的计算类型之后,根据该计算类型切换自身的状态。在mode=0时,状态机需经历如下状态:状态1、状态2、状态4、以及状态7,各状态对应算法4中模乘运算的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模乘运算的结果。状态机在经历状态1、状态2、状态4、以及状态7中的每个状态时,分别向相应的多路选择器输出相应的第一控制信号,以控制在模乘运算对应的各状态下输入至蒙哥马利计算单元的计算数据,进而控制蒙哥马利计算单元在模乘运算对应的各状态下执行的运算步骤。由此,通过图3所示的电路结构可以执行模乘运算。
同理,状态机接收到mode=1的计算类型之后,根据该计算类型切换自身的状态。在mode=1时,状态机需经历如下状态:状态1、状态3、状态5、状态6、以及状态7,各状态对应算法4中模幂运算的各运算步骤,在状态7对应的运算步骤执行完成后,可以输出模幂运算的结果。状态机在经历状态1、状态3、状态5、状态6、以及状态7中的每个状态时,分别向相应的多路选择器输出相应的第一控制信号,以控制在模幂运算的各状态下输入至蒙哥马利计算单元的计算数据,进而控制蒙哥马利计算单元在模幂运算的各状态下执行的运算步骤。由此,通过图3所示的电路结构可以执行模幂运算。
在本发明实施例中,状态机可用于根据自身的状态控制输入蒙哥马利计算单元的计算数据,以控制蒙哥马利计算单元在不同状态下执行的操作步骤。此外,所述处理核的电路结构中还可以包括解码器(DEMUX),如图3所示,所述解码器(DEMUX)分别与蒙哥马利计算单元和状态机相连。所述状态机还可用于根据自身的状态控制将蒙哥马利计算单元输出的计算结果通过解码器输出至指定的存储器。也即,状态机可以控制所述电路结构中所有的数据流向。
可选地,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。
可选地,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述状态机还用于在各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。
可选地,所述芯片中所述处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。
可选地,所述芯片包括现场可编程逻辑门阵列FPGA芯片或专用集成电路ASIC芯片。
本发明实施例提出一种应用于芯片处理核的电路结构设计,所述处理核的电路结构包括:状态机、蒙哥马利计算单元、以及多路选择器。处理核接收到计算指令之后,可以识别计算指令中携带的计算类型(模乘类型或者模幂类型),并根据识别的计算类型,确定所述状态机的状态序列,根据所述状态序列切换状态机的状态。在所述状态机的不同状态下,可以向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤。所述状态序列中的各状态对应预设的运算步骤,通过切换状态机的状态,可以控制蒙哥马利计算单元执行不同计算类型下的不同运算步骤。此外,通过切换状态机的状态,可以控制输入所述蒙哥马利计算单元的计算数据。由此,本发明实施例通过不同状态下状态机的输出,来控制不同状态下输入蒙哥马利计算单元的计算数据,以及控制蒙哥马利计算单元在不同状态下执行的运算步骤,从而实现了模乘运算和模幂运算的高度融合,通过一个电路模块即可实现模乘运算和模幂运算。相较于对模乘运算和模幂运算分别设置独立的电路模块,可以极大减少芯片处理核的电路面积开销,在减小电路面积开销的基础上,可以提高模运算的速度和并发性,进而可以提高隐私计算的效率,提高隐私计算系统的性能。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行图1所示的数据处理方法。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行一种数据处理方法,所述方法应用于芯片中的处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器,所述方法包括:接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
以上对本发明所提供的一种数据处理方法、一种数据处理装置和一种用于数据处理的装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (15)

1.一种数据处理方法,其特征在于,所述方法应用于芯片中的处理核,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器,所述方法包括:
接收计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型;
根据所述计算类型,确定所述状态机的状态序列,所述状态序列中的各状态对应预设的运算步骤;
根据所述状态序列切换所述状态机的状态,并在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;
在所述状态序列的最后一个状态对应的运算步骤执行完成后,得到所述计算指令的计算结果。
2.根据权利要求1所述的方法,其特征在于,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。
3.根据权利要求2所述的方法,其特征在于,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));
在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
4.根据权利要求2所述的方法,其特征在于,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述在所述状态机的各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元基于所述计算数据执行各状态对应的运算步骤,包括:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));
在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);
在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
5.根据权利要求1所述的方法,其特征在于,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。
6.根据权利要求1所述的方法,其特征在于,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述方法还包括:
在所述状态机的各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。
7.根据权利要求1所述的方法,其特征在于,所述处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。
8.一种处理核,其特征在于,所述处理核应用于芯片,所述处理核包括如下模块:状态机、蒙哥马利计算单元、以及多路选择器;所述处理核用于执行所述芯片分配的计算指令,所述计算指令中携带有输入数据和计算类型,所述计算类型包括模乘类型或者模幂类型,所述计算类型发送至所述状态机;其中,
所述多路选择器,分别与所述状态机、所述蒙哥马利计算单元、以及相应输入数据的存储器相连,用于在接收到所述状态机输出的第一控制信号时,从相应的存储器中读取计算数据,并将读取的计算数据输入所述蒙哥马利计算单元;
所述状态机,分别与所述多路选择器和所述蒙哥马利计算单元相连,用于根据所述计算类型,确定状态序列,根据所述状态序列切换状态,并在各状态下向相应的多路选择器输出第一控制信号,以控制各状态下通过多路选择器输入所述蒙哥马利计算单元的计算数据;其中,所述计算数据包括所述输入数据和/或之前状态下得到的中间结果;
所述蒙哥马利计算单元,分别与所述多路选择器和所述状态机相连,用于在各状态下接收相应的多路选择器输出的计算数据,并基于接收的计算数据执行各状态对应的运算步骤,在所述状态序列的最后一个状态对应的运算步骤执行完成后,输出所述计算指令的计算结果。
9.根据权利要求8所述的处理核,其特征在于,在所述计算类型为模乘类型时,所述状态序列包括如下状态:状态1、状态2、状态4、以及状态7;在所述计算类型为模幂类型时,所述状态序列包括如下状态:状态1、状态3、状态5、状态6、以及状态7;其中,状态1对应从初始域向蒙哥马利域转换的运算步骤,状态7对应从蒙哥马利域向初始域转换的运算步骤,状态2和状态4对应模乘运算中的蒙哥马利模乘运算步骤,状态3和状态5对应模幂运算中的蒙哥马利模乘运算步骤,状态6对应模幂运算中的迭代循环运算步骤。
10.根据权利要求9所述的处理核,其特征在于,所述计算指令中携带的输入数据包括:x、y、r2、P,且所述计算类型为模乘类型;所述状态机,具体用于:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态2下,向与输入数据y和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据y和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:y'=mont_mul(y,r2(mod P));
在状态4下,向与中间结果x'和y'的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态1下得到的中间结果x'和状态2下得到的中间结果y',以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(x',y');
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态4下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
11.根据权利要求9所述的处理核,其特征在于,所述计算指令中携带的输入数据包括:x、e、r2、P,且所述计算类型为模幂类型;所述状态机,具体用于:
在状态1下,向与输入数据x和r2的存储器相连的多路选择器分别输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据x和r2,以通过所述蒙哥马利计算单元执行如下运算步骤:x'=mont_mul(x,r2(mod P));
在状态3下,向与输入数据r2的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括输入数据r2,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(1,r2(mod P));
在状态5下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态3下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:C=mont_mul(C,C);
在状态6下,向与输入数据e的存储器相连的多路选择器输出第一控制信号,以根据e[i]控制在第i轮循环中输入所述蒙哥马利计算单元的计算数据,以通过所述蒙哥马利计算单元执行预设循环操作,循环次数根据e确定;
在状态7下,向与中间结果C的存储器相连的多路选择器输出第一控制信号,以控制输入所述蒙哥马利计算单元的计算数据包括状态6下得到的中间结果C,以通过所述蒙哥马利计算单元执行如下运算步骤:mont_mul(C,1)。
12.根据权利要求8所述的处理核,其特征在于,在所述计算类型为模乘类型时,所述中间结果复用所述输入数据中乘数数据的存储器;在所述计算类型为模幂类型时,所述中间结果复用所述输入数据中底数数据的存储器。
13.根据权利要求8所述的处理核,其特征在于,所述处理核还包括解码器,用于接收所述蒙哥马利计算单元输出的计算结果;所述状态机还用于在各状态下,向所述解码器输出相应的第二控制信号,以控制所述蒙哥马利计算单元输出的计算结果通过所述解码器输出至指定的存储器。
14.根据权利要求8所述的处理核,其特征在于,所述芯片中的处理核的个数大于或等于1,每个处理核独立执行所述模乘类型的计算指令或者所述模幂类型的计算指令。
15.一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1至7任一所述的数据处理方法。
CN202111184431.4A 2021-10-12 2021-10-12 一种数据处理方法和处理核 Active CN113625994B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111184431.4A CN113625994B (zh) 2021-10-12 2021-10-12 一种数据处理方法和处理核

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111184431.4A CN113625994B (zh) 2021-10-12 2021-10-12 一种数据处理方法和处理核

Publications (2)

Publication Number Publication Date
CN113625994A true CN113625994A (zh) 2021-11-09
CN113625994B CN113625994B (zh) 2022-01-04

Family

ID=78391038

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111184431.4A Active CN113625994B (zh) 2021-10-12 2021-10-12 一种数据处理方法和处理核

Country Status (1)

Country Link
CN (1) CN113625994B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040236813A1 (en) * 2003-05-19 2004-11-25 Grinchuk Mikhail I. Multiplier for modular exponentiation
US6963644B1 (en) * 1999-04-07 2005-11-08 Matsushita Electric Industrial Co., Ltd. Multi-word arithmetic device for faster computation of cryptosystem calculations
CN102707924A (zh) * 2012-05-02 2012-10-03 广州中大微电子有限公司 一种rfid智能卡芯片的rsa协处理器
CN103390070A (zh) * 2012-05-07 2013-11-13 北京大学深圳研究生院 一种可重构算子阵列结构
CN103793199A (zh) * 2014-01-24 2014-05-14 天津大学 一种支持双域的快速rsa密码协处理器
CN105955896A (zh) * 2016-04-27 2016-09-21 南京大学 一种可重构dbf算法硬件加速器及控制方法
CN107040362A (zh) * 2015-12-29 2017-08-11 智能Ic卡公司 模乘设备和方法
CN109299621A (zh) * 2017-07-25 2019-02-01 意法半导体(鲁塞)公司 对迭代计算的防范水平攻击的保护
CN110462738A (zh) * 2017-03-22 2019-11-15 美光科技公司 用于数据路径内计算操作的设备及方法
CN110858151A (zh) * 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种运算流水级重构方法、运算方法和可读存储介质
CN111061675A (zh) * 2019-10-30 2020-04-24 南京大学 一种系统传递函数辨识算法的硬件实现方法及运行该方法的计算机设备与可读存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963644B1 (en) * 1999-04-07 2005-11-08 Matsushita Electric Industrial Co., Ltd. Multi-word arithmetic device for faster computation of cryptosystem calculations
US20040236813A1 (en) * 2003-05-19 2004-11-25 Grinchuk Mikhail I. Multiplier for modular exponentiation
CN102707924A (zh) * 2012-05-02 2012-10-03 广州中大微电子有限公司 一种rfid智能卡芯片的rsa协处理器
CN103390070A (zh) * 2012-05-07 2013-11-13 北京大学深圳研究生院 一种可重构算子阵列结构
CN103793199A (zh) * 2014-01-24 2014-05-14 天津大学 一种支持双域的快速rsa密码协处理器
CN107040362A (zh) * 2015-12-29 2017-08-11 智能Ic卡公司 模乘设备和方法
CN105955896A (zh) * 2016-04-27 2016-09-21 南京大学 一种可重构dbf算法硬件加速器及控制方法
CN110462738A (zh) * 2017-03-22 2019-11-15 美光科技公司 用于数据路径内计算操作的设备及方法
CN109299621A (zh) * 2017-07-25 2019-02-01 意法半导体(鲁塞)公司 对迭代计算的防范水平攻击的保护
CN110858151A (zh) * 2018-08-22 2020-03-03 上海寒武纪信息科技有限公司 一种运算流水级重构方法、运算方法和可读存储介质
CN111061675A (zh) * 2019-10-30 2020-04-24 南京大学 一种系统传递函数辨识算法的硬件实现方法及运行该方法的计算机设备与可读存储介质

Also Published As

Publication number Publication date
CN113625994B (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
Roy et al. FPGA-based high-performance parallel architecture for homomorphic computing on encrypted data
Liu et al. Efficient Ring-LWE encryption on 8-bit AVR processors
EP1789869B1 (en) Method and apparatus for performing modular exponentiations
Suzuki How to maximize the potential of FPGA resources for modular exponentiation
CN112865954B (zh) 用于Paillier解密的加速器、芯片及系统
CN112988237B (zh) 一种Paillier解密系统、芯片和方法
CN113031920B (zh) 一种芯片和用于芯片的批量模运算方法
CN112070222B (zh) 用于联邦学习的处理装置、加速器及方法
Bo et al. An RSA encryption hardware algorithm using a single DSP block and a single block RAM on the FPGA
JP2004511046A (ja) 線形変換を効率的に実行する方法および装置
Huang et al. A novel and efficient design for an RSA cryptosystem with a very large key size
JPH09153029A (ja) 高速フーリエ変換を行うメモリ分散型並列計算機およびその方法
CN115344237A (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
Wang et al. Solving large systems of linear equations over GF (2) on FPGAs
US20030037087A1 (en) Apparatus and method for efficient modular exponentiation
US10454680B2 (en) RSA decryption processor and method for controlling RSA decryption processor
KR100950117B1 (ko) 유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작의 프로세싱을 위한 장치 및 방법
CN113625994B (zh) 一种数据处理方法和处理核
Morita A fast modular-multiplication algorithm based on a higher radix
CN110232289A (zh) 椭圆曲线密码的高速倍点运算方法
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
CN115270155A (zh) 一种获取大数拓展最大公约数的方法及硬件架构
CN114594925A (zh) 适用于sm2加密运算的高效模乘电路及其运算方法

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