CN112883408A - 用于隐私计算的加解密系统和芯片 - Google Patents
用于隐私计算的加解密系统和芯片 Download PDFInfo
- Publication number
- CN112883408A CN112883408A CN202110470128.4A CN202110470128A CN112883408A CN 112883408 A CN112883408 A CN 112883408A CN 202110470128 A CN202110470128 A CN 202110470128A CN 112883408 A CN112883408 A CN 112883408A
- Authority
- CN
- China
- Prior art keywords
- data
- modular exponentiation
- calculation
- module
- encryption
- 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
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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种用隐私计算的加解密系统和芯片,该芯片包括:接收多个待处理数据的输入接口;模幂计算子系统,包括多个计算单元及其模幂计算引擎,根据多个待处理数据分别生成多个模幂计算结果。该芯片针对多个待处理数据中的每一个:当与该待处理数据对应的算子操作是用于隐私计算加密算法时,调用前处理模块和加密模块从而与模幂计算子系统协同完成该算子操作,当与该待处理数据对应的算子操作是用于隐私计算解密算法时,调用解密模块从而与模幂计算子系统协同完成该算子操作,当与该待处理数据对应的算子操作是用于密态运算算法时,调用模幂计算子系统完成该算子操作。如此复用计算资源而有利于提高计算性能和节省功耗。
Description
技术领域
本申请涉及数据安全和隐私保护技术领域,具体涉及一种用于隐私计算的加解密系统和芯片。
背景技术
随着人工智能和大数据挖掘分析等应用领域的发展,对数据量的需求越来越大。例如训练人工智能的应用模型需要使用大量带有合适的数据标签或者特征数值的训练数据。高质量的数据往往来源于经营活动中产生和积累的应用数据。但是应用数据往往分散在不同的组织和个体手上,例如交易数据分散在各个金融机构,医疗诊断数据分散在各个医疗机构。跨行业跨领域的应用数据往往也是分散的,例如互联网领域的社交属性数据和电商交易数据往往由不同实体掌控。随着数据所有权的重要性、用户隐私和数据安全等受到更多重视,也随着法律法规对数据收集处理提出更严格的约束和要求,掌握应用数据的各个组织或个体往往不愿意或者没有合适手段进行彼此之间的合作,从而很难让各自掌握的应用数据共同发挥作用。这种数据分享和协同合作方面的困境被称之为数据孤岛现象。为了解决跨行业跨组织的数据合作难题,尤其是关键的隐私保护及数据安全的问题,提出了联邦学习的概念。联邦学习指的是拥有数据的各个参与方,在不共享受保护的隐私数据且自有数据不传递到外部的前提下,通过加密的方式交换模型相关信息从而实现协同优化联邦学习模型。其中,联邦学习根据训练数据在不同参与方之间的数据特征空间和样本空间的分布情况,可以划分为在数据特征空间重叠较大而在样本空间重叠较小的横向联邦学习,在数据特征空间重叠较小而在样本空间重叠较大的纵向联邦学习,以及在数据特征空间和样本空间均重叠较小的联邦迁移学习。
在联邦学习相关应用场景中,拥有数据的各个参与方通过隐私保护技术来保护数据安全和用户隐私,例如采用同态加密方法对原始数据也叫明文进行加密后再将加密后的密态数据也叫密文用在模型训练、梯度计算、参数计算等。同态加密方法允许直接在密文上进行代数运算等有效操作例如加法运算和乘法运算,并且直接对密文进行计算的结果等效于解密后对明文进行计算的结果,从而仅根据公钥和密文进行计算而无需知道密钥。这些数据加密技术和密态运算技术统称为隐私计算。隐私计算需要使用大量复杂算子操作,包括同态加密、密态加法、密态乘法和模幂计算等,而且涉及的数据往往是大整数位宽,从而对计算性能和存储资源都提出巨大挑战。并且,加密的计算流程和解密的计算流程也采用不同的算法。传统的基于指令集体系的通用处理器需要将复杂算子操作拆分成简单指令操作的组合,在计算速度和功耗方面表现不理想。而大量并行的图形处理器(GraphicsProcessing Unit,GPU)只能针对图像渲染等任务进行并行处理优化,不能很好应对大量必须串行处理的大整数位宽运算。为此,需要一种用于隐私计算的加解密系统和芯片,能够应对隐私计算中所涉及的各种大整数位宽的复杂算子操作同时在加密和解密中均有较好的计算速度和功耗表现。
发明内容
本申请实施例为了解决能够应对隐私计算中所涉及的各种大整数位宽的复杂算子操作同时在加密和解密中均有较好的计算速度和功耗表现这一难题,通过提供了一种用于隐私计算的加解密系统和芯片,从而实现了在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。
第一方面,本申请实施例提供了一种加解密系统,应用于隐私计算。所述加解密系统包括:模幂计算子系统,其中,所述模幂计算子系统包括多个计算单元,所述多个计算单元的每一个计算单元包括至少一个模幂计算引擎,所述模幂计算子系统配置成根据待处理数据生成模幂计算结果;解密模块,其中,所述解密模块配置成根据所述模幂计算结果生成解密结果;前处理模块,其中,所述前处理模块配置成根据与所述待处理数据对应的算子操作生成前处理结果;加密模块,其中,所述加密模块配置成根据所述前处理结果和所述模幂计算结果生成加密结果;以及控制模块,其中,所述控制模块用于:当所述算子操作是用于隐私计算加密算法时,调用所述前处理模块和所述加密模块从而与所述模幂计算子系统协同完成所述算子操作,当所述算子操作是用于隐私计算解密算法时,调用所述解密模块从而与所述模幂计算子系统协同完成所述算子操作,和当所述算子操作是用于密态运算算法时,调用所述模幂计算子系统完成所述算子操作。
第一方面所描述的技术方案,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述加解密系统还包括:输出接口,其中,所述输出接口配置成分别从所述模幂计算子系统接收所述模幂计算结果,从所述解密模块接收所述解密结果,以及从所述加密模块接收所述加密结果,其中,当所述算子操作是用于隐私计算加密算法时,所述输出接口输出所述加密结果,其中,当所述算子操作是用于隐私计算解密算法时,所述输出接口输出所述解密结果,其中,当所述算子操作是用于密态运算算法时,所述输出接口输出所述模幂计算结果。如此,实现了通过输出接口来根据算子操作输出相应结果。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,当所述算子操作是用于隐私计算加密算法时,所述待处理数据是待加密明文数据,所述加密结果是对该待加密明文数据应用所述算子操作得到的加密后密文数据,当所述算子操作是用于隐私计算解密算法时,所述待处理数据是待解密密文数据,所述解密结果是对该待解密密文数据应用所述算子操作得到的解密后明文数据,当所述算子操作是用于密态运算算法时,所述待处理数据是密态运算数据,所述模幂计算结果是对该密态运算数据应用所述算子操作得到的密态运算结果。如此,实现了针对不同算子操作进行相应操作并得到相应结果。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述模幂计算子系统还包括数据分发模块,参数分发模块和数据聚合模块,所述模幂计算子系统配置成根据所述待处理数据生成所述模幂计算结果,包括:所述数据分发模块将所述待处理数据分发给所述多个计算单元所包括的多个模幂计算引擎,所述参数分发模块将与所述待处理数据和所述算子操作对应的参数分发给所述多个模幂计算引擎,所述数据聚合模块将所述多个模幂计算引擎各自的输出整合后得到所述模幂计算结果。如此,实现了通过数据复用和参数复用以及并行处理来提高整体计算性能。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述模幂计算子系统还包括第一任务配置模块和第二任务配置模块,其中,所述第一任务配置模块包括第一数据分发模块和第一参数分发模块,所述第二任务配置模块包括第二数据分发模块和第二参数分发模块,所述待处理数据包括第一数据和第二数据,所述第一数据对应第一算子操作,所述第二数据对应第二算子操作,所述模幂计算子系统配置成根据所述待处理数据生成所述模幂计算结果,包括:所述第一数据分发模块将所述第一数据分发给所述多个计算单元的第一部分所包括的模幂计算引擎,所述第一参数分发模块将与所述第一数据和所述第一算子操作对应的参数分发给所述多个计算单元的第一部分所包括的模幂计算引擎,所述数据聚合模块将所述多个计算单元的第一部分所包括的模幂计算引擎各自的输出整合后得到第一模幂计算结果,所述第二数据分发模块将所述第二数据分发给所述多个计算单元的第二部分所包括的模幂计算引擎,所述第二参数分发模块将与所述第二数据和所述第二算子操作对应的参数分发给所述多个计算单元的第二部分所包括的模幂计算引擎,所述数据聚合模块将所述多个计算单元的第二部分所包括的模幂计算引擎各自的输出整合后得到第二模幂计算结果。如此,实现了通过任务配置模块来针对不同任务配置相应数据和参数,并调用模幂计算模块的不同计算单元来同步处理不同任务,从而进一步复用计算资源,提高整体计算性能。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述多个计算单元的第一部分所包括的计算单元的个数与所述多个计算单元的第二部分所包括的计算单元的个数相等。如此,实现了为不同任务配置接近的计算资源,有利于提高整体计算性能。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述模幂计算子系统在通过所述多个计算单元的第一部分所包括的模幂计算引擎生成所述第一模幂计算结果的同时也通过所述多个计算单元的第二部分所包括的模幂计算引擎生成所述第二模幂计算结果。如此,实现了不同任务的模幂计算部分同时通过同一个模幂计算子系统进行,从而有利于提高整体流水处理速度。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述第一数据包括第一任务标签用于标识所述第一数据对应所述第一算子操作,所述第二数据包括第二任务标签用于标识所述第二数据对应所述第二算子操作。如此,通过给待处理的数据配置任务标签,其中任务标签用来区分不同任务,从而无需通过中央处理器的统一调度也无需通过主存储器的读写操作,就实现对不同任务的数据进行流水式处理的整体效率。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述第一数据包括第一时间标签用于标识所述第一算子操作的执行次序,所述第二数据包括第二时间标签用于标识所述第二算子操作的执行次序。如此,通过给待处理的数据配置时间标签,其中时间标签用来标识被调用次序,从而无需通过中央处理器的统一调度也无需通过主存储器的读写操作,就实现对不同任务的数据进行流水式处理的整体效率。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述第一算子操作是用于隐私计算加密算法,所述第二算子操作是用于隐私计算解密算法,所述前处理模块根据所述第一算子操作生成第一前处理结果,所述加密模块根据所述第一前处理结果和所述第一模幂计算结果生成所述加密结果,所述解密模块根据所述第二模幂计算结果生成所述解密结果。如此,通过同时处理加密和解密的计算流程,有利于提高整体计算性能。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述第一算子操作是用于隐私计算加密算法,所述第二算子操作是用于密态运算算法,所述前处理模块根据所述第一算子操作生成第一前处理结果,所述加密模块根据所述第一前处理结果和所述第一模幂计算结果生成所述加密结果。如此,通过同时处理加密和密态运算的计算流程,有利于提高整体计算性能。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述第一算子操作是用于隐私计算解密算法,所述第二算子操作是用于密态运算算法,所述解密模块根据所述第一模幂计算结果生成所述解密结果。如此,通过同时处理解密和密态运算的计算流程,有利于提高整体计算性能。
根据第一方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述第一算子操作和所述第二算子操作均用于隐私计算加密算法、隐私计算解密算法或者密态运算算法,与所述第一算子操作对应的参数不同于与所述第二算子操作对应的参数。如此,通过同时处理相同类型但是参数不一致的算子操作,有利于提高整体计算性能。
第二方面,本申请实施例提供了一种芯片,应用于隐私计算。所述芯片包括:输入接口,其中,所述输入接口用于接收多个待处理数据,所述多个待处理数据与多个算子操作一一对应;模幂计算子系统,其中,所述模幂计算子系统包括多个计算单元,所述多个计算单元的每一个计算单元包括至少一个模幂计算引擎,所述模幂计算子系统配置成根据所述多个待处理数据分别生成多个模幂计算结果;控制模块,其中,针对所述多个待处理数据中的每一个待处理数据,所述控制模块用于:当所述多个算子操作中与该待处理数据对应的算子操作是用于隐私计算加密算法时,调用前处理模块和加密模块从而与所述模幂计算子系统协同完成该算子操作,当所述多个算子操作中与该待处理数据对应的算子操作是用于隐私计算解密算法时,调用解密模块从而与所述模幂计算子系统协同完成该算子操作,当所述多个算子操作中与该待处理数据对应的算子操作是用于密态运算算法时,调用所述模幂计算子系统完成该算子操作。
第二方面所描述的技术方案,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。
根据第二方面的技术方案的一种可能的实现方式,本申请实施例还提供了,所述控制模块还用于:与第二芯片通信,并且调动安装在所述第二芯片上的第二模幂计算子系统所包括的计算单元的计算引擎,从而配合所述模幂计算子系统根据所述多个待处理数据分别生成所述多个模幂计算结果。如此,通过调用外部计算资源可以实现不同任务的计算资源之间的平衡,有利于提高整体流水处理效率。
附图说明
为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本申请实施例提供的模幂计算引擎的结构框图。
图2示出了本申请实施例提供的利用图1所示的模幂计算引擎进行模幂计算的方法的流程示意图。
图3示出了本申请实施例提供的一种实施方式的加解密系统的结构框图。
图4示出了本申请实施例提供的另一种实施方式的加解密系统的结构框图。
图5示出了本申请实施例提供的另一种实施方式的加解密系统的结构框图。
具体实施方式
本申请实施例为了解决能够应对隐私计算中所涉及的各种大整数位宽的复杂算子操作同时在加密和解密中均有较好的计算速度和功耗表现这一难题,提供了一种用于隐私计算的加解密系统和芯片。所述加解密系统包括:模幂计算子系统,其中,所述模幂计算子系统包括多个计算单元,所述多个计算单元的每一个计算单元包括至少一个模幂计算引擎,所述模幂计算子系统配置成根据待处理数据生成模幂计算结果;解密模块,其中,所述解密模块配置成根据所述模幂计算结果生成解密结果;前处理模块,其中,所述前处理模块配置成根据与所述待处理数据对应的算子操作生成前处理结果;加密模块,其中,所述加密模块配置成根据所述前处理结果和所述模幂计算结果生成加密结果;以及控制模块,其中,所述控制模块用于:当所述算子操作是用于隐私计算加密算法时,调用所述前处理模块和所述加密模块从而与所述模幂计算子系统协同完成所述算子操作,当所述算子操作是用于隐私计算解密算法时,调用所述解密模块从而与所述模幂计算子系统协同完成所述算子操作,和当所述算子操作是用于密态运算算法时,调用所述模幂计算子系统完成所述算子操作。如此,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。
本申请实施例可用于以下应用场景,包括但是不限于,多方安全计算、与联邦学习有关的机器学习模型训练、数据安全、隐私保护或者应用隐私计算框架或算法的其它应用场景等。
本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。
请参阅图1,图1示出了本申请实施例提供的模幂计算引擎的结构框图。如图1所示,模幂计算引擎100 包括模幂控制单元110,模乘计算单元120,参数X1选择器130和参数Y1选择器140。其中,参数X1选择器130提供参数X1到模乘计算单元120,参数Y1选择器140提供参数Y1到模乘计算单元120,模幂控制单元110提供模数N1到模乘计算单元120,模乘计算单元120利用参数X1和参数Y1以及模数N1进行模乘计算从而得到模乘计算结果Z1。也就是说,参数X1和参数Y1分别表示用于模乘计算的两个参数,模数N1表示进行取模运算的模数。参数X1选择器130和参数Y1选择器140分别选择相应的参数X1和参数Y1,模乘计算单元120每次接收被选择的参数X1和参数Y1,进行模乘计算并将每次模乘计算结果Z1反馈回模幂控制单元110,从而实现了复用模乘计算单元120进行多次模乘计算。模幂控制单元110还包括模数N1存储器111用于存储模数N1;参数R1存储器112用于存储参数R1,参数R1用于蒙哥马利化;幂底数C1存储器113用于存储幂底数C1;蒙哥马利化幂底数MC1存储器114用于存储蒙哥马利化幂底数MC1;以及蒙哥马利模乘结果U1存储器115用于存储蒙哥马利模乘结果U1。应当理解的是,模乘计算单元120每次进行模乘计算结果得到的结果Z1可以作为蒙哥马利模乘结果U1被反馈回模幂控制单元110后存入蒙哥马利模乘结果U1存储器115并更新所存储的蒙哥马利模乘结果U1,或者可以作为蒙哥马利化幂底数MC1存入蒙哥马利化幂底数MC1存储器114并更新所存储的蒙哥马利化幂底数MC1。
请继续参阅图1,参数X1选择器130从模幂控制单元110接收三个参数:幂底数C1存储器113所存储的幂底数C1,蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1,以及正整数1。参数Y1选择器140从模幂控制单元110接收三个参数:参数R1存储器112所存储的参数R1,蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1,以及蒙哥马利化幂底数MC1存储器114所存储的蒙哥马利化幂底数MC1。模幂计算引擎100通过让参数X1选择器130和参数Y1选择器140来选择性地接收不同的输入作为参数X1和参数Y1,并将参数X1和参数Y1输入到模乘计算单元120进行模乘计算。如此,通过设置参数X1选择器130和参数Y1选择器140来分别对不同的参数组合进行接收和选择,从而有利于提高运算效率和灵活性。
应当理解的是,通过灵活配置模幂计算引擎100的参数X1选择器130和参数Y1选择器140来分别对不同的参数组合进行接收和选择,可以将模幂计算转换成多次模乘计算,从而可以复用模乘计算单元120。并且,可以通过多个并行的模幂计算引擎100进行高效的并行计算,从而提高处理速度。并且,可以选择性的将多个并行的模幂计算引擎100所提供的并行计算与蒙哥马利化模块、混淆运算模块或者去蒙哥马利化模块的串行计算结合,从而实现并行操作和串行操作的各种组合,有利于提高密态运算过程中高维度向量和矩阵的运算效率,还能够实现更丰富形式的同态加密密态下的密文运算。另外,通过将同态加密密态下的密文运算式拆分成密文乘法运算和密文加法运算的组合,再将密文乘法运算和密文加法运算分别转换成多次模幂计算/模乘计算的组合,从而可以高效并行处理联邦学习应用场景中涉及的同态加密密文运算需求。
请参阅图2,图2示出了本申请实施例提供的利用图1所示的模幂计算引擎进行模幂计算的方法的流程示意图。如图2所示,模幂计算的方法200包括以下步骤。其中,相关运算参考下列公式(1)、公式(2)和公式(3)。
在公式(1)中,A表示幂底数;B表示幂指数;mod表示取模运算;N1表示模数。公式(1)表示根据幂底数A、幂指数B和模数N1进行模幂计算。应当理解的是,在一些示例性实施例中,公式(1)所表示的模幂计算可以具有特定的含义,例如同态加密密态下的密文乘法运算是明文数据和密文数据的乘法并且可以等效为以幂指数B作为明文,以幂底数A作为密文而以密钥作为模数的模幂计算。公式(2)和公式(3)是关于公式(1)的模幂计算所用参数的计算方式。在公式(2)和公式(3)中,U0表示平方乘算法迭代过程中蒙哥马利模乘结果U1的初始值;R1表示用于计算幂底数A的蒙哥马利化时需要用到的参数;mod表示取模运算;N表示模数;n表示模数N的实际位宽;2n表示模数N的实际位宽n的两倍位宽。下面结合公式(1)、公式(2)和公式(3)详细说明模幂计算的方法200的各个步骤。
应当理解的是,可以通过多个并行的模幂计算引擎100进行高效的并行计算。具体地,可以接收同批次的幂指数B和模数N,并计算初始参数U0和参数R1,将共有的初始参数U0、参数R1、幂指数B和模数N1共享到各个并行的模幂计算引擎,以及将幂底数A均匀分发到各个模幂计算引擎。各个并行的模幂计算引擎通过各自所接收的数据按照下面的模幂计算的方法进行操作。为了能协同调用各个并行的模幂计算引擎进行并行计算,需要共享用于同批次并行处理的参数,包括初始参数U1、参数R1、幂指数B和模数N1。针对幂底数A,则需要将幂底数A均匀地分发到各个模幂计算引擎。其中,初始参数U1和参数R1的计算分别参考上述公式(2)和(3)。其中,模数N1对应图1所示的模数N1存储器111所存储的模数N1。下面的步骤针对多个并行的模幂计算引擎100中的一个模幂计算引擎100进行说明,该模幂计算引擎100所接收的幂底数A可以理解为幂底数A被均匀分发后该模幂计算引擎100所接收的幂底数。
步骤S210:将幂底数A、参数R1以及模数N1输入到模乘计算单元进行模乘计算,得到蒙哥马利化幂底数MA。
其中,请参阅图1所示的模幂计算引擎100的结构,在步骤S210进行幂底数A的蒙哥马利化,选择幂底数A作为参数X1(对应幂底数C1存储器113所存储的幂底数C1)和选择参数R1作为参数Y1(对应参数R1存储器112所存储的参数R1),进行模乘计算的输出结果为蒙哥马利化幂底数MA(对应蒙哥马利化幂底数MC1存储器114所存储的幂底数MC1)。
步骤S212:将蒙哥马利模乘结果U1和模数N1输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果U1,其中,蒙哥马利模乘结果U1的初始值是初始参数U0。
其中,请参阅图1所示的模幂计算引擎100的结构,在步骤S212进行平方乘算法迭代过程中的第一次模乘计算,选择蒙哥马利模乘结果U1作为参数X1(对应蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1)和选择蒙哥马利化幂底数MA作为参数Y1(对应蒙哥马利化幂底数MC1存储器114所存储的蒙哥马利化幂底数MC1),进行模乘计算的输出结果被用来更新蒙哥马利模乘结果U1。在初次迭代中进行第一次模乘计算时,用平方乘算法迭代过程中蒙哥马利模乘结果U1的初始值U0作为参数X1进行计算。
步骤S214:判断二进制化的幂指数B的当前最高位的比特位值是否为1。如果是1则执行步骤S216,如果不为1则执行步骤S218。
其中,根据二进制化后的幂指数B的当前最高位的比特位值是否为1来判断是否执行第二次模乘计算。如果幂指数B的当前最高位的比特位值是1则进行第二次模乘计算并执行步骤S216,如果幂指数B的当前最高位的比特位值不为1则不进行第二次模乘计算并执行步骤S218。
步骤S216:将蒙哥马利模乘结果U1、蒙哥马利化幂底数MA和模数N1输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果U1。
其中,请参阅图1所示的模幂计算引擎100的结构,在步骤S216进行平方乘算法迭代过程中的第二次模乘计算,选择蒙哥马利模乘结果U1作为参数X1(对应蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1)和选择蒙哥马利化幂底数MA作为参数Y1(对应蒙哥马利化幂底数MC1存储器114所存储的蒙哥马利化幂底数MC1),进行模乘计算的输出结果被用来更新蒙哥马利模乘结果U1。
步骤S218:将二进制化的幂指数B向着最低比特位位移一位。
其中,在一种可能的实施方式中,从二进制化的幂指数B的最高位的1(非零比特位)开始向最低位逐位移位。在另一种可能的实施方式中,从二进制化的幂指数B的最高位(可能为零或者非零比特位)开始向最低位逐位移位。
步骤S220:判断二进制化的幂指数B的所有比特位是否都已经移位。如果所有比特位都已经移位则意味着模幂计算结束并执行步骤S222,如果还有比特位没有移位则执行步骤S212。
其中,通过循环执行步骤S212至步骤S220,逐位移位二进制化的幂指数B,直到二进制化的幂指数B的所有比特位都已经移位,也就是已经移位到最低位。另外,在每一个比特位根据其值是1或0来分别进行两次模乘计算或者一次模乘计算。当二进制化的幂指数B的所有比特位都已经移位,则意味着循环结束并执行步骤S222,否则返回步骤S212继续执行。
步骤S222:输出蒙哥马利模乘结果U1;或者将正整数1、蒙哥马利模乘结果U1和模数N1输入到模乘计算单元进行模乘计算,用得到的模乘计算结果更新蒙哥马利模乘结果U1之后再输出蒙哥马利模乘结果U1。
其中,在步骤S222,可以直接输出蒙哥马利化域下的模幂结果也就是步骤S220之后的蒙哥马利模乘结果U1,或者可以进行去蒙哥马利化并输出去蒙哥马利化的模幂结果。如果要进行去蒙哥马利化则选择正整数1作为参数X1和选择蒙哥马利模乘结果U1作为参数Y1(对应蒙哥马利模乘结果U1存储器115所存储的蒙哥马利模乘结果U1)进行模乘计算。应当理解的是,如果通过多个并行的模幂计算引擎进行并行处理,在执行完步骤S222并输出模幂结果后,各个并行的模幂计算引擎各自的结束时间可能不一致,当同批次的各个并行的模幂计算引擎均结束各自的模幂计算后,可以将各个并行的模幂计算引擎所输出的计算结果进行合并,得到完整的模幂计算结果。然后可以根据算子模式的需求判断是否需要将多个并行的模幂计算引擎所提供的并行计算与蒙哥马利化模块、混淆运算模块或者去蒙哥马利化模块的串行计算结合。
如此,通过平方乘和蒙哥马利算法,将模幂计算转换成多次模乘计算,通过在每次迭代过程中将二进制化的幂指数向着最低比特位位移一位,并在每一个比特位根据其值是1或0来分别进行两次模乘计算或者一次模乘计算,以及通过对每一次模乘计算的输入参数的选择,以及利用模乘计算结果更新蒙哥马利模乘结果,从而实现了通过多个并行的模幂计算引擎进行高效的模幂计算。另外,该模幂计算可以采用基于蒙哥马利化域的平方乘计算和基于蒙哥马利化域的大数模乘计算实现,从而可以利用高并行计算和流水特性来提高整体算力,例如利用多GPU并行计算或者基于FPGA的多任务并行处理系统。另外,可以避开直接对大整数取模运算,而以乘法、加法和移位运算代替,从而减少运算复杂度和提高计算效率。另外,在使用基于蒙哥马利化域的大数模乘计算实现时,可以对位宽、流水级数和/或循环次数进行配置,从而可以在考虑FPGA资源、器件等级、流水级数及主频因素的情况下,对位宽大小、流水级数和/或循环次数进行调整,由此实现最佳的性能提升比。
请参阅图3,图3示出了本申请实施例提供的一种实施方式的加解密系统的结构框图。应当理解的是,隐私计算所涉及的算子操作类型主要包括同态加密、密态加法、密态乘法和模幂计算等,而这些较复杂的算子操作类型可以拆分成模幂计算、模乘计算以及固定函数操作的组合。例如,Paillier同态加密算法可以表示为下面公式(4)。
在公式(4)中,C表示密文;M表示明文;N表示公钥也是模数;R表示幂底数也是根据模数N可以确定的参数;n表示模数N的实际位宽;n的二次幂意味着是模数N的实际位宽的两倍。公式(4)表示根据公钥N和参数R,将明文M转换成密文C。其中,公式(4)所示的Paillier同态加密算法可以拆分成模幂计算和固定函数操作的组合,该固定函数操作在这里指的是计算(1+MN)。类似地,隐私计算所涉及的算子操作类型均可以拆分成基本算子操作类型的组合。其中,同态加密密态下的密文运算式被拆分后得到的若干种基本形式包括一维向量形式和/或二维矩阵形式的乘加运算,包括但不限于,均是一维向量形式或二维矩阵形式的两个密文数据相加,一维向量形式的密文数据和二维矩阵形式的密文数据相加,一维向量形式的明文数据和二维矩阵形式的密文数据的乘法;二维矩阵形式的明文数据和二维矩阵形式的密文数据的点乘或者叫做内积;二维矩阵形式的明文数据和二维矩阵形式的密文数据的叉乘或者叫做外积。如此,通过基本算子操作类型的各种可能组合,再结合固定函数操作,就可以满足隐私计算在加密和解密中的各种运算需求。
请继续参阅图3,如图3所示,加解密系统300包括输入接口302,控制模块304,模幂计算子系统310,前处理模块330,加密模块332,解密模块340以及输出接口350。输入接口302用于与相对于加解密系统300而言的外部通信并接收待处理的数据。输入接口302与控制模块304连接,并将所接收的数据发送给控制模块304。控制模块304与模幂计算子系统310和前处理模块330连接,并控制发送给模幂计算子系统310和前处理模块330各自的数据和参数。模幂计算子系统310是针对模幂计算进行并行加速优化处理的子系统并包括模幂计算模块312,模幂计算模块312包括多个计算单元(例如图3中为计算单元A1、计算单元A2、计算单元A3和计算单元A4)。每个计算单元包括多个模幂计算引擎,每个模幂计算引擎的结构和进行模幂计算的方法各自参考图1和图2及相关具体实施例。模幂计算子系统310还包括数据分发模块316用于将用于模幂计算的数据分发给模幂计算模块312内的各个计算单元及其中的模幂计算引擎,参数分发模块317用于将对应的参数如模数、幂指数等发送给合适的模幂计算引擎。模幂计算子系统310还包括参数计算模块318用于计算参数并将计算好的参数发送给参数分发模块317,例如上述公式(3)所示用于蒙哥马利化的参数R1。参数计算模块318也可以单独配置或者集成于控制模块304。模幂计算模块312从数据分发模块316接收待进行模幂计算的数据,从参数分发模块317接收相关参数,通过多个计算单元及其中的模幂计算引擎进行并行处理,将各个模幂计算引擎输出的结果汇合于数据聚合模块314进行整合从而得到模幂计算结果390。前处理模块330与加密模块332连接,加密模块332与数据聚合模块314并配置成可以从数据聚合模块314接收模幂计算结果390,并将所接收的模幂计算结果390与从前处理模块330的输出结合,进行处理后得到加密结果391。以上面公式(4)所示的Paillier同态加密算法为例,前处理模块330可以进行与固定函数操作(1+MN)相关的运算,并包括大数乘法操作和大数加法操作以及对整个数据的蒙哥马利化运算。公式(4)中的模幂计算通过模幂计算子系统310进行,但是每个模幂计算引擎最后输出的是没有进行去蒙哥马利化的结果,也就是说在这个例子中模幂计算结果390是没有进行去蒙哥马利化的,最后由加密模块332根据前处理模块330输出的结果和模幂计算结果390一起进行蒙哥马利化域下模乘计算,再进行去蒙哥马利化运算从而得到加密结果391也就是密文C。如此,通过模幂计算子系统310提供优化后的模幂计算,通过前处理模块330和加密模块332的协同合作,可以实现隐私计算的加密中所涉及的各种复杂算子操作。
请继续参阅图3,数据聚合模块314与解密模块340连接。解密模块340配置成从数据聚合模块314接收模幂计算结果390,并对所接收的模幂计算结果390进行吹以得到解密结果392。以Paillier解密算法为例,Paillier解密算法可以表示成公式(5)。
在公式(5)中,C表示密文;M表示明文;N表示公钥也是模数;λ和μ表示解密用的私钥。公式(5)表示根据公钥N和解密用的私钥λ和μ,将密文C转换成明文M。以公式(5)所示的Paillier解密算法为例,公式(5)中的模幂计算通过模幂计算子系统310进行,并且每个模幂计算引擎最后输出的是进行了去蒙哥马利化的结果,也就是说在这个例子中模幂计算结果390是进行了去蒙哥马利化的,再由解密模块340根据模幂计算结果390进行减法运算、除法运算和模乘计算,从而得到解密结果392也就是明文M。如此,通过模幂计算子系统310提供优化后的模幂计算,通过解密模块340进行其他算子操作,可以实现隐私计算的解密中所涉及的各种复杂算子操作。
请继续参阅图3,模幂计算子系统310的数据聚合模块314与加密模块332连接并提供模幂计算结果390用于加密处理,也与解密模块340连接并提供模幂计算结果390用于解密处理,还与输出接口350连接并直接提供模幂计算结果390。输出接口350与加密模块332连接并接收加密结果391,还与解密模块340连接并接收解密结果392。也就是说,输出接口350分别从模幂计算子系统310的数据聚合模块314接收模幂计算结果390,从加密模块332接收加密结果391,以及从解密模块340接收解密结果392。输出接口350用于与相对于加解密系统300而言的外部通信并将加解密系统300的处理结果发送给外部。根据加解密系统300在处理待处理数据时的工作模式,输出接口350可以将相应的不同结果输出到外部。例如,当输入接口302接收的是待加密的明文数据时,则加解密系统300的模幂计算子系统310与前处理模块330和加密模块332协同完成对该明文数据的加密,最后由输出接口350输出与该明文数据对应的加密结果391。当输入接口302接收的是待解密的密文数据时,则加解密系统300的模幂计算子系统310与解密模块340协同完成对该密文数据的加密,最后由输出接口350输出与该密文数据对应的解密结果392。当输入接口302接收的是用于密态运算的数据,例如用于密态乘法或者密态加法的数据,因为密态乘法可以基于模幂计算实现而密态加法可以基于模乘计算实现,而模幂计算和模乘计算都可以仅通过模幂计算子系统310实现,因此可以由加解密系统300的模幂计算子系统310进行该数据的密态运算,最后由输出接口350输出与该数据的密态运算对应的模幂计算结果390。应当理解的是,与隐私计算相关的各种复杂算子操作,可以按照加密模式、解密模式和密态运算模式这三种模式分别进行展开,例如在加密模式下按照公式(4)展开,在解密模式下按照公式(5)展开等。按照对应模式展开后的复杂算子操作包括模幂计算、模乘计算以及其它基础算子操作。其中,能归属于解密模式下的复杂算子操作可以按照特定方式而展开后按照先进行模幂计算和/或模乘计算再进行其它基础算子操作的方式实现,因此可以先调用模幂计算子系统310处理模幂计算和/或模乘计算,再调用解密模块340来处理其它基础算子操作。而解密模块340可以包括必要的电路、逻辑元件或者器件来实现例如减法运算、除法运算和模乘计算等基础算子操作。能归属于加密模式下的复杂算子操作可以按照特定方式而展开后按照同步进行模幂计算以及其它基础算子操作的方式实现,因此可以同步调用模幂计算子系统310处理模幂计算和调用前处理模块330处理其它基础算子操作,最后再由加密模块332进行整合和后续处理。而前处理模块330包括必要的电路、逻辑元件或者器件来实现针对不同加密算法的固定函数操作例如Paillier同态加密算法的固定函数(1+MN)。加密模块332则包括必要的电路、逻辑元件或者器件来实现针对不同加密算法的整合和后续处理操作。能归属于密态运算模式的复杂算子操作如密态乘法和密态加法可以通过调用模幂计算子系统310实现。如此,图3所示的加解密系统300可以适用于隐私计算相关的各种应用下,包括归属于加密模式、解密模式或者密态运算模式的各种复杂算子操作,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。
应当理解的是,图3所示的模幂计算子系统310所包括的模幂计算模块312通过多个模幂计算引擎并行处理来加快模幂计算。模幂计算模块312所包括的计算单元的个数以及每个计算单元所包括的具体模幂计算引擎的个数都是可以根据实际应用场景进行调整的,图3所示的计算单元A1、计算单元A2、计算单元A3和计算单元A4仅为示例性,模幂计算模块312可以包括任意数量的计算单元。而数据分发模块316和参数分发模块317配置成为被调用的计算单元及其中的模幂计算引擎提供相应的数据和参数。
请参阅图4,图4示出了本申请实施例提供的另一种实施方式的加解密系统的结构框图。如图4所示,加解密系统400包括输入接口402,控制模块404,模幂计算子系统410,前处理模块430,加密模块432,解密模块440以及输出接口450。其中,图4所示的加解密系统400的输入接口402,控制模块404,前处理模块430,加密模块432,解密模块440以及输出接口450分别与图3所示的加解密系统300的输入接口302,控制模块304,前处理模块330,加密模块332,解密模块340以及输出接口350各自一一对应,相对应的模块也具有相似的细节。加解密系统400的模幂计算子系统410是针对模幂计算进行并行加速优化处理的子系统。也就是说,图4所示的加解密系统400可以适用于隐私计算相关的各种应用下,包括归属于加密模式、解密模式或者密态运算模式的各种复杂算子操作。
请继续参阅图4,加解密系统400的模幂计算子系统410包括模幂计算模块412,任务配置模块415和任务配置模块425。其中,模幂计算模块412包括多个计算单元(例如图4中为计算单元A1、计算单元A2、计算单元A3和计算单元A4)。每个计算单元包括多个模幂计算引擎,每个模幂计算引擎的结构和进行模幂计算的方法各自参考图1和图2及相关具体实施例。任务配置模块415还包括数据分发模块416,参数分发模块417和参数计算模块418。任务配置模块415用于根据特定任务而调用模幂计算模块412的一个或者多个计算单元,以及通过数据分发模块416和参数分发模块417向被调用的计算单元内的模幂计算引擎配置相应数据和参数。参数计算模块418用于计算需要配置的参数并发送给参数分发模块417。任务配置模块425与任务配置模块415具有相似的功能和结构,任务配置模块425所包括的数据分发模块426,参数分发模块427和参数计算模块428也各自与任务配置模块415所包括的数据分发模块416,参数分发模块417和参数计算模块418具有相似的功能和结构。模幂计算模块412内被调用的计算单元的各个模幂计算引擎输出的结果汇合于数据聚合模块414进行整合从而得到模幂计算结果490。
请继续参阅图4,与图3所示的模幂计算子系统310不同,模幂计算子系统410通过任务配置模块415和任务配置模块425可以同时将两个任务配置给模幂计算模块412,并让模幂计算模块412内一部分的计算单元处理第一个任务同时让另一部分的计算单元处理另一个任务,从而进一步复用计算资源,提高整体计算性能。下面结合表1进行说明。
表1
任务编号 | 数据和参数配置 | 所调用计算资源 |
M1 | 任务配置模块415 | 计算单元A1、计算单元A2 |
M2 | 任务配置模块425 | 计算单元A3、计算单元A4 |
M3 | 任务配置模块415 | 计算单元A1 |
M4 | 任务配置模块425 | 计算单元A2、计算单元A3、计算单元A4 |
如表1所示,编号为M1的任务可以通过任务配置模块415进行数据和参数的配置,而调用计算单元A1和计算单元A2进行计算。编号为M2的任务可以通过任务配置模块425进行数据和参数的配置,而调用计算单元A3和计算单元A4进行计算。因此,任务M1和任务M2可以同时进行,因为彼此的计算资源并不冲突。而数据聚合模块414则对任务M1相关的计算单元A1和计算单元A2的模幂计算引擎的输出进行整合并输出与任务M1对应的模幂计算结果,以及对任务M2相关的计算单元A3和计算单元A4的模幂计算引擎的输出进行整合并输出与任务M2对应的模幂计算结果。为了区分模幂计算模块412针对不同任务输出的模幂计算结果,可以利用任务编号作为标签,也就是将模幂计算模块412的输出标注为任务M1的模幂计算结果和任务M2的模幂计算结果。为了能与加解密系统400的其它模块协同完成同一任务,控制模块404发送给其它模块的数据和参数也会有任务标签,以便让归属于同一任务的中间结果之间能配合。例如,假设任务M1是加密算法任务,任务M2是解密算法任务,则任务M1相关的运算通过调用模幂计算模块412的计算单元A1和计算单元A2以及前处理模块430和加密模块432来协同完成,任务M2相关的运算通过调用模幂计算模块412的计算单元A3和计算单元A4和解密模块440来协同完成。在数据聚合模块414和输出接口450,通过任务编号区分开来与任务M1和任务M2各自对应的数据。在一些示例性实施例中,可以设置每个中间结果具有任务标签和时间标签。其中,任务标签用来区分不同任务,也就是说,某个中间结果的任务标签表明该中间结果所对应的任务,而时间标签用于表明该中间结果数据何时被调用。通过让任务标签和中间标签加入到资料流中,加解密系统400的各个模块可以无需通过中央处理器的统一调度也无需通过主存储器的读写操作,就实现对不同任务的数据进行流水式处理。例如,假设有多个待加密的明文数据和多个待解密的密文数据需要加解密系统400处理,则这些待加密的明文数据都归属于执行加密算法任务的任务M1,待解密的密文数据都归属于执行解密算法任务的任务M2。为此,每个明文数据和每个密文数据都具有相应的任务标签和时间标签,当这些数据按照任意次序被输入接口402接收后,每个数据自带的任务标签和时间标签告诉控制模块404如何进行数据和参数配置以及参数计算,从而可以充分复用加解密系统400的各个模块同时进行加密和解密各自的计算流程,并且最后由输出接口450输出相应的结果。时间标签可以包括优先级信息,各个模块按照所接收的数据的时间标签的优先级信息先执行优先级最高的数据相关操作,只有当较高优先级的数据都被处理完了才处理当前优先级的数据。例如,假设有1个明文数据要加密而有3个密文数据要解密,则可以设置该明文数据具有最高优先级,数据聚合模块414只有当该明文数据相关操作被执行完后才开始处理优先级低于该明文数据的3个密文数据的操作。表1中还示出了任务M3对应任务配置模块415和计算单元A1,任务M4对应任务配置模块425和计算单元A2、计算单元A3及计算单元A4。任务M3和任务M4可以同时进行,因为彼此的计算资源并不冲突。但是,任务M3不能与任务M1同时进行,任务M4也不能与任务M1或者任务M2同时进行,因为有计算资源冲突。控制模块404可以具有防止同步进行的任务发生占用同一个计算单元的机制,例如可以内置一个检查表,将被占用的计算单元设置为不可调用,从而让后面进来的任务无法调用已经被占用的计算单元。应当理解的是,加解密系统400的模幂计算子系统410通过并行的多个计算单元及其中的模幂计算引擎来实现同步处理多个任务,但是其它模块如前处理模块430、加密模块432和解密模块440是通过串行处理。也就是说,前处理模块430、加密模块432和解密模块440均不能用于同步处理多个任务,而是只能每次处理一个任务。应当理解的是,不同任务可以是同一个算子操作类型,例如同为Paillier加密算法,但是适用不同的参数如公钥不同,这种情况下应该将参数不同的Paillier加密算法看做不同任务对待。不同任务也可以是不同算子操作类型,例如Paillier加密算法、Paillier解密算法、密态加法等。如果不同的数据适用同一个算子操作类型和同样的参数,这样的数据可以复用之前配置好的参数并且调用相同的计算资源来提高流水处理速度。
如此,图4所示的加解密系统400可以适用于隐私计算相关的各种应用下,包括归属于加密模式、解密模式或者密态运算模式的各种复杂算子操作,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。而且,通过任务配置模块来针对不同任务配置相应数据和参数,并调用模幂计算模块的不同计算单元来同步处理不同任务,从而进一步复用计算资源,提高整体计算性能。并且,通过给待处理的数据配置任务标签和时间标签,其中任务标签用来区分不同任务而时间标签用来标识被调用次序例如优先级,从而无需通过中央处理器的统一调度也无需通过主存储器的读写操作,就实现对不同任务的数据进行流水式处理的整体效率。
应当理解的是,图4所示的模幂计算子系统410所包括的模幂计算模块412通过多个模幂计算引擎并行处理来加快模幂计算。模幂计算模块412所包括的计算单元的个数以及每个计算单元所包括的具体模幂计算引擎的个数都是可以根据实际应用场景进行调整的,图4所示的计算单元A1、计算单元A2、计算单元A3和计算单元A4仅为示例性,模幂计算模块412可以包括任意数量的计算单元。
请参阅图5,图5示出了本申请实施例提供的另一种实施方式的加解密系统的结构框图。如图5所示,加解密系统500包括输入接口502,控制模块504,模幂计算子系统510,前处理模块530,加密模块532,解密模块540以及输出接口550。其中,图5所示的加解密系统500的输入接口502,控制模块504,前处理模块530,加密模块532,解密模块540以及输出接口550分别与图3所示的加解密系统300的输入接口302,控制模块304,前处理模块330,加密模块332,解密模块340以及输出接口350各自一一对应,相对应的模块也具有相似的细节。加解密系统500的模幂计算子系统510是针对模幂计算进行并行加速优化处理的子系统。也就是说,图5所示的加解密系统500可以适用于隐私计算相关的各种应用下,包括归属于加密模式、解密模式或者密态运算模式的各种复杂算子操作,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。
请继续参阅图5,加解密系统500的模幂计算子系统510包括模幂计算模块512,任务配置模块515和任务配置模块525。其中,模幂计算模块512包括多个计算单元(例如图5中为计算单元A1、计算单元A2、计算单元A3和计算单元A4)。每个计算单元包括多个模幂计算引擎,每个模幂计算引擎的结构和进行模幂计算的方法各自参考图1和图2及相关具体实施例。任务配置模块515还包括数据分发模块516,参数分发模块517和参数计算模块518。任务配置模块515用于根据特定任务而调用模幂计算模块512的一个或者多个计算单元,以及通过数据分发模块516和参数分发模块517向被调用的计算单元内的模幂计算引擎配置相应数据和参数。参数计算模块518用于计算需要配置的参数并发送给参数分发模块517。任务配置模块525与任务配置模块515具有相似的功能和结构,任务配置模块525所包括的数据分发模块526,参数分发模块527和参数计算模块528也各自与任务配置模块515所包括的数据分发模块516,参数分发模块517和参数计算模块518具有相似的功能和结构。模幂计算模块512内被调用的计算单元的各个模幂计算引擎输出的结果汇合于数据聚合模块514进行整合从而得到模幂计算结果590。
请继续参阅图5,模幂计算子系统510通过任务配置模块515和任务配置模块525可以同时将两个任务配置给模幂计算模块512,并让模幂计算模块512内一部分的计算单元处理第一个任务同时让另一部分的计算单元处理另一个任务,从而进一步复用计算资源,提高整体计算性能。模幂计算子系统510在进行多任务同步处理方面的原理和细节可以参考图4所示的模幂计算子系统410,在此不再赘述。与图4所示的加解密系统400不同的是,加解密系统500还与外部的模幂计算子系统580连接。模幂计算子系统580可以是单独配置,也可以是另一个加解密系统的一部分。加解密系统500的控制模块504和数据聚合模块514均与模幂计算子系统580连接。控制模块504用于将数据和参数发送给模幂计算子系统580,模幂计算子系统580可以包括参数计算模块或者类似功能的电路、逻辑元件或者器件从而对控制模块504所发送的数据和参数进行模幂计算,模幂计算子系统580的输出结果汇合到数据聚合模块514。模幂计算子系统580包括多个计算单元,编号为计算单元B1、计算单元B2、计算单元B3和计算单元B4。模幂计算子系统580所包括的多个计算单元每个也包括一个或多个模幂计算引擎。对于加解密系统500来说,模幂计算子系统580相当于对模幂计算子系统510的外部拓展,或者说是可以调用的外部的计算资源。通过控制模块504和数据聚合模块514,模幂计算子系统580所提供的模幂计算结果也可以被整合到加解密系统500并与其它模块协作。下面结合表2进行说明。
表2
任务编号 | 本地数据和参数配置 | 所调用本地计算资源 | 所调用外部计算资源 |
M1 | 任务配置模块515 | 计算单元A1、计算单元A2、计算单元A3 | 计算单元B1 |
M2 | 任务配置模块525 | 计算单元A4 | 计算单元B2、计算单元B3、计算单元B4 |
如表2所示,任务M1通过任务配置模块515进行本地数据和参数配置,并调用本地计算资源也即模幂计算子系统510的计算单元A1、计算单元A2、计算单元A3,还调用了外部计算资源也即模幂计算子系统580的计算单元B1。任务M2通过任务配置模块525进行本地数据和参数配置,并调用本地计算资源也即模幂计算子系统510的计算单元A4,还调用了外部计算资源也即模幂计算子系统580的计算单元B2、计算单元B3和计算单元B4。通过调用外部计算资源,可以避免本地计算资源不足或者计算资源冲突而影响处理效率。以表2为例,假设模幂计算子系统510和模幂计算子系统580各自的计算单元具有相同的计算性能,则表2中通过调用本地和外部计算资源实现了任务M1和任务M2各自具有相同的计算资源,也就是任务M1和任务M2各自具有相同计算性能的总计四个计算单元。这样有利于提高加解密系统500同步处理两个任务的整体效率,相比于仅通过计算单元A4来处理任务M2的模幂计算而导致其他模块等待时间过长,可以通过调用外部计算资源也即模幂计算子系统580的计算单元B2、计算单元B3和计算单元B4来提高处理速度。应当理解的是,外部计算资源仅用于拓展或者补充模幂计算子系统510的计算性能,也就是说,模幂计算或者依赖模幂计算的密态运算等可以调用外部计算资源。
在一些示例性实施例中,加解密系统500还可以调用多于一个的参与方的计算资源,例如可以调用更多的外部的模幂计算子系统的计算单元。假设有多个参与方参与隐私计算框架,本地参与方和其它参与方都在当地具有与加解密系统500相同结构的系统级芯片(System on Chip,SOC)。则本地参与方的芯片可以与其它参与方的芯片通信,并且可以视乎需求调用其它参与方的芯片的计算资源。因此,本地参与方的芯片或者加解密系统可以将其它参与方的各自的芯片的计算单元及其中的模幂计算引擎看做一个外部计算资源池,通过选择性调用外部计算资源池的计算资源来配合本地计算资源。为便于区分不同参与方的计算资源,可以给每个计算单元分配一个身份标识,用来标识该计算单元归属的参与方,例如机器ID、身份ID、MAC地址、IP地址或者类似的身份标识信息。本地参与方在调用外部计算资源时,将发送给外部的数据和参数都配上身份标识,以便在后续处理中统一调度。
如此,图5所示的加解密系统500可以适用于隐私计算相关的各种应用下,包括归属于加密模式、解密模式或者密态运算模式的各种复杂算子操作,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。而且,通过任务配置模块来针对不同任务配置相应数据和参数,并调用模幂计算模块的不同计算单元来同步处理不同任务,从而进一步复用计算资源,提高整体计算性能。并且,通过给待处理的数据配置任务标签和时间标签,其中任务标签用来区分不同任务而时间标签用来标识被调用次序例如优先级,从而无需通过中央处理器的统一调度也无需通过主存储器的读写操作,就实现对不同任务的数据进行流水式处理的整体效率。并且,通过调用外部计算资源可以实现不同任务的计算资源之间的平衡,有利于提高整体流水处理效率,还通过身份标识来标识不同参与方的计算资源从而有利于统一调度。
应当理解的是,图5所示的模幂计算子系统510所包括的模幂计算模块512通过多个模幂计算引擎并行处理来加快模幂计算。模幂计算模块512所包括的计算单元的个数以及每个计算单元所包括的具体模幂计算引擎的个数都是可以根据实际应用场景进行调整的,图5所示的计算单元A1、计算单元A2、计算单元A3和计算单元A4仅为示例性,模幂计算模块512可以包括任意数量的计算单元。
请参阅图3、图4和图5,这些具体实施例中的加解密系统各自的模幂计算子系统均包括多个计算单元,每个计算单元包括一个或者多个模幂计算引擎,模幂计算子系统通过多个计算单元及其中的模幂计算引擎并行处理模幂计算从而提高整体效率。而加解密系统的其它模块是基于串行处理并与模幂计算子系统协作以完成算子操作。因此,这些具体实施例中的加解密系统可以采用异构处理器架构,利用异构处理器对同态加密和同态解密各自的计算流程的速度瓶颈环节进行优化设计并提供并行计算单元,从而既能够支持同态加密又能够支持同态解密,并且实现了较好的计算性能和合理的功耗,另外还通过各个模块的协同实现了加密、解密以及密态运算分时复用的效果。
在一些示例性实施例中,上述具体实施例中的加解密系统可以作为系统级芯片或者单片集成芯片来实现。例如,本申请实施例提供了一种芯片,应用于隐私计算。所述芯片包括:输入接口,其中,所述输入接口用于接收多个待处理数据,所述多个待处理数据与多个算子操作一一对应;模幂计算子系统,其中,所述模幂计算子系统包括多个计算单元,所述多个计算单元的每一个计算单元包括至少一个模幂计算引擎,所述模幂计算子系统配置成根据所述多个待处理数据分别生成多个模幂计算结果;控制模块,其中,针对所述多个待处理数据中的每一个待处理数据,所述控制模块用于:当所述多个算子操作中与该待处理数据对应的算子操作是用于隐私计算加密算法时,调用前处理模块和加密模块从而与所述模幂计算子系统协同完成该算子操作,当所述多个算子操作中与该待处理数据对应的算子操作是用于隐私计算解密算法时,调用解密模块从而与所述模幂计算子系统协同完成该算子操作,当所述多个算子操作中与该待处理数据对应的算子操作是用于密态运算算法时,调用所述模幂计算子系统完成该算子操作。如此,该芯片可以适用于隐私计算相关的各种应用下,包括归属于加密模式、解密模式或者密态运算模式的各种复杂算子操作,针对模幂计算进行优化设计而提供模幂计算子系统,通过参数复用和模块复用来提高整体计算性能,以及通过将加密的计算流程和解密的计算流程合并后通过同一个模幂计算子系统进行与模幂计算相关的计算流程,还可以通过直接输出模幂计算子系统的计算结果实现密态运算模式下的操作,从而在适用于隐私计算各种需求同时复用计算资源,有利于提高整体计算性能和节省功耗。
本申请提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。
本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。
以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
Claims (20)
1.一种加解密系统,应用于隐私计算,其特征在于,所述加解密系统包括:
模幂计算子系统,其中,所述模幂计算子系统包括多个计算单元,所述多个计算单元的每一个计算单元包括至少一个模幂计算引擎,所述模幂计算子系统配置成根据待处理数据生成模幂计算结果;
解密模块,其中,所述解密模块配置成根据所述模幂计算结果生成解密结果;
前处理模块,其中,所述前处理模块配置成根据与所述待处理数据对应的算子操作生成前处理结果;
加密模块,其中,所述加密模块配置成根据所述前处理结果和所述模幂计算结果生成加密结果;以及
控制模块,其中,所述控制模块用于:
当所述算子操作是用于隐私计算加密算法时,调用所述前处理模块和所述加密模块从而与所述模幂计算子系统协同完成所述算子操作,
当所述算子操作是用于隐私计算解密算法时,调用所述解密模块从而与所述模幂计算子系统协同完成所述算子操作,和
当所述算子操作是用于密态运算算法时,调用所述模幂计算子系统完成所述算子操作。
2.根据权利要求1所述的加解密系统,其特征在于,所述加解密系统还包括:
输出接口,其中,所述输出接口配置成分别从所述模幂计算子系统接收所述模幂计算结果,从所述解密模块接收所述解密结果,以及从所述加密模块接收所述加密结果,
其中,当所述算子操作是用于隐私计算加密算法时,所述输出接口输出所述加密结果,
其中,当所述算子操作是用于隐私计算解密算法时,所述输出接口输出所述解密结果,
其中,当所述算子操作是用于密态运算算法时,所述输出接口输出所述模幂计算结果。
3.根据权利要求2所述的加解密系统,其特征在于,
当所述算子操作是用于隐私计算加密算法时,所述待处理数据是待加密明文数据,
所述加密结果是对该待加密明文数据应用所述算子操作得到的加密后密文数据,
当所述算子操作是用于隐私计算解密算法时,所述待处理数据是待解密密文数据,
所述解密结果是对该待解密密文数据应用所述算子操作得到的解密后明文数据,
当所述算子操作是用于密态运算算法时,所述待处理数据是密态运算数据,所述模幂计算结果是对该密态运算数据应用所述算子操作得到的密态运算结果。
4.根据权利要求1所述的加解密系统,其特征在于,所述模幂计算子系统还包括数据分发模块,参数分发模块和数据聚合模块,所述模幂计算子系统配置成根据所述待处理数据生成所述模幂计算结果,包括:
所述数据分发模块将所述待处理数据分发给所述多个计算单元所包括的多个模幂计算引擎,
所述参数分发模块将与所述待处理数据和所述算子操作对应的参数分发给所述多个模幂计算引擎,
所述数据聚合模块将所述多个模幂计算引擎各自的输出整合后得到所述模幂计算结果。
5.根据权利要求1所述的加解密系统,其特征在于,所述模幂计算子系统还包括第一任务配置模块和第二任务配置模块,其中,所述第一任务配置模块包括第一数据分发模块和第一参数分发模块,所述第二任务配置模块包括第二数据分发模块和第二参数分发模块,所述待处理数据包括第一数据和第二数据,所述第一数据对应第一算子操作,所述第二数据对应第二算子操作,所述模幂计算子系统配置成根据所述待处理数据生成所述模幂计算结果,包括:
所述第一数据分发模块将所述第一数据分发给所述多个计算单元的第一部分所包括的模幂计算引擎,
所述第一参数分发模块将与所述第一数据和所述第一算子操作对应的参数分发给所述多个计算单元的第一部分所包括的模幂计算引擎,
所述数据聚合模块将所述多个计算单元的第一部分所包括的模幂计算引擎各自的输出整合后得到第一模幂计算结果,
所述第二数据分发模块将所述第二数据分发给所述多个计算单元的第二部分所包括的模幂计算引擎,
所述第二参数分发模块将与所述第二数据和所述第二算子操作对应的参数分发给所述多个计算单元的第二部分所包括的模幂计算引擎,
所述数据聚合模块将所述多个计算单元的第二部分所包括的模幂计算引擎各自的输出整合后得到第二模幂计算结果。
6.根据权利要求5所述的加解密系统,其特征在于,所述多个计算单元的第一部分所包括的计算单元的个数与所述多个计算单元的第二部分所包括的计算单元的个数相等。
7.根据权利要求5所述的加解密系统,其特征在于,所述模幂计算子系统在通过所述多个计算单元的第一部分所包括的模幂计算引擎生成所述第一模幂计算结果的同时也通过所述多个计算单元的第二部分所包括的模幂计算引擎生成所述第二模幂计算结果。
8.根据权利要求5所述的加解密系统,其特征在于,所述第一数据包括第一任务标签用于标识所述第一数据对应所述第一算子操作,所述第二数据包括第二任务标签用于标识所述第二数据对应所述第二算子操作。
9.根据权利要求8所述的加解密系统,其特征在于,所述第一数据包括第一时间标签用于标识所述第一算子操作的执行次序,所述第二数据包括第二时间标签用于标识所述第二算子操作的执行次序。
10.根据权利要求5至9中任一项所述的加解密系统,其特征在于,所述第一算子操作是用于隐私计算加密算法,所述第二算子操作是用于隐私计算解密算法,所述前处理模块根据所述第一算子操作生成第一前处理结果,所述加密模块根据所述第一前处理结果和所述第一模幂计算结果生成所述加密结果,所述解密模块根据所述第二模幂计算结果生成所述解密结果。
11.根据权利要求5至9中任一项所述的加解密系统,其特征在于,所述第一算子操作是用于隐私计算加密算法,所述第二算子操作是用于密态运算算法,所述前处理模块根据所述第一算子操作生成第一前处理结果,所述加密模块根据所述第一前处理结果和所述第一模幂计算结果生成所述加密结果。
12.根据权利要求5至9中任一项所述的加解密系统,其特征在于,所述第一算子操作是用于隐私计算解密算法,所述第二算子操作是用于密态运算算法,所述解密模块根据所述第一模幂计算结果生成所述解密结果。
13.根据权利要求5至9中任一项所述的加解密系统,其特征在于,所述第一算子操作和所述第二算子操作均用于隐私计算加密算法、隐私计算解密算法或者密态运算算法,与所述第一算子操作对应的参数不同于与所述第二算子操作对应的参数。
14.一种芯片,应用于隐私计算,其特征在于,所述芯片包括:
输入接口,其中,所述输入接口用于接收多个待处理数据,所述多个待处理数据与多个算子操作一一对应;
模幂计算子系统,其中,所述模幂计算子系统包括多个计算单元,所述多个计算单元的每一个计算单元包括至少一个模幂计算引擎,所述模幂计算子系统配置成根据所述多个待处理数据分别生成多个模幂计算结果;
控制模块,其中,针对所述多个待处理数据中的每一个待处理数据,所述控制模块用于:
当所述多个算子操作中与该待处理数据对应的算子操作是用于隐私计算加密算法时,调用前处理模块和加密模块从而与所述模幂计算子系统协同完成该算子操作,
当所述多个算子操作中与该待处理数据对应的算子操作是用于隐私计算解密算法时,调用解密模块从而与所述模幂计算子系统协同完成该算子操作,
当所述多个算子操作中与该待处理数据对应的算子操作是用于密态运算算法时,调用所述模幂计算子系统完成该算子操作。
15.根据权利要求14所述的芯片,其特征在于,所述模幂计算子系统还包括数据分发模块,参数分发模块和数据聚合模块,所述模幂计算子系统配置成根据所述多个待处理数据分别生成所述多个模幂计算结果,包括:
针对所述多个待处理数据中的每一个待处理数据,所述数据分发模块将该待处理数据分发给所述多个计算单元所包括的多个模幂计算引擎,所述参数分发模块将与该待处理数据和该算子操作对应的参数分发给所述多个模幂计算引擎,所述数据聚合模块将所述多个模幂计算引擎各自的输出整合后得到所述多个模幂计算结果中与该待处理数据对应的模幂计算结果。
16.根据权利要求14所述的芯片,其特征在于,所述模幂计算子系统还包括第一任务配置模块和第二任务配置模块,其中,所述第一任务配置模块包括第一数据分发模块和第一参数分发模块,所述第二任务配置模块包括第二数据分发模块和第二参数分发模块,所述多个待处理数据包括第一数据和第二数据,所述多个算子操作包括第一算子操作和第二算子操作,所述第一数据对应所述第一算子操作,所述第二数据对应所述第二算子操作,所述模幂计算子系统配置成根据所述多个待处理数据分别生成所述多个模幂计算结果,包括:
所述第一数据分发模块将所述第一数据分发给所述多个计算单元的第一部分所包括的模幂计算引擎,
所述第一参数分发模块将与所述第一数据和所述第一算子操作对应的参数分发给所述多个计算单元的第一部分所包括的模幂计算引擎,
所述数据聚合模块将所述多个计算单元的第一部分所包括的模幂计算引擎各自的输出整合后得到第一模幂计算结果,
所述第二数据分发模块将所述第二数据分发给所述多个计算单元的第二部分所包括的模幂计算引擎,
所述第二参数分发模块将与所述第二数据和所述第二算子操作对应的参数分发给所述多个计算单元的第二部分所包括的模幂计算引擎,
所述数据聚合模块将所述多个计算单元的第二部分所包括的模幂计算引擎各自的输出整合后得到第二模幂计算结果。
17.根据权利要求16所述的芯片,其特征在于,所述模幂计算子系统在通过所述多个计算单元的第一部分所包括的模幂计算引擎生成所述第一模幂计算结果的同时也通过所述多个计算单元的第二部分所包括的模幂计算引擎生成所述第二模幂计算结果。
18.根据权利要求17所述的芯片,其特征在于,所述第一数据包括第一任务标签用于标识所述第一数据对应所述第一算子操作,所述第二数据包括第二任务标签用于标识所述第二数据对应所述第二算子操作。
19.根据权利要求18所述的芯片,其特征在于,所述第一数据包括第一时间标签用于标识所述第一算子操作的执行次序,所述第二数据包括第二时间标签用于标识所述第二算子操作的执行次序。
20.根据权利要求19所述的芯片,其特征在于,所述控制模块还用于:
与第二芯片通信,并且调动安装在所述第二芯片上的第二模幂计算子系统所包括的计算单元的计算引擎,从而配合所述模幂计算子系统根据所述多个待处理数据分别生成所述多个模幂计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110470128.4A CN112883408B (zh) | 2021-04-29 | 2021-04-29 | 用于隐私计算的加解密系统和芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110470128.4A CN112883408B (zh) | 2021-04-29 | 2021-04-29 | 用于隐私计算的加解密系统和芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112883408A true CN112883408A (zh) | 2021-06-01 |
CN112883408B CN112883408B (zh) | 2021-07-16 |
Family
ID=76040193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110470128.4A Active CN112883408B (zh) | 2021-04-29 | 2021-04-29 | 用于隐私计算的加解密系统和芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112883408B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672985A (zh) * | 2021-08-25 | 2021-11-19 | 支付宝(杭州)信息技术有限公司 | 用于隐私保护的机器学习算法脚本编译方法和编译器 |
CN113900828A (zh) * | 2021-12-08 | 2022-01-07 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
CN115794359A (zh) * | 2021-09-09 | 2023-03-14 | 深圳致星科技有限公司 | 用于联邦学习的异构系统及处理方法 |
CN117992990A (zh) * | 2024-04-01 | 2024-05-07 | 国网山东省电力公司济南供电公司 | 一种高效的电力数据同态加密方法、处理器及存储介质 |
CN117992990B (zh) * | 2024-04-01 | 2024-05-31 | 国网山东省电力公司济南供电公司 | 一种高效的电力数据同态加密方法、处理器及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170091488A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Secure modular exponentiation processors, methods, systems, and instructions |
CN111510413A (zh) * | 2019-01-30 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 数据的处理方法、装置及设备 |
CN111832050A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
CN111898137A (zh) * | 2020-06-30 | 2020-11-06 | 深圳致星科技有限公司 | 一种联邦学习的隐私数据处理方法、设备及系统 |
CN112070222A (zh) * | 2020-11-10 | 2020-12-11 | 深圳致星科技有限公司 | 用于联邦学习的处理架构、加速器及方法 |
CN112100673A (zh) * | 2020-09-29 | 2020-12-18 | 深圳致星科技有限公司 | 用于隐私计算的联邦学习加速器和rsa交集计算方法 |
CN112199707A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种同态加密中的数据处理方法、装置以及设备 |
CN112286752A (zh) * | 2020-09-29 | 2021-01-29 | 深圳致星科技有限公司 | 一种联邦学习异构处理系统的算法验证方法及系统 |
CN112464296A (zh) * | 2020-12-18 | 2021-03-09 | 合肥工业大学 | 一种用于同态加密技术的大整数乘法器硬件电路 |
-
2021
- 2021-04-29 CN CN202110470128.4A patent/CN112883408B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170091488A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Secure modular exponentiation processors, methods, systems, and instructions |
CN111510413A (zh) * | 2019-01-30 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 数据的处理方法、装置及设备 |
CN111898137A (zh) * | 2020-06-30 | 2020-11-06 | 深圳致星科技有限公司 | 一种联邦学习的隐私数据处理方法、设备及系统 |
CN111832050A (zh) * | 2020-07-10 | 2020-10-27 | 深圳致星科技有限公司 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
CN112100673A (zh) * | 2020-09-29 | 2020-12-18 | 深圳致星科技有限公司 | 用于隐私计算的联邦学习加速器和rsa交集计算方法 |
CN112286752A (zh) * | 2020-09-29 | 2021-01-29 | 深圳致星科技有限公司 | 一种联邦学习异构处理系统的算法验证方法及系统 |
CN112199707A (zh) * | 2020-10-28 | 2021-01-08 | 支付宝(杭州)信息技术有限公司 | 一种同态加密中的数据处理方法、装置以及设备 |
CN112070222A (zh) * | 2020-11-10 | 2020-12-11 | 深圳致星科技有限公司 | 用于联邦学习的处理架构、加速器及方法 |
CN112464296A (zh) * | 2020-12-18 | 2021-03-09 | 合肥工业大学 | 一种用于同态加密技术的大整数乘法器硬件电路 |
Non-Patent Citations (2)
Title |
---|
XIANGLONG ZHANG ET.AL: ""A Privacy-Preserving and Verifiable Federated Learning Scheme"", 《2020 IEEE INTERNATIONAL CONFERENCE ON COMMUNICATIONS (ICC)》 * |
杨庚等: ""联邦学习中的隐私保护研究进展"", 《南京邮电大学学报(自然科学版)》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672985A (zh) * | 2021-08-25 | 2021-11-19 | 支付宝(杭州)信息技术有限公司 | 用于隐私保护的机器学习算法脚本编译方法和编译器 |
CN113672985B (zh) * | 2021-08-25 | 2023-11-14 | 支付宝(杭州)信息技术有限公司 | 用于隐私保护的机器学习算法脚本编译方法和编译器 |
CN115794359A (zh) * | 2021-09-09 | 2023-03-14 | 深圳致星科技有限公司 | 用于联邦学习的异构系统及处理方法 |
CN113900828A (zh) * | 2021-12-08 | 2022-01-07 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
CN113900828B (zh) * | 2021-12-08 | 2022-03-04 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
CN117992990A (zh) * | 2024-04-01 | 2024-05-07 | 国网山东省电力公司济南供电公司 | 一种高效的电力数据同态加密方法、处理器及存储介质 |
CN117992990B (zh) * | 2024-04-01 | 2024-05-31 | 国网山东省电力公司济南供电公司 | 一种高效的电力数据同态加密方法、处理器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112883408B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112883408B (zh) | 用于隐私计算的加解密系统和芯片 | |
CN112865954B (zh) | 用于Paillier解密的加速器、芯片及系统 | |
CN112070222B (zh) | 用于联邦学习的处理装置、加速器及方法 | |
Song et al. | A parallel image encryption algorithm using intra bitplane scrambling | |
EP2701337B1 (en) | Secret sharing method and system | |
CN111898137A (zh) | 一种联邦学习的隐私数据处理方法、设备及系统 | |
CN112148437B (zh) | 用于联邦学习的计算任务加速处理方法、装置及设备 | |
CN114021734B (zh) | 用于联邦学习和隐私计算的参数计算装置、系统及方法 | |
CN105930902A (zh) | 一种神经网络的处理方法、系统 | |
CN112733161A (zh) | 用于联邦学习密文运算的装置及方法 | |
CN113468099B (zh) | 可重构计算装置、处理器及方法 | |
CN111737011B (zh) | 安全多方计算的实现方法和装置 | |
CN113407979B (zh) | 用于纵向联邦逻辑回归学习的异构加速方法、装置及系统 | |
CN114064278A (zh) | 用于联邦学习的异构加速引擎及方法 | |
CN112100673A (zh) | 用于隐私计算的联邦学习加速器和rsa交集计算方法 | |
Fang et al. | Secure function evaluation using an fpga overlay architecture | |
CN113946846B (zh) | 用于联邦学习和隐私计算的密文计算装置及方法 | |
Tsmots et al. | Neural-like means for data streams encryption and decryption in real time | |
Wolfe et al. | Secret sharing MPC on FPGAs in the datacenter | |
Li et al. | Secure prediction of neural network in the cloud | |
Zhang et al. | {FLASH}: Towards a high-performance hardware acceleration architecture for cross-silo federated learning | |
CN115794359A (zh) | 用于联邦学习的异构系统及处理方法 | |
CN106411519A (zh) | 用于rsa解密的处理器及用于rsa解密处理器的控制方法 | |
US20210083840A1 (en) | Using cryptographic blinding for efficient use of montgomery multiplication | |
CN113656823B (zh) | 用于联邦学习和隐私计算的密态加法计算装置及系统 |
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 |