CN116488788A - 全同态加密算法的硬件加速器、同态加密方法及电子设备 - Google Patents

全同态加密算法的硬件加速器、同态加密方法及电子设备 Download PDF

Info

Publication number
CN116488788A
CN116488788A CN202310378193.3A CN202310378193A CN116488788A CN 116488788 A CN116488788 A CN 116488788A CN 202310378193 A CN202310378193 A CN 202310378193A CN 116488788 A CN116488788 A CN 116488788A
Authority
CN
China
Prior art keywords
module
homomorphic encryption
encryption algorithm
operator
data
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.)
Pending
Application number
CN202310378193.3A
Other languages
English (en)
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN202310378193.3A priority Critical patent/CN116488788A/zh
Publication of CN116488788A publication Critical patent/CN116488788A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Advance Control (AREA)

Abstract

本公开提供一种全同态加密算法的硬件加速器、同态加密方法及电子设备,硬件加速器包括核心计算模块;核心计算模块包括多种核心算子模块,其中,一种核心算子模块用于实现一种基础计算,所述基础计算为:多种同态加密算法共用的、组合实现全部同态加密算法的计算;所述内存模块,用于接收和存储主机发送的待计算数据和同态加密算法类型;内存控制器,用于根据核心计算单元的计算需求,将待计算数据和同态加密算法类型从内存模块传输至缓存模块;核心计算模块,用于从缓存模块中获取待计算数据和同态加密算法类型,并针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算。

Description

全同态加密算法的硬件加速器、同态加密方法及电子设备
技术领域
本公开涉及计算机技术领域,尤其涉及一种全同态加密算法的加速器、同态加密方法及电子设备。
背景技术
利用同态加密算法对隐私数据进行处理,是目前最有效的隐私数据保护方法之一。在具体的应用场景中,用户可以将自己的隐私数据,如财务记录、病史、个人隐私习惯等隐私数据加密后发送给第三方服务商,第三方服务商直接对加密后的隐私数据进行同态加密计算处理得到密文的计算结果。然后将密文的计算处理结果返回给用户,用户对密文计算处理结果进行解密从而得到明文的计算结果。在整个过程中,用户的隐私数据对第三方服务商来说是可用但不可见的,因此,既让第三方服务商对用户的隐私数据进行了计算处理,又不会使用户的隐私数据泄露给第三方服务商。
由于第三方服务商需要对加密后的隐私数据进行同态加密计算,并且通常会涉及到各种复杂的计算,因此,第三方服务商需要在自己的服务器上部署同态加密硬件加速器来处理各种计算,然而目前由于同态加密硬件加速器上可编程硬件资源的限制,目前的同态加密硬件加速器通常无法实现全部的同态加密算法,进而无法应对全部的同态加密场景。
发明内容
本公开的目的是提供一种全同态加密算法的硬件加速器、同态加密方法及电子设备,以解决的问题目前的同态加密硬件加速器无法实现全同态加密算法的问题。
根据本公开的一个方面,提供一种全同态加密算法的硬件加速器,所述硬件加速器包括内存模块、内存控制器、缓存模块以及核心计算模块;所述核心计算模块包括多种核心算子模块,其中,一种核心算子模块用于实现一种基础计算,所述基础计算为:多种同态加密算法共用的、组合实现全部同态加密算法的计算;
所述内存模块,用于接收和存储主机发送的待计算数据和同态加密算法类型;
内存控制器,用于根据核心计算单元的计算需求,将待计算数据和同态加密算法类型从内存模块传输至缓存模块;
核心计算模块,用于从缓存模块中获取待计算数据和同态加密算法类型,并针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算。
根据本公开的第二个方面,提出一种同态加密方法,应用于全同态加密算法的硬件加速器,所述硬件加速器包括内存模块、内存控制器、缓存模块以及核心计算模块;所述核心计算模块包括多种核心算子模块,其中,一种核心算子模块用于实现一种基础计算,所述基础计算为:多种同态加密算法共用的、组合实现全部同态加密算法的计算;所述方法包括:
所述内存模块接收和存储主机发送的待计算数据和同态加密算法类型;
内存控制器根据核心计算单元的计算需求,将待计算数据和同态加密算法类型从内存模块传输至缓存模块;
核心计算模块从缓存模块中获取待计算数据和同态加密算法类型,并针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算。
根据本公开的第三个方面,提出一种电子设备,包括第一方面所述的全同态加密算法的硬件加速器。
采用本申请提出的一种全同态加密算法的硬件加速器、同态加密方法及电子设备,将全部同态加密算法拆分出多种共用的基础计算,在硬件加速器基于可编程硬件资源实例化这些基础计算,形成多种核心算子模块,从而在需要执行某种同态加密算法时,即可以对多种核心算子模块进行组合调用,从而能够实现全部的同态加密算法。相对于将全部同态加密算法的硬件实例化在硬件加速器上,仅将各种核心算子模块实例化在硬件加速器上,可以极大的减少对硬件加速器上可编程硬件资源的使用。进而,基于本申请提出的全同态加密算法的硬件加速器在不需要消耗较多的可编程硬件资源的情况下,就可以使硬件加速器处理全部的同态加密算法,进而可以满足各种同态加密算法的使用场景。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1为本公开一个实施例提供一种的全同态加密算法的硬件加速器的结构示意图;
图2为本公开一个实施例提供的一种同态加密算法与基本操作的对应关系示意图;
图3为本公开一个实施例提供的另一种的全同态加密算法的硬件加速器的结构示意图;
图4为本公开一个实施例提供的一种基于本申请的硬件加速器实现NTT/INTT操作的流程示意图;
图5为本公开一个实施例提供的一种基于本申请的硬件加速器实现自同构操作的流程示意图;
图6为本公开一个实施例提供的一种MM/MA的电路结构示意图;
图7为本公开一个实施例提供的一种RNSconv的电路结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
近年来,同态加密算法发展迅速,虽然目前已经提出了一系列的同态加密算法,但其理论和实际应用之间仍有很大的差距。即使使用高度优化的同态加密算法库,同态加密算法应用程序在CPU上的运行速度仍然比未加密的应用程序慢10,000到100,000倍。由于同态加密算法所使用的密文大小要比文明大得多,并且对于密文的计算强度要比对明文的计算强度大几个数量级,因此,利用并不擅长计算的CPU来完成同态加密算法是十分低效的,并且也会严重影响CPU对其他事务的处理能力。
因此,近年来的研究致力于设计特定的硬件加速器,将同态加密算法涉及的计算从CPU中解放出来,以达到加速同态加密算法的目的。根据所采用的硬件,它们可以分为三类:基于GPU(graphics processing unit,图形处理器)的硬件加速器、基于FPGA(FieldProgrammable Gate Array)的硬件加速器以及基于ASIC(Application SpecificIntegrated Circuit,专用集成电路)的硬件加速器。
基于GPU的硬件加速器与CPU相比达到一定程度的加速,但是GPU作为一种通用架构,并不是专门为同态加密算法设计的,并不能实现和支持全类型的同态加密算法,同时相比于其他类型的硬件加速器,其功耗也更大。
基于ASIC的硬件加速器,在理论上与CPU相比也可以达到一定程度的加速,但是,目前对ASIC的硬件加速器的研究还仅仅停留在模拟阶段。
FPGA由于本身具备可编程硬件资源,因此可以利用FPGA来实现特定的同态加密算法,并且相对于CPU而言,计算速度也有明显提升。但是,由于同态加密算法中各种算法都较为复杂,需要较多的可编程硬件资源支持,而FPGA上的硬件资源有限,因此,目前一个基于FPGA的硬件加速器通常仅能实现较少的特定的同态加密算法。
针对上述问题,本申请提出一种基于FPGA的全同态加密算法的硬件加速器。将全部同态加密算法拆分出多种共用的基础计算,在硬件加速器基于可编程硬件资源实例化这些基础计算,形成多种核心算子模块,从而在需要执行某种同态加密算法时,即可以对多种核心算子模块进行组合调用,从而能够实现全部的同态加密算法。又因为,相对于将全部同态加密算法的硬件实例化在FPGA上,仅将各种核心算子模块实例化在FPGA上,可以极大的减少对FPGA上可编程硬件资源的使用。进而,目前的FPGA上的可编程硬件资源均可以满足本申请提出的硬件加速器的设计。即本申请提出的全同态加密算法的硬件加速器在不需要消耗FPGA上较多的可编程硬件资源的情况下,就可以使FPGA处理全部的同态加密算法,进而可以满足各种同态加密算法的使用场景。
如图1所示,为本申请提出的一种全同态加密算法的硬件加速器的结构示意图。
如图所示,该硬件加速器包括内存模块、内存控制器、缓存模块以及核心计算模块;所述核心计算模块包括多种核心算子模块,其中,一种核心算子模块用于实现一种基础计算,所述基础计算为:多种同态加密算法共用的、组合实现全部同态加密算法的计算。
其中,多种核心算子模块具体可以包括:模加算子模块、模乘算子模块、NTT/INTT(快速数论变换/逆快速数量变换)算子模块、自同构算子模块以及取模算子模块,采用上述核心算子模块可以实现全部的同态加密算法类型,包括:同态加法、同态乘法、缩放、秘钥切换、旋转、自举、Modup和Moddown。
下面对各种同态加密算法可拆分出基本计算进行说明。
具体的,同态加法:同态加法(HAdd)有两种情况:密文-明文加法和密文-密文加法。密文ct0=(ct0,0,ct0,1)与明文m相加的结果为(ct0,0+m,ct0,1);两个密文ct0=(ct0,0,ct0,1)和ct1=(ct1,0,ct1,1)的加法结果为(ct0,0+ct1,0,ct0,1+ct1,1),其中运算符“+”表示两个多项式的对应位置元素加法。由于同态加密是在“多项式环”上进行的,因此密文相加的结果需要取模。例如,ct0,0+ct1,0=(ct0,0[i]+ct1,0[i])(mod q),(ct0,0,ct1,0∈Rq),其中q是模数。
很明显,同态加法涉及到两个步骤,加法和取模,所以本申请将同态加法提取出的基本计算为模加(ModAdd简称MA)。
同态乘法:与HAdd相似,同态乘法也包含两种类型,密文-明文乘法记为PMult,密文-密文乘法记为CMult。密文和明文都是多项式。PMult直接将ct0和明文m相乘得到结果(ct0,0иm,ct0,1иm)。而计算CMult(ct0,ct1)则要求t=(d0,d1,d2)mod q=(ct0,0·ct1,0,ct0,0·ct1,1+ct0,1·ct1,0,ct0,1·ct1,1+ct0,1·ct1,0,ct0,1·ct1,1)mod q。其中,rlk为重线性化密钥,表示为rlk=(b,a)∈R2pq=(-a·s+e+p·s2,a)modp·q,其中s为密钥,p为依赖于rlk设置的特殊整数。对应的p-1是p在模pq下的逆元,表示为p-1·p≡1(modpq)。
PMult和CMult涉及大量的多项式乘法,即ct0,0·ct1,0或-a·s。在进行乘法运算之前,需要先将每个多项式的系数通过NTT转换为“点值”表示。然后,这些点值做乘法和取模操作。然后,通过INTT将结果转换回系数表示。因此,本申请将同态乘法提取出的基本计算为三个:快速数论变换/逆快速数论变换算子模块(NTT/INTT)、模乘(ModMult,简称MM)和模加MA。
缩放(Rescale):这个操作不能通过简单的除法来实现,因为多项式系数已经经过中国余数定理分解成多个小整数,即RNS分量。缩放操作它也包含三个基本计算:MA、MM和NTT/INTT。
密钥切换(keyswitch):该操作使用了密文上一个额外的被称为keyswitchkey的秘钥。在经典的算法中,密钥切换中有三个子操作:RNSconv,Modup,Moddown,而这三个子操作形式如下公式(1)-(3)。
Moddown(ab,bc):(ab,bc)→(bc-RNSconv(ab,ac))*[P-1]c, (2)
Modup(ab):ab→(ab,RNSconv(ab,ac)). (3)
从这三个子运算中,我们可以看到,每一个子运算也是由一系列MA和MM组成,点值变换也需要NTT/INTT,所以本申请将该密钥切换操作的提取出的基本计算为:MA,MM,NTT/INTT。
旋转(Rotate):这个操作的作用是旋转密文,在一些与AI相关的隐私计算中非常常用,比如联邦学习。它可以将密文中加密的明文向量旋转指定的步长。旋转操作包含两个子操作:首先建立当前密文与新密文之间的“索引映射”关系,然后,做密钥切换操作使得改变后的密文能够用原始密钥进行正确解密。
旋转中的秘钥切换操作与前面的操作相同。索引映射操作将密文多项式的当前索引i映射为i·k模N,如公式(4)所示,其中k是与旋转步长相关的参数,N是多项式长度,sgn是两个不同情况下的符号。每次调用rotate时,都需要做这种映射操作。这种操作被称为“自同构”。
自举(Bootstrapping):对于需要较深乘法深度的同态加密算法应用,该操作使用加密的密钥进行同态解密,将密文刷新到较低的噪声级别。Bootstrapping是同态加密算法中最复杂的操作,本申请的硬件加速器采用了最先进的自举算法,该算法包含的基础计算包括:PMult、CMult、HAdd、keyswitch和Rescale操作。
Bootstrapping由许多其他的基本运算组成,因此自举操作提取出的基础计算包括MA、MM、NTT/INTT、自同构。
多种基础计算均涉及取模计算,如NTT/INTT将点值取模作为最后一步,模乘也需要将乘法的结果做取模。因此,本申请将取模也作为一个单独的核心算子实例化,称为SBT。如图2所示,是本申请提出的全同态加密算法的硬件加速器中,不同同态加密算法与基础计算基本计算的对应关系。
基于如图1所示出的硬件加速器,下面对该硬件加速器中的各个模块执行的操作进行说明。
内存模块,用于接收和存储主机发送的待计算数据和同态加密算法类型;其中,主机可以是第三方服务商服务器上的中央处理器,其可以将需要执行同态加密算法的待计算数据,和所需执行的同态加密算法类型通过PCIE接口从主机的存储器如DDR中传输到该内存模块中,该内存模块对接收到的数据进行存储;
内存控制器,用于根据核心计算单元的计算需求,将待计算数据和同态加密算法类型从内存模块传输至缓存模块;
具体的,内存控制器可以在接收到核心计算单元的发送的计算请求后,确定核心计算单元的具备计算需求;此外,内存控制器还可以是在接收到主机存储的数据后,确定核心计算单元当前具有计算需求。缓存控制器在确定核心计算单元当前具有计算需求后可以对内存模块进行读取,将预先存储的待计算数据和同态加密算法类型从内存模块传输至缓存模块,可以理解的是,缓存模块与内存模块相比读取速度更快,因此将数据读取到缓存模块可以使核心计算单元能够从缓存中快速获取数据并进行计算。
核心计算模块,用于从缓存模块中获取待计算数据和同态加密算法类型,并针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算。
具体的如上述内容可知,各种同态解密算法可被拆分为各种基础计算的组合,因此核心计算模块,可以组合调用本地多种核心算子模块进行多种基础计算以实现同态加密算法类型对应的同态加密计算。
例如,需要执行的同态加密算法类型为自举或旋转,根据上述图2以及相关部分可知自举或旋转操作,涉及的基本计算包括模加、模乘、NTT/INTT、自同构以及取模,因此,核心计算模块,具体用于组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块、自同构算子模块以及取模算子模块,对所述待计算数据执行自举或旋转操作。
又例如,同态加密算法类型为模乘、密钥切换或缩放;根据上述图2以及相关部分可知,模乘、密钥切换或缩放操作具体涉及到的基本计算包括模加、模乘、NTT/INTT和取模,因此核心计算模块,具体用于组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块以及取模算子模块,对待计算数据执行模乘、密钥切换或缩放操作。
再例如,同态加密算法类型为Modup或者Moddown,根据上述图2以及相关部分可知Modup或者Moddown具体涉及到的基本计算包括模加、模乘和取模运算,因此,核心计算模块,具体用于组合调用本地的模加算子模块、模乘算子模块对所述待计算数据执行Modup或者Moddown操作。
上述具体的组合过程,可以参照各个操作的算法实现以及上文描述的提取出核心算子的内容,这里不进行详述。
采用上述方式,将全部同态加密算法拆分出多种共用的基础计算,在硬件加速器基于可编程硬件资源实例化这些基础计算,形成多种核心算子模块,从而在需要执行某种同态加密算法时,即可以对多种核心算子模块进行组合调用,从而能够实现全部的同态加密算法。相对于将全部同态加密算法的硬件实例化在FPGA上,仅将各种核心算子模块实例化在FPGA上,可以极大的减少对FPGA上可编程硬件资源的使用。进而,基于本申请提出的全同态加密算法的硬件加速器,在不需要消耗FPGA上较多的可编程硬件资源的情况下,就可以使硬件加速器处理全部的同态加密算法,进而可以满足各种同态加密算法的使用场景。
如图3所示,为在一个具体的实施方式中的,本申请提出的一种基于FPGA的全同态加密算法的硬件加速器的结构示意图。
如图所示,其中的HBM(High BandwidthMemory高带宽存储器)即为内存模块,在一个具体的实施方式中,该HBM可以包括两个HBM2栈,每个栈有16个通道,每个通道是64位宽度,比特率为1800mbps,因此提供了460GB/s的带宽。可以理解的是,本申请提出的基于FPGA的全同态加密算法的硬件加速器上的内存模块还可以是其他类型的存储器,本申请对此不进行限定。图中的Mem controller即为内存控制器,用于实现对内存模块的读写。图中的Register file(寄存器域)和BRAMS(FPGA上特有的缓存模块)组成缓存模块。核心计算单元具体包括:模加算子模块(MA)、模乘算子模块(MA)、快速数论变换/逆快速数量变换算子模块(NTT/INTT)、自同构算子模块以及取模算子模块(SBT)。如图所示,并行度的大小设置为C=512,与缓存的数据宽度相匹配。而缓存直接连接到HBM内存控制器,数据在必要时写回HBM并在需要时提供给指定的核心计算模块。由于所有核心计算单元都是完全流水化执行的,理论上吞吐量可能达到C=512数据/周期。本申请提出的硬件加速器还可以将数据宽度限制在32位,从而避免了处理大位宽数据带来的硬件开销。
NTT/INTT和自同构作为两种比较复杂的计算,需要大量的计算和数据搬运。而且其复杂的计算模式还会影响流水线阶段的片上数据访问和关键路径延迟。
因此,在一个实施方式中,本公开提出采用以下方式对NTT/INTT进行优化:
NTT/INTT的基本计算包括一系列递归的“累加、模”运算,即(a1+a2·w1)对q取模,其中q为模数;a1和a2是一个高次多项式的两个系数,w1是旋转因子。由于取模的代价很高,因此本申请采用基于基数的FFT思想来优化NTT/INTT核心算子。本申请将基数K设置为3,实现融合旋转因子后的NTT/INTT运算,从而将传统的24次取模运算,变为融合后的8次取模运算,大大减少了取模次数,同时减少了迭代次数。将参数k=3,可以实现最佳性能和资源使用。传统的NTT/INTT运算以8个操作数作为输入,需要log28=3次迭代,共24个TAMs。然而,本申请提出的融合旋转因子后的NTT/INTT运算只需要8个融合的TAMs。
当设k为3,多项式次数为4096(212)时,所需的迭代次数为4(log24096/k),而不是12(log24096)。而在这种情况下,传统的NTT/INTT运算将偏移2iter-1个索引来访问每个阶段的每个输入数据,而融合后的NTT/INTT运算将偏移2(iter-1)иk。为了达到最高的流水执行效率,输入数据应该在每个阶段开始时准备好。在第一次迭代中,NTT核心加载索引为0~7,8~15,…4088~4095的操作数;然后,在第二次迭代中,需要的数据索引为0、8、16、24、32、40、48、56;在第三次迭代中,索引偏移量为又变为64,因此需要及时提供对应偏移量的数据从而满足NTT/INTT的流水化执行。
融合旋转因子后的NTT/INTT运算包括三次迭代,在每次迭代中,以8个操作数为一组,输入若干组操作数,或者以8个操作数为一组,输出若干组操作数;结合图3示出的硬件加速器对该NTT/INTT运算进行实现时,该缓存模块可以包括BRAMS,其中BRAMS包括若干个数据行;在基于本申请提出的硬件加速器对融合旋转因子后的NTT/INTT运算进行实现时,具体可以是:
核心计算模块,在调用NTT/INTT算子模块时,具体用于在第一次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为1,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行;
在第二次迭代时,在一个时钟周期,从所述BRAMS的连续的8个数据行中,并行获取索引值间隔为8的8个操作数至NTT/INTT算子模块;
在第三次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为64,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行。
采用上述方式,可以使NTT/INTT核心算子模块全流水化执行,不会因为数据读写无法满足要求而暂停流水线从而影响效率,即可以充分利用硬件加速器上的带宽。
如图4所示,显示了第一次迭代的输出数据和第二次迭代的输入数据的存取方式。第一次迭代时,NTT/INTT核心算子模块数据索引间隔为1,而第二次迭代时所需要的数据索引间隔为8。由于单个BRAMS数据行在同一时刻只能读写一个数据,那么若要在一个读写时钟周期将间隔为1的8个数据存入8个BRAM数据行并在第二次迭代读取时也能够在一个读写周期读出间隔为8的8个数据,就需要在数据写入时将数据按组旋转存入,即后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行,如图中0-7和8-15等,后一组是旋转错位存入的,因此数据顺序为15,8-14,后面以此类推。通过这种方式,在第二次迭代进行读取时就能在一个读写周期读出间隔为8的8个数据,如图中标注的0,8,16,24…等即为间隔为8的8个数据。
在一个实施方式中,本公开提出采用以下方式对自同构进行优化:
自同构是在长多项式上做映射,这不利于硬件设计。因此,本申请提出将N个元素的向量分割成几个子向量,将映射域从N减少到N/C,其中C是分割后每个子向量的长度(我们实现中的C=512)。用(i,j)表示新索引,其中j={(i·C+j)·k}mod Nmod C。由于N=C·R,我们可以得到/> j={(i·C+j)·k}mod C=(j·k)mod C。根据引理,有/> 这样,自同构的I坐标的映射可以通过两次行映射来实现,即/>和/> 同样,J坐标的映射也可以通过类似的方式来实现。
这种优化的好处有两方面。首先,将原自同构需要在整个向量上逐个元素映射,转化为多个小向量之间的映射,通过增加映射粒度,可以增加映射的并行度。其次,子向量的并行读写简化了数据路径,这将大大提高加速器的性能和设计灵活性。
其中,上述提到的引理为:如果其中a、C和R是正整数。则,/>证明:已知正整数q和任意整数n,有n=k·q+s,其中k,s为整数且0≤s<q。设a=k1·C+s1,其中k1=k2·R+s2,0≤s1<C,0≤s2<R,将k1代入a,得到a=k2·R·C+s2·C+s1。然后将a代入X,得到/>
在基于图3所示出的硬件加速器对该优化后的自同构进行实现时,具体的可以在自同构或者缓存模块配置括映射缓存区;
所述核心计算模块,在调用所述自同构算子模块时,具体用于将待计算的长向量均分为包括若干数据的若干个子向量;
针对每个子向量,将该子向量中的每个数据分别并行的存储在BRAMS的若干行中;
在所述映射缓存区中,根据第一行映射公式和第二行映射公式,对所述若干子向量进行行映射,得到行映射结果;
针对行映射结果,利用列映射公式进行列映射,得到所述若干子向量的映射结果,从而得到所述待计算的长向量的映射结果。
更具体而言,在一个时钟周期,可以针对一个子向量中的若干数据,根据第一行映射公式,将所述若干数据并行的读取到映射缓存区的第一映射位置,以在映射缓存区存储第一次行映射后的各子向量的数据;
针对自同构算子模块的映射缓存区的数据,利用第二行映射公式,将映射缓存区中的数据存储到映射缓存区的数据的第二映射位置,以得到第二次行映射后的各子向量的数据;
针对自同构算子模块的映射缓存区的数据,在同一时钟周期,将自同构算子模块的映射缓存区中的每一列的数据并行写回至BRAMS的若个数据行中;其中,每一周期搬运的数据以错位存储的方式存储在BRAM中,以实现将原本同一行的数据存储在BRAM的不同行中;
针对BRAM中不同行的数据,根据列映射公式,将所述不同行的数据并行的读取到自同构算子模块的映射缓存区的第三映射位置,以得到映射后的长向量。
如图5所示出的例子是将2048长度的向量数据分割成4个子向量进行映射。一共分为4步。
第一步,对子向量做行间映射,即将第i行数据映射到i*k mod R行,其中R=4,k=3。所以,从图中可以看到,第0行,也就是图中的第0列,灰色标注的1-512,将会移动到0*3mod 4=0列处,保持不变。后面的列也做同样的计算和移动。
第二步,需要在第一步的结果上继续做行坐标的变换,即将(i,j)位置的数据移动到(i+j*k/C mod R,j)处,这一步横坐标i的变化与纵坐标j有关系,而纵坐标j不变。因此,这一步的行变换需要根据每个元素所在的列坐标做计算并平移,而每个BRAM块的数据是在同一列,即j相同,因此每个BRAM块中的数据的平移步长相同,只需要对每一个BRAM块中的数据根据j*k/C modR的结果做循环移位即可。
第三步的作用是行列变换,因为在做完行的映射变换之后,需要对列做变换,而每一列数据处在同一个BRAM数据行,无法同时读取。因此,需要将数据按对角线存放,这样就能将每列数据分布到不同的BRAM数据行中,从而实现在一个时钟周期中读写整列的数据。
第四步是在第三步的基础上做类似第一步的变换,即将第i列数据映射到i*kmodC列。
这样设计的好处是将原本只能单个数据的进行位置映射的自同构步骤转变成了子向量间的映射,提高了该操作的并行性,充分利用硬件加速器上的带宽。
下面对本公开提出的硬件加速器中的核心计算单元的实现进行说明。
ModAdd运算的目的是将两个多项式元素相加并得到取模后的结果。由于每个输入多项式都预先做了取模运算,其值小于模数q。因此,当相加的结果大于q时,可以通过比较并减去q来完成ModAdd。如公式(5):
与ModAdd相比,ModMult较为复杂。假设需要计算a*b mod q的结果,需要首先计算result=aиb,并用该结果除以模数q得到商p。最后拿结果result减去pиq就是最终的ModMult结果。图6是MA和MM的硬件实现。
RNSconv。它用于加速的秘钥切换操作,该计算单元由Modup和Moddown操作共享。Modup包括向量标量乘法和累加,而Moddown是向量减法和向量标量乘法的组合。我们的设计不包括向量标量计算单元,但同样的功能可以使用MA和MM核心来实现。具体来说,RNSconv是通过MM和MA计算核心的级联以及相应的控制逻辑来实现的。硬件设计细节如图7所示。它有两个数据路线。第一个是MA核心从输入缓冲区中取出两组数据,并将结果作为MM核心的输入,完成Modup。另一个则与之相反。
本公开还提出一种同态加密的方法,应用于述全同态加密算法的硬件加速器,所述硬件加速器包括内存模块、内存控制器、缓存模块以及核心计算模块;所述核心计算模块包括多种核心算子模块,其中,一种核心算子模块用于实现一种基础计算,所述基础计算为:多种同态加密算法共用的、组合实现全部同态加密算法的计算;方法包括:
内存模块接收和存储主机发送的待计算数据和同态加密算法类型;
内存控制器根据核心计算单元的计算需求,将待计算数据和同态加密算法类型从内存模块传输至缓存模块;
核心计算模块从缓存模块中获取待计算数据和同态加密算法类型,并针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算。
在一个实施例中,多种核心算子模块包括模加算子模块、模乘算子模块、快速数论变换/逆快速数量变换算子模块、自同构算子模块以及取模算子模块;
所述同态加密算法类型包括:同态加法、同态乘法、缩放、秘钥切换、旋转、自举、modup和moddown。
在一个实施例中,所述同态加密算法类型为自举或旋转;所述核心计算模块针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算,包括:
所述核心计算模块,组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块、自同构算子模块以及取模算子模块,对所述待计算数据执行自举或旋转计算。
在一个实施例中,所述同态加密算法类型为模乘、密钥切换或缩放;
所述核心计算模块针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算,包括:
所述核心计算模块组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块以及取模算子模块,对所述待计算数据执行模乘、密钥切换或缩放计算。
在一个实施例中,所述NTT/INTT算子模块用于实现融合旋转因子后的NTT/INTT运算,所述融合旋转因子后的NTT/INTT运算包括三次迭代,在每次迭代中,以8个操作数为一组,输入若干组操作数,或者以8个操作数为一组,输出若干组操作数;所述缓存模块包括BRAMS,其中BRAMS包括若干个数据行;
所述核心计算模块,在调用NTT/INTT算子模块时,具体用于在第一次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为1,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行;
在第二次迭代时,在一个时钟周期,从所述BRAMS的连续的8个数据行中,并行获取索引值间隔为8的8个操作数至NTT/INTT算子模块;
在第三次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为64,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行。
在一个实施例中,所述缓存模块包括BRAMS,其中BRAMS包括若干个数据行;所述自同构算子模块包括映射缓存区;
所述核心计算模块,在调用所述自同构算子模块时,具体用于将待计算的长向量均分为包括若干数据的若干个子向量;
针对每个子向量,将该子向量中的每个数据分别并行的存储在BRAMS的若干行中;
在所述映射缓存区中,根据第一行映射公式和第二行映射公式,对所述若干子向量进行行映射,得到行映射结果;
针对行映射结果,利用列映射公式进行列映射,得到所述若干子向量的映射结果,从而得到所述待计算的长向量的映射结果。
本公开实施例还提供一种电子设备,该电子设备包括全同态加密算法的硬件加速器。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
以上尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改,本领域的技术人员在不脱离本公开的精神和范围的前提下,做出的变更和修改也应视为本公开实施例的保护范围。

Claims (13)

1.一种全同态加密算法的硬件加速器,其特征在于,所述硬件加速器包括内存模块、内存控制器、缓存模块以及核心计算模块;所述核心计算模块包括多种核心算子模块,其中,一种核心算子模块用于实现一种基础计算,所述基础计算为:多种同态加密算法共用的、组合实现全部同态加密算法的计算;
所述内存模块,用于接收和存储主机发送的待计算数据和同态加密算法类型;
内存控制器,用于根据核心计算单元的计算需求,将待计算数据和同态加密算法类型从内存模块传输至缓存模块;
核心计算模块,用于从缓存模块中获取待计算数据和同态加密算法类型,并针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算。
2.根据权利要求1所述的硬件加速器,其特征在于,所述多种核心算子模块包括模加算子模块、模乘算子模块、NTT/INTT算子模块、自同构算子模块以及取模算子模块;
所述同态加密算法类型包括:同态加法、同态乘法、缩放、秘钥切换、旋转、自举、Modup和Moddown。
3.根据权利要求2所述的硬件加速器,所述同态加密算法类型为自举或旋转;
所述核心计算模块,具体用于组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块、自同构算子模块以及取模算子模块,对所述待计算数据执行自举或旋转计算。
4.根据权利要求2所述的硬件加速器,所述同态加密算法类型为模乘、密钥切换或缩放;
所述核心计算模块,具体用于组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块以及取模算子模块,对所述待计算数据执行模乘、密钥切换或缩放计算。
5.根据权利要求2所述的硬件加速器,所述NTT/INTT算子模块用于实现融合旋转因子后的NTT/INTT运算,所述融合旋转因子后的NTT/INTT运算包括三次迭代,在每次迭代中,以8个操作数为一组,输入若干组操作数,或者以8个操作数为一组,输出若干组操作数;所述缓存模块包括BRAMS,其中BRAMS包括若干个数据行;
所述核心计算模块,在调用NTT/INTT算子模块时,具体用于在第一次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为1,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行;
在第二次迭代时,在一个时钟周期,从所述BRAMS的连续的8个数据行中,并行获取索引值间隔为8的8个操作数至NTT/INTT算子模块;
在第三次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为64,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行。
6.根据权利要求2所述的硬件加速器,所述缓存模块包括BRAMS,其中BRAMS包括若干个数据行;所述自同构算子模块包括映射缓存区;
所述核心计算模块,在调用所述自同构算子模块时,具体用于将待计算的长向量均分为包括若干数据的若干个子向量;
针对每个子向量,将该子向量中的每个数据分别并行的存储在BRAMS的若干行中;
在所述映射缓存区中,根据第一行映射公式和第二行映射公式,对所述若干子向量进行行映射,得到行映射结果;
针对行映射结果,利用列映射公式进行列映射,得到所述若干子向量的映射结果,从而得到所述待计算的长向量的映射结果。
7.一种同态加密方法,其特征在于,应用于全同态加密算法的硬件加速器,所述硬件加速器包括内存模块、内存控制器、缓存模块以及核心计算模块;所述核心计算模块包括多种核心算子模块,其中,一种核心算子模块用于实现一种基础计算,所述基础计算为:多种同态加密算法共用的、组合实现全部同态加密算法的计算;所述方法包括:
所述内存模块接收和存储主机发送的待计算数据和同态加密算法类型;
内存控制器根据核心计算单元的计算需求,将待计算数据和同态加密算法类型从内存模块传输至缓存模块;
核心计算模块从缓存模块中获取待计算数据和同态加密算法类型,并针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算。
8.根据权利要求7所述的方法,其特征在于,所述多种核心算子模块包括模加算子模块、模乘算子模块、NTT/INTT算子模块、自同构算子模块以及取模算子模块;
所述同态加密算法类型包括:同态加法、同态乘法、缩放、秘钥切换、旋转、自举、Modup和Moddown。
9.根据权利要求8所述的方法,所述同态加密算法类型为自举或旋转;所述核心计算模块针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算,包括:
所述核心计算模块,组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块、自同构算子模块以及取模算子模块,对所述待计算数据执行自举或旋转计算。
10.根据权利要求8所述的方法,所述同态加密算法类型为模乘、密钥切换或缩放;
所述核心计算模块针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算,包括:
所述核心计算模块组合调用本地的模加算子模块、模乘算子模块、NTT/INTT算子模块以及取模算子模块,对所述待计算数据执行模乘、密钥切换或缩放计算。
11.根据权利要求8所述的方法,所述NTT/INTT算子模块用于实现融合旋转因子后的NTT/INTT运算,所述融合旋转因子后的NTT/INTT运算包括三次迭代,在每次迭代中,以8个操作数为一组,输入若干组操作数,或者以8个操作数为一组,输出若干组操作数;所述缓存模块包括BRAMS,其中BRAMS包括若干个数据行;
所述核心计算模块针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算,包括:
所述核心计算模块在调用NTT/INTT算子模块时,在第一次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为1,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行;
在第二次迭代时,在一个时钟周期,从所述BRAMS的连续的8个数据行中,并行获取索引值间隔为8的8个操作数至NTT/INTT算子模块;
在第三次迭代时,将NTT/INTT算子模块输出的每一组操作数在一个时钟周期,按照索引值的顺序并行输入至BRAMS的连续的8个数据行中,其中,每组操作数中各操作数的索引值间隔为64,后一组操作数的索引值最小的操作数,存储在前一组中索引值第二小的操作数所在的行。
12.根据权利要求8所述的方法,所述缓存模块包括BRAMS,其中BRAMS包括若干个数据行;所述自同构算子模块包括映射缓存区;所述核心计算模块针对所述同态加密算法类型,组合调用本地多种核心算子模块对所述待计算数据执行所述同态加密算法类型对应的同态加密计算,包括:
所述核心计算模块,在调用所述自同构算子模块时,将待计算的长向量均分为包括若干数据的若干个子向量;
针对每个子向量,将该子向量中的每个数据分别并行的存储在BRAMS的若干行中;
在所述映射缓存区中,根据第一行映射公式和第二映射公式,对所述若干子向量进行行映射,得到行映射结果;
针对行映射结果,利用列映射公式进行列映射,得到所述若干子向量的映射结果,从而得到所述待计算的长向量的映射结果。
13.一种电子设备,包括权利要求1-6任一项所述的全同态加密算法的硬件加速器。
CN202310378193.3A 2023-04-11 2023-04-11 全同态加密算法的硬件加速器、同态加密方法及电子设备 Pending CN116488788A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310378193.3A CN116488788A (zh) 2023-04-11 2023-04-11 全同态加密算法的硬件加速器、同态加密方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310378193.3A CN116488788A (zh) 2023-04-11 2023-04-11 全同态加密算法的硬件加速器、同态加密方法及电子设备

Publications (1)

Publication Number Publication Date
CN116488788A true CN116488788A (zh) 2023-07-25

Family

ID=87226218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310378193.3A Pending CN116488788A (zh) 2023-04-11 2023-04-11 全同态加密算法的硬件加速器、同态加密方法及电子设备

Country Status (1)

Country Link
CN (1) CN116488788A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116150784A (zh) * 2022-12-30 2023-05-23 上海物骐微电子有限公司 神经网络的安全保护方法、系统、加速器及芯片

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116150784A (zh) * 2022-12-30 2023-05-23 上海物骐微电子有限公司 神经网络的安全保护方法、系统、加速器及芯片
CN116150784B (zh) * 2022-12-30 2023-09-05 上海物骐微电子有限公司 神经网络的安全保护方法、系统、加速器及芯片

Similar Documents

Publication Publication Date Title
Roy et al. FPGA-based high-performance parallel architecture for homomorphic computing on encrypted data
Turan et al. HEAWS: An accelerator for homomorphic encryption on the Amazon AWS FPGA
US11416638B2 (en) Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
Fritzmann et al. RISQ-V: Tightly coupled RISC-V accelerators for post-quantum cryptography
Karmakar et al. Saber on ARM CCA-secure module lattice-based key encapsulation on ARM
Karmakar et al. Constant-time discrete gaussian sampling
Zhu et al. LWRpro: An energy-efficient configurable crypto-processor for module-LWR
Liu et al. IoT-NUMS: evaluating NUMS elliptic curve cryptography for IoT platforms
Fritzmann et al. Efficient and flexible low-power NTT for lattice-based cryptography
US7505587B2 (en) Elliptic curve cryptosystem apparatus, storage medium storing elliptic curve cryptosystem program, and elliptic curve cryptosystem arithmetic method
Massolino et al. A compact and scalable hardware/software co-design of SIKE
Wu et al. RSA cryptosystem design based on the Chinese remainder theorem
Lee et al. Scalable Gaussian normal basis multipliers over GF (2 m) using Hankel matrix-vector representation
EP3930252A1 (en) Countermeasures for side-channel attacks on protected sign and key exchange operations
Shahbazi et al. Area and power efficient post-quantum cryptosystem for IoT resource-constrained devices
Ye et al. Low-complexity VLSI design of large integer multipliers for fully homomorphic encryption
US20230318829A1 (en) Cryptographic processor device and data processing apparatus employing the same
CN116488788A (zh) 全同态加密算法的硬件加速器、同态加密方法及电子设备
KR20220078155A (ko) 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치
CN109144472B (zh) 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN115698938A (zh) 密码操作中通过中间随机化对变换的保护
Wahid et al. Hybrid architecture and VLSI implementation of the Cosine–Fourier–Haar transforms
US11985221B2 (en) Efficient masking of secure data in ladder-type cryptographic computations
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
CN114510217A (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