首页 / 专利库 / 电脑零配件 / 计算机系统 / 数字平方计算机实现的方法和设备

数字平方计算机实现的方法和设备

阅读:901发布:2021-05-30

专利汇可以提供数字平方计算机实现的方法和设备专利检索,专利查询,专利分析的服务。并且本公开内容的 实施例 描述与大数字平方相关联的计算机实现的方法、计算机实现的媒体和 计算机系统 。将数字x平方的计算机实现的方法可包括在处理器的t个b比特寄存器中存储x的t数位向量表示。使用所述t个b比特寄存器中存储的x,可生成并在处理器的2t个b比特寄存器中存储2t数位中间向量。t个b比特或2t个b比特寄存器至少之一中存储的值可向左移位n。n可以是至少等于1的整数。在移位后的某个点,数字x的平方w可由在2t个b比特寄存器中存储的2t数位结果向量表示。其它实施例也可描述和/或 声明 。,下面是数字平方计算机实现的方法和设备专利的具体信息内容。

1.一种将数字x平方的计算机实现的方法,作为加密或解密的一部分,包括:
在处理器的t个b比特寄存器中存储x的t数位向量表示;
使用所述t个b比特寄存器中存储的x,生成并在所述处理器的2t个b比特寄存器中存储
2t数位中间向量;
将所述t个b比特寄存器至少之一中存储的值向左移位n,其中n是至少等于1的整数;
其中在所述移位后,数字x的平方w由所述2t个b比特寄存器中存储的所述2t数位结果向量表示,并且t和b是整数。
2.如权利要求1所述的计算机实现的方法,其中将所述t个b比特寄存器至少之一中存储的值向左移位n包括执行双精度左移(“shld”)指令以将所述t个b比特寄存器至少之一中存储的值向左移位n。
3.如权利要求1所述的计算机实现的方法,其中将所述t个b比特寄存器至少之一中存储的值向左移位n包括执行进位左环移(“rcl”)指令以将所述t个b比特寄存器至少之一中存储的值向左移位n。
4.如权利要求1所述的计算机实现的方法,其中n =1。
5.如权利要求1所述的计算机实现的方法,其中所述t个b比特寄存器由x=x[0]+x[1]+x[2]...+x[t-1]表示,所述2t个b比特寄存器由w=w[0]+w[1]+w[2]...+w[2t-1]表示,并且所述方法还包括:
对于每个整数i, ,由所述处理器执行以下操作:
设置 ;
其是y是临时向量。
6.如权利要求5所述的计算机实现的方法,还包括:
对于每个整数i, ,由所述处理器执行以下操作:
设置 ;
设置 ;
设置 ;
设置 ;
对于每个整数j, :
设置 ;
设置 ;
设置 ;
设置c = 0;
其中c是寄存器。
7.如权利要求6所述的计算机实现的方法,还包括由所述处理器执行以下操作:
如果 ,则执行以下操作:
对于每个整数i, ,执行以下操作:
设置 ;
设置c=carry,
设置 ;
返回w。
8.一种系统,包括:
处理器;
通信信道,耦合到所述处理器;
密码模,配置成由所述处理器操作以将消息加密以便在所述信道上传送和/或将在所述信道上收到的消息解密,其中所述密码模块配置成将表示为t数位向量的数字x平方,作为加密或解密的一部分,其中为将数字x平方,所述密码模块配置成:
在所述处理器的t个b比特寄存器中存储x;
使用所述t个b比特寄存器中存储的x,生成并在所述处理器的2t个b比特寄存器中存储
2t数位中间向量;以及
将所述t个b比特寄存器至少之一中存储的值向左移位n,其中n是至少等于1的整数;
其中在所述移位操作后,数字x的平方w由所述2t个b比特寄存器中存储的所述2t数位结果向量表示,并且t和b是整数。
9.如权利要求8所述的系统,其中为将在所述t个b比特寄存器至少之一中存储的值向左移位n,所述密码模块配置成执行双精度左移(“shld”)指令以将所述t个b比特寄存器至少之一中存储的值向左移位n。
10.如权利要求8所述的系统,其中为将在所述t个b比特寄存器至少之一中存储的值向左移位n,所述密码模块配置成执行进位左环移(“rcl”)指令以将所述t个b比特寄存器至少之一中存储的值向左移位n。
11.如权利要求8所述的系统,其中n=1。
12.如权利要求8所述的系统,其中所述t个b比特寄存器由x=x[0]+x[1]+x[2]...+x[t-
1]表示,所述2t个b比特寄存器由w=w[0]+w[1]+w[2]...+w[2t-1]表示,并且其中所述密码模块还配置成:
对于每个整数i, ,执行以下操作:
设置 ;
其是y是临时向量。
13.如权利要求12所述的系统,其中所述密码模块还配置成:
对于每个整数i, ,执行以下操作:
设置 ;
设置 ;
设置 ;
设置 ;
对于每个整数j, :
设置 ;
设置 ;
设置 ;
设置c = 0;
其中c是寄存器。
14.如权利要求13所述的系统,其中所述密码模块还配置成执行以下操作:
如果 ,则执行以下操作:
对于每个整数i, ,执行以下操作:
设置 ;
设置c=carry,
设置 ;
返回w。

说明书全文

数字平方计算机实现的方法和设备

技术领域

[0001] 本发明实施例一般涉及数据处理领域,并且具体地说,涉及与许多密码算法相关联的大数字平方。

背景技术

[0002] 本文中提供的背景描述是为了概括介绍公开内容的上下文。当前有名的发明者的工作(就其在本背景部分中描述而言)及在提交之时不可视为现有技术的描述的方面,均未被明确或隐含承认为相对于本公开内容的现有技术。除非本文中另有指示,否则,此部分中描述的方案不是本公开内容的权利要求的现有技术,并且未由于包含在本部分中而被承认是现有技术。
[0003] 大数字平方可以是密码运算的组成部分。例如,Rivest, Shamir和Adleman(“RSA”)密码算法可包括两个模幂运算。w进制模幂运算算法可包括迭代通过w比特的群组中的阶位的环。在每次迭代中,可执行w模平方运算,随后是单模乘运算。模平方运算可包括一个大整数平方加上取决于使用的方法而有所不同的多个更小的乘法和加法。模乘法可包括一个大的整数乘法加上同样取决于使用的方法的几个更小的乘法和加法。在一些情况下,大整数平方一般可涉及8或16数位的整数,并且可消耗大约40%的模平方运算。例如,使用w=4的窗口大小(每模乘法四个模平方运算)时,大整数平方可消耗大约三分之一的幂运算时间。对于更大的窗口大小(例如,w=5,w=6并以此类推),大整数平方运算的相对权重可增大。
[0004] 诸如大整数x等大数字可在计算机上通过t个b比特数位表示。比特的数量b可以是给定体系结构上字中比特的数量,并且数位的数量t可以是表示数字x要求的字的数量。例如,在64比特处理器(例如,x86-64体系结构)上,8数位数字具有总共512个比特,并且16数位数字具有1024个比特。用于将大数字平方的示例算法在下面示出:
[0005] 算法1
[0006] 输入:
[0007] 输出:
[0008] 1.对于从0到(2t-1)的i,执行:w[i]=0
[0009] 2.对于从0到(t-1)的i,执行:
[0010] 2.1
[0011] 2.2
[0012] 2.3c=carry
[0013] 2.4对于从(i+1)到(t-1)的j,执行:
[0014]
[0015] 2.5
[0016] 3.返回w
[0017] 在上述算法中,carry可以是从执行的最近加法运算的进位,c和u可以是寄存器。附图说明
[0018] 结合附图,通过下面的详细描述,将容易理解实施例。为有助于此描述,类似的标号指示类型的结构要素。在附图的图形中,实施例以示例方式而不是限制方式示出。
[0019] 图1根据本公开内容的一实施例,以示意图方式示出用于将大数字平方的示例方法。
[0020] 图2根据本公开内容的一实施例,列出可使用两种不同算法执行以将大数字平方的示例运算。
[0021] 图3根据本公开内容的一实施例,以示意图方式示出配置成实现密码操作和大数字平方的示例系统。

具体实施方式

[0022] 在各种实施例中,可提供计算机实现的方法以将数字x平方。方法可包括在处理器的t个b比特寄存器中存储x的t数位向量表示;使用所述t个b比特寄存器中存储的x,生成并在处理器的2t个b比特寄存器中存储2t数位中间向量;以及将t个b比特或2t个b比特寄存器至少之一中存储的值向左移位n,其中,n是至少等于1的整数。在所述移位后,数字x的平方w可由在2t个b比特寄存器中存储的2t数位结果向量表示。在一些实施例中,n=1。
[0023] 在各种实施例中,系统可包括处理器、耦合到处理器的通信信道和配置成由处理器操作以将消息加密以便在信道上传送和/或将在信道上收到的消息解密的密码模。密码模块可配置成将表示为t数位向量的数字x平方,作为加密或解密的一部分。为将数字x平方,密码模块可配置成:在处理器的t个b比特寄存器中存储x;使用所述t个b比特寄存器中存储的x,生成并在处理器的2t个b比特寄存器中存储2t数位中间向量;以及将t个b比特或2t个b比特寄存器至少之一中存储的值向左移位n,其中,n是至少等于1的整数。在移位操作后,数字x的平方w可由在2t个b比特寄存器中存储的2t数位结果向量表示。在一些实施例中,n=1。
[0024] 在各种实施例中,提供了其中包含计算机可读代码的非暂时性计算机可读媒体。计算机可读代码可包括指令,指令配置成允许设备响应指令的执行而执行以下操作:
[0025] 接收要平方的数字x的输入,其中x存储在t个b比特存储器位置中,;
[0026] 分配2t个b比特存储器位置, 以存储x的平方;
[0027] 对于每个整数i, ,执行以下操作:
[0028] 对于每个整数j, ,执行以下操作:
[0029] 设置 ;
[0030] 设置 ;
[0031] 设置 ;
[0032] 设置
[0033] 对于每个整数i, ,执行以下操作:
[0034] 设置 ;
[0035] 设置 ;
[0036] c=carry;
[0037] 其中,carry是执行的最近加法运算的进位,并且c和u是寄存器。
[0038] 在下面的详细描述中,参照了形成本文一部分的附图,并且图中类似的标号在所有图形中指示类似的部分,通过示图方式示出了可实践的实施例。要理解的是,在不脱离本公开内容的范围的情况下可利用其它实施例,并且可进行结构或逻辑更改。因此,下面的详细描述不可从限制的意义理解,并且实施例的范围只由随附权利要求及其等效物定义。
[0039] 各种操作可又以对理解所述主题最有帮助的方式描述为多个离散动作或操作。然而,描述的顺序不应理解为暗示这些操作一定与顺序相关。具体而言,可不以介绍的顺序执行这些操作。所述操作可以与所述实施例不同的顺序执行。可执行各种另外的操作,和/或可在另外的实施例中忽略所述操作。
[0040] 为便于理解本公开内容,短语“A和/或B”表示(A)、(B)或(A和B)。为便于理解本公开内容,短语“A、B和C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
[0041] 描述可使用短语“在一实施例中”或“在实施例中”,这均可指一个或多个相同或不同的实施例。此外,如相对于本公开内容的实施例使用的术语“包括”、“具有”及诸如此类同义。
[0042] 在本文中使用时,术语“模块”可指以下所述、以下所述的一部分或包括以下所述:专用集成电路(“ASIC”)、电子电路、执行一个或多个软件固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路和/或提供所需功能性的其它适合组件。
[0043] 背景部分中描述的算法1可展示以下特性,其中的一个或几个特性可不是最佳的。可使用在第2.4.1和2.4.2行的乘法(“mul”)指令计算积 。积可表示为多达2b个比特,并且因此,高和低比特可存储在两个单独的b比特寄存器中(例如,在加州圣克拉拉的英特尔公司生产的Intel x86-64体系结构处理器中在%rax和%rdx寄存器中)。使用在第2.4.1行的“add”指令,可将积的低部分(例如,在%rax寄存器中存储)加上变量u。使用在第2.4.2行的进位加使用(“adc”)指令,可将积的高部分(例如,在%rdx寄存器中存储)加上变量c。在第2.3行,使用“adc”指令和0的中间值,可将“adc”指令的进位加到第三寄存器,例如,保留0的值。积的低和高部分的相加(第2.4.1和2.4.2行)可重复进行以适应乘以2。在第2.4.1行,使用“add”指令,可将u加到在阵列w[i+j]的值。在第2.4.2行,使用“adc”指令和0的中间值,可将进位加上c;c随后可移到u。
[0044] 算法1可以各种方式进行优化。例如,可分割算法1的一些计算,以便乘以2延迟到最后。这可将执行的加法指令(例如,“add”和/或“adc”)的数量几乎减少一半。
[0045] 图1示出将例如可大约为10308(1024个比特)或更大的大数字x平方的示例方法100。在102,在处理器的t个b比特寄存器中可存储x的t数位向量表示,例如,。在104,使用在t个b比特寄存器中存储的x,可生成2t数
位中间向量w,例如, 。w可存储在处理器的2t个
b比特寄存器中。在106,t个b比特或2t个b比特寄存器至少之一中存储的值可向左移位n。在一些实施例中,n可以是至少等于1的整数。在一些实施例中,106可重复进行,直到将整个向量移位。在106的移位后某一点,例如,在一些实施例中执行另外的指令(未示出)后,可将x的平方由在2t个b比特寄存器中存储的2t数位结果向量表示。
[0046] 下面在算法2中示出根据图1的方法100可实现的示例算法。如上所述,c、u和s可以是在处理器的相应寄存器中存储的变量/值。
[0047] 算法2
[0048] 输入:
[0049] 输出:
[0050] 1.对于从0到(2t-1)的i,执行:w[i]=0;
[0051] 2.对于从0到(t-2)的i,执行:
[0052] 2.4对于从(i+1)到(t-1)的j,执行:
[0053]
[0054] 2.5 ;
[0055] 3. ;
[0056] 4.对于从0到(t-1)的i,执行:
[0057]
[0058] 5.返回w;
[0059] 与如算法1中重复乘以2不同,在第3行,算法2包括将整个向量向左移位1的指令。此移位可以各种方式实现。在一些实施例中,将t个b比特或2t个b比特寄存器至少之一中存储的值向左移位n包括执行双精度左移(“shld”)指令,以将在t个b比特寄存器或2t个b比特寄存器至少之一中存储的值向左移位n。例如,在Intel x-86 64比特体系结构中,shld指令shld(reg1, reg2, imm8)可将reg1左移imm8(立即或常数值)比特,同时将reg2的比特从右移imm8比特。
[0060] 在其它实施例中,将t个b比特寄存器或2t个b比特寄存器至少之一中存储的值向左移位n包括执行进位左环移(“rcl”)指令。这可将在t个b比特或2t个b比特寄存器至少之一中存储的值向左移位n。例如,可使用立即值1,从最低有效字向上在向量上重复进行“rcl”指令。在其它实施例中,SIMD指令可用于移位。
[0061] 图2根据各种实施例,示出分别使用算法1和算法2执行的汇编语言指令的示例摘要。如图2所示,使用算法2执行的指令的数量少于使用算法1执行的指令的数量。
[0062] 算法1和2在第二代Intel® Core处理器上测试。为将512比特整数平方,算法2使用144个中央处理单元(“CPU”)周期,而算法1使用193个CPU周期,节省了大约25%。为将1024比特整数平方,算法2使用562个CPU周期,而算法1使用838个CPU周期,节省了大约33%。
[0063] 本文中所述技术和设备可实现到使用适合硬件和/或软件的系统中以根据需要配置。对于一个实施例,图3示出示例系统300,系统包括一个或多个处理器304、耦合到处理器304至少之一的系统控制逻辑308、耦合到系统控制逻辑308的系统存储器312、耦合到系统控制逻辑308的非易失性存储器(TSTVM)/存储装置316及耦合到系统控制逻辑308的一个或多个通信接口320。
[0064] 用于一个实施例的系统控制逻辑308可包括任何适合的接口控制器以提供到处理器304至少之一和/或到与系统控制逻辑308进行通信的任何适合装置或组件的任何适合接口。
[0065] 用于一个实施例的系统控制逻辑308可包括一个或多个存储器控制器以提供到系统存储器312的接口。系统存储器312可用于例如为系统300加载和存储数据和/或指令。例如,用于一个实施列的系统存储器312可包括任何适合的易失性存储器,如适合的动态随机存取存储器(DRAM)。
[0066] 用于一个实施例的系统控制逻辑308可包括一个或多个输入/输出(I/O)控制器以提供到NVM/存储装置316和通信接口320的接口。
[0067] 例如,NVM/存储装置316可用于存储数据和/或指令。NVM/存储装置316例如可包括任何适合的非易失性存储器,如闪存存储器,和/或例如可包括任何适合的非易失性存储装置,如一个或多个硬盘驱动器(HDD)、一个或多个固态驱动器、一个或多个压缩光盘(CD)和/或一个或多个数字多功能光盘(DVD)驱动器。
[0068] NVM/存储装置316可包括安装有系统300的装置在物理上的一部分的存储资源,或者它可由装置访问但不一定是其一部分。例如,可经通信接口320通过网络访问NVM/存储装置316。
[0069] 通信接口320可提供接口以便系统300通过通信信道326与一个或多个网络328和/或与任何另一适合的装置进行通信。通信接口320可包括任何适合的硬件和/或固件。用于一个实施例的通信接口320例如可包括无线网络适配器。通信接口320可使用一个或多个天线。
[0070] 系统存储器312和NVM/存储装置316可分别包括密码模块324的临时和永久性副本。密码模块324可包括在由处理器304至少之一执行时促使系统300执行诸如RSA等密码操作的指令。在一些实施例中,密码模块324可另外/备选位于系统控制逻辑308中。
[0071] 具体而言,密码模块324可配置成由处理器304至少之一操作以将消息加密以便在信道326上传送和/或将信道328上收到的消息解密。作为这些密码操作的一部分,密码模块可配置成使用诸如本文中所述那些方法等各种方法,执行大数字平方。
[0072] 对于一个实施例,处理器304至少之一可以与用于系统控制逻辑308的一个或多个控制器的逻辑封装在一起。对于一个实施例,处理器304至少之一可以与用于系统控制逻辑308的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,处理器304至少之一可以与用于系统控制逻辑308的一个或多个控制器的逻辑集成在相同管芯上。对于一个实施例,处理器304至少之一可以与用于系统控制逻辑308的一个或多个控制器的逻辑集成在相同管芯上以形成芯片级系统(SoC)。
[0073] 系统300可以是台式或膝上型计算机、移动电话、智能电话或适用于接收无线通信信号的任何另一装置。在各种实施例中,系统300可具有更多或更少组件和/或不同体系结构。
[0074] 下面在算法3中示出根据图1的方法100可实现的另一示例算法。如上所述,c、u和v可以是在处理器的相应寄存器中存储的变量/值。
[0075] 算法3
[0076] 输入:
[0077] 输出:
[0078] 1.对于从0到(2t-1)的i,执行:w[i]=0;
[0079] 2.对于从2到(t-1)的i,执行: ;
[0080] 3.对于从0到(t-1)的i,执行:
[0081] 3.1. ;
[0082] 3.2. ;
[0083] 3.3. ;
[0084] 3.4. ;
[0085] 3.7.对于从(i+2)到(t-1)的j,执行:
[0086]
[0087] 3.8. ;
[0088] 4.c=0;
[0089] 5.如果x[t-1] >> (b-1 )=1,则执行:
[0090] 5.1. 对于从0到(t-2)的i,执行:
[0091] 5.1.1. ;
[0092] 5.1.3c=carry;
[0093] 5.2 ;
[0094] 6.返回w。
[0095] 类似于算法2,算法3也可节省乘以2。它也可只包括算法2一半的移位指令。然而,一些信息可由于左移而丢失。相应地,步骤4可适应此可能性。
[0096] 图4根据各种实施例示出使用算法2(图4中称为“变化A”)和算法3(图4中称为“变化B”)执行512比特和1024比特乘法的示例结果。在这些测试中,使用了x86-64内联汇编指令,但可使用其它类型的指令。比较该性能和优化的OpenSSL 1.0.0d函数bn_sqr_comba8的性能,该函数是专为512比特数平方优化的汇编语言函数。也比较用于1024比特乘法的BN_sq函数。也比较了算法2和3的性能和GMP  5.0.2函数的性能,该函数是专门针对Intel® Core处理器的汇编函数。在Intel® 
Core™和第二代Intel® Core™处理器上测量性能。使用了带有100000次重复的环中的平方函数。确定了计算平方所用的平均时间。该过程重复了5000次。
[0097] 图4的顶部图表示出用于512比特乘法测试的示例结果。长块表示CPU周期。要求的周期越少,算法就越快。算法2在两个处理器上均可最快,对于两种大小,在前一代Intel® Core™ CPU (i7-X980)上实现速度10.5%增大,并且在第二代Intel® Core™ CPU (i7-2600K)中实现超过18%增大。
[0098] 虽然为便于描述,某些实施例已在本文中示出和描述,但在不脱离本公开内容的范围的情况下,计划实现相同目的的各种备用和/或等效实施例或实现可替代所示和所述的实施例。本申请旨在涵盖本文中所述的实施例的所有修改或变化。因此,很明显,本文中描述的实施例只受权利要求及其等效物的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈