使用聚集的求逆来确定曲线上的配对的制作方法

文档序号:6351806阅读:170来源:国知局
专利名称:使用聚集的求逆来确定曲线上的配对的制作方法
使用聚集的求逆来确定曲线上的配对背景计算机越来越多地经由网络(诸如因特网)来互连,安全和认证问题变得越来越重要。例如涉及基于密钥的密码的密码技术可取构成消息的可理解的数据(例如,通常被称为明文)的序列,并通过编码(enciphering)过程在数学上将它们变换成看上去不可理解的数据(例如,通常被称为密文)。在此示例中,编码可被逆转,从而允许具有适当密钥的密文接收者将密文变换回明文,同时使得那些没有适当密钥的人非常难以(如果不是几乎不可能) 恢复明文。公钥密码技术是基于密钥的密码的一个实施例。例如,在公钥密码术中,各个通信方具有公/私密钥对。使得每一相应对中的公钥可公用(例如,或至少对打算发送加密通信的他人可用),而使得私钥保密。例如,为了使用加密将明文消息传输给接收方,发起方可使用接收方的公钥将明文消息加密成密文消息,并将密文消息传输给接收方。在此示例中,当接收密文消息之后,接收方可使用其秘密的私钥来对消息解密,从而恢复原来的明文消息。公/私密钥密码术的示例包括生成两个大质数,使其相乘以得到一个大合数,该大合数是公开的。在此示例中,如果质数被适当选择且足够大,则对不知道该质数的某人而言,将非常难以根据仅仅知道该合数来确定质数。然而,为了使该方法为安全的,合数的大小应大于1000位。在某些情况中,这样大的大小使得该方法使用起来是不切实际的。
认证的一个示例是一方或机器试图证明它被授权来访问或使用产品或服务的情况。通常,产品ID系统被用于软件程序,其中用户输入在正确许可的软件包装外戳印的产品ID序列作为已经适当地对该软件付费的证明。如果产品ID序列过长,则它可能是烦琐且不是用户友好的。其它常见的示例包括用户认证,即用户使用认证码来向计算机系统标识他们自己。作为另一示例,在密码术中,通常使用椭圆曲线来生成密码密钥。椭圆曲线是具有适于密码术的结构和性质的数学对象。已经标准化了用于椭圆曲线的许多协议以供在密码术中使用。密码术中的近期发展涉及使用配对,其中可组合来自一个或多个群中的元素对, 诸如椭圆曲线上的点,来生成来自另一个群的新元素以创建密码系统。概述提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。 本发明内容并不旨在标识出所要求保护的主题的关键因素或必要特征,也不旨在用于限定所要求保护的主题的范围。可通常基于秘密来执行加密和解密。该秘密可利用点群的阶,或该群的某个其它特征,诸如生成元素(generator)或生成元素的倍数。可在密码术中使用各种不同的群,诸如为群的元素在椭圆曲线上实现点。从椭圆曲线得到的元素(例如,点)的群可例如在加密 /解密中使用,因为这样的群的离散对数问题(DLP)被认为是困难的。在密码术中偏好困难的DLP,以便例如创建安全的加密/解密过程。当前,当计算椭圆曲线上的配对时,可能需要诸如椭圆曲线在其上定义的有限域中的乘法或求逆(inversion)等大量运算。可尝试减少乘法的数目来减少计算开销,和/或以其它方式加速计算。用于加速计算的一种技术是在计算配对时减少进行的求逆的数量。例如,当在仿射空间中执行时,乘法和求逆两者被执行,其中求逆在计算上比乘法更为昂贵。为了减少求逆的数目,当前的从业者使曲线点的坐标系从仿射空间改到射影空间。这具有减少求逆的效果,同时增加了乘法的数目,而乘法在计算上较为便宜。此处描述的技术和/或系统中的一个或多个提供了将坐标转换到射影空间的替换方式,同时仍减少了在椭圆曲线上计算配对所需的求逆的数目。使用这些技术和系统,可例如为仿 射空间中的坐标聚集求逆,并对用于配对计算的加动作重用聚集的求逆。此外,计算的各部分可例如在多核系统上并行化,以便加速总体计算时间。以此方式,例如,与目前的实现相比,在密码系统中使用的配对可使用较少计算资源以及较短的时间(例如,更快) 来计算。在一个实施例中,当确定曲线的数学配对以便在密码术中使用时,聚集在确定曲线的数学配对时使用的多个求逆(例如,聚集成单个求逆,诸如配对计算中的中间计算)。使用聚集的多个求逆沿从右向左读取的标量的二进制表示在仿射坐标中确定曲线的数学配对。为实现上述内容和相关目的,以下描述和附图阐述了各个说明性方面和实现。这些方面和实现仅指示可以使用一个或多个方面的各种方式中的一些。结合附图阅读以下详细描述,则本公开的其他方面、优点、以及新颖特征将变得显而易见。


图I是示出根据此处所公开的方法和/或系统中的一个或多个的示例性密码系统的框图。图2是使用产品标识符来确认软件的示例性系统的图示。图3是用于确定曲线的数学配对以便在密码术中使用的示例性方法的流程图。图4是示出此处所描述的方法的一个或多个中各个部分的实现的一个实施例的流程图。图5是示出此处所描述的技术和/或系统中的一个或多个的示例性实现的流程图。图6是示出用于确定曲线的数学配对以便在密码术中使用的示例性系统的组件框图。图7是示出此处所描述的系统中的一个或多个的示例性实现的组件框图。图8是示出此处所描述的系统中的一个或多个的示例性实现的组件框图。图9是可被设计成实现此处所描述的方法和/或系统中的一个或多个的示例性计算机可读介质的图示。图10是可被设计成实现此处所描述的方法和/或系统中的一个或多个的示例性环境的组件框图。详细描述现在参考附图来描述所要求保护的主题,所有附图中使用相同的附图标号来指代相同的元素。在以下描述中,为解释起见,阐明了众多具体细节以提供对所要求保护的主题的全面理解。然而,很明显,所要求保护的主题可以在没有这些具体细节的情况下实施。在其他情况下,以框图形式示出了各个结构和设备以便于描述所要求保护的主题。此处描述的一个或多个密码配对技术和/或系统可确定可用于密码应用的椭圆曲线的数学配对。例如,它们可被用于为密码应用确定所提议的授权(例如,电子签名)的配对。通常,基于配对的密码系统利用其元素公开知晓(例如,通过知道椭圆曲线)的(元素和从该曲线得到的二进制乘法器的)群。用于计算配对的标量是公开知晓的。未知的秘密或是配对的输入点,或被隐式地包含在配对的输入点中。安全性的基础在于相关联的离散对数问题的难度。如图I所示的基于配对的加密和解密,作为示例,通常指的是使用基于代数曲线的各方面或特征生成的密钥的加密和解密。图I和2的示例性密码系统可基于曲线是公开知晓的但生成的点是秘密的,因为由标量从曲线生成的点是秘密的(例如,且难以确定)。在基于配对的密码术的一个实施例中,曲线可以是椭圆曲线,构成群的元素可从椭圆曲线上的点生成。如本领域的普通技术人员可以理解地,在典型的情况中,点P是公开知晓的,而标量m是秘密的。然后也使得点Q=mP是公开的。因为相关联的离散对数问题是困难的,从P和Q确定m是不可行的。从而,秘密通常仅仅是该标量,而点是公开的。可使用基于配对的密码系统来对各种信息加密。例如,可使用密码系统来生成 “短”签名或产品标识符,该签名或产品标识符是允许例如对机器、程序或用户进行确认和/ 或认证的代码。签名可以是“短”签名,因为它使用相对少量的字符。 图I是示出根据此处所公开的方法和系统中的某些实施例的示例性密码系统100 的框图。示例性密码系统100包括加密器102和解密器104。可在加密器102的输入模块 108处接收明文消息106,加密器102是基于公钥(公开知晓的群的元素)对消息106加密的基于配对的加密器,其中公钥是基于秘密标量(仅由解密器104所知)生成的。在一个实施例中,群可以是从由加密器102使用的椭圆曲线生成的点的群,如下更详细讨论。明文消息 106通常是未加密消息,但加密器102可加密其它类型的消息。因此,消息106可替换地由某个其它组件(未示出)或用户来加密或编码。加密器102的输出模块110输出明文消息106的加密版本,该加密版本可以是密文112。可包括不可理解的文本或某种其它数据的密文112然后可被传输给解密器104,解密器104例如可在远离实现加密器102的计算机系统的计算机系统上实现。给定密文112 的加密性质,加密器102和解密器104之间的通信链路不必是安全的(例如,通常假设该通信链路不是安全的)。作为示例,通信链路可以是使用各种常规公共和/或专有协议中的一个或多个实现的各种公共和/或私有网络之一,并且包括有线和无线实现。另外,通信链路可包括其它非计算机网络组件,诸如对包括密文的介质的亲手递送或产品分发链的其它组件。解密器104在输入模块114处接收密文112,且因为解密器104知道与用于对消息106加密的公钥对应的秘密密钥(例如,以及必要的生成元素),所以解密器104可对密文 112解密以恢复原来的明文消息106,该明文消息由输出模块116输出为明文消息118。在一个实施例中,解密器104是基于从椭圆曲线生成的点的群(例如,加密器102所使用的群) 对消息解密的基于配对的解密器。在一个实施例中,在示例性密码系统100中,基于秘密执行加密和解密,该秘密可以是用于生成公钥(公钥是来自椭圆曲线的点的群的元素)的标量,从而使得问题的解难以确定。该秘密为解密器104所知,而公钥可基于为加密器102所知的秘密生成。在此实施例中,该知识可允许加密器102加密明文消息,该加密的明文消息随后可仅由解密器104解密。包括加密器102在内的、不具有对该秘密的知识的其它组件,不能对密文进行解密(例如,尽管解密在技术上是可能的,但它在计算上不是可行的)。类似地,在一个实施例中,解密器104还可使用秘密密钥基于明文消息来生成消息;该过程被称为数字签署明文消息。 在此实施例中,经签署的消息可被传输给诸如加密器102等其它组件,该组件可基于公钥来验证数字签名。图2是根据此处所描述的方法和系统的一些实施例使用产品标识符来确认软件的示例性系统200的图示。示例性系统包括软件副本生成器202,它包括产品标识符(ID) 生成器204。软件副本生成器202可生产软件介质210 (例如,⑶-R0M、DVD (数字多功能盘) 等),软件介质210可包含共同实现一个或多个应用程序(例如,文字处理程序、电子表格程序、操作系统、程序套件等)的完整副本所需的文件。这些文件可从源文件206接收,源文件可以是本地源(例如,生成器202内部的硬盘驱动器)、远程源(例如,经由网络耦合到生成器 202)或其组合。尽管在图2示出了单个生成器202,但通常多个生成器单独和/或协作操作以提高可生成软件介质210的速率。产品ID生成器204可生成产品ID 212,产品ID 212可包括数字、字母和/或其它符号。生成器204使用此处所述的基于配对的加密技术和/或系统来生成产品ID212。产品ID 212可被印刷在标签上以及粘贴在包含软件介质210的载体或其中放置软件介质210 的盒子上。或者,可使得产品ID 212电子可用,诸如当经由在线源接收应用程序的软副本 (例如,经由因特网下载软件)时向用户提供的证书。产品ID 212可提供多个功能,诸如被密码确认以验证产品ID是有效的产品ID (例如,从而允许安装该应用程序)。作为又一示例,产品ID 212可用于认证它所关联的特定软件 介质210。所生成的软件介质210和相关联的产品ID 212可被提供给分发链214。分发链 214可表示各种常规分发系统和方法中的一个或多个,包括可能的一个或多个“中间人”(例如,批发商、供货商、经销商、零售店(在线或实体)等)和/或电子分发,诸如经由因特网。不论分发介质210和相关联的产品ID 212的方式,介质210和产品ID 212通常例如由客户计算机218的用户购买(例如,受许可)或被分发给客户计算机218的用户。客户计算机218可包括介质读取器220,该介质读取器能够读取软件介质210并将应用程序安装在客户计算机218上(例如,将应用程序安装在客户计算机218的硬盘驱动器或存储器(未示出)上)。在一个实施例中,安装过程的一部分可涉及输入产品ID 212 (例如,来确认许可的副本)。该输入可以是手动输入(例如,用户经由键盘键入产品ID),或者是自动输入(例如,计算机218自动访问与应用程序相关联的许可证的特定字段,并从中提取产品ID)。客户计算机218还可包括产品ID确认器222,该确认器在应用程序的安装期间确认产品ID 212。在一个实施例中,确认可使用此处所描述的基于配对的解密技术和/或系统来执行。如果确认器222确定产品ID是有效的,则可采取合适的动作过程(例如,软件介质210上的安装程序允许应用程序被安装在计算机218上)。然而,如果确认器222确定产品ID无效,则可采取不同的动作过程(例如,安装程序终止安装过程,阻止应用程序被安装)。
在一个实施例中,产品ID确认器222还可任选地基于产品ID 212认证软件介质(例如,应用程序)。该认证例如验证在计算机218输入的产品ID 212对应于所访问的应用的特定副本。作为示例,认证可在不同的时间执行,诸如在安装期间或当请求产品支持或升级时。或者,在该实施例中,认证可在远程位置(例如,在客户计算机218的用户呼叫要求技术支持时在呼叫中心处,在接收协助之前可能需要用户提供产品ID 212)执行。在一个实施例中,如果应用程序制造商期望利用产品ID的认证能力,则生成器 204为应用程序的每一副本生成的产品ID可以是唯一的。作为示例,可通过向应用程序的每一副本分配不同的初始号或值来创建唯一的产品ID (例如,该初始值然后用作生成产品 ID的基础)。与应用程序的副本相关联的唯一值可由制造商可任选地维护为随同 应用程序的特定副本的指示的认证记录208 (例如,数据库或列表)。副本的指示例如可以是嵌入在应用程序中或软件介质210上的序列号,且可按照各种常规方式中的任一种隐藏。或者,例如,各个号本身可以是与特定副本相关联的序列号,从而允许制造商通过从产品ID提取初始值并验证它与嵌入在应用程序中或软件介质210上的序列号是相同的来验证应用程序的真实性。可设计允许为曲线确定数学配对的方法,其中作为密码密钥提交的元素的第一集合(例如,椭圆曲线上的点)可与曲线上的已知点比较,并用于密码目的。有效的密码系统通常是基于群的,其中该群的离散对数问题(DLP)是困难的(例如,难以计算),诸如来自椭圆曲线的点的群。DLP可在群中用公式表示,群是元素以及诸如群乘法等二元运算的集合。 作为说明性示例,DLP可以是给定有限群G中的元素g以及是G的元素的另一元素h,找到整数X,使得gx=h。生成配对供密码术中使用通常需要其上定义椭圆曲线的有限域中的大量基本乘法。图3是用于确定曲线的数学配对以便在密码术中使用的示例性方法300的流程图。示例性方法300在302开始并涉及在304聚集在为曲线确定数学配对中使用的多个求逆。因为椭圆曲线上的配对运算利用有限域中的大量基本乘法,为了使得配对运算更为高效,例如可减少乘法的数目和/或可在其它配对运算中产生效率。在一个实施例中,在曲线的有限域中,为配对运算执行乘法和求逆两者(例如,标识乘法逆元或倒数)。求逆在计算上通常比乘法执行起来更为昂贵。例如,进行计算的求逆对乘法的比率通常是八比一,因为用于曲线点的坐标系通常从仿射改为射影以便减少求逆的数目。作为求逆确定的说明性示例,为了近似得到非零实数X的乘法逆元,可用2y-xy2来反复替换数y。在此示例中,当对y的改变处于阈值内时,y是X的乘法逆元的近似值。可以理解,该示例仅用于说明目的,且存在用于确定求逆的其它技术,尤其是对于诸如复数等其它类型的数。在示例性方法300中,例如当在仿射坐标系中执行时,可通过组合各求逆并在同一时间确定它们来极大地减少求逆的数目。在一个实施例中,当对配对计算使用仿射坐标时,各个翻倍(例如,乘法)和加动作使用有限域求逆来计算在随后动作中求值的线的斜率值。在该实施例中,可例如使用“蒙哥马利技巧(Montgomery’ s trick)”来用单个求逆和 3(1-1)个乘法来替换I个有限域求逆来聚集求逆。作为蒙哥马利技巧的说明性示例,为了确定元素X和y的求逆,代替确定两个求逆,可确定积xy并计算其逆元。在此示例中,X和y的逆元然后可通过以下乘法来确定 X4=(Xy)Hy而yHKxy)、。以此方式,在该示例中,两个元素x和y的求逆可通过一个求逆以及三个乘法来确定。在要对η个元素确定求逆时,可仅执行一个求逆和3 (η-i)个乘法。 从而,在一个实施例中,当配对计算包括多个求逆(η个)时,可将η个求逆聚集成一个求逆。在一个实施例中,令Iia1, ···, as]为要计算其倒数[a广,…,af1]的元素序列。通过首先计算积a^“as、其倒数(a^a,)'对于为I彡i彡s的积、以及按照下式计算的单个元素的倒数来计算各倒数a^1 = (a!as) (a1 as)^1.该动作可用I个求逆和3(s_l)个乘法执行。即, s个求逆可用I个求逆和3 (s-Ι)个乘法来代替。在一个实施例中,积aia^as可例如在二叉树中用s_l个乘法来计算,其中s_l个积可被存储供求逆聚集中使用。此外,在该实施例中,计算了倒数(Aa^as)-1,并沿着同一棵树用2 (s-Ι)个乘法计算后续的倒数。回到图3的示例性方法300,在306,使用聚集的求逆沿从右向左读取的标量的二进制表示在仿射坐标中为曲线确定数学配对。当为曲线计算Tate配对时,典型的Miller循环算法对该标量从左向右(或从上到下)进行。作为说明性示例,假定k>l,使得Miller算法分母被消去。对以下示例性实施例和说明性示例使用以下记号令p>3为质数,且Fq为特征P的有限域。令E为在Fq上定义的、符合Weierstrass等式E:y~2=x~3+ax+b的椭圆曲线。对符合r I #E (Fq)的质数r,令k为E对于r的嵌入度,即k是符合r | q~k_ l的最小正整数。E 上的r扭点的集合可被表示为E [r],而对于i>0,F_(cfi)有理r扭点的集合被表示为E (F_ (q'i)) [r] ο 令 <t_q 为 E 上的 q 幂 Frobenius 自同态。此外,定义G_1 = E[r] Π ker (<i)_q-[l]) = E (F_q) [r],
G—2= [Γ]Π1<α'(φ—<Hq]—))[r],
———O令k>l。经约简的Tate配对是图e_r = G_1 X G_2 — G_3,(P, Q) f_(r, P) (Q) ~ ((q"k-l)/r),其中f_(r,P) e F_q(E)是除数为r (P) _r (0)的函数。在F_q(E)中将该函数表示为由通过E上的两点R和S的线(表示为1_(R,S))给定。如果R=S,则该线由该曲线的通过 R的切线给定。以下示出了用于计算Tate配对(使用以上记号)的典型Miller循环的一个实施例输入Pe G1, Q e G2, r = Ov1,…,r0)2输出er(P>Q} = frp(ρ)3^I :R — P,f — I2 :for (i — m_2 ;i > 0 ;i—) do3 :f — f2 · 1K,K(Q)4:R— [2]R5 if (rj = I) then6 :f — f · 1K,P(Q)
7 :R — R+P8 end if9 end for10 |· φ-11 return f在该说明性示例中,以上算法中的行3和4 一起被统称为翻倍动作,而行6和7被统称为加动作。
在示例性方法300的动作306的一个实施例中,Miller循环算法可被修改,其中从右向左(或自下而上)读取二进制表示。以下是从右向左(或自下而上)方法的说明性示例输入Pe G1, Q e G2, r = Ov1,…,ru)2输出0=I :R — P,fK — I2 :V — 0,fv — I3 :for (i — 0 ;i < m_l ;i++) do4 if (rj = I) then5 :fv 一 fv · fK · lv, K (Q)6 :V — V+R7 end if8 fs *- fi * lg,n(Q)9:R— [2]R10 end for1112 return f在此说明性示例中,翻倍动作在行8和9,加动作在行5和6。以上算法进行了 m 个翻倍动作和h个加动作。在此示例中,尽管可进行m次循环,但仅使用m-Ι个翻倍动作, 最后一个不会影响计算。此外,在此实施例中,当使用“自下而上”方法时,加动作可在行5和6 (在以上的自下而上算法中)中延后。此处,例如,相关函数值和对应的点的对(fR,R)可被存储在列表L中(例如数据库中),且可稍后计算最终函数值的计算。作为说明性示例,以下算法提供了通过存储值和点(见以下算法的行5)延后加动作的自下而上方法,并稍后执行最终函数值的计算(见行10):输入Pe G1, Q e G2, r = Ov1,…,r0)2输出er(p;ρ) = frAQj¥1:R —P,fK— I2 :L —[]3 For (i — 0 ;i < m_l ;i++) do4 if (Ti = I) then
5 :将(fR,R)追加到 L。6 end if7 fR ^ β ■ kAQ)8:R— [2]R9 End for10 :根据L中的对计算f;, P(Q)。11 卜,2^112 return f
在此示例中,该方法可比目前的自上而下算法更为高效,因为延后计算允许节约等于F_(q~k)中h_l)个乘法的成本。在一个实施例中,使用聚集的求逆,以上算法的行10 “根据L中的对计算f;, P(Q),也可沿二叉树来执行。在此实施例中,在二叉树的每一层中,可应用聚集的求逆技术。以此方式,例如,如上所述,在为曲线计算数学配对时,可用[log(h)]个求逆和 3(h-l-[log(h)])个乘法来代替(h-Ι)个求逆。从而,求逆的数目被显著地减少,同时增加了少量的乘法,而乘法在计算上较为便宜。在为曲线计算了数学配对之后,图3的示例性方法300在308结束。图4是示出此处所描述的方法的一个或多个中各个部分的实现的一个实施例400 的流程图。使用聚集的多个求逆沿从右向左读取的标量的二进制表示在仿射坐标中为曲线确定数学配对可包括在402从右向左读取标量的二进制表示。如上所述,例如当曲线点坐标在仿射空间中时,标量的二进制表示可从右向左读取。在404,通过计算曲线点的标量倍数来确定曲线点的倍数,其中标量倍数例如是仿射空间中曲线点的m重(fold)和。S卩,例如,自下而上方法算法的乘法动作可被执行,可确定多个曲线点倍数。该动作通常被称为翻倍动作,例如,其中对于(i — O ;i彡m-1 ;i++), 进行為卜和R— [2]R (使用以上所描述的记号)。值得注意的是,在该实施例中, 乘法是在仿射空间中的坐标上执行的,与例如将坐标切换到射影空间以便减少求逆的数目的当前通常使用的技术不同。在406,可为有限域确定曲线点的加的求逆。即,例如,在从右向左读取标量时,取决于标量的二进制表示使曲线点相加。在此示例中,对曲线点加,在有限域中确定求逆。作为示例,求逆通常被称为乘法逆元,即倒数。如上所述,在加过程中,对各个动作,求逆被例如聚集成单个求逆。以此方式,在该算法的配对部分的二叉树表示的各个层处组合多个求逆,从而例如仅对各个层使用一个求逆。在408,所聚集的求逆的输出例如被确定为线函数的斜率值,并用输出的斜率值更新该线函数。例如,当为有限域上的曲线计算元素(例如,曲线点)的配对时,线函数被求值以计算配对,以便得到不同群中的新元素。如此,在该示例中,例如在二叉树表示的各个层处,所聚集的求逆的输出被用作线函数的斜率值,且用斜率值来对该线求值以确定配对。图5是示出此处所描述的技术和/或系统中的一个或多个的实现的一个实施例 500的流程图。在此实施例500中,在502,从诸如用户提交来认证其身份的电子签名550 接收两个元素,作为配对计算的输入。此外,提交来自已知群552(例如,用于安全性的共享的秘密密码密钥)的两个元素作为配对计算的输入。在此实施例中,将为来自签名550的元素计算配对,且将为来自群552的元素计算配对。在504,确定作为群的元素提交的曲线点的倍数,如上所述。在此实施例500中,使用从右向左读取的标量的二进制表示来确定曲线点的倍数。在506,将求逆从所述倍数聚集成单个求逆,并在556存储,诸如存储在远程或本地数据库中。在一个实施例中,在二进制表示554从右向左读取的标量可被包括在诸如公钥等密码密钥中。在一个实施例中,在508,沿从右向左读取的标量的二进制表示在仿射坐标中确定曲线的配对可在多个处理器上并行化。例如,计算机通常具有多核处理器,这允许计算在多于一个的核上并行化以便加速计算并释放资源。在一个实施例中,并行化可包括例如同时在两个或多个处理器上确定曲线点的倍数的两个或多个实例。在510,检索所聚集的求逆的输出,例如作为斜率值。如上所述,在配对计算中,可在加动作的二叉树表示的各个层处使用聚集的求逆。此外,在一个实施例中,可在仿射空间的坐标集合的后续配对计算中重用所存储的聚集的求逆556。作为示例,可从远程或本地数据库中检索所聚集的求逆并重用所聚集的求逆。以此方式,可通过减少求逆聚集动作来减少计算的数目。在一个实施例中,在用于确定所聚集的求逆的第一曲线点是与要对其重用所聚集的求逆的第二曲线点相同的元素时,可重用所聚集的求逆。即,可使用作为配对计算中的元素提交的曲线点来确定所聚集的求逆。在此示例中,如果计算在第一集合之后提交的元素的第二集合,且第二集合包括与来自第一集合的元素相同的元素,则例如可在为元素的该第二集合计算配对时重用所聚集的求逆。在512,使用聚集的求逆的输出作为斜率值来更新线函数。在一个实施例中,所聚集的求逆的输出可用于更新用于配对计算的线的函数中的系数。在514,可例如通过对更新的线函数求值,来为元素确定配对,从而得到经加密的签名授权元素的数学配对558以及秘密元素的数学配对560。在516,可比较各个配对558、560来确定它们是否相等,例如以确定所提交的电子签名的真实性。在此实施例500中,如果在518发现元素不相等(或它们不是来自同一群), 则在520,所提交的签名不被认证。如果在518发现元素相等(且来自同一群),则在522,所提交的签名得到认证。以此方式,例如,可出于密码目的来使用元素的配对的计算,且此处所描述的一个或多个技术可用于促进更高效且快速的配对计算。可设计一个或多个系统用于为曲线确定数学配对,例如以便出于密码目的来比较所提交的元素。因为供密码术中使用的配对的计算可能需要其上定义椭圆曲线的有限域中的大量基本乘法和求逆,此处所描述一个或多个系统可被设计为减少用于计算这些配对的时间和资源。图6是示出用于确定曲线的数学配对以便在密码术中使用的示例性系统600 的组件框图。示例性系统600包括求逆聚集组件602,该聚集组件对用于为曲线确定数学配对的求逆进行聚集。求逆聚集组件602可在操作上与一个或多个经编程的处理器650耦合, 这些处理器驻留在一个或多个计算设备中,且求逆聚集组件602还与可存储所聚集的求逆 656中的一个或多个的数据存储组件654耦合。此外,在示例性系统600中,数学配对确定组件604可在操作上与数据存储组件654耦合,且可使用其上存储的聚集的求逆656沿从右向左读取的标量的二进制表示在仿射坐标中为曲线确定数学配对。在一个实施例中,求逆聚集组件602、配对确定组件604和数据存储组件654可被包括在同一计算设备中,诸如包括一个或多个处理器650的计算设备652。或者,系统的各组件可被安置在不同的设备上,或按照其某种组合。在一个实施例中,求逆聚集组件602可被配置成将多个求逆聚集成单个求逆供数学配对确定中使用。例如,可由求逆聚集组件602将曲线点的倍数的二进制表示的一层的各个求逆组合成该层的单个求逆。在此示例中,所组合的求逆(例如,聚集的求逆656)可被存储在数据存储组件654中,并供配对确定组件604用于计算配对。图7是示出此处所描述的一个或多个系统的示例性实现的一个实施例700的组件框图。诸如图I和2中所示的密码系统702 (例如,104、222)可例如包括基于椭圆曲线上的配对的确定器750,该确定器利用了此处所描述的系统的一个或多个实现。此外,密码系统702可包括公开知晓(例如通过知道曲线)的群,该群利用了该密码系统(例如,用于认证、 安全性、加密等)。在此示例性实施例700中,诸如可读取使用密码认证的传入文档的组件等输入组件704接收文档754,文档754包括密码元素708和公钥706。作为示例,文档754可以是正被提交给解密器(例如以便读取)的加密文档,密码元素708是曲线上的点(例如,如果文档是真实的,则群元素来自该群),以及用于计算配对的标量。公钥通常是曲线上的点,而秘密密钥是标量。在此实施例700中,基于椭圆曲线上的配对的确定器750可为所提交的密码元素 708以及为来自私钥710的元素确定配对,以例如确定所提交的文档是否是真实的。即,例如,如果文档是真实的,当使用来自公钥706的标量为密码元素和私钥各自计算配对时,密码元素708将匹配到与来自私钥710的那些相同的元素。以此方式,密码系统可例如为文档754输出认证752,以便使得文档754被解密来查看。图8是示出此处所描述的一个或多个系统的实现的另一示例性实施例800的组件框图。在此实施例800中,数学配对确定组件504可在操作上与多个处理器802a-802n耦合,这些处理器可使得沿从右向左读取的标量的二进制表示在仿射坐标中对曲线点850的倍数的加关系的确定并行化。即,例如,配对确定的各个部分(例如,加动作)可同时运行在若干处理器上,以便减少计算配对852的总时间。此外,在示例性实施例800中,数学配对确定组件504可被配置为重用所聚集的多个求逆656,诸如在用于确定所聚集的多个求逆的第一曲线点是与要对其重用所聚集的求逆的第二曲线点相同的元素时。在此实施例中,求逆重用确定组件804可诸如通过比较第一曲线点的存储的版本与在850处接收的第二曲线点来确定第二曲线点是否是与第一曲线点相同的元素。另外,求逆重用确定组件804可从数据存储组件654中检索对应于第一曲线点的聚集的求逆656。以此方式,检索到的求逆656可由配对确定组件504重用,例如代替计算新的聚集的求逆。
又一实施例涉及包括被配置成实现此处所呈现的技术中的一种或多种的处理器可执行指令的计算机可读介质。可以这些方式设计的一种示例性计算机可读介质在图9 中示出,其中实现900包括其上编码有计算机可读数据906的计算机可读介质908 (例如, CD-R、DVD-R、或硬盘驱动器的盘)。该计算机可读数据906又包括被配置成根据此次阐述的原理中的一个或多个来操作的一组计算机指令904。在一个这样的实施例902中,处理器可执行指令904可被配置成执行一种方法,诸如例如,图3的示例性方法300。在另一个这样的实施例中,处理器可执行计算机指令904可被配置成实现一种系统,诸如例如,图6的示例性系统600。本领域普通技术人员可设计被配置成根据此处所呈现的技术来操作的许多此类计算机可读介质。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。如在本申请中所使用的,术语“组件”、“模块”、“系统”、“接口 ”等一般旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和 /或计算机。作为说明,运行在控制器上的应用程序和控制器都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机内和/或分布在两个或更多计算机之间。此外,所要求保护的主题可使用产生控制计算机以实现所公开的主题的软件、固件、硬件、或其任意组合的标准编程和/或工程技术来实现为方法、装置、或制品。在此使用的术语“制品”旨在涵盖可以从任何计算机可读设备、载体或介质访问的计算机程序。当然, 本领域技术人员应当认识到,在不背离所要求保护的主题的范围或精神的情况下可对该配置作出许多修改。 图10和以下讨论提供了对实现本文所阐述的一个或多个原理的实施例的合适计算环境的简要、概括描述。图10的操作环境只是合适的操作环境的一个示例,而不旨在对该操作环境的使用范围或功能提出任何限制。示例计算设备包括但不限于,个人计算机、月艮务器计算机、手持式或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括任何以上系统或设备中的任一个的分布式计算环境等。虽然并非必需,但是实施例在由一个或多个计算设备执行的“计算机可读指令”的一般上下文中进行描述。计算机可读指令可经由计算机可读介质来分发(在下文中讨论)。 计算机可读指令可被实现为执行特定任务或实现特定抽象数据类型的程序模块,诸如函数、对象、应用程序编程接口(API)、数据结构等。通常,计算机可读指令的功能可按需在各种环境中组合或分布。图10示出包括被配置成实现此处所提供的一个或多个实施例的计算设备1012的系统1000的示例。在一种配置中,计算设备1012包括至少一个处理单元1016和存储器 1018。取决于计算设备的确切配置和类型,存储器1018可以是易失性的(例如诸如RAM)、 非易失性的(例如诸如ROM、闪存等)、或两者的一些组合。该配置在图10中由虚线1014示出。在其他实施例中,设备1012可包括附加特征和/或功能。例如,设备1012还可包括附加存储(例如,可移动和/或不可移动),包括但不限于磁存储、光存储等。此类附加存储在图10中由存储1020示出。在一个实施例中,实现此处所提供的一个或多个实施例的计算机可读指令可位于存储1020中。存储1020还可储存实现操作系统、应用程序等其他计算机可读指令。可将计算机可读指令加载到存储器1018中,以供例如处理单元1016执行。如此处所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器1018和存储1020都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、 数字多功能盘(DVD )或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需信息且可由设备1012访问的任何其他介质。任何这样的计算机存储介质都可以是设备1012的一部分。设备1012还可包括允许该设备1012与其他设备进行通信的通信连接1026。通信连接1026可包括但不限于,调制解调器、网络接口卡(NIC)、集成网络接口、射频发射机/接收机、红外线端口、USB连接、或用于将计算设备1012连接到其他计算设备的其他接口。通信连接1026可包括有线连接或无线连接。通信连接1026可发送和/或接收通信媒体。术语“计算机可读介质”可包括通信介质。通信介质通常以诸如载波或其他传输机制之类的“已调制数据信号”来体现计算机可读指令或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”可包括以对信号中的信息进行编码的方式设置或 改变其一个或多个特征的信号。设备1012可包括输入设备1024,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外照相机、视频输入设备、和/或任何其他输入设备。在设备1012中还可包括输出设备1022,诸如一个或多个显不器、扬声器、打印机、和/或任何其他输出设备。输入设备1024 和输出设备1022可经由有线连接、无线连接、或其任何组合连接到设备1012。在一个实施例中,来自另一计算设备的输入设备或输出设备可用作计算设备1012的输入设备1024或输出设备1022。计算设备1012的组件可通过诸如总线之类的各种互连来连接。此类互连可包括诸如PCI Express之类的外围部件互连(PCI )、通用串行总线(USB)、火线(IEEE1394)、光学总线结构等。在另一实施例中,计算设备1012的组件可通过网络来互连。例如,存储器1018 可包括位于通过网络互连的不同物理位置的多个物理存储器单元。本领域技术人员应当认识到,用于存储计算机可读指令的存储设备可分布在网络上。例如,可经由网络1028访问的计算设备1030可存储实现此处所提供的一个或多个实施例的计算机可读指令。计算设备1012可访问计算设备1030,并且下载部分或全部计算机可读指令以供执行。替换地,计算设备1012可按需下载计算机可读指令的片断,或者一些指令可在计算设备1012处执行,而一些指令则可在计算设备1030处执行。本文提供了各实施例的各种操作。在一个实施例中,所描述的操作中的一个或多个可以组成存储在一个或多个计算机可读介质上的计算机可读指令,这些指令如果由计算设备执行则使得计算设备执行所描述的操作。所描述的一些或所有操作的顺序不应该被解释为暗示这些操作一定是依赖于顺序的。从本说明书获益的本领域技术人员将认识到替换顺序。此外,应该理解,并非所有的操作都一定存在于本文所提供的每一个实施例中。此外,本文所使用的词语“示例性”意指用作示例、实例或说明。本文作为“示例性”所描述的任何方面或设计不必被解释为有利于其他方面或设计。相反,使用词语“示例性”旨在以具体的方式呈现各个概念。如本申请中所使用的,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文可以清楚,否则“X使用A或B”意指任何自然的包括性排列。即,如果X使用A ;X使用B^X使用A和B两者,则在任何以上实例中,都满足“X使用A或B”。另外,本申请中和所附权利要求书中所使用的冠词“一”和“一个”一般应被解释为是指“一个或多个”,除非另有指定或从上下文可以清楚指的是单数形式。同样,虽然参考一个或多个实现示出并描述了本公开,但本领域技术人员基于对本说明书和附图阅读和理解,可以想到各种等效更改和修改。本发明包括所有这样的修改和更改,并且仅由所附权利要求的范围来限定。具体来说,对于由上述组件(例如,元素、资源等等)执行的各种功能,除非另外指明,否则用于描述这些组件的术语旨在对应于执行所描述的执行此处在本公开的示例性实现中所示的功能的组件的指定功能(例如,功能上等效)的任何组件,即使这些组件在结构上不等效于所公开的结构。此外,尽管可相对于若干实现中的仅一个实现来公开本公开的一个特定特征,但这一特征可以如对任何给定或特定应用所需且有利地与其他实现的一个或多个其他特征相组合。此外,就在说明书或权利要求书中使用术语“包含”、“具有”、“含有”和“带有”或其变体而言,这些·术语旨在以与术语 “包括”相似的方式为包含性的。
权利要求
1.一种为曲线确定数学配对以便在密码术中使用的基于计算机的方法,包括 使用一个或多个微处理器聚集为所述曲线确定数学配对中所使用的多个求逆;以及 使用所聚集的多个求逆沿从右向左读取的标量的二进制表示在仿射坐标中为所述曲线确定数学配对。
2.如权利要求I的方法,其特征在于,聚集多个求逆包括将所述多个求逆聚集成单个求逆以用于数学配对确定。
3.如权利要求I所述的方法,其特征在于,还包括在为所述曲线确定数学配对时,对一个或多个配对计算重用所聚集的多个求逆。
4.如权利要求I所述的方法,其特征在于,还包括使沿从右向左读取的标量的二进制表示在仿射坐标中为所述曲线确定两个或多个数学配对在多个处理器上并行化。
5.如权利要求I所述的方法,其特征在于,所聚集的求逆的输出包括用于更新配对确定中的线函数的斜率值。
6.如权利要求I所述的方法,其特征在于,还包括使用所聚集的多个求逆作为用于更新配对确定中的线函数的一个或多个斜率值。
7.如权利要求I所述的方法,其正在于,还包括使用所聚集的求逆的输出来更新用于确定所述数学配对的线的系数。
8.如权利要求I所述的方法,其特征在于,还包括从右向左为所述曲线读取所述标量的二进制表示。
9.如权利要求I所述的方法,其特征在于,所述曲线点包括用于密码应用的群的元素。
10.如权利要求I所述的方法,其特征在于,使用所聚集的多个求逆沿从右向左读取的标量的二进制表示在仿射坐标中为所述曲线确定数学配对包括 使用从右向左读取的一标量的二进制表示确定曲线点的所述标量倍数; 确定加的聚集的求逆;以及 使用所聚集的求逆的输出来更新用于确定所述数学配对的线的函数。
11.一种为曲线确定数学配对以便在密码术中使用的系统,包括 求逆聚集组件,所述组件可在操作上与置于一个或多个计算设备中的一个或多个经编程的处理器耦合,并被配置成聚集在为所述曲线确定数学配对中所使用的多个求逆,且可在操作上与被配置成存储所聚集的求逆中的一个或多个的数据存储组件耦合;以及 数学配对确定组件,所述组件可在操作上与所述数据存储组件耦合,并被配置成使用所聚集的多个求逆沿从右向左读取的标量的二进制表示在仿射坐标中为所述曲线确定数学配对。
12.如权利要求11所述的系统,其特征在于,在密码系统中还包括 输入接收组件,被配置成接收至少两个元素; 包括所述标量的密码密钥;以及 配置成使用所述标量比较所接收的元素在椭圆曲线上的第一数学配对与所述椭圆曲线上至少两个点的第二数学配对。
13.如权利要求11所述的系统,其特征在于,所述求逆聚集组件被配置成将用于所述数学配对确定的多个求逆聚集成单个求逆,以便在为所述曲线上的两个点进行的数学配对确定中使用。
14.如权利要求11所述系统,其特征在于,所述数学配对确定组件可在操作上与多个处理器耦合,所述处理器被配置成使得沿从右向左读取的标量的二进制表示在仿射坐标中对曲线点的倍数的加关系的确定并行化。
15.如权利要求11所述的系统,其特征在于,所述数学配对确定组件被配置为在用于确定所聚集的多个求逆的第一曲线点是与要对其重用所聚集的求逆的第二曲线点相同的元素时,重用所聚集的多个求逆。
全文摘要
公开了允许为曲线确定数学配对以便在密码术中使用的一个或多个技术和/或系统。聚集用于为曲线确定数学配对的多个求逆(例如,在计算的元素的二叉树表示的各个层中聚集成单个求逆)。使用聚集的多个求逆沿从右向左读取的标量的二进制表示在仿射坐标中为曲线确定数学配对。
文档编号G06F17/10GK102713921SQ201080061296
公开日2012年10月3日 申请日期2010年12月31日 优先权日2010年1月13日
发明者K·劳特, M·内赫里格, P·蒙哥马利 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1