CN116894254A - 使用同态加密运算的装置和方法 - Google Patents
使用同态加密运算的装置和方法 Download PDFInfo
- Publication number
- CN116894254A CN116894254A CN202211385558.7A CN202211385558A CN116894254A CN 116894254 A CN116894254 A CN 116894254A CN 202211385558 A CN202211385558 A CN 202211385558A CN 116894254 A CN116894254 A CN 116894254A
- Authority
- CN
- China
- Prior art keywords
- polynomial
- processor
- degree
- split
- polynomials
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000015654 memory Effects 0.000 claims abstract description 52
- 230000036961 partial effect Effects 0.000 claims abstract description 23
- 230000009466 transformation Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 description 10
- 230000009467 reduction Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005442 molecular electronic Methods 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Complex Calculations (AREA)
Abstract
提供了一种使用同态加密的装置和方法。一种包括处理器的装置,其中处理器被配置为,和/或处理器与存储器耦接,该存储器存储指令以将处理器配置为:从包括用于执行同态加密运算的具有第一次数的多项式在内的密文,通过对多项式进行因式分解,来生成具有第二次数的拆分多项式,其中,拆分多项式具有小于第一次数的第二次数;通过使用拆分多项式执行逐元素运算来生成部分运算结果,并通过将部分运算结果合并来生成与密文相对应的同态加密运算结果。
Description
相关申请的交叉引用
本申请要求于2022年4月7日在韩国知识产权局递交的韩国专利申请No.10-2022-0043521,以及于2022年6月16日在韩国知识产权局递交的韩国专利申请No.10-2022-0073618的优先权,其全部公开内容通过引用合并于此以用于所有目的。
技术领域
以下描述涉及使用同态加密运算的装置和方法。
背景技术
同态加密是一种很有前途的加密方法,其可以在加密数据之间进行任意运算。同态加密用于对加密数据执行任意运算,而无需将加密数据解密,也不会失去恢复(通过解密)由任意运算变换的底层明文的能力。此外,同态加密是基于格的,对量子算法有抗性,因此被认为是安全的。
这种基于格的同态加密的参数包括与密文相对应的系数模q和多项式次数N。这些参数可以改变,并且可以基于目标位安全性和相乘深度来设置或确定。因此,为了提供一种灵活的加速器,即,适用于各种应用的加速器,支持各种多项式次数和模数可能会是有益的。
多项式次数N可以是同态加密的一个重要参数。例如,CKKS(Cheon、Kim、Kim和Song)、BGV(Brakerski、Gentry和Vaikuntanathan)和BFV(Brakerski、Fan和Vercauteren)使用较大的参数,例如N≥214,而FHEW(Fastest Homomorphic Encryption in the West,西方最快的同态加密)和TFHE(Fast Fully Homomorphic Encryption over the Torus,环上的快速完全同态加密)使用一个较小参数,例如N<211。
随着参数N的增加,乘法的数量(或本文中的乘法级别)和由同态加密方案使用的数据量可能会增加,但是硬件加速器具有有限的资源。
发明内容
提供本发明内容以用简化形式介绍对下面在具体实施方式中进一步描述的构思的选择。本发明内容不意在标识所请求保护的主题的关键特征或基本特征,也不意在帮助确定所请求保护的主题的范围。
在一个总体方面,一种包括处理器的装置,其中处理器被配置为,和/或处理器与存储器耦接,该存储器存储指令以将处理器配置为:从包括用于执行同态加密运算的具有第一次数的多项式在内的密文,通过对多项式进行因式分解,来生成具有第二次数的拆分多项式,其中,拆分多项式具有小于第一次数的第二次数;通过使用拆分多项式执行逐元素运算来生成部分运算结果,并通过将部分运算结果合并来生成与密文相对应的同态加密运算结果。
拆分多项式的系数模可以具有4N次单位根,并且N可以对应于第二次数。
处理器可以被进一步配置为,和/或指令可以进一步将处理器配置为:将拆分多项式中的第一多项式分配给第一运算器;以及将拆分多项式中的第二多项式分配给第二运算器。
处理器可以被进一步配置为,和/或指令可以进一步将处理器配置为:通过基于能够由第一运算器和第二运算器运算的多项式的阈值次数递归地对多项式进行拆分,来生成拆分多项式。
处理器可以被进一步配置为,和/或指令可以进一步将处理器配置为:递归地对多项式进行拆分,直到拆分多项式的次数变得小于阈值次数。
处理器可以被进一步配置为,和/或指令可以进一步将处理器配置为:基于与拆分多项式中的第一多项式相对应的第一旋转因子,确定与拆分多项式中的第二多项式相对应的第二旋转因子。
处理器可以被进一步配置为,和/或指令可以进一步将处理器配置为:通过将第一旋转因子乘以常数,确定第二旋转因子。
处理器可以被进一步配置为,和/或指令可以进一步将处理器配置为:基于第一旋转因子和第二旋转因子对第一多项式和第二多项式执行数论变换(NTT)。
处理器可以被进一步配置为,和/或指令可以进一步将处理器配置为:通过将拆分多项式中的第一多项式的系数和拆分多项式中的第二多项式的系数相加或相减,合并部分运算结果。
在一个总体方面,一种由计算装置执行的方法包括:通过对具有第一次数的多项式进行因式分解,生成具有第二次数的多个拆分多项式,其中,多项式是具有第一次数的密文并用于执行同态加密运算;通过使用拆分多项式执行逐元素运算,生成部分运算结果;以及通过将部分运算结果合并来生成与密文相对应的同态加密运算结果。
拆分多项式的系数模可以具有4N次单位根,并且N可以对应于第二次数。
生成部分运算结果可以包括:将拆分多项式中的第一多项式分配给第一运算器;以及将拆分多项式中的第二多项式分配给第二运算器。
生成拆分多项式可以包括:通过基于能够由第一运算器和第二运算器运算的多项式的阈值次数递归地对多项式进行拆分,来生成拆分多项式。
通过递归地对多项式进行拆分来生成拆分多项式可以包括:递归地对多项式进行拆分,直到拆分多项式的次数变得小于阈值次数。
确定第二旋转因子可以包括:通过将第一旋转因子乘以常数,确定第二旋转因子。
生成同态加密运算结果可以包括:通过将拆分多项式中的第一多项式的系数和拆分多项式中的第二多项式的系数相加或相减,合并部分运算结果。
在一个总体方面,一种由处理器执行的方法,该方法包括:通过以下操作对符合同态加密方案的输入的第一次数多项式表示执行同态多项式运算:将输入的第一次数多项式表示拆分为第一-第二次数多项式表示和第二-第二次数多项式表示,其中,第二次数小于第一次数;以及通过将对第一-第二次数多项式表示执行同态多项式运算的结果与对第二-第二次数多项式表示执行同态多项式运算的结果组合,生成输出的第一次数多项式表示。
输出的第一次数多项式可以等效于对输入的第一次数多项式表示执行同态多项式运算的结果。
处理器可以包括执行同态多项式运算的残余多项式算术单元(RPAU)。
输入的第一次数多项式表示拆分可以包括:对输入的第一次数多项式进行因式分解,并且多项式表示中的每一个可以包括在处理器的存储器中同时由处理器运算的相应数字向量。
处理器可以被配置为:对最多N次多项式的多项式表示执行同态多项式运算,其中,第一次数大于N,其中,第二次数等于N,并且其中,因式分解是基于N进行的。
其他特征和方面将通过以下详细描述、附图和权利要求变得清楚明白。
附图说明
图1示出了根据一个或多个实施例的同态加密运算装置的示例。
图2示出了根据一个或多个实施例的图1的同态加密运算装置的运算的示例。
图3示出了根据一个或多个实施例的图1的同态加密运算装置的运算的另一示例。
图4示出了根据一个或多个实施例的系数模的示例。
图5示出了根据一个或多个实施例的确定旋转因子的示例。
图6示出了根据一个或多个实施例的多项式拆分结构的示例。
图7示出了根据一个或多个实施例的多项式合并结构的示例。
图8示出了根据一个或多个实施例的调度同态乘法运算的示例。
图9示出了根据一个或多个实施例的调度秘钥切换运算的示例。
图10示出了根据一个或多个实施例的使用多个运算器来计算拆分多项式的示例。
图11是示出了根据一个或多个实施例的由图1的同态加密运算装置执行的同态加密运算方法的示例的流程图。
在整个附图和详细描述中,除非另有描述或提供,否则相同的附图标记应被理解为指代相同的元件、特征以及结构。附图可以不按比例绘制,并且为了清楚、说明和方便,可以扩大附图中元件的相对尺寸、比例和描绘。
具体实施方式
提供以下详细描述以帮助读者获得对本文描述的方法、装置和/或系统的全面理解。然而,在理解了本申请的公开之后,本文中描述的方法、装置和/或系统的各种改变、修改和等同物将是显而易见的。例如,本文中所描述的操作顺序仅仅是示例,并且不限于本文中所阐述的那些操作顺序,而是可以在理解本申请的公开内容之后明显改变,除了必须以一定顺序进行的操作之外。此外,为了更加清楚和简洁,在理解本申请的公开之后可以省略对已知的特征的描述。
本文描述的特征可以以不同形式来实施,并且不应被解释为限于本文描述的示例。相反,提供本文中描述的示例仅仅是为了说明实现本文中描述的方法、装置和/或系统的许多可行方式中的一些,在理解本申请的公开之后这些方式将显而易见。
本文中使用的术语仅用于描述各种示例,而不用于限制本公开。除非上下文另外明确指示,否则冠词“一”、“一个”和“该”也意在包括复数形式。如本文中所使用的,术语“和/或”包括关联列出的项目中的任何一个和任何两个或更多个的任何组合。作为非限制性示例,术语“包括”或“包含”和“具有”表示存在所阐述的特征、数目、运算、构件、元件和/或其组合,但并不排除存在或添加一个或多个其他特征、数目、运算、构件、元件和/或其组合。
在整个说明书中,当组件或元件被描述为“连接到”、“耦接到”或“结合到”另一个组件或元件时,它可以直接“连接到”、“耦接到”或“结合到”其他组件或元件,或者可以有一个或多个其他组件或元件介于其间。当一个组件或元件被描述为“直接连接到”、“直接耦接到”或“直接结合到”另一个组件或元件时,在它们之间不存在其他元件介入。同样地,也应以如前面描述的表述来解释例如“在...之间”和“直接在......之间”以及“与......相邻”和“与......紧邻”的表述。
尽管本文中可以使用诸如“第一”、“第二”和“第三”、或者A、B、(a)、(b)之类的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语的限制。例如,这些术语中的每一个都不用于定义对应的构件、组件、区域、层或部分的本质、顺序或序列,而是仅用于将对应的构件、组件、区域、层或部分与其他构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,本文中描述的示例中提及的第一构件、组件、区域、层或部分也可以被称为第二构件、组件、区域、层或部分。
除非另外定义,否则这里使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员基于对本申请的公开的理解通常所理解的含义相同的含义。诸如在常用词典中定义的术语应被解释为其含义与在相关技术和/或本申请的上下文中的含义相同,而不应被解释为理想的或过于正式的含义,除非本文明确如此定义。在本文中,关于示例或实施例(例如,关于示例或实施例可以包括或实现什么)的术语“可以”的使用意味着存在至少一个示例或实施例,其中这样的特征是被包括或实现的,而所有示例不限于此。
图1示出了根据一个或多个实施例的同态加密运算装置的示例。本文所描述的同态加密运算装置可以指用于执行同态加密运算的装置。
参照图1,同态加密运算装置10可以使用同态加密方案来执行加密和解密。同态加密运算装置10可以附加地或备选地执行同态加密方案的同态加密运算,而不是必须执行加密或解密本身。同态加密运算可以包括与密文相对应的多项式运算。
同态加密运算装置10可以通过执行同态加密运算,生成同态加密运算结果。
同态加密是这样一种加密方案,它允许对同态加密数据执行各种运算(通常是多项式运算),这些同态加密数据通常采用多项式的表示形式,例如,存储器中的数字对应于多项式的系数。在同态加密方案中,对(从明文加密的)同态加密密文的运算结果可以成为新的密文(例如,密文的变换),尽管如此,通过将变换后的密文解密而得到的明文可以与对未加密的原始数据(明文)执行运算的结果相同。也就是说,通过运算变换的原始明文可以通过对变换后的密文进行同态解密来恢复/重建。密文可以通过同态加密运算序列重复变换,并且仍然可以解密回原始明文的形式,就像对原始明文执行了同态加密运算的序列一样。换句话说,密文可以被总体上操纵,并且被操纵的密文的后续解密可以等效于对原始明文执行通常运算的结果。
如本文所用,“同态加密运算”既指原始加密运算(将明文加密为密文的运算),也指任何运算,通常是一组特定的多项式运算,其对密文进行同态变换,即,保留将经运算变换后的密文解密为等效于将运算应用于明文的形式的能力。换句话说,“同态加密运算”不一定只指加密本身,而是根据上下文,可以指对已加密的密文进行同态运算。
在下文中,加密数据、加密文本和密文将指代主要使用密文的同一个对象。密文可以是多项式表示或包括多项式表示的向量的形式(如本文所用,“多项式表示”是指计算机存储器中的多项式的编码)。
同态加密运算装置10可以执行基于错误的环学习(RLWE)问题的同态加密运算,该运算支持对由整数明文加密而来的密文的运算。例如,同态加密运算装置10可以执行基于RLWE问题的近似同态加密运算,该运算支持对由实数和/或复数的明文加密而来的密文的运算(它本身可以是任何类型的一般消息(例如文本)的编码)。
同态加密运算装置10可以通过使用同态加密,推导出与如下结果相同的结果,该结果是通过将从对加密状态的数据的运算获得的结果进行解密,而从对明文数据执行的运算获得的。
同态加密运算装置10可以以芯片的形式实现,并且可以设置在使用或实现同态加密的硬件加速器中。同态加密运算装置10可以以芯片或软件(例如指令或代码)的形式实现,以减少各种运算装置或设备的存储器使用。例如,同态加密运算装置10可以减少用于执行同态加密运算的计算量,从而可以减少服务器的总计算量。
作为非限制性示例,同态加密运算装置10可以实现在个人计算机(PC)、数据服务器或便携式设备中。便携式设备可以是例如膝上型计算机、移动电话、智能手机、平板电脑、移动互联网设备(MID)、个人数字助理(PDA)、企业数字助理(EDA)、数码相机、数码摄像机、便携式多媒体播放器(PMP)、个人导航设备或便携式导航设备(PND)、手持游戏机、电子书或智能设备。智能设备可以包括例如智能手表、智能手环或智能戒指。
同态加密运算装置10可以包括接收器100和处理器200。同态加密运算装置10还可以包括存储器300。例如,接收器可以是片上组件(例如,核)的端口、总线接口、控制器、网络接口卡等。
接收器100可以接收采用多项式表示的形式的密文。接收器100可以将密文输出到处理器200。多项式表示可以具有次数(或阶)。例如,多项式的次数(或在本文中简称为“多项式次数”或“次数”)可以表示为N,并且N可以是自然数。多项式的次数或阶(在其拆分的上下文中)也可以称为第一次数/第二次数(以区分多项式拆分中涉及的多项式的次数)。多项式表示的阶或次数可以是显式的,例如,存储器中的数字,或者它可以按约定提供,例如,多项式表示的结构、格式和/或大小的特征可以指示N。通常,多项式表示可以是数字的向量,其中每个数字/元素表示多项式的对应项的多项式系数,并且向量中数字的索引(位置)表示其中系数被存储在该向量位置中的项的次序。通常,多项式的“阶”/“次数”是指其任何项的最高阶/次数。在描述诸如同态加密运算装置10的处理器/装置的运算时,本文使用的术语“多项式”是指“多项式表示”,它是存储在存储器中或处理器/装置的内部电路中(例如,寄存器、高速缓存器、残余多项式算术单元(RPAU)等中)的数据。
处理器200可以处理存储在存储器300中的数据。处理器200可以执行存储在存储器300中的计算机可读代码(例如,代码/指令形式的软件)和由处理器200触发/执行的指令。
处理器200可以是硬件实现的数据处理设备,其包括用于执行期望运算的物理结构的电路。期望运算可以包括例如包含在程序中的代码或指令。
硬件实现的数据处理设备可以包括例如微处理器、中央处理单元(CPU)、处理器核、多核处理器、多处理器、专用集成电路(ASIC)以及现场可编程门阵列(FPGA)、量子处理器、以上组合等。
处理器200可以包括运算器。运算器可以包括第一运算器和第二运算器。运算器可以包括加速器。加速器可以包括例如图形处理单元(GPU)、FPGA、ASIC或应用处理器(AP)。备选地,加速器可以实现为软件计算环境,例如虚拟机。
处理器200可以通过对接收到的多项式(具有第一次数)进行因式分解,生成具有第二次数的拆分多项式;第二次数小于第一次数。
处理器200可以将与拆分多项式中的第一多项式相对应的第一密文分配给第一运算器。处理器200可以将与拆分多项式中的第二多项式相对应的第二密文分配给第二运算器。
处理器200可以通过基于可由第一运算器和第二运算器运算的多项式的阈值次数(即,运算器被静态或动态配置以进行运算的多项式的最大次数),递归地将多项式拆分,来生成拆分多项式。处理器200可以继续递归地将多项式拆分,直到拆分多项式的次数变得小于阈值次数。这里,递归拆分是指将初始/接收到的多项式拆分为下一个多项式,将下一个多项式拆分为再下一个的下一个多项式等。
处理器200可以基于与(拆分多项式之中的)第一多项式相对应的第一旋转因子,确定与(拆分多项式之中的)第二多项式相对应的第二旋转因子。
处理器200可以通过将第一旋转因子乘以常数,确定第二旋转因子。
处理器200可以基于第一旋转因子和第二旋转因子对第一多项式和第二多项式执行数论变换(NTT)。
拆分多项式的系数模可以具有4N次单位根,其中N可以对应于第二次数(拆分多项式的次数)。
处理器200可以通过使用拆分多项式执行逐元素运算,生成部分运算结果。逐元素运算可以包括同态乘法、同态加法和同态减法运算(同态加密运算的示例)。
处理器200可以通过将部分运算结果合并,生成与原始/接收到的密文/多项式相对应的同态加密运算结果。处理器200可以通过将(拆分多项式中的)第一多项式的系数和(拆分多项式中的)第二多项式的系数相加或相减,来将部分运算结果合并。
存储器300中可以存储可由处理器200执行的指令(或程序)。指令可以包括例如用于执行处理器200的运算的指令和/或用于执行处理器200的每个元件的运算的指令。
存储器300可以被实现为易失性存储器设备和/或非易失性存储器设备(存储器300不是信号本身)。
易失性存储器设备可以例如实现为动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、晶闸管RAM(T-RAM)、零电容RAM(Z-RAM)、或双晶体管RAM(TTRAM)。
非易失性存储器设备可以实现为例如电可擦可编程只读存储器(EEPROM)、闪存、磁RAM(MRAM)、自旋力矩-MRAM(STT-MRAM)、导电桥接RAM(CBRAM)、铁电RAM(FeRAM)、相变RAM(PRAM)、电阻RAM(RRAM)、纳米管RRAM、聚合物RAM(PoRAM)、纳米浮栅存储器(NFGM)、全息存储器、分子电子存储器设备、或绝缘体电阻变化存储器。
图2示出了根据一个或多个实施例的图1的同态加密运算装置的运算的示例。
参照图2,处理多项式以执行与N次多项式相对应的同态加密运算、O(N^2)或O(NlogN)阶的运算以及执行这种运算的运算器可能需要大量存储空间(或内存空间)。
例如,如果同态加密中的多项式的次数N为214(即N=214)、215(即N=215)或216(即N=216),则对其进行同态加密运算可能需要相当大量的内存和计算(或运算)。当用于执行同态加密运算的这些参数(例如,N)被确定(或已知)时,可以确定(例如,选择或控制)能够处理同态加密运算的运算器和加速器。
处理器(例如,图1的处理器200)可以被配置为能够使用仅能处理低次多项式的运算器来处理高次多项式。例如,处理器200可以使用支持多项式次数N=214的运算器来处理具有215(即,N=215)次的多项式。
例如,处理器200可以通过首先将高次多项式拆分为低次多项式,然后使用配置为处理低次多项式的硬件处理低次多项式,来处理高次多项式(这里,“高”和“低”仅表示一个多项式的次数大于另一个多项式的次数)。例如,如图2所示,处理器200可以通过将具有215次的第一多项式210拆分,生成具有N=214次的第二多项式230和250。处理器200可以通过首先对第二多项式230和250中的每一个多项式执行运算,然后将对第二多项式230和250执行的运算的相应结果合并,来计算对第一多项式210执行的运算的运算结果。如上所述,可以递归地执行拆分以适应更高次多项式,例如,在上面的示例中,N可以是216。
也就是说,处理器200可以通过使用能够处理低次多项式的运算器,有效地对具有高次多项式的密文执行同态运算(例如,处理器200未被配置为直接对诸如N=215的高次多项式执行运算)。处理器200可以通过多项式拆分和合并,减少内存使用和计算量,从而有效地使用针对更低(或更小)次多项式设计的硬件。
例如,考虑Z是4N次单位根的情况。当给出F(X)=X2N+1作为归约多项式(要归约的多项式)时,则Z2N=-1。在这种情况下,F(X)=X2N+1=X2N–Z2N,并且处理器200可以将多项式F(X)因式分解为(XN–ZN)和(XN+ZN)。也就是说,处理器200可以将F(X)因式分解为F(X)=X2N+1=X2N-Z2N=(XN-ZN)*(XN+ZN)。
通过上述处理,处理器200可以将具有2N次的多项式拆分为两个多项式,每个多项式具有N次。处理器200可以通过递归地执行上述因式分解将多项式拆分为具有小于N的次数的多项式。
图3示出了根据一个或多个实施例的图1的同态加密运算装置的运算的另一示例。
参照图3,在步骤310中,处理器(例如,图1的处理器200)可以接收具有2N次的多项式形式的密文。步骤310可以进一步涉及处理器200将2N次多项式拆分为两个相应的N次多项式。在步骤330和350中,处理器可以对相应的N次多项式(同时或并行)应用运算以生成分别与N次多项式相对应的密文。也就是说,步骤330接收从2N次多项式拆分的第一N次多项式,对其执行多项式运算(例如,变换第一N次多项式),并输出变换后的第一N次多项式(第一密文)。类似地,步骤350接收从2N次多项式拆分的第二N次多项式,对其执行相同的多项式运算(例如,以与变换第一N次多项式相同的方式变换第二N次多项式),并且输出变换后的第二N次多项式(第二密文)。
在步骤370中,处理器200可以将分别与N次多项式相对应的第一密文和第二密文合并。处理器200可以通过在步骤390中执行的合并,产生对2N次多项式执行步骤330和350的多项式运算的等效物,即重构与2N次多项式相对应的密文。
例如,在Z是4N次单位根的情况下,当给出F(X)=X2N+1作为归约多项式时,Z2N=-1。在该示例中,F(X)=X2N+1=X2N–Z2N,并且处理器200可以将F(X)因式分解为两个多项式:(XN–ZN)和(XN+ZN)。
处理器200可以将F(X)因式分解为F(X)=X2N+1=X2N-Z2N=(XN-ZN)*(XN+ZN)。如上所述,处理器200可以将具有2N次的多项式拆分为两个多项式,每个多项式具有N次。参照上面的示例,为了说明,如果一个拆分多项式的次数为N=214,那么原始多项式的次数为2N=2(214)=215。处理器200可以通过递归地执行上述将多项式一分为二的拆分处理,将多项式拆分为具有较小次数(多于一)的多项式。换句话说,可以递归地进行拆分,直到得到的一组降次多项式具有合适的次数,然后可以对降次多项式执行运算,并且可以将这些结果合并以提供将运算应用于初始未拆分多项式(初始密文)的结果(密文)。
图4示出了根据一个或多个实施例的系数模400的示例。
参照图4,对于处理器(例如,图1的处理器200)拆分多项式,多项式的系数模可能需要满足特定条件。例如,要拆分的多项式的系数模可能需要满足系数模具有4N次单位根的条件。
因此,处理器200可以进一步被配置为选择适当的系数模以对更高次多项式执行运算。例如,处理器200可以被配置为选择满足图4所示示例的系数模。
图5示出了根据一个或多个实施例的确定旋转因子的示例。
参照图5,处理器(例如,图1的处理器200)可以确定与多个拆分多项式中的第二多项式相对应的第二旋转因子,并且第二旋转因子可以基于与拆分多项式中的第一多项式相对应的第一旋转因子来确定。
处理器200可以通过将第一旋转因子乘以常数来确定第二旋转因子。
处理器200可以基于第一旋转因子和第二旋转因子对第一多项式和第二多项式执行NTT。
在下文中,将假设多项式被一分为二来描述确定旋转因子的示例。然而,根据备选示例,拆分多项式的数量可以大于两个。在这种情况下,处理器200可以使用一个旋转因子来确定与如上附加多项式相对应的旋转因子。
在该示例中,通过将X2N-1拆分得到的两个多项式(例如,XN-ZN,XN+ZN)的旋转因子可能不同。因此,配置硬件以支持两个多项式的运算可能涉及支持不同旋转因子的硬件结构。
在图5的示例中,W1表示第一旋转因子,并且W2表示第二旋转因子。
处理器200可以用两种方式确定旋转因子。首先,在步骤510中,处理器200可以使用一个多项式XN-ZN的旋转因子以从其导出另一个多项式XN+ZN的旋转因子,并进行使用。处理器200可以通过使用多项式XN-ZN的旋转因子与另一个多项式XN+ZN的旋转因子之间的常数乘积的关系(一个旋转因子可能是另一个旋转因子的倍数),提高运算速度。
其次,处理器200可以将两个多项式XN-ZN和XN+ZN的相应的旋转因子存储在存储器(例如,图1的存储器300)中,并将它们用于步骤530中的运算。
通过如上所述确定多个旋转因子,处理器200可以支持针对两个或更多个多项式的NTT运算。
图6示出了根据一个或多个实施例的多项式拆分结构的示例,并且图7示出了多项式合并结构的示例。
参照图6和图7,处理器(例如,图1的处理器200)可以将具有较大次数的多项式拆分为每个具有较小次数的多项式。处理器200可以将具有较小次数的每个拆分多项式合并到具有较大次数的多项式中。
处理器200可以通过执行可由下面的等式1和2描述的逻辑(例如,电路和/或指令)将高次多项式拆分为低次多项式。
等式1
等式2
在上述等式中,如果a(X)是2N次多项式,则ap(X)和am(X)表示拆分后的N次多项式。ap(X)和am(X)可以分别被称为正(p)系数和负(m)系数。另外,ai表示a(X)的第i个系数。处理器200可以使用与以上等式1和等式2相对应的逻辑/指令/电路从a(X)生成ap(X)和am(X)。
处理器200可以通过使用等式3从拆分多项式重构高次多项式。
等式3
处理器200可以使用上面的等式3从ap(X)和am(X)重构a(X)。
处理器200可以使用Cooley-Tukey算法和Gentleman-Sande蝶形,执行拆分和合并运算。
例如,处理器200可以通过应用Cooley-Tukey算法,如等式1和等式2中那样针对a、b和w计算a+b*w和a-b*w。处理器200可以通过应用Gentleman-Sande蝶形,如等式3中那样针对a、b和w计算(a+b)*(1/2)(mod q)和(a-b)*(w/2)(mod q)。
等式1至等式3是对由物理处理器执行的逻辑运算的组合的方便描述。普通工程师可以使用适当的电路设计软件、源代码或其他工具轻松实现等式1至等式3。
在图6的示例中,处理器200可以将存储在存储器(例如,图1的存储器300)中的多项式的系数610和630输入到分离器650,并且执行加法、减法和/或乘法以计算低次拆分多项式的系数670和690。
在图7的示例中,处理器200可以将存储在存储器(例如,图1的存储器300)中的拆分多项式的系数710和730输入到合并器750,并且执行加法、减法和/或乘法以重构更高次多项式的系数770和790。
图8示出了根据一个或多个实施例的调度同态乘法运算的示例。
参照图8,处理器(例如,图1的处理器200)可以通过多项式拆分和合并,执行例如同态乘法运算(以及其他可能的同态加密运算)。
例如,处理器200可以通过对如上所述获得的两个拆分后的N次多项式执行如上运算,来针对2N次多项式的密文执行同态加法和/或同态乘法运算。这两个拆分多项式可以按顺序被称为正分量和负分量(在图8中分别表示为带圆圈的“P”和带圆圈的“M”)。
处理器200可以将所有正分量和负分量存储在片上存储器中,并且对所有负分量执行同态运算。处理器200可以将正分量移动到存储器中的适当位置,然后对正分量执行运算。
通过对正分量和负分量中的每一个分量执行乘法运算,处理器200可以以与同态乘法(例如,对于N=214)相比两倍的频率执行运算。在这种情况下,可以快速处理片上数据传输。
正分量可以包括正系数,并且负分量可以包括负系数。处理器200可以对拆分多项式中的负系数执行运算810到830,并且可以对正系数执行运算。负系数和正系数可以与参照以上等式1和等式2所描述的相同。
在步骤810中,处理器200可以生成d0,i和d2,i。在步骤820中,处理器200可以对d2,i执行逆NTT(INTT)。在步骤830中,处理器200可以生成d1,i。
在步骤840中,处理器200可以移动正分量。在步骤850中,处理器200可以针对正系数生成d0,i和d2,i。在步骤860中,处理器200可以对d2,i执行INTT。在步骤870中,处理器200可以生成d1,i。
图9示出了根据一个或多个实施例的调度秘钥切换运算的示例。
参照图9,处理器(例如,图1的处理器200)可以通过多项式拆分和合并,执行密钥切换运算(例如,在可能的同态加密运算中)。
处理器200可以在乘法运算之后执行重新线性化运算。处理器200可以对模执行变换(例如,模归约);该运算也可以被称为广播。处理器200可以执行用于广播的拆分和合并运算。
这种广播运算可能需要正、负分量两者。此外,重新线性化可能需要相对较大的内存空间来存储秘钥切换值。
处理器200可以确保用于重新线性化的内存空间。处理器200可以在乘法之后将一些数据移动到片上存储器。处理器200可以将对于秘钥切换和模归约不是必需的、但是在秘钥切换和模归约运算完成之后可能是必需的值,移动到片上存储器。
在步骤911中,处理器200可以移动正分量。在步骤913中,处理器200可以对NTT结果执行合并。在步骤915中,处理器200可以对正分量执行广播。在步骤917中,处理器200可以执行交换。
在步骤919中,处理器200可以对负分量执行广播。处理器200可以执行拆分。在步骤923中,处理器200可以对负分量执行NTT运算。在步骤925中,处理器200可以对正分量执行NTT运算。在步骤927中,处理器200可以基于NTT运算的结果对负分量执行秘钥切换。
在步骤929中,处理器200可以对负分量执行广播。在步骤931中,处理器200可以执行交换。在步骤933中,处理器200可以对正分量执行广播。在步骤935中,处理器200可以执行拆分。
在步骤937中,处理器200可以对负分量执行NTT运算。在步骤939中,处理器200可以对正分量执行秘钥切换。在步骤941中,处理器200可以对正分量执行NTT运算。在步骤943中,处理器200可以对负分量执行秘钥切换。
在步骤945中,处理器200可以对正分量执行广播。在步骤947中,处理器200可以执行交换。在步骤949中,处理器200可以对负分量执行广播。在步骤951中,处理器200可以执行拆分。在步骤953中,处理器200可以对正分量执行秘钥切换。
处理器200可以通过连续执行上述步骤,执行秘钥切换。调度的一些方面可以很重要,因为可能存在一些情况,在该情况下,只有存储器的一些区域中的数据被广播到其他单元。例如,可能存在一些情况,在该情况下,特定硬件仅允许将存储器的某个区域(例如,存储器位置4)中的数据广播到另一单元(例如,残余多项式算术单元(RPAU))。
在将正分量和负分量合并之后,处理器200可以将215次的合并多项式广播到另一个RPAU。在广播第一分量(例如,负分量)之后,处理器200可以交换正分量和负分量。
图10示出了根据一个或多个实施例的使用多个运算器来计算拆分多项式的示例。
处理器(例如,图1的处理器200)可以通过对多项式进行因式分解,生成具有第二次数的拆分多项式,从而将接收到的多项式的第一次数减少到拆分多项式的较低的第二次数。
处理器200可以将与第一多项式(拆分多项式之一)相对应的密文分配给第一运算器。处理器200可以将与第二多项式(另一个拆分多项式)相对应的密文分配给第二运算器。第一运算器和第二运算器可以实现为加速器。
处理器200可以通过基于阈值次数递归地对接收到的多项式进行拆分来生成拆分多项式,其中阈值次数可以对应于例如可由第一运算器和第二运算器运算的多项式的最大次数(阈值次数也可以是可变设置)。处理器200可以递归地对多项式进行拆分,直到拆分多项式的次数变得小于阈值次数。
在图10的示例中,在步骤1010中,处理器200可以接收与具有2N次的多项式相对应的密文并且对该多项式进行拆分。在步骤1030中,处理器200可以生成与具有N次的多项式相对应的一个密文,并将其分配给第一运算器。在步骤1050中,处理器200可以生成与具有N次的多项式相对应的另一个密文,并将其分配给第二运算器。在一些实施例中,第一运算器和第二运算器可以执行相同类型的运算。
当应用程序所需的多项式次数最初已经是N时,具有并行支持多项式次数N(或更少)的同态加密运算器的设备中的处理器200仍然可以将N次多项式拆分为次数小于N的多项式,从而可以并行处理拆分多项式。
处理器200可以并行处理拆分多项式,然后将处理后的拆分多项式合并以处理整个N次多项式。这可以通过并行运算器的数量(例如,通过2的倍数),提高同态加密运算的性能。
图11是示出了根据一个或多个实施例的由图1的同态加密运算装置执行的同态加密运算方法的示例的流程图。
在步骤1110中,接收器(例如,图1的接收器100)可以接收多项式形式的密文。密文多项式可以具有第一次数并且可以是用于执行同态加密运算的目标。
在步骤1130中,处理器(例如,图1的处理器200)可以通过对接收到的/目标多项式进行因式分解来生成拆分多项式,其中每个拆分多项式具有小于第一次数的第二次数。
处理器200可以将与(拆分多项式中的)第一多项式相对应的第一密文分配给第一运算器。处理器200可以将与(拆分多项式中的)第二多项式相对应的第二密文分配给第二运算器。
处理器200可以通过基于可由第一运算器和第二运算器运算的多项式的阈值次数递归地对接收到的/目标多项式进行拆分,来生成拆分多项式。处理器200可以递归地对多项式进行拆分,直到拆分多项式的次数变得小于阈值次数。
处理器200可以基于与拆分多项式中的第一多项式相对应的第一旋转因子,确定与拆分多项式中的第二多项式相对应的第二旋转因子。
处理器200可以通过将第一旋转因子乘以常数来确定第二旋转因子,即,第二旋转因子可以是第一旋转因子的倍数。
处理器200可以基于第一旋转因子和第二旋转因子对第一多项式和第二多项式执行NTT。
拆分多项式的系数模可以具有4N次单位根,其中N可以对应于第二次数,并且N是拆分多项式的次数。
在步骤1150中,处理器200可以通过使用拆分多项式执行逐元素运算,生成部分运算结果;对相应的拆分多项式的逐元素运算可以针对相应的拆分多项式生成部分运算结果(这里,逐元素指多项式的元素,例如,对表示拆分多项式的向量的元素的运算)。
在步骤1170中,处理器200可以通过将部分运算结果合并,生成密文的同态加密运算结果。处理器200可以通过将拆分多项式中的第一多项式的系数与拆分多项式中的第二多项式的相对应系数相加或相减(例如,可以执行向量加法或减法),将部分运算结果合并。
在一些实施例中,根据同态多项式加密方案,客户端设备可以将任何通用消息(例如,任何用户数据)变换为明文,并且可以将明文加密为原始多项式密文。同态加密运算装置10可以实现为包括在服务器设备中的硬件加速器。服务器设备可以与网络连接。服务器设备可以经由网络从客户端设备接收原始多项式密文。服务器设备可以确定可能涉及变换原始多项式密文的过程的类型。相应地,服务器可以使用硬件加速器(例如,同态加密运算装置10的实现方式)来变换原始多项式密文(例如,通过使用多项式拆分,可以递归地对拆分多项式执行上述方案的多项式运算,并且将其结果合并,来变换原始多项式密文),以生成原始多项式密文的相应变换。变换后的原始密文可以经由网络返回给客户端。客户端还可以对变换后的原始密文应用同态加密方案,以产生与对原始消息执行变换等效的结果。
此处关于图1至图11描述的计算设备、电子设备、处理器、存储器、存储设备和其他装置、设备、单元、模块和组件由硬件组件实现或代表硬件组件。在适当的情况下可以用于执行本申请中所描述的运算的硬件组件的示例包括控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行本申请中所描述的运算的任何其他电子组件。在其他示例中,用于执行本申请中所描述的运算的一个或多个硬件组件由计算硬件(例如,由一个或多个处理器或计算机)实现。处理器或计算机可以由一个或多个处理元件(例如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或被配置为以定义的方式响应并执行指令以实现期望的结果的任何其他设备或设备的组合)来实现。在一个示例中,处理器或计算机包括(或连接到)存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可以执行指令或软件,例如,运算系统(OS)和在OS上运行的一个或多个软件应用,以执行本申请中描述的运算。硬件组件还可以响应于指令或软件的执行来访问、操纵、处理、创建和存储数据。为了简洁起见,在本申请中描述的示例的描述中可以使用单数术语“处理器”或“计算机”,但是在其他示例中可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件、或多种类型的处理元件、或两者兼有。例如,单个硬件组件或者两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器、或处理器和控制器来实现,并且一个或多个其他硬件组件可以由一个或多个其他处理器或另一处理器和另一控制器来实现。一个或多个处理器或者处理器和控制器可以实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可以具有不同的处理配置中的任一种或多种,所述处理配置的示例包括单处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、和多指令多数据(MIMD)多处理。
执行本申请描述的运算的图1至图11中示出的方法是由计算硬件来执行的,例如,是由如以上描述而实现的、实施指令或软件以执行本申请所述的运算(通过所述方法实现的运算)的一个或多个处理器或计算机来执行的。例如,单个运算或者两个或更多个运算可以由单个处理器、或者两个或更多个处理器、或者处理器和控制器执行。一个或多个运算可以由一个或多个处理器或者处理器和控制器执行,并且一个或多个其他运算可以由一个或多个其它处理器或者另一处理器和另一控制器执行。一个或多个处理器或者处理器和控制器可以执行单个运算或者两个或更多个运算。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可以被编写为计算机程序、代码段、指令或其任何组合,用于单独或共同指示或配置一个或多个处理器或计算机以作为机器或专用计算机操作从而执行由上述硬件组件和方法执行的运算。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码,例如由编译器产生的机器代码。在另一个示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的更高级的代码。可以基于附图中所示出的框图和流程图以及本文中使用的对应描述(其公开了用于执行由硬件组件执行的运算和如上所述的方法的算法),使用任何编程语言来编写指令或软件。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可以被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或其上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、卡类型的存储器(比如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储设备、光学数据存储设备、硬盘、固态盘以及任何其他设备,所述任何其他设备被配置为以非暂时性方式存储指令或软件以及任何相关数据、数据文件和数据结构,并且向一个或多个处理器或计算机提供指令或软件以及任何相关数据、数据文件和数据结构,使得一个或多个处理器或计算机可以执行所述指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得一个或多个处理器或计算机以分布方式存储、访问和执行所述指令和软件以及任何相关联的数据、数据文件和数据结构。
尽管本公开包括特定示例,但是在理解了本申请的公开内容之后将显而易见的是,在不脱离权利要求及其等同物的精神和范围的情况下,可以对这些示例进行形式和细节上的各种改变。本文描述的示例应仅被认为是描述性的,而不是为了限制的目的。每个示例中的特征或方面的描述被认为适用于其他示例中的类似特征或方面。如果所描述的技术以不同的顺序执行和/或如果所描述的系统、架构、设备或电路中的组件以不同的方式组合和/或被其他组件或其等同物替换或补充,则可以实现合适的结果。
因此,除上述公开内容外,本公开内容的范围还可以由权利要求及其等同物来限定,并且在权利书要求及其等同物的范围内的所有变化都被解读为包括在本公开中。
Claims (24)
1.一种使用同态加密运算的装置,包括:
处理器,被配置为,和/或所述处理器与存储器耦接,所述存储器存储指令以将所述处理器配置为:
从包括用于执行同态加密运算的具有第一次数的多项式在内的密文,通过对所述多项式进行因式分解,来生成具有第二次数的拆分多项式,其中,所述拆分多项式具有小于所述第一次数的第二次数;
通过使用所述拆分多项式执行逐元素运算,生成部分运算结果;以及
通过将所述部分运算结果合并,生成与所述密文相对应的同态加密运算结果。
2.根据权利要求1所述的装置,其中,所述拆分多项式的系数模具有4N次单位根,并且其中,N对应于所述第二次数。
3.根据权利要求1所述的装置,其中,所述处理器被进一步配置为,和/或所述指令进一步将所述处理器配置为:
将所述拆分多项式中的第一多项式分配给第一运算器;以及
将所述拆分多项式中的第二多项式分配给第二运算器。
4.根据权利要求3所述的装置,其中,所述处理器被进一步配置为,和/或所述指令进一步将所述处理器配置为:
通过基于能够由所述第一运算器和所述第二运算器运算的多项式的阈值次数递归地对所述多项式进行拆分,来生成所述拆分多项式。
5.根据权利要求4所述的装置,其中,所述处理器被进一步配置为,和/或所述指令进一步将所述处理器配置为:
递归地对所述多项式进行拆分,直到所述拆分多项式的次数变得小于所述阈值次数。
6.根据权利要求1所述的装置,其中,所述处理器被进一步配置为,和/或所述指令进一步将所述处理器配置为:
基于与所述拆分多项式中的第一多项式相对应的第一旋转因子,确定与所述拆分多项式中的第二多项式相对应的第二旋转因子。
7.根据权利要求6所述的装置,其中,所述处理器被进一步配置为,和/或所述指令进一步将所述处理器配置为:
通过将所述第一旋转因子乘以常数,确定所述第二旋转因子。
8.根据权利要求6所述的装置,其中,所述处理器被进一步配置为,和/或所述指令进一步将所述处理器配置为:
基于所述第一旋转因子和所述第二旋转因子对所述第一多项式和所述第二多项式执行数论变换NTT。
9.根据权利要求1所述的装置,其中,所述处理器被进一步配置为,和/或所述指令进一步将所述处理器配置为:
通过将所述拆分多项式中的第一多项式的系数和所述拆分多项式中的第二多项式的系数相加或相减,合并所述部分运算结果。
10.一种由计算装置执行的方法,所述方法包括:
通过对具有第一次数的多项式进行因式分解,生成具有第二次数的多个拆分多项式,其中,所述多项式是具有第一次数的密文并用于执行同态加密运算;
通过使用所述拆分多项式执行逐元素运算,生成部分运算结果;以及
通过将所述部分运算结果合并,生成与所述密文相对应的同态加密运算结果。
11.根据权利要求10所述的方法,其中,所述拆分多项式的系数模具有4N次单位根,并且其中,N对应于所述第二次数。
12.根据权利要求10所述的方法,其中,生成所述部分运算结果包括:
将所述拆分多项式中的第一多项式分配给第一运算器;以及
将所述拆分多项式中的第二多项式分配给第二运算器。
13.根据权利要求12所述的方法,其中,生成所述拆分多项式包括:
通过基于能够由所述第一运算器和所述第二运算器运算的多项式的阈值次数递归地对所述多项式进行拆分,来生成所述拆分多项式。
14.根据权利要求13所述的方法,其中,通过递归地对所述多项式进行拆分来生成所述拆分多项式包括:
递归地对所述多项式进行拆分,直到所述拆分多项式的次数变得小于所述阈值次数。
15.根据权利要求10所述的方法,还包括:
基于与所述拆分多项式中的第一多项式相对应的第一旋转因子,确定与所述拆分多项式中的第二多项式相对应的第二旋转因子。
16.根据权利要求15所述的方法,其中,确定所述第二旋转因子包括:
通过将所述第一旋转因子乘以常数,确定所述第二旋转因子。
17.根据权利要求15所述的方法,还包括:
基于所述第一旋转因子和所述第二旋转因子对所述第一多项式和所述第二多项式执行数论变换NTT。
18.根据权利要求10所述的方法,其中,生成所述同态加密运算结果包括:
通过将所述拆分多项式中的第一多项式的系数和所述拆分多项式中的第二多项式的系数相加或相减,合并所述部分运算结果。
19.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时使所述处理器执行权利要求10所述的方法。
20.一种由处理器执行的方法,所述方法包括:
通过以下操作对符合同态加密方案的输入的第一次数多项式表示执行同态多项式运算:
将所述输入的第一次数多项式表示拆分为第一-第二次数多项式表示和第二-第二次数多项式表示,其中,所述第二次数小于所述第一次数;以及
通过将对所述第一-第二次数多项式表示执行同态多项式运算的结果与对所述第二-第二次数多项式表示执行同态多项式运算的结果组合,生成输出的第一次数多项式表示。
21.根据权利要求20所述的方法,其中,所述输出的第一次数多项式等效于对所述输入的第一次数多项式表示执行同态多项式运算的结果。
22.根据权利要求20所述的方法,其中,所述处理器包括执行同态多项式运算的残余多项式算术单元RPAU。
23.根据权利要求20所述的方法,其中,将所述输入的第一次数多项式表示拆分包括:对所述输入的第一次数多项式进行因式分解,并且其中,多项式表示中的每一个包括在所述处理器的存储器中同时由所述处理器运算的相应数字向量。
24.根据权利要求23所述的方法,其中,所述处理器被配置为对最多N次多项式的多项式表示执行同态多项式运算,其中所述第一次数大于N,其中所述第二次数等于N,并且其中所述因式分解是基于N进行的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2022-0043521 | 2022-04-07 | ||
KR1020220073618A KR20230144435A (ko) | 2022-04-07 | 2022-06-16 | 동형 암호 연산 장치 및 방법 |
KR10-2022-0073618 | 2022-06-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116894254A true CN116894254A (zh) | 2023-10-17 |
Family
ID=88309820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211385558.7A Pending CN116894254A (zh) | 2022-04-07 | 2022-11-07 | 使用同态加密运算的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116894254A (zh) |
-
2022
- 2022-11-07 CN CN202211385558.7A patent/CN116894254A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | VLSI design of a large-number multiplier for fully homomorphic encryption | |
Bisheh Niasar et al. | Efficient hardware implementations for elliptic curve cryptography over Curve448 | |
EP3127271B1 (en) | Obfuscated performance of a predetermined function | |
Akleylek et al. | On the efficiency of polynomial multiplication for lattice-based cryptography on GPUs using CUDA | |
CN113630234A (zh) | 使用同态加密的加密方法及装置 | |
CN112528219A (zh) | 存储器装置及其运算方法、计算设备 | |
Sasdrich et al. | Exploring RFC 7748 for hardware implementation: Curve25519 and Curve448 with side-channel protection | |
Takeshita et al. | Algorithmic acceleration of b/fv-like somewhat homomorphic encryption for compute-enabled ram | |
KR20220078155A (ko) | 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치 | |
KR102075848B1 (ko) | 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체 | |
US20230171084A1 (en) | Appratus and method with homomorphic encryption | |
US20230246807A1 (en) | Apparatus and method with homomorphic encryption using automorphism | |
WO2018008547A1 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム | |
CN116894254A (zh) | 使用同态加密运算的装置和方法 | |
KR101925614B1 (ko) | 타원곡선 암호화 시스템에서의 스칼라 곱셈 처리 방법 및 타원곡선 암호화 시스템 | |
Zheng | Encrypted cloud using GPUs | |
CN116070230A (zh) | 加密处理器、包括加密处理器的电子装置和计算方法 | |
US20230327849A1 (en) | Apparatus and method with homomorphic encryption operation | |
EP4275157A1 (en) | Method and system for privacy-preserving logistic regression training based on homomorphically encrypted ciphertexts | |
Alves et al. | Efficient GPGPU implementation of the leveled fully homomorphic encryption scheme YASHE | |
US9128806B2 (en) | Squaring binary finite field elements | |
CN117857004A (zh) | 具有同态加密操作的装置和方法 | |
KR20230144435A (ko) | 동형 암호 연산 장치 및 방법 | |
US20230171085A1 (en) | Homomorphic encryption apparatus and method | |
CN116738494B (zh) | 基于秘密分享的多方安全计算的模型训练方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |