用于CRYSTALKYBER的侧信道鲁棒不完全数论变换的制作方法

文档序号:33624612发布日期:2023-03-25 15:27阅读:86来源:国知局
用于CRYSTALKYBER的侧信道鲁棒不完全数论变换的制作方法
用于crystal kyber的侧信道鲁棒不完全数论变换
技术领域
1.本文描述的主题大体上涉及计算机安全领域,更具体地涉及后量子密码学。


背景技术:

2.crystal-kyber是一种数字密钥封装机制(kem),它基于在选定消息攻击下是安全的模块格(module lattices)上的格问题的困难。crystal-kyber部分依赖于使用秘密多项式的多项式乘法,这增加了侧信道攻击获取签名方案中使用的秘密信息的可能性。因此,保护crystal-kyber运算免受侧信道窥探攻击的技术可以在例如基于计算机的通信系统和方法中找到实用性。


技术实现要素:

3.提出了一种装置,包括:输入寄存器,包括输入多项式;处理数据路径,通信地耦合到包括多个计算节点的所述输入寄存器,以对所述输入多项式执行不完全数论变换ntt算法以生成ntt格式的输出多项式,所述多个计算节点包括:至少第一ntt电路,包括单个蝶形电路,对输入数据执行一系列蝶形计算;以及随机化电路,对所述一系列蝶形计算的顺序进行随机化。
4.还提出了相应的计算机实施的方法以及电子设备。
附图说明
5.参考附图来进行详细描述。
6.图1是根据实施例的签名设备和验证设备的示意图。
7.图2是根据实施例的不完全数论变换(ntt)的示意图。
8.图3是根据实施例的成对系数方式乘法(paired coefficient-wise multiplication)的示意图。
9.图4是根据实施例的实施不完全数论变换(ntt)计算的部件的示意图。
10.图5是根据实施例的实施数论变换(ntt)的处理结构的示意图。
11.图6是根据一些示例的可以适于实施硬件加速的计算架构的示意图。
具体实施方式
12.本文描述了为数论变换(ntt)运算实现低开销侧信道保护的示例性系统和方法。在以下描述中,描述了许多具体细节以提供对各种示例的透彻理解。然而,本领域技术人员将理解,可以在没有具体细节的情况下实施各种示例。在其他情况下,没有详细说明或描述众所周知的方法、程序、部件和电路,以免导致示例不清楚。
13.图1是根据一些示例的包括第一设备110和第二设备150的安全环境100的高级架构的示意图。参考图1,第一设备110和第二设备150中的每一个可以实施为能够执行本文描述的功能的任何类型的计算设备。例如,在一些实施例中,第一设备110和第二设备150中的
每一个可以实施为膝上型计算机、平板电脑、笔记本电脑、上网本、ultrabook
tm
、智能手机、蜂窝电话、可穿戴计算设备、个人数字助理、移动互联网设备、台式计算机、路由器、服务器、工作站和/或任何其他计算/通信设备。
14.第一设备110包括一个或多个处理器120和用于存储私钥124的存储器122。处理器120可以实施为能够执行本文描述的功能的任何类型的处理器。例如,一个或多个处理器120可以实施为一个或多个单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。类似地,存储器122可以实施为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器122可以存储在第一设备110的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动程序。存储器122通信地耦合到一个或多个处理器120。在一些示例中,私钥124可以驻留在可以是存储器122的一部分或者可以与存储器122分离的安全存储器中。
15.第一设备110进一步包括签名设施130,签名设施130包括一个或多个硬件安全模块131,该硬件安全模块131包括存储器122、签名逻辑134和验证逻辑136。签名逻辑134可以被配置为生成要发送的签名(即,发送的签名)和/或验证签名。
16.密码逻辑140被配置为代表签名设备110执行各种密码和/或安全功能。在一些实施例中,密码逻辑140可以实施为密码引擎、签名设备110的独立安全协处理器、并入一个或多个处理器120中的密码加速器或独立软件/固件。在一些实施例中,密码逻辑140可以生成和/或利用各种密码密钥(例如,对称/非对称密码密钥)以促进加密、解密、签名和/或签名验证。此外,在一些实施例中,密码逻辑140可以促进通过通信链路与远程设备建立安全连接。应当进一步理解,在一些实施例中,密码模块140和/或第一设备110的另一模块可以建立可信执行环境或安全飞地(secure enclave),其中可以存储本文描述的数据的一部分和/或可以执行本文描述的若干功能。
17.在生成签名之后,然后可以由第一设备110例如经由通信逻辑142将消息m和签名经由网络通信链路190发送到第二设备150。在一个实施例中,消息m在传输之前可以不被加密。在另一个实施例中,消息m可以在传输之前被加密。例如,消息m可以由密码逻辑140加密以产生加密的消息。
18.第二设备150还可以包括一个或多个处理器160和存储公钥164的存储器162。如上所述,一个或多个处理器160可以实施为能够执行本文所述功能的任何类型的处理器。例如,一个或多个处理器160可以实施为一个或多个单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。类似地,存储器162可以实施为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器162可以存储在第二设备150的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动程序。存储器162通信地耦合到一个或多个处理器160。
19.第二设备150进一步包括签名设施170,签名设施170包括一个或多个硬件安全模块171,该硬件安全模块171包括签名逻辑174和验证逻辑176。在第二设备是验证设备的情况下,硬件安全模块171被配置为至少部分地基于从第一设备接收到的签名并且至少部分地基于接收到的消息表示(m’)来生成验证签名。
20.环境100的各种模块可以实施为硬件、软件、固件或其组合。例如,环境100的各种模块、逻辑和其他部件可以形成第一设备110的一个或多个处理器120或第二设备150的一
个或多个处理器160或设备的其他硬件部件的一部分,或者由其建立。因此,在一些实施例中,环境100的一个或多个模块可以实施为电子设备的电路或集合(例如,认证电路、密码电路、通信电路、签名电路和/或验证电路)。此外,在一些实施例中,一个或多个说明性模块可以形成另一模块的一部分和/或一个或多个说明性模块可以彼此独立。
21.如上所述,现有的公钥数字签名算法,如rivest-shamir-adleman(rsa)和椭圆曲线数字签名算法(ecdsa),预计不能安全地抵御使用量子计算机的基于如shor算法的算法的暴力攻击。另一方面,基于格的签名算法有望抵御量子计算机的攻击。基于格的密钥封装机制(kem)的一个示例是kyber方案。
22.kyber密钥封装机制(kem)过程依赖于利用秘密多项式的多个多项式乘法运算,这增加了侧信道窥探攻击以获取有关运算的秘密信息的机会。掩蔽(masking)是一种用于防止侧信道泄漏的技术。但是,掩蔽会带来明显的性能开销,掩蔽实施方式的计算时间是未掩蔽实施方式的计算时间的两倍以上。置乱(shuffling)技术不能直接应用于crystal-kyber计算,因为kyber使用不同的ntt方法来减少可以置乱的运算数量。此外,将置乱直接应用于kyber并不能保证足够的安全性。
23.本文描述的是解决这些和其他问题的系统和方法。一些示例实施了基于置乱的解决方案,其在安全性、性能和硅面积消耗之间实现了可行的权衡。一种方法是对ntt计算中的运算重新排序以增加可随机化的运算的数量(从而提高安全性),同时还重新排列内存结构以保证良好的性能。
24.更具体地,可以使用数论变换(ntt)算法计算kyber中的多项式乘法。图2是根据实施例的不完全数论变换(ntt)200的示意图。ntt算法将多项式a(x)210变换为其ntt形式230。这要求ntt模数包含512阶单位根(512
th root of unity)(512=2x 256,其中256是每个kyber多项式中系数的数量)。为了加快计算速度,kyber的一些实施方式使用只有256阶单位根的较小模数。因此,kyber依赖于不完全ntt。这意味着ntt在偶数和奇数索引系数上独立工作,并且结果是部分的。虽然基本运算与其他协议中使用的完全ntt相似,但不完全ntt在其执行上存在明显差异,需要对其实施方式和保护进行重大更改。
25.图3是根据实施例的成对系数方式乘法300的示意图。参考图3,不完全ntt形式的多项式之间的乘法对应于许多1次(degree-1)多项式乘法。每个1次多项式由以不完全ntt形式表示的2个系数组成。因此,可将a(x)和b(x)之间的乘积计算为intt(ntt(a(x)).ntt(b(x))),其中intt表示逆ntt(即intt(ntt(a))=a)并且“.”表示成对的1次多项式方式乘法。这意味着如果a(x)=a0+a1x+a2x2+a3x3+

,并且b(x)=b0+b1x+b2x2+b3x3+

,则a.b的前两个系数是(a0+a1x)(b0+b1x)的系数,第三和第四个系数是(a2+a3x)(b2+b3x)的系数,等等。
26.ntt算法的一个关键元素是蝶形运算。该运算接收两个系数和一个常数值并输出系数的新值。蝶形运算的实现遵循用于正向ntt的cooley-tukey(ct)算法和用于逆ntt的gentleman-sande(gs)算法。这是可能的,因为逆ntt算法与正向ntt算法非常相似,主要区别在于蝶形运算。ntt对一个多项式的所有系数进行多次运算。在对128个系数(每次重复使用不同的对)进行64次蝶形运算的7次重复(因为kyber在偶数和奇数索引的128个系数上计算2个不完全ntt)之后,产生了ntt结果。因此,kyber中的一个ntt函数由64/n(其中n是蝶形单元的数量)个循环的7个块组成,其中块中的每个循环都包含独立的运算,即一次运算的结果不依赖于同一块中的任何其他计算的结果。
27.可以通过随机化侧信道泄漏来保护实施方式免受侧信道攻击。称为置乱的技术包括以随机顺序重新排序不同的运算。然而,ntt的常见实施方式使用两个并联的蝶形电路(n=2)来执行蝶形计算。这意味着最多只能重新排序32个运算,因此可能的电源迹线数量为32!,大约为2
120
,这可能不足以防止侧信道攻击。
28.图4是根据实施例的实施不完全数论变换(ntt)计算的部件400的示意图。根据本文所述的实施例,不完全ntt电路可以仅使用每ntt电路的单次蝶形运算(n=1)来实现。这样,每蝶形电路可以随机化64次运算,即给予64!个可能的侧信道迹线,从而提供足够的安全性来防范侧信道攻击。然而,这种方法会增加计算延迟,这可能会对整体性能产生重大影响。
29.kyber算法使用几个多项式。在加密过程中,计算了2k个正向ntt和2(k+1)个逆ntt,其中k的范围在2到4之间,具体取决于安全级别。2x系数源于每个256系数多项式对应于两个128系数多项式这一事实。为了解决上述性能问题,可以并行计算两个单蝶形ntt计算。由于在ntt电路的面积消耗方面最昂贵的部件是蝶形单元,因此两个单蝶形ntt所需的面积比单个双蝶形ntt稍多。由于正向和逆ntt的数量始终是2的倍数,因此并行使用的两个ntt被充分利用,因此延迟与使用单个双蝶形ntt相同。
30.虽然这种方法在保证减少面积和延迟开销方面是有效的,但它确实对内存提出了要求。大多数内存仅限于一个读取端口和一个写入端口,并且由于每个蝶形运算需要两个系数,因此至少需要两个内存块。但是,当使用双蝶形ntt时,可以通过将同一多项式的两个系数存储在同一个内存字中并一次读取四个系数并将它们以更改后的顺序写回内存来将内存使用量保持在两个块。当只使用一个蝶形电路时,同样的优化是不可行的。因此,这种技术的直接方法将需要两倍的内存块。
31.在本文所述的实施例中,该问题可以通过将用于不同ntt电路的两个系数存储在同一内存字中来解决,如图4所示。这样,读写操作的所需次数减半,因此只需要两个内存块。这种安排有额外的好处。首先,它将两个并行ntt的行为联系起来,使得可以使用相同的有限状态机来控制两个电路。因此,该解决方案的面积消耗实际上与单个双蝶形ntt电路的面积消耗相同。其次,由于两个ntt电路对同一多项式的偶数和奇数索引系数进行运算,这对应于将连续系数保存在同一内存字中,例如a0和a1可以存储第一个字,其中一个蝶形电路使用a0,另一个蝶形电路使用a1。这进一步简化了读取过程,因为不需要过滤来选择正确的系数,以及简化了多项式生成过程,因为系数可以按顺序保存。第三,系数已经以正确的顺序存储以用于“系数方式”乘法,该乘法遵循用于2次多项式的系数方式乘法的ntt运算,如上面所述。此外,ntt蝶形内核中的乘法器通常用于执行此类乘法运算。由于不同的ntt电路可以对同一多项式的不同部分进行运算,这种方法不会以任何方式影响这一点,因为每次运算只影响两个系数。因此,即使对于ntt的这种潜在应用,开销也是零。
32.因此,这种方法能够实现置乱以保护kyber中的多项式乘法免受侧信道攻击,多项式乘法是一个关键组成部分,往往是侧信道攻击的主要目标。有利的是,这些对策在延迟、面积消耗、内存要求或任何其他指标方面几乎没有开销,同时保证了高水平的安全性。
33.图5是根据实施例的用于实施不完全数论变换(ntt)的处理数据路径500的示意图。参考图5,数据路径500包括输入寄存器510以接收原始输入多项式。数据路径500进一步包括多个计算节点,包括在图中由520a、520b、520c、

520g指示的串联连接的第一组计算
节点和在图中由530a、530b、530c、

530g指示的第二组计算节点。如上所述,在一个实施例中,每组计算节点包括七个计算节点,它们可以由附图标记520和530统称。流水线500中的每个计算节点520、530包括至少第一ntt电路,其包括单个蝶形电路以执行一系列蝶形计算。在一个实施例中,第一组计算节点中的每个计算节点包括单个蝶形电路522a、522b、522c、

522g,第二组计算节点中的每个计算节点包括单个蝶形电路534a、534b、534c、

534g。这些蝶形电路在本文中可以用附图标号522和524统称。数据路径500进一步包括输出寄存器540以接收ntt格式的多项式。
34.在一些示例中,可以通过随机化可能引起侧信道泄漏的运算来保护数据路径500免受侧信道攻击。实现此目的的一种技术称为置乱,其包括以随机顺序重新排序不同的运算。有几种算法可以生成随机置乱,fisher-yates算法是最安全的算法中的一种。
35.在本文描述的一些示例中,数据路径200的每个蝶形电路222、224内的64次计算的顺序可以是随机化的。这产生64!个(大约2
295
个)不同的配置,因此有64!个不同的电源/em迹线。这可以通过改变在有限状态机中更新状态的方式来实现。为了计算64个元素的排列,我们使用了fisher-yates算法的由内而外的版本,它需要64个随机数在1到64之间的不同区间内,即需要64个随机数,其中第i个数在区间{0,

,i-1}中是均匀随机的。
36.在一些实施例中,置乱可以直接在硬件中实现,而不是让外部方传递置乱作为输入。这提供了额外的安全性,因为攻击者既不能篡改流程,也不能生成可用于训练机器学习模型以构建攻击的特定置乱(或完全禁用置乱)。
37.图6示出了示例性计算架构的实施例,该计算架构可以适用于实施如前所述的各种实施例。在各种实施例中,计算架构600可以包括电子设备或被实施为电子设备的一部分。在一些实施例中,计算架构600可以代表例如实现上述运算环境的一个或多个部件的计算机系统。在一些实施例中,计算架构600可以代表实现本文描述的一种或多种技术的数字签名签名系统的一个或多个部分或部件。各实施例不限于此场景。
38.如在本技术中使用的,术语“系统”和“部件”和“模块”旨在指代计算机相关实体,可以是硬件、硬件和软件的组合、软件或执行中的软件,其示例由示例性计算架构600提供。例如,部件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器、多个存储驱动器(光和/或磁存储介质的)、对象、可执行文件、执行线程、程序和/或计算机。举例来说,在服务器上运行的应用和服务器都可以是部件。一个或多个部件可以驻留在一个进程和/或执行线程内,并且部件可以位于一个计算机上和/或分布在两个或更多个计算机之间。此外,部件可以通过各种类型的通信介质彼此通信耦合以协调操作。协调可能涉及单向或双向信息交换。例如,部件可以以通过通信介质传送的信号的形式传送信息。该信息可以被实现为分配给各种信号线的信号。在这样的分配中,每条消息都是一个信号。然而,另外的实施例可替代地采用数据消息。此类数据消息可以通过各种连接发送。示例性连接包括并行接口、串行接口和总线接口。
39.计算架构600包括各种常见的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(i/o)部件、电源等。然而,实施例不限于由计算架构600实现。
40.如图6所示,计算架构600包括一个或多个处理器602和一个或多个图形处理器608,并且可以是单处理器桌面系统、多处理器工作站系统或具有大量处理器602或处理器
内核607的服务器系统。在一个实施例中,系统600是结合在用于移动、手持或嵌入式设备的片上系统(soc或soc)集成电路内的处理平台。
41.系统600的一个实施例可以包括基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持游戏控制台或在线游戏控制台或结合在其内。在一些实施例中,系统600是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统600还可以包括、耦合或集成在可穿戴设备中,诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备中。在一些实施例中,数据处理系统600是具有一个或多个处理器602和由一个或多个图形处理器608生成的图形界面的电视机或机顶盒设备。
42.在一些实施例中,一个或多个处理器602各自包括一个或多个处理器内核607以处理指令,当被执行时,该指令执行系统和用户软件的操作。在一些实施例中,一个或多个处理器内核607中的每一个被配置为处理特定指令集609。在一些实施例中,指令集609可以促进复杂指令集计算(cisc)、精简指令集计算(risc)或经由超长指令字(vliw)的计算。多个处理器内核607可以各自处理不同的指令集609,指令集609可以包括促进其他指令集的仿真的指令。处理器内核607还可以包括其他处理器件,诸如数字信号处理器(dsp)。
43.在一些实施例中,处理器602包括高速缓存存储器604。根据架构,处理器602可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器602的各种部件之间共享。在一些实施例中,处理器602还使用外部高速缓存(例如,1级(l1)高速缓存或末级高速缓存(llc))(未示出),其可以使用已知的高速缓存一致性技术在处理器内核607之间共享。寄存器文件606另外包括在处理器602中,其可以包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以专用于处理器602的设计。
44.在一些实施例中,一个或多个处理器602与一个或多个接口总线610耦合以在处理器602和系统中的其他部件之间传送诸如地址、数据或控制信号的通信信号。在一个实施例中,接口总线610可以是处理器总线,诸如直接媒体接口(dmi)总线的一种版本。然而,处理器总线不限于dmi总线,还可以包括一个或多个外围部件互连总线(例如pci、pci express)、存储器总线或其他类型的接口总线。在一个实施例中,一个或多个处理器602包括集成的存储器控制器616和平台控制器集线器610。存储器控制器616促进存储器器件和系统600的其他部件之间的通信,而平台控制器集线器(pch)610经由本地i/o总线提供到i/o器件的连接。
45.存储器器件620可以是动态随机存取存储器(dram)器件、静态随机存取存储器(sram)器件、闪存器件、相变存储器器件或具有用作过程存储器的合适性能的一些其他存储器器件。在一个实施例中,存储器器件620可以作为系统600的系统存储器操作,以存储数据622和指令621以供当一个或多个处理器602执行应用或进程时使用。存储器控制器集线器616还与可选的外部图形处理器612耦合,外部图形处理器612可以与处理器602中的一个或多个图形处理器608通信以执行图形和媒体操作。在一些实施例中,显示设备611可以连接到一个或多个处理器602。显示设备611可以是内部显示设备(如在移动电子设备或膝上型设备中)或者经由显示接口(例如,显示端口等)附接的外部显示设备中的一种或多种。在一个实施例中,显示设备611可以是头戴式显示器(hmd),诸如用于虚拟现实(vr)应用或增强现实(ar)应用中的立体显示设备。
46.在一些实施例中,平台控制器集线器610使外围设备能够经由高速i/o总线连接到存储器器件620和处理器602。i/o外围设备包括但不限于音频控制器646、网络控制器614、固件接口628、无线收发器626、触摸传感器625、数据存储器件624(例如,硬盘驱动器、闪存等)。数据存储器件624可以经由存储接口(例如,sata)或经由外围总线(诸如外围部件互连总线(例如,pci、pci express))来连接。触摸传感器625可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器626可以是wi-fi收发器、蓝牙收发器或诸如1g、4g、长期演进(lte)收发器的移动网络收发器。固件接口628实现与系统固件的通信,并且可以是例如统一可扩展固件接口(uefi)。网络控制器614可以实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线610耦合。在一个实施例中,音频控制器646是多通道高清晰度音频控制器。在一个实施例中,系统600包括可选的传统i/o控制器640,用于将传统(例如,个人系统2(ps/2))设备耦合到系统。平台控制器集线器610还可以连接到一个或多个通用串行总线(usb)控制器642以连接输入设备,诸如键盘和鼠标641组合、摄像头644或其他usb输入设备。
47.以下涉及进一步的示例。
48.示例1是一种装置,包括:包括输入多项式的输入寄存器;通信地耦合到输入寄存器的处理数据路径,该输入寄存器包括多个计算节点,以对输入多项式执行不完全数论变换(ntt)算法以生成ntt格式的输出多项式,该多个计算节点包括:至少第一ntt电路,包括单个蝶形电路以对输入数据执行一系列蝶形计算;以及随机化电路,随机化一系列蝶形计算的顺序。
49.在示例2中,示例1的主题可以可选地包括一种布置,其中,处理数据路径包括串联通信耦合的第一组七个计算节点和串联通信耦合的第二组七个计算节点。
50.在示例3中,示例1-2中的任一个的主题可以可选地包括一种布置,其中,输入寄存器将来自输入多项式的两个系数存储在单个内存字中。
51.在示例4中,示例1-1中的任一个的主题可以可选地包括一种布置,其中,第一组七个计算节点对偶数系数进行运算,而第二组七个计算节点对奇数系数进行运算。
52.在示例5中,示例1-4中的任一个的主题可以可选地包括一种布置,其中,第一组七个计算节点和第二组七个计算节点并行执行迭代。
53.在示例6中,示例1-5中的任一个的主题可以可选地包括一种布置,其中,每个计算节点对输入多项式的系数执行成对乘法。
54.在示例7中,示例1-6中的任一个的主题可以可选地包括输出寄存器以接收ntt格式的输出多项式。
55.示例8是一种计算机实施的方法,包括:在输入寄存器中接收输入多项式;在通信地耦合到包括多个计算节点的输入寄存器的处理数据路径中,对输入多项式执行不完全数论变换(ntt)算法以生成ntt格式的输出多项式,该ntt算法包括在单个蝶形电路中,对输入数据进行一系列蝶形计算;并且在随机化电路中随机化一系列蝶形计算的顺序。
56.在示例9中,示例8的主题可以可选地包括一种布置,其中,处理数据路径包括串联通信耦合的第一组七个计算节点和串联通信耦合的第二组七个计算节点。
57.在示例10中,示例8-9中的任一个的主题可以可选地包括一种布置,其中,输入寄存器将来自输入多项式的两个系数存储在单个内存字中。
58.在示例11中,示例8-10中的任一个的主题可以可选地包括一种布置,其中,第一组七个计算节点对偶数系数进行运算,而第二组七个计算节点对奇数系数进行运算。
59.在示例12中,示例8-11中的任一个的主题可以可选地包括一种布置,其中,第一组七个计算节点和第二组七个计算节点并行执行迭代。
60.在示例13中,示例8-12中的任一个的主题可以可选地包括一种布置,其中,每个计算节点对输入多项式的系数执行成对乘法。
61.在示例14中,示例8-13中的任一个的主题可以可选地包括输出寄存器以接收ntt格式的输出多项式。
62.示例15是一种电子设备,包括:处理器、包括输入多项式的输入寄存器、通信地耦合到输入寄存器的处理数据路径,该输入寄存器包括多个计算节点,以对输入多项式执行不完全数论变换(ntt)算法以生成ntt格式的输出多项式,该多个计算节点至少包括:第一ntt电路,该第一ntt电路包括单个蝶形电路,对输入数据执行一系列蝶形计算;以及随机化一系列蝶形计算的顺序的随机化电路。
63.在示例16中,任何示例15的主题可以可选地包括一种布置,其中,处理数据路径包括串联通信耦合的第一组七个计算节点和串联通信耦合的第二组七个计算节点。
64.在示例17中,示例15-16中的任一个的主题可以可选地包括一种布置,其中,输入寄存器用于将来自输入多项式的两个系数存储在单个内存字中。
65.在示例18中,示例15-17中的任一个的主题可以可选地包括一种布置,其中,第一组七个计算节点对偶数系数进行运算,而第二组七个计算节点对奇数系数进行运算。
66.在示例19中,示例15-18中的任一个的主题可以可选地包括一种布置,其中,第一组七个计算节点和第二组七个计算节点并行执行迭代。
67.在示例20中,示例15-19中的任一个的主题可以可选地包括一种布置,其中,每个计算节点对输入多项式的系数执行成对乘法。
68.在示例21中,示例15-20中的任一个的主题可以可选地包括输出寄存器以接收ntt格式的输出多项式。
69.上面的详细描述包括对附图的引用,这些附图形成了详细描述的一部分。附图通过说明的方式示出了可以实施的特定实施例。这些实施例在本文中也称为“示例”。这样的示例可以包括除了所示出或描述的元件之外的元件。然而,也可以设想包括所示或描述的元件的示例。此外,还针对特定示例(或其一个或多个方面)或针对本文显示或描述的其他示例(或其一个或多个方面)设想了使用所示出或描述的那些元件(或其一个或多个方面)的任何组合或排列的示例。
70.本文献中提及的出版物、专利和专利文献通过引用整体并入本文,如同单独通过引用并入一样。如果本文献与以引用方式并入的那些文献之间的用法不一致,则所并入的参考文献中的用法是对本文献的补充;对于不可调和的不一致,以本文献中的用法为准。
71.在本文献中,如在专利文献中常见的,术语“一”用于包括一个或不止一个,这与“至少一个”或“一个或多个”的任何其他情况或用法无关。此外,“一组”包括一个或多个元件。在本文中,术语“或”用于表示非排他性的或,使得“a或b”包括“a但不是b”、“b但不是a”和“a和b”,除非另有说明。在所附权利要求中,术语“包括”和“在
……
中”用作相应术语“包含”和“其中”的普通语言等同物。而且,在以下权利要求中,术语“包括”和“包含”为开放式
的;即包括除了权利要求中在该术语之后列出的元件之外的元件的系统、设备、物品或过程仍然被视为落在本权利要求的范围内。此外,在所附权利要求中,术语“第一”、“第二”、“第三”等仅用作标签,并不旨在暗示它们的对象的数字顺序。
72.如本文所指的术语“逻辑指令”涉及可由一台或多台机器理解用于执行一个或多个逻辑运算的表达。例如,逻辑指令可以包括可由处理器编译器解释用于对一个或多个数据对象执行一个或多个运算的指令。然而,这仅仅是机器可读指令的示例并且示例不限于此方面。
73.如本文所指的术语“计算机可读介质”涉及能够保持可由一台或多台机器感知的表达的介质。例如,计算机可读介质可以包括一个或多个用于存储计算机可读指令或数据的存储设备。这样的存储设备可以包括存储介质,诸如例如光、磁或半导体存储介质。然而,这仅仅是计算机可读介质的示例并且示例不限于这方面。
74.如本文所指的术语“逻辑”涉及用于执行一个或多个逻辑运算的结构。例如,逻辑可以包括基于一个或多个输入信号提供一个或多个输出信号的电路。这种电路可以包括接收数字输入并提供数字输出的有限状态机,或响应于一个或多个模拟输入信号而提供一个或多个模拟输出信号的电路。这种电路可以在专用集成电路(asic)或现场可编程门阵列(fpga)中提供。此外,逻辑可以包括存储在存储器中的机器可读指令以及执行这样的机器可读指令的处理电路。然而,这些仅仅是可以提供逻辑的结构的示例,并且示例不限于这方面。
75.本文描述的一些方法可以实施为计算机可读介质上的逻辑指令。当在处理器上执行时,逻辑指令使处理器被编程为实现所述方法的专用机器。当由逻辑指令配置为执行本文所述的方法时,处理器构成用于执行所述方法的结构。可替代地,本文描述的方法可简化为例如现场可编程门阵列(fpga)、专用集成电路(asic)等上的逻辑。
76.在描述和权利要求中,可以使用术语耦合和连接以及它们的派生词。在特定示例中,连接可用于指示两个或更多个元件彼此直接物理或电接触。耦合可能意味着两个或多个元件直接物理或电接触。然而,耦合也可能意味着两个或多个元件可能彼此不直接接触,但仍可能彼此协作或交互。
77.在说明书中对“一个示例”或“一些示例”的引用意味着结合示例描述的特定特征、结构或特性被包括在至少一种实现方式中。说明书中各处出现短语“在一个示例中”可以或可以不是指同一个示例。
78.上面的描述旨在为说明性的,而不是限制性的。例如,上述示例(或其一个或多个方面)可以结合其他示例使用。在回顾以上描述之后,诸如可以由本领域的普通技术人员使用其他实施例。摘要用于允许读者快速确定技术公开的本质。提交摘要时应了解其不会用于解释或限制权利要求的范围或含义。另外,在以上详细描述中,各种特征可以被聚集在一起以简化本公开。然而,权利要求书可能并未阐述本文公开的每个特征,因为实施例可以以所述特征的子集为特征。此外,实施例可以包括比特定示例中公开的特征更少的特征。因此,所附权利要求并入具体实施方式中,其中每个权利要求自身作为单独的实施例。因此,本文公开的实施例的范围应该参考所附权利要求以及这些权利要求所赋予的等同物的全部范围来确定。
79.尽管已经以特定于结构特征和/或方法行为的语言描述了各示例,但是应当理解,
要求保护的主题可以不限于所描述的特定特征或行为。相反,具体特征和动作被公开为实现要求保护的主题的示例形式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1