CN111832050B - 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 - Google Patents
用于联邦学习的基于FPGA芯片实现的Paillier加密方案 Download PDFInfo
- Publication number
- CN111832050B CN111832050B CN202010661420.XA CN202010661420A CN111832050B CN 111832050 B CN111832050 B CN 111832050B CN 202010661420 A CN202010661420 A CN 202010661420A CN 111832050 B CN111832050 B CN 111832050B
- Authority
- CN
- China
- Prior art keywords
- parameter
- calculation
- modular exponentiation
- module
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 156
- 238000000034 method Methods 0.000 claims abstract description 68
- 230000002776 aggregation Effects 0.000 claims abstract description 31
- 238000004220 aggregation Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000008569 process Effects 0.000 claims description 33
- 241001522296 Erithacus rubecula Species 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 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/76—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 application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Storage Device Security (AREA)
Abstract
本说明书实施例提供基于FPGA芯片实现Paillier加密的方法。在该方法中,数据分发模块将明文数据集M、密钥n和随机数集r分别分发给混淆加密引擎、参数计算模块和多个模幂计算引擎。参数计算模块根据密钥n确定Paillier加密所需的参数N、RR、U0和np,并将密钥n以及参数N、RR、U0和np分发给多个模幂计算引擎和混淆加密引擎。多个模幂计算引擎使用随机数集r、密钥n、参数N、RR、U0和np进行并行模幂计算。所得到的模幂计算结果经过聚合处理后提供给混淆加密引擎。混淆加密引擎使用聚合处理结果、密钥n、参数N、RR、U0和np以及明文数据集进行混淆加密得到密文数据集。利用该方法,可以利用FPGA的高并行计算特性,提高Paillier加密算法的计算效率。
Description
技术领域
本说明书实施例通常涉及加密处理领域,尤其涉及用于联邦学习的基于FPGA芯片实现的Paillier加密方法及FPGA芯片。
背景技术
在联邦学习应用中,参与者设备需要向协调设备发送本地模型参数更新(例如,神经网络模型权值,或者梯度信息),从而使得本地模型参数更新会被协调者获悉。在不能保证协调者设备可靠性的场景下,可能会泄露参与者设备的隐私数据信息。为了确保不向协调者设备泄露参与者设备的隐私数据信息,参与者设备可以通过Paillier加密算法对隐私数据信息进行加密。
现有的Paillier加密实现方案采用CPU芯片或GPU芯片实现。如果采用CPU芯片实现,则会严重降低CPU芯片的性能,并且计算效率不高。如果采用GPU芯片实现,虽然计算效率提升,但是系统功耗会大大上升,同时由于GPU芯片昂贵,从而使得Paillier加密实现方案成本较高。
发明内容
鉴于上述,本说明书的实施例提供一种基于FPGA芯片实现的Paillier加密方法及FPGA芯片。利用该Paillier加密实现方法,可以利用FPGA的高并行计算特性,提高Paillier加密算法的计算效率。
根据本说明书的实施例的一个方面,提供一种基于FPGA芯片实现Paillier加密的方法,所述FPGA芯片包括数据分发模块、参数计算模块、多个模幂计算引擎、模幂计算结果聚合模块和混淆加密引擎,所述方法包括:经由所述数据分发模块,将明文数据集M分发给所述混淆加密引擎,将密钥n分发给所述参数计算模块以及将随机数集r分发给所述多个模幂计算引擎,所述随机数集r中的随机数的个数与所述明文数据集M中的明文数据的个数相同;在所述参数计算模块处,根据所述密钥n,确定Paillier加密所需的第一参数N、第二参数RR、第三参数U0和第四参数np,并将密钥n以及第一到第四参数分发给所述多个模幂计算引擎和所述混淆加密引擎,所述第一参数N是密钥n的平方,所述第二参数RR是蒙哥马利化参数,所述第三参数U0是整数1的蒙哥马利化,所述第四参数np是蒙哥马利模乘参数;在所述多个模幂计算引擎处,使用所述随机数集r、密钥n和第一到第四参数进行并行模幂计算,并将模幂计算结果提供给所述模幂计算结果聚合模块;在所述模幂计算结果聚合模块处,对所述模幂计算结果进行聚合处理,并将聚合处理结果提供给所述混淆加密引擎;以及在所述混淆加密引擎处,使用所述聚合处理结果、所述密钥n、第一到第四参数以及所述明文数据集M进行混淆加密,得到密文数据集。
可选地,在上述方面的一个示例中,所述第二参数RR和所述第三参数U0是同时计算出的。
可选地,在上述方面的一个示例中,所述第四参数np的计算与所述第二参数RR和所述第三参数U0的计算并行执行。
可选地,在上述方面的一个示例中,所述第四参数np基于所述第一参数N的低比特数据计算出。
可选地,在上述方面的一个示例中,所述第四参数np的计算采用普通乘法计算实现。
可选地,在上述方面的一个示例中,所述随机数集r以轮询的方式分发给所述多个模幂计算引擎。
可选地,在上述方面的一个示例中,所述模幂计算采用基于蒙哥马利化域的平方乘计算和基于蒙哥马利化域的大数模乘计算实现。
可选地,在上述方面的一个示例中,在所述模幂计算采用基于蒙哥马利化域的大数模乘计算实现时,所使用的位宽、流水级数和/或循环次数是可配置的。
可选地,在上述方面的一个示例中,所述混淆加密被分解为多个并行执行的计算过程。
可选地,在上述方面的一个示例中,所述参数计算模块、所述多个模幂计算引擎和所述混淆加密引擎的计算过程并行执行。
可选地,在上述方面的一个示例中,所述FPGA芯片包括输入数据缓存模块和输出数据缓存模块,所述方法还包括:将所述明文数据集、所述密钥n和所述随机数集r缓存在所述输入数据缓存模块中,以供所述数据分发模块读取来执行数据分发;和/或将所述密文数据集缓存在所述输出数据缓存模块中。
可选地,在上述方面的一个示例中,所述FPGA芯片包括随机数生成模块,所述方法还包括:从外部设备接收所述明文数据集M和所述密钥n;以及响应于接收到所述明文数据集M,生成所述随机数集r。
根据本说明书的实施例的另一方面,提供一种用于实现Paillier加密的FPGA芯片,包括:数据分发模块,被配置为将明文数据集M分发给混淆加密引擎,将密钥n分发给参数计算模块以及将随机数集r分发给多个模幂计算引擎,所述随机数集r中的随机数的个数与所述明文数据集M中的明文数据的个数相同;参数计算模块,被配置为根据所述密钥n,确定Paillier加密所需的第一参数N、第二参数RR、第三参数U0和第四参数np,并将密钥n以及第一到第四参数分发给多个模幂计算引擎和混淆加密引擎,所述第一参数N是密钥n的平方,所述第二参数RR是蒙哥马利化参数,所述第三参数U0是整数1的蒙哥马利化,所述第四参数np是蒙哥马利模乘参数;多个模幂计算引擎,被配置为使用所述随机数集r、密钥n和第一到第四参数进行并行模幂计算,并将模幂计算结果提供给模幂计算结果聚合模块;模幂计算结果聚合模块,被配置为对所述模幂计算结果进行聚合处理,并将聚合处理结果提供给所述混淆加密引擎;以及混淆加密引擎,被配置为使用所述聚合处理结果、所述密钥n、第一到第四参数以及所述明文数据集进行混淆加密,得到密文数据集。
可选地,在上述方面的一个示例中,所述参数计算模块并行执行所述第二参数RR、所述第三参数U0和所述第四参数np的计算过程。
可选地,在上述方面的一个示例中,所述参数计算模块基于所述第一参数N的低比特数据计算所述第四参数np。
可选地,在上述方面的一个示例中,所述数据分发模块以轮询的方式将所述随机数集r分发给所述多个模幂计算引擎。
可选地,在上述方面的一个示例中,所述FPGA芯片还包括:输入数据缓存模块,被配置为缓存所述明文数据集、所述密钥n和所述随机数集r,以供所述数据分发模块读取来执行数据分发;和/或输出数据缓存模块,被配置为缓存所述密文数据集,以供提供给外部设备。
可选地,在上述方面的一个示例中,所述FPGA芯片还包括:随机数生成模块,被配置为响应于从外部设备接收所述明文数据集M和所述密钥n,根据所述明文数据集M生成所述随机数集r。
根据本说明书的实施例的另一方面,提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得机器执行如上所述的方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书的实施例的FPGA芯片的示例方框图。
图2示出了根据本说明书的实施例的参数计算过程的示例示意图。
图3示出了根据本说明书的实施例的参数RR的计算过程的流程图。
图4示出了根据本说明书的实施例的参数计算过程、模幂计算过程和混淆加密过程的并行执行的示例示意图。
图5示出了根据本说明书的实施例的用于基于FPGA芯片实现Paillier加密的方法的流程图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
图1示出了根据本说明书的实施例的FPGA芯片10的示例方框图。
如图1所示,FPGA芯片10包括输入数据缓存110、数据分发模块120、参数计算模块130、多个模幂计算引擎140-1到140-n、模幂计算结果聚合模块150、混淆加密引擎160和输出数据缓存170。
输入数据缓存110被配置为存储明文数据集M、密钥n和随机数集r。明文数据集M包括多个明文数据m1,m2,……,mi,以及随机数集r包括多个随机数r1,r2,……,ri。随机数集r中的随机数的个数与明文数据集M中的明文数据的个数相同。此外,可选地,在另一示例中,每个随机数的长度可以与对应的明文数据的长度相同。在另一示例中,每个随机数的长度也可以与对应的明文数据的长度不同。
在一个示例中,明文数据集M、密钥n和随机数集r可以是从外部设备接收的。例如,如图1中所示,CPU 20将明文数据集M、密钥n和随机数集r提供给FPGA 10,并且存储在输入数据缓存110中。
在另一示例中,FPGA芯片10可以包括随机数生成模块(未示出)。在这种情况下,FPGA 10从外部设备接收明文数据集M和密钥n。在接收到明文数据集M后,随机数生成模块根据明文数据集M生成随机数集r。
数据分发模块120被配置为从输入数据缓存110中读取明文数据集M、密钥n和随机数集r,并且将密钥n分发给参数计算模块130,将随机数集r分发给多个模幂计算引擎140-1到140-n,以及将明文数据集M分发给混淆加密引擎160。可选地,在一个示例中,数据分发模块120采用轮询方式来将随机数集r依次循环分发到多个模幂计算引擎140-1到140-n。
参数计算模块130被配置为根据密钥n,确定Paillier加密所需的第一参数N、第二参数RR、第三参数U0和第四参数np。这里,第一参数N是密钥n的平方,即,N=n2。第二参数RR是蒙哥马利化参数,第三参数U0是整数1的蒙哥马利化,以及第四参数np是蒙哥马利模乘参数(模乘计算过程中使用的参数)。在确定出参数RR、U0、np和N后,参数计算模块130将密钥n以及参数RR、U0、np和N分发给多个模幂计算引擎140-1到140-n和混淆加密引擎160。
图2示出了根据本说明书的实施例的参数计算过程的示例示意图。如图2所示,参数计算模块120包括平方模块121、第一缓存(N缓存)122、RR计算模块123、第二缓存(RR缓存)124、第三缓存(U0缓存)125、np计算模块126、参数写缓存控制模块127、第四缓存(参数结果缓存)128和参数分发控制模块129。
如图2所示,在参数计算模块120接收到密钥n后,所接收到密钥n被提供给平方模块121。平方模块121计算出N=n2,并将计算出的结果N写入到N缓存122中。
RR计算模块123从N缓存中连续读取N,并根据所读取的N计算参数RR。所计算出的参数RR被写入到RR缓存125中。参数RR的计算过程将在下面参照图3描述。
此外,在计算参数RR的过程中,同时计算出了1的蒙哥马利化值U0(即,参数U0),并且将参数U0直接写入到U0缓存124中。
此外,N可以被提供给np计算模块126。Np计算模块126根据N计算参数np。例如,可以利用公式np=-N-1mod r来计算参数np,其中,r=2w,w为单次数据处理位宽,并且w的大小可配置。在计算np的过程中会调用DSP,并且所生成的np位宽较小,可以使用寄存器寄存。要说明的是,在一个示例中,在进行参数np计算时,np=-N-1mod r的计算过程可以由模逆计算实现转换为普通循环乘法实现。
在RR/U0/np三个参数中,参数RR的计算过程最后完成。当参数RR计算完成并写入RR缓存后,参数写缓存控制模块127开始顺序读取各个参数RR/U0/np/N/n,并写入到参数结果缓存128中。
参数分发控制模块129从参数结果缓存模块128中顺序读取参数RR/U0/np/N/n,并写入后级模幂计算引擎140-1到140-n和混淆加密引擎160。在写入模幂计算引擎140-1到140-n时,可以先写入到模幂计算引擎140-1;再重复上述动作,将参数依次写入到模幂计算引擎140-1到140-n。
要说明的是,在RR计算模块123从N缓存中连续读取N时,可以采用sff_ram输入输出的接口控制方式来完成,其中,sff是Small Form Factor(小形状因数)的缩写,以及ram是Ramdom Access Memory(随机存取存储器)的缩写。相应地,N缓存具有特殊的数据缓存接口。N缓存的输入端口为fifo接口,以及N缓存的输出接口为ram接口,同时,N缓存也会产生用于指示缓存FIFO空满的空满信号,供两侧控制逻辑使用。使用这种缓存设计,可以简化使用者对数据缓存的读写控制流程。
图3示出了根据本说明书的实施例的参数RR的计算过程的流程图。
如图3所示,在301,读取N以及密钥n的长度信息n_len,并且在302,使得len=n_len-1。接着,在303,循环判断N[len]是否等于0。如果N[len]等于0,则在304,使得len=len–1,随后返回到303。如果N[len]不等于0,则在305,初始化i=0,并且在306,使得RR=2len-1。
在307,判断i是否小于等于2n_len-len。如果i小于等于2n_len-len,则在308,计算其中,是N的补码。接着,在309,判断RR′是否为正数。如果为正数,则在310,令RR=RR′。否则,在311,令RR=RR×2。随后,在312,判断i是否等于n_len-len。如果在312中判断为i等于n_len-len,则在313,将当前的RR作为U0输出,并且随后流程进行到314,在314,使得i=i+1。如果在312中判断为i不等于n_len-len,则流程直接进行到314。如果在307中,判断i大于2n_len-len,则在315,输出当前RR,由此得到参数RR。
在图3中示出的RR参数计算过程中,可以同时计算出参数U0。此外,在另一示例中,参数np的计算可以与参数RR、U0的计算并行执行。
此外,可选地,可以对参数np的计算过程进行优化。具体地,可以使用N的低w比特数据而不是全部比特数据来计算参数np,由此减小计算复杂度。这里,w为单次数据处理位宽。例如,在读取N的时候,还可以截取N的低w比特数,即图中的N[0]。所截取的低w比特数据被提供给np计算模块126来执行参数np计算。
在如上得到参数RR、U0、np、n和N后,参数计算模块120将参数RR、U0、np、n和N同时分发到各个模幂计算引擎140-1到140-n以及混淆加密引擎160。
各个模幂计算引擎140-1到140-n在接收到随机数和参数RR、U0、np、n和N后分别进行模幂计算。多个模幂计算引擎140-1到140-n的模幂计算是并行执行的。
在本说明书中,在一个示例中,模幂计算可以采用基于蒙哥马利化域的平方乘计算和基于蒙哥马利化域的大数模乘计算实现。按照这种实现方式,可以利用FPGA的高并行计算和流水特性,提高整体算力。此外,按照这种实现方式,可以避开直接对大整数取模运算,而以乘法、加法和移位运算代替,减少运算复杂度,提高计算效率。此外,在使用基于蒙哥马利化域的大数模乘计算实现时,可以对位宽、流水级数和/或循环次数进行配置,从而可以在考虑FPGA资源、器件等级、流水级数及主频因素的情况下,对位宽大小、流水级数和/或循环次数进行调整,由此实现最佳的性能提升比。
在如上完成多个模幂计算引擎140-1到140-n的模幂计算后,模幂计算结果聚合模块150对多个模幂计算引擎140-1到140-n的模幂计算结果进行聚合。
模幂计算结果聚合模块150的聚合结果被提供给混淆加密引擎160。此外,混淆加密引擎160还从数据分发模块120接收到明文数据集M,以及从参数计算模块接收到参数RR、U0、np、n和N。
混淆加密引擎160基于所接收的模幂计算聚合结果、参数RR、U0、np、n和N以及明文数据集M进行混淆加密计算,得到密文数据集C={C1,C2,……,Ci}。所得到的密文数据集C被存放在输出数据缓存170中,然后输出给CPU 20,由此完成针对明文数据集M的加密过程。
在一个示例中,混淆加密引擎的内部计算可以采用并行策略进行。混淆加密计算的公式是Ci=(1+mi*n).obfi.1mod n2。在这种情况下,可以将混淆加密计算分解为3个计算过程,即,RAWi=(1+mi*n),mCi=RAWi.obfi,Ci=mCi.1mod n2,其中,obfi=ri n mod N,所分解出的三个计算过程,即,RAWi的计算过程、mCi的计算过程和Ci的计算过程可以并行计算。
此外,可选地,在一个示例中,参数计算过程、模幂计算过程和混淆加密计算过程也可以并行实现。例如,在针对当前密钥的参数计算完毕并分发后,可以立即针对下一新密钥进行参数计算。图4示出了根据本说明书的实施例的参数计算过程、模幂计算过程和混淆加密过程的并行执行的示例示意图。
此外,可选地,在一个示例中,还可以设置状态及异常检测机制。相应地,FPGA芯片可以包括状态及异常检测模块。所述状态及异常检测模块可以被配置为实时检测加密过程的各个链路状态及异常信息。这里,链路状态是指计算引擎(例如,模幂计算引擎,混淆加密引擎)内的计算流程链路中的各个状态,包括每级计算完成与否,控制状态机的状态等。利用该状态及异常检测模块,用户可以读取各种状态及异常信息,并根据所读取的状态及异常信息来执行相应的处理。
此外,在本说明书的其它实施例中,FPGA芯片也可以不包括输入数据缓存110和/或输出数据缓存170。
如上参照图1到图4描述了根据本说明书的实施例的用于实现Paillier加密的FPGA芯片的结构。下面结合图5描述根据本说明书的实施例的用于基于FPGA芯片实现Paillier加密的过程。
图5示出了根据本说明书的实施例的用于基于FPGA芯片实现Paillier加密的方法的流程图。
如图5所示,在块510,从CPU 20接收待加密的明文数据集M和密钥n,并且将明文数据集M、密钥n和随机数集r存储在输入数据缓存110中。这里,随机数集r可以是由CPU 20产生并提供给FPGA芯片。或者,随机数集r也可以是由FPGA芯片根据所接收的明文数据集M来生成。随机数集r中的随机数的个数与明文数据集M中的明文数据的个数相同。此外,可选地,在一个示例中,每个随机数的长度可以与对应的明文数据的长度相同。在另一示例中,每个随机数的长度也可以与对应的明文数据的长度不同。
在块520,数据分发模块120从输入数据缓存110中读取明文数据集M、密钥n和随机数集r,并且将密钥n分发给参数计算模块130,将随机数集r分发给多个模幂计算引擎140-1到140-n,以及将明文数据集M分发给混淆加密引擎160。可选地,在一个示例中,数据分发模块120可以采用轮询方式来将随机数集r依次循环分发到多个模幂计算引擎140-1到140-n。
在块530,参数计算模块130根据密钥n,确定Paillier加密所需的第一参数N、第二参数RR、第三参数U0和第四参数np,并将密钥n以及第一到第四参数分发给多个模幂计算引擎140-1到140-n和混淆加密引擎160。这里,第一参数N是密钥n的平方,第二参数RR是蒙哥马利化参数,第三参数U0是整数1的蒙哥马利化,以及第四参数np是蒙哥马利模乘参数。这里,第二参数RR和第三参数U0是同时计算出的。此外,可选地,第四参数np的计算与第二参数RR和所述第三参数U0的计算可以并行执行。此外,可选地,第四参数np可以基于第一参数N的低比特数据计算出。
在块540,多个模幂计算引擎140-1到140-n使用随机数集r、密钥n和第一到第四参数进行并行模幂计算,并将模幂计算结果提供给模幂计算结果聚合模块150。这里,可选地,模幂计算过程可以采用基于蒙哥马利化域的平方乘计算和基于蒙哥马利化域的大数模乘计算实现。此外,可选地,在模幂计算采用基于蒙哥马利化域的大数模乘计算实现时,可以对所使用的位宽和流式级数进行配置。
在块550,模幂计算结果聚合模块150对模幂计算结果进行聚合处理,并将聚合处理结果提供给混淆加密引擎160。
在块560,混淆加密引擎160使用聚合处理结果、密钥n、第一到第四参数以及明文数据集M进行混淆加密,得到密文数据集。
在块570,混淆加密引擎160将所得到的密文数据集提供给输出数据缓存,以将密文数据集存储在输出数据缓存中,以供后续输出给CPU 20。
此外,可选地,在一个示例中,块560的过程可以被分解为多个计算过程,并且并行执行所分解出的多个计算过程。
此外,可选地,块530、540和560的过程可以并行执行。
如上参照图1到图5对根据本说明书的实施例的基于FPGA芯片实现Paillier加密的方法及FPGA芯片进行了描述。利用该Paillier加密实现方法,可以利用FPGA的高并行计算特性,提高Paillier加密算法的计算效率。此外,与GPU实现方案相比,利用FPGA芯片实现可以显著减少实现方案功耗,并且极大降低实现方案成本。
根据本说明书的一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-5述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (19)
1.一种基于FPGA芯片实现Paillier加密的方法,所述FPGA芯片包括数据分发模块、参数计算模块、多个模幂计算引擎、模幂计算结果聚合模块和混淆加密引擎,所述方法包括:
经由所述数据分发模块,将明文数据集M分发给所述混淆加密引擎,将密钥n分发给所述参数计算模块以及将随机数集r分发给所述多个模幂计算引擎,所述随机数集r中的随机数的个数与所述明文数据集M中的明文数据的个数相同;
在所述参数计算模块处,根据所述密钥n,确定Paillier加密所需的第一参数N、第二参数RR、第三参数U0和第四参数np,并将密钥n以及第一到第四参数分发给所述多个模幂计算引擎和所述混淆加密引擎,所述第一参数N是密钥n的平方,所述第二参数RR是蒙哥马利化参数,所述第三参数U0是整数1的蒙哥马利化,所述第四参数np是蒙哥马利模乘参数;
在所述多个模幂计算引擎处,使用所述随机数集r、密钥n和第一到第四参数进行并行模幂计算,并将模幂计算结果提供给所述模幂计算结果聚合模块;
在所述模幂计算结果聚合模块处,对所述模幂计算结果进行聚合处理,并将聚合处理结果提供给所述混淆加密引擎;以及
在所述混淆加密引擎处,使用所述聚合处理结果、所述密钥n、第一到第四参数以及所述明文数据集M进行混淆加密,得到密文数据集。
2.如权利要求1所述的方法,其中,所述第二参数RR和所述第三参数U0是同时计算出的。
3.如权利要求2所述的方法,其中,所述第四参数np的计算与所述第二参数RR和所述第三参数U0的计算并行执行。
4.如权利要求1所述的方法,其中,所述第四参数np基于所述第一参数N的低比特数据计算出。
5.如权利要求1所述的方法,其中,所述第四参数np的计算采用普通乘法计算实现。
6.如权利要求1所述的方法,其中,所述随机数集r以轮询的方式分发给所述多个模幂计算引擎。
7.如权利要求6所述的方法,其中,所述模幂计算采用基于蒙哥马利化域的平方乘计算和基于蒙哥马利化域的大数模乘计算实现。
8.如权利要求7所述的方法,其中,在所述模幂计算采用基于蒙哥马利化域的大数模乘计算实现时,所使用的位宽、流水级数和/或循环次数是可配置的。
9.如权利要求1所述的方法,其中,所述混淆加密被分解为多个并行执行的计算过程。
10.如权利要求1所述的方法,其中,所述参数计算模块、所述多个模幂计算引擎和所述混淆加密引擎的计算过程并行执行。
11.如权利要求1所述的方法,其中,所述FPGA芯片包括输入数据缓存模块和输出数据缓存模块,所述方法还包括:
将所述明文数据集、所述密钥n和所述随机数集r缓存在所述输入数据缓存模块中,以供所述数据分发模块读取来执行数据分发;和/或
将所述密文数据集缓存在所述输出数据缓存模块中。
12.如权利要求1所述的方法,其中,所述FPGA芯片包括随机数生成模块,所述方法还包括:
从外部设备接收所述明文数据集M和所述密钥n;以及
响应于接收到所述明文数据集M,生成所述随机数集r。
13.一种用于实现Paillier加密的FPGA芯片,包括:
数据分发模块,被配置为将明文数据集M分发给混淆加密引擎,将密钥n分发给参数计算模块以及将随机数集r分发给多个模幂计算引擎,所述随机数集r中的随机数的个数与所述明文数据集M中的明文数据的个数相同;
参数计算模块,被配置为根据所述密钥n,确定Paillier加密所需的第一参数N、第二参数RR、第三参数U0和第四参数np,并将密钥n以及第一到第四参数分发给多个模幂计算引擎和混淆加密引擎,所述第一参数N是密钥n的平方,所述第二参数RR是蒙哥马利化参数,所述第三参数U0是整数1的蒙哥马利化,所述第四参数np是蒙哥马利模乘参数;
多个模幂计算引擎,被配置为使用所述随机数集r、密钥n和第一到第四参数进行并行模幂计算,并将模幂计算结果提供给模幂计算结果聚合模块;
模幂计算结果聚合模块,被配置为对所述模幂计算结果进行聚合处理,并将聚合处理结果提供给所述混淆加密引擎;以及
混淆加密引擎,被配置为使用所述聚合处理结果、所述密钥n、第一到第四参数以及所述明文数据集M进行混淆加密,得到密文数据集。
14.如权利要求13所述的FPGA芯片,其中,所述参数计算模块并行执行所述第二参数RR、所述第三参数U0和所述第四参数np的计算过程。
15.如权利要求13所述的FPGA芯片,其中,所述参数计算模块基于所述第一参数N的低比特数据计算所述第四参数np。
16.如权利要求13所述的FPGA芯片,其中,所述数据分发模块以轮询的方式将所述随机数集r分发给所述多个模幂计算引擎。
17.如权利要求13所述的FPGA芯片,还包括:
输入数据缓存模块,被配置为缓存所述明文数据集、所述密钥n和所述随机数集r,以供所述数据分发模块读取来执行数据分发;和/或
输出数据缓存模块,被配置为缓存所述密文数据集,以供提供给外部设备。
18.如权利要求13所述的FPGA芯片,还包括:
随机数生成模块,被配置为响应于从外部设备接收所述明文数据集M和所述密钥n,根据所述明文数据集M生成所述随机数集r。
19.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得机器执行如权利要求1到12中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661420.XA CN111832050B (zh) | 2020-07-10 | 2020-07-10 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661420.XA CN111832050B (zh) | 2020-07-10 | 2020-07-10 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111832050A CN111832050A (zh) | 2020-10-27 |
CN111832050B true CN111832050B (zh) | 2021-03-26 |
Family
ID=72899757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010661420.XA Active CN111832050B (zh) | 2020-07-10 | 2020-07-10 | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111832050B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112070222B (zh) * | 2020-11-10 | 2021-01-29 | 深圳致星科技有限公司 | 用于联邦学习的处理装置、加速器及方法 |
CN112988237B (zh) * | 2021-04-21 | 2021-07-23 | 深圳致星科技有限公司 | 一种Paillier解密系统、芯片和方法 |
CN112865954B (zh) * | 2021-04-26 | 2021-07-06 | 深圳致星科技有限公司 | 用于Paillier解密的加速器、芯片及系统 |
CN112883408B (zh) * | 2021-04-29 | 2021-07-16 | 深圳致星科技有限公司 | 用于隐私计算的加解密系统和芯片 |
CN113946846B (zh) * | 2021-10-14 | 2022-07-12 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的密文计算装置及方法 |
CN114021734B (zh) * | 2021-10-14 | 2022-04-12 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的参数计算装置、系统及方法 |
CN113656823B (zh) * | 2021-10-14 | 2022-02-08 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的密态加法计算装置及系统 |
CN113900828B (zh) * | 2021-12-08 | 2022-03-04 | 深圳致星科技有限公司 | 联邦学习专用处理器、联邦学习处理芯片及芯片 |
CN115314211B (zh) * | 2022-08-08 | 2024-04-30 | 济南大学 | 基于异构计算的隐私保护机器学习训练与推理方法及系统 |
CN115459898B (zh) * | 2022-08-23 | 2024-09-17 | 西安电子科技大学 | 一种基于GPU的Paillier同态加解密计算方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786580A (zh) * | 2017-12-12 | 2018-03-09 | 南京航空航天大学 | 基于云计算平台的Paillier加密方法 |
CN109379177A (zh) * | 2018-12-26 | 2019-02-22 | 济南浪潮高新科技投资发展有限公司 | 一种同态密文计算加速逻辑系统及实现方法 |
CN111178538A (zh) * | 2019-12-17 | 2020-05-19 | 杭州睿信数据科技有限公司 | 垂直数据的联邦学习方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10680818B2 (en) * | 2018-04-12 | 2020-06-09 | Nxp | Encryption schemes with additional properties |
CN109284085B (zh) * | 2018-09-25 | 2023-03-31 | 国网湖南省电力有限公司 | 一种基于fpga的高速模乘和模幂运算方法及装置 |
CN109525386B (zh) * | 2018-11-29 | 2021-05-18 | 东北大学 | 一种基于Paillier同态加密私有交集和的方法 |
CN110601814B (zh) * | 2019-09-24 | 2021-08-27 | 深圳前海微众银行股份有限公司 | 联邦学习数据加密方法、装置、设备及可读存储介质 |
CN111177762B (zh) * | 2019-12-30 | 2022-11-08 | 北京同邦卓益科技有限公司 | 一种数据处理方法、装置、服务器及联邦学习系统 |
-
2020
- 2020-07-10 CN CN202010661420.XA patent/CN111832050B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786580A (zh) * | 2017-12-12 | 2018-03-09 | 南京航空航天大学 | 基于云计算平台的Paillier加密方法 |
CN109379177A (zh) * | 2018-12-26 | 2019-02-22 | 济南浪潮高新科技投资发展有限公司 | 一种同态密文计算加速逻辑系统及实现方法 |
CN111178538A (zh) * | 2019-12-17 | 2020-05-19 | 杭州睿信数据科技有限公司 | 垂直数据的联邦学习方法及装置 |
Non-Patent Citations (4)
Title |
---|
FPGA-Based High-Performance Parallel Architecture for Homomorphic Computing on Encrypted Data;Sujoy Sinha Roy et al.;《2019 IEEE International Symposium on High Performance Computer Architecture (HPCA)》;20190328;全文 * |
High-Speed ASIC Implementation of Paillier Cryptosystem with Homomorphism;Chun Cai et al.;《2019 IEEE 13th International Conference on ASIC (ASICON)》;20200206;全文 * |
同态加密在加密机器学习中的应用研究综述;崔建京等;《计算机科学》;20180430;第45卷(第4期);全文 * |
面向数据共享交换的联邦学习技术发展综述;王亚坤;《无人系统技术》;20200401;第2卷(第6期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111832050A (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111832050B (zh) | 用于联邦学习的基于FPGA芯片实现的Paillier加密方案 | |
Fritzmann et al. | Efficient and flexible low-power NTT for lattice-based cryptography | |
KR20210130196A (ko) | 양자-보안 사물 인터넷을 위한 설정가능한 래티스 암호 프로세서 및 관련된 기법들 | |
CN112152785A (zh) | 基于sha2和sha3组合的xmss硬件加速器 | |
CN112148437B (zh) | 用于联邦学习的计算任务加速处理方法、装置及设备 | |
Massolino et al. | A compact and scalable hardware/software co-design of SIKE | |
CN106685663B (zh) | 一种环域上误差学习问题的加密方法及电路 | |
CN112865954B (zh) | 用于Paillier解密的加速器、芯片及系统 | |
CN107004084B (zh) | 用于加密操作的乘法掩码 | |
Su et al. | Fpga-based hardware accelerator for leveled ring-lwe fully homomorphic encryption | |
CN112070222B (zh) | 用于联邦学习的处理装置、加速器及方法 | |
US20220006630A1 (en) | Low overhead side channel protection for number theoretic transform | |
US11496295B2 (en) | Non-transitory computer-readable medium storing program code, decryption device, and communication system including encryption device and decryption device | |
US11902432B2 (en) | System and method to optimize generation of coprime numbers in cryptographic applications | |
JP2002229445A (ja) | べき乗剰余演算器 | |
CN111712816B (zh) | 使用密码蒙蔽以用于高效地使用蒙哥马利乘法 | |
CN110224829B (zh) | 基于矩阵的后量子加密方法及装置 | |
CN110266481A (zh) | 基于矩阵的后量子加、解密方法与解密装置 | |
WO2023141934A1 (en) | Efficient masking of secure data in ladder-type cryptographic computations | |
CN113467752B (zh) | 用于隐私计算的除法运算装置、数据处理系统及方法 | |
JP2004125891A (ja) | べき乗剰余演算器 | |
Güneysu et al. | Special-purpose hardware for solving the elliptic curve discrete logarithm problem | |
US11399017B1 (en) | Quantum and classical cryptography (QCC) for data encryption and data decryption | |
JP2004078053A (ja) | 暗号化装置 | |
WO2019174263A1 (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 |