基于椭圆曲线的加密方法

文档序号:6649519阅读:281来源:国知局
专利名称:基于椭圆曲线的加密方法
基于椭圆曲线的加密方法本发明涉及基于使用椭圆曲线上的点进行信息加密的方法,尤其是确定属性的信息加密方法。为了对信息进行加密计算,常用的算法是将任意数插入在数学结构中。为此目的, 所述椭圆曲线作为数学结构,该结构便于这类加密计算的应用并且同时与使用其它加密计算相比还能节省存储器空间。因此,可以考虑插入使用椭圆曲线的任意数值的有效算法。然而,这些算法的应用时间不是恒定的,它取决于待编码的信息。于是,如果破解者能确定所应用算法的不同应用时间,则他就有可能获得有关编码信息的信息。为了屏蔽所考虑的插入算法所用的时间,则有可能在该算法中附加一些不必需的步骤,使得这类应用都能始终延长相同长度的时间周期且与所处理的信息无关。椭圆曲线的点P是由其横坐标X和纵坐标Y所定义的,X和Y满足下列方程f(X) = Y2 (1)式中f (X)为多项式f (X) = X3+aX+b多项式组是已知的且满足Skalba等式,从而有可能确定在椭圆曲线上的这样一个点,正如 Andrew Shallue 禾口 Christiaan van de Woesti jne 撰写的文献'Construction of Rational Points on Elliptic curves over finite fields'中所定义的。多项式X1 (t)、X2 (t)、X3 (t)和U(t)满足Skalba等式,则它们应满足下列等式f (X1 ⑴)· f (X2 (t)). f (X3 (t)) = U2 (t) (2)式中f为定义所考虑的椭圆曲线的函数,并且以t为参数。满足Skalba等式的多项式可以选择两个参数u和t。在这样的条件下,Skalba等式可表述为f(X1(t,u)).f(X2(t,u)).f(X3(t,u)) =U2(t,u)这类等式可以通过两个参数来使用。然而,在所提议的应用中,我们可将u或者t 优先设置成任意数值。于是,只有一个参数数值仍需要选择。确定所选择的参数t和U,值得注意的是X1 = X1U, u), X2 = X2 (t,U)、X3 = X3 (t, u)、U = U(t,u);式中XpXyXjP U为Fq的参数。该等式⑵表示MX1^f (X2)和€孤)数值中至少一个对应于有限区域Fq中的平方项。因此,一旦确定在Fq中的f (Xi)平方项,我们就能获得在椭圆曲线尸(Xpa//^")上的点。当域Fq的特征数q满足下列条件q = 3 mod 4时,则VT^的计算可藉助于取幂
指数的计算方法来执行。在这样的条件下,可以得到V7m=/(^)(<,+1)/4(3)为了确定在椭圆曲线⑴上的点,则必须确定在f (X1Kf(X2)和f(X3)三个数值之间对应在有限区域Fq域平方项的那个数值。为此目的,我们可以首先假设检测f (X1)项是否为有限区域Fq中的平方项;然后,如果条件不满足,则对f(X2)进行相同的检测;最后,如果这个条件仍旧不满足,则对f (X3)进行相似的检测。但是,在这个处理流程之后,确定在椭圆曲线上的点所用的时间并不总是相同的,因为如果所检测的第一项就为平方项比如果仅只有第三项才为平方项的确定执行速度要快得多。一个潜在的破解者可以凭借使用时间的不同来确定椭圆曲线上的点,用于破解能够联系待产生该点的参数的关系。此时,在加密领域中,这些参数都必需是保密的。尤其是,这些参数都对应于密码。因此,重要的是,这些点的确定不能以其自身提供有可能破解参数保密的任何信息,并因此避免基于分析确定曲线上的点所用时间的破解。为了克服这个不利的因素,可以系统地检测从1-3范围内的i的三项f (Xi)。因此, 用于确定在曲线上的点所用的时间就不再是确定点的函数。但是,检测等式(2)的项是否为有限区域Fq内的平方项是非常复杂的操作,尤其是使用取幂指数的操作,这个过程非常消耗执行时间。在我们希望根据Skalba等式来确定椭圆曲线上的一个点又希望以恒定时间来执行这些确定的情况下,就需要进行4次取幂指数的操作,在上述情况下,Skalba等式(2)中的各项都进行一次取幂指数的检测,并且为了计算平方根还需做一次取幂指数的操作,如在等式(3)中所述。本发明旨在改善这类问题。本发明的第一个目的在于提供一种在电子元件中可执行加密算法的方法,其包括获取点P (X,Y)的步骤,该点取自于满足等式Y2 = f (X)的椭圆曲线上的至少一个参数t以及取自于满足 Skalba 等式:f(X1(t)).f(X2(t)).f(X3(t)) = U(t)2 的多项式 X1 (t)、X2 (t)、 X3⑴和_,并且在有限区域Fq中,与参数t无关,q都满足等式q = 3 mod 4 ;所述方法包括下列步骤/1/获得参数t的数值;/2/通过执行下列子步骤来确定点P /i/ 计算 X1 = X1 (t)、X2 = X2 (t)、X3 = X3 (t)和 U = U (t)/ii/如果f (X1 (t)).f (X2 (t))项为在有限区域Fq中的平方项,则测试f (X3)项是否为在有限区域Fq中的平方项并计算f (X3)项的平方根,点P具有X3作为横坐标的和f(X3) 项的平方根作为纵坐标;/iii/否则,则测试f(X》项是否为在有限区域Fq中的平方项,并在这种情况下, 计算f (X1)项的平方根,点P具有X1作为横坐标和f (X1)项的平方根作为纵坐标;/iv/否则,则计算f(X2)项的平方根,点P具有X2作为横坐标和f (X2)项的平方根作为纵坐标;/3/将所述点P应用于加密或哈西或签名或授权或识别等加密应用。得益于这些设置,有可能采用加密领域中所使用的方式来确定椭圆曲线上的点, 因为一方面,这种确定方法耗用相同时间且与输入参数t无关;另一方面,这种方法由于减少了需要操作的数量而变得更有效率。这种确定方法耗用恒定的时间且不再取决于输入参数或参数。实际上,即使该方法基于对应于Skalba等式中的平方项提供不同的处理选择,但仍只需执行相同数量的相同类型的操作,而与所确定的曲线上的点无关。更具体的是,与所确定的曲线上的点无关, 执行下列列表的操作_监测在Fq域中的平方项,_确定平方根。因此,不可能再引发“时间破解”类型的破解。此外,于是限制了执行费时操作所需的数量,该确定的效率较高。实际上,有可能通过使用至多两次的取幂指数类型的操作来测试Skalba等式(2)三项中的哪一项是在有限区域Fq中的平方项。更加具体地说,值得注意的是,在本发明的一个实施例中,平方项的检测对应于取幂指数,这是本发明的内容中最关键的操作。在步骤/2/_/ii/中,需要确定Rtl项R0 = f (X1). f (X2)是否为平方项。该步骤对应于平方项的检测,其使用了附加的取幂指数操作,或者它可以基于当满足Skalba等式的多项式对应于没有平方项的项时先前计算所获得预计算数值。下文将进一步阐述后一种情况,方法的应用有利于仅仅需要一次取幂指数的操作。即使在最坏的情况下,根据本发明一个实施例的方法的应用对应于两次取幂指数,一次用于Rtl的平方项检测,而另一次取幂指数用于对f (X3)或f (X1)的平方项检测。在执行这类根据本发明一个实施例的计算的过程中,相对于取幂指数应用所用的时间,执行不是取幂指数操作的时间就可忽略不计。在此,得益于本发明的特征,在上述通常情况下,最多只需要两次取幂指数操作,而不再是四次取幂指数的操作。这种减少取幂指数操作数量是非常有效的。在本发明的一个实施例中,在步骤/2/_/ii/中,执行下列步骤-计算R1,使之
权利要求
1.一种在电子元件中执行加密算法的方法,其包括获得点p(x,Y)的步骤,该点取自于满足下列等式的椭圆曲线上的至少一个参数t Y2 = f (X);以及取自于满足下述Skalba等式的多项式Xi(t)、X2⑴、X3⑴和U(t) f(X! (t)).f(X2(t))f(X3(t)) = U(t)2在有限的区域Fq中,与参数t无关,q都满足等式q = 3 mod 4;所述方法包括下列步骤/1/获得参数t的数值;/2/通过执行下列子步骤确定点P /i/计算 X1 = X1 (t), X2 = X2(t)、X3 = X3 (t)和 U = U(t)/ii/如果f (X1)J(X2)项为在有限区域Fq中的平方项,则检测f (X3)项是否为在有限区域Fq中的平方项,并且计算f (X3)项的平方根,点P具有X3为横坐标和f (X3)的平方根为纵坐标;/iii/否则,检测f (X1)项是否为在有限区域Fq中的平方项并且在该条件下计算f (X1) 项的平方根,点P具有X1为横坐标和f (X1)项为纵坐标;/iV/否则,计算f(X2)项的平方根,点P具有X2为横坐标和f(x2)项的平方根为纵坐标;/3/将该点应用于加密或哈西或签名或授权或识别的加密应用。
2.根据权利要求1所述执行加密计算的方法,其特征在于,在步骤/2/-/ii/中执行下列步骤-计算R1,使之?+1Rl^inXiXf(X2))4-如果Λ2等于f (X1) · f (X2),则判定f (X1) · f (X2)为在Fq区域中的平方项; 其中,在步骤/2/-/iii/中,根据下列步骤来检测f (X1)项是否为在有限区域Fq中的平方项-计算R2',使之.g+\^2 =Z(^1) 4-计算R3',使之η / — η / 2 Κ 3 — Κ 2-计算R4',使之R' 4 = R' 3· f (Xi)其中,如果R/不等于1,则在步骤/2/_/iv/中,通过下列等式获得f(X2)的平方根 =Ri-R2 O
3.根据权利要求1或2所述执行加密计算的方法,其特征在于,满足Skalba等式的多项式可以Jacobian坐标系将点P (X,Y)表述为P (X',V,Ζ),使之V = X. Z2, Y' =Y-Z3其中,函数f表述为fz(X')并满足 fz(X' ) = X' 3+a. X' . Z4+b. Z6 以及,椭圆曲线满足等式 Y' 2 = fz(X')其中,满足以Jacobian坐标系表述的Skalba等式的多项式是X' ,(t),!' 2(t)、 V 3(t)、Z(t)和U' (t)且满足Jacobian坐标系的Skalba等式: U' (t)2 = fz(t) (X' !(O)-Tzw (X' 2(t)).fz(t) (X' 3(t)) 以及Z(t)采用将逆变换变换为乘法操作的方法来确定。
4.根据权利要求1或2所述执行加密计算的方法,其特征在于,满足Skalba等式的多项式使之有可能以任何t来设置X3 (t)的数值,以便f (X3 (t))项不为在Fq中的平方项,并且其中,在步骤/2/_/ii/中,f(Xi).f(X2)项不为在有限区域Fq中的平方项,以及,在步骤 /2/-/iii/中,根据下列步骤来测试f (X1)项是否为在有限区域Fq中的平方项-计算R2',使之
5.根据权利要求4所述执行加密计算的方法,其特征在于,所述满足Skalba等式的多项式可以Jacobian坐标系将点P (X,Y)表述为P (X',V,Z),使之V = X. Z2, Y' =Y-Z3其中,函数f表示为fz(X')并且满足 fz(X' ) = X' 3+a. X' . Z4+b. Z6 式中,椭圆曲线满足等式 Y' 2 = fz(X')其中,以Jacobian坐标系表述的满足Skalba等式的多项式为X' ,(t) Λ' 2(t)、Z(t) 和U' (t)以及满足以Jacobian坐标系表述的Skalba等式 U' (t)2 = -fz(t)(X'洲·“々'2(t))) 以及,其中Z(t)采用将逆操作变换为乘法操作的方式来确定。
6.根据上述任一权利要求所述执行加密计算的方法,其特征在于,在步骤/1/中,参数 t的数值是作为密码或标识符的函数所获得的。
7.根据权利要求1至5中任一项所述执行加密计算的方法,其特征在于,所述加密应用为通过检测实体的授权或识别的应用,并且在步骤/1/中,通过下列步骤来执行/a/产生随机数值;/b/基于使用对应参数的密码或标识符所确定的加密密钥的加密函数,通过加密所述随机数值来获得加密数值,以及, /c/将加密数值传送至检测单元。
8.一种电子装置,包括适用于执行根据权利要求1至7中任一项所述执行加密计算方法的部件。
全文摘要
一种可在电子元件中执行的加密算法,包括获得点P(X,Y)的步骤,该点取自于满足等式Y2=f(X)的椭圆曲线上的一个参数t和取自于满足Skalba等式f(X1(t)).f(X2(t)) f(X3(t))=U(t)2的多项式X1(t)、X2(t)、X3(t)和U(t)且在有限的区域Fq(q=3 mod 4)中。首先获得参数t的数值。接着,执行下列子步骤来确定点P/i/计算X1=X1(t)、X2=X2(t)、X3=X3(t)和U=U(t);/ii/如果f(X1).f(X2)项为在有限区域Fq中的平方项,则检测f(X3)项是否为在有限区域Fq中的平方项并且如果是就计算f(X3)项的平方根,以便获得点P(X3);/iii/否则,检测f(X1)项是否为平方项并且如果是就计算项f(X1)的平方根,以便获得点P(X1);/iv/否则,计算f(X2)项的平方根,以便获得点P(X2)。该点可在加密应用中使用。
文档编号G06F17/10GK102484587SQ201080037058
公开日2012年5月30日 申请日期2010年6月15日 优先权日2009年6月16日
发明者托马斯·伊卡特, 金-塞巴斯蒂恩·科龙 申请人:茂福公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1