一种快速嵌入明文到椭圆曲线上一点的方法

文档序号:6439098阅读:3481来源:国知局
专利名称:一种快速嵌入明文到椭圆曲线上一点的方法
技术领域
本发明涉及一种信息加密技术,具体涉及一种快速嵌入明文到椭圆曲线上一点的方法。
背景技术
进入21世纪以来,互联网在中国得到突发猛进的发展,根据CNNIC(中国互联网络信息中心)统计数字显示,截至2011年6月,中国网民规模达到4. 85亿,较2010年底增加 2770万人;互联网普及率攀升至36. 2%,较2010年提高1. 9个百分点。随着信息技术的发展与应用,网上交易如网上银行、电子政务和电子商务也变得越来越普遍。随之带来的安全问题也越来越严重,统计显示2011年上半年,遇到过病毒或木马攻击的网民达到2. 17亿, 比例为44. 7% ;有过账号或密码被盗经历的网民达到1. 21亿人,占24. 9%,较2010年增加 3. 1个百分点。因此在电子政务、电子商务等网络事务中就需要防止别人窃取并篡改重要信息,如攻击者通过监听网络得到收发双方的信息、攻击者截取中间信息并进行篡改。为了解决上面的问题,需要对在网络上传输的信息进行加密,也就是在交互的双方建立一条安全通道,别人不能够窃取到这些信息,即使窃取到了,也不能看到真实信息。 传统的加密算法采用的是对称密码体制,通信双方共享同一密钥,它的优点是加密易于用硬件实现,加解密速度都很快,但是存在安全隐患,密钥在交换的时候容易被人窃取。而现代公钥密码体制是非对称密码体制,仅要求密钥的交换是保真的,而不要求其是保密的。每个实体选择一个密钥对(e,d),其中e是公钥,而d是私钥,私钥是需要保密。由公钥是不能计算出私钥。目前,公钥密钥算法主要有两种,一种是RSA,另外一种就是椭圆曲线密码 ECC (Elliptic Curve Cryptography),其公钥为椭圆曲线上一点,私钥为一大数,通过公钥乘以私钥即可得到所要加密的内容。椭圆曲线密码ECC的运用方法如下 l、ECC参数组(p,Fp,a,b,n,G (Gx, Gy)),其中,ρ 素域Fp的阶;a,b 椭圆曲线
y"2=x"3+a*x+b的系数;G 基点(在椭圆曲线上选定的一点);n 基点G的(素数)阶;Gx, Gy 基点的χ和y坐标。2、ECC密钥对的生成输入参数组D = (ρ, Fp,a, b,n,G (Gx,Gy));输出公钥Q, 私钥d。其流程为(1)、选择d,范围[l,n - 1] ; (2)、计算Q=dG;(3)、返回(Q,d)。3、基本的ECC加密流程输入公钥Q,明文Plain,输出密文CO & Cl。(1)将输入明文表示成前面已选定的椭圆曲线上的一个点M。(2)随机选择整数k,该整数的范围为 [l,n]。(3)计算 CO = kG (4)计算 Cl = k*Q + Plain (5)返回 CO、Cl。4、基本的ECC解密流程输入私钥d,密文CO、Cl,输出明文Decipher。(1)计算 Decipher = Cl - d* CO ; (2)返回 Decipher。ECC相对于RSA系统吸引人的主要原因是其安全性是基于有限域上的椭圆曲线上的点群中的离散对数问题ECDLP,ECDLP是比因子分解问题更难的问题,160bit的椭圆曲线密码系统可提供与IOMbit的RSA相当的安全强度,而224bit的椭圆曲线密码系统则与2048bit的RSA具有相同的安全强度。故越来越多的应用选择了用椭圆曲线密码系统作为加密系统。为了运用椭圆曲线密码,需要把明文信息映射为椭圆曲线上一点,才能对该信息运用椭圆曲线密码系统。目前,把明文嵌入到椭圆曲线上一点的实现算法大多采用概率算法,大多数的研究也都是基于概率算法的基础上寻找快速算法,但不甚理想,因此找到一种快速的明文嵌入方法尤其必要。

发明内容
本发明提供一种快速嵌入明文到椭圆曲线上一点的方法,提高了把明文嵌入到椭圆曲线上一点的速度,提高加密性能。为实现上述目的,本发明提供一种快速嵌入明文到椭圆曲线上一点的方法,其特点是,该方法包含以下步骤
步骤1、设椭圆曲线方程f (x) =x"3+a*x +b=y"2,x为横坐标,y为纵坐标,该椭圆曲线方程定义为有限域Fp上的椭圆曲线,ρ为素数;
步骤2、设椭圆曲线上一点的横坐标Xi=MXk + i,其中M为明文,令k = 256,i = 0, 横坐标Xi相对应的纵坐标设为Y ;
步骤3、采用欧拉准则判断f (Xi)是否有平方根,设t0 = f (Xi)" (p-D/2 mod ρ, P为素数,P — 1 = 2~nXq,其中q为奇数,η>=1 ;
判断t0的值,若t0=-l,f (Xi)属于模ρ的非平方剩余集合,即f (Xi)模ρ没有平方根,则令i=i+l,并跳转到步骤2;
若t0=l,f (Xi)属于模ρ的平方剩余集合,即f (Xi)模ρ有平方根,则跳转到步骤4; 步骤4、判断步骤3中η的值是否等于1 ;
若 n=l,p = 4X (q+l)/2 - 1,表示 p=3mod4,且由 f (Xi(p_l)/2 mod ρ = 1 得 f (XiΓ ((p+l)/4)"2mod ρ= f (Xi),则赋值椭圆曲线上一点的纵坐标 Y= f (Xi)"(p+l)/4 mod p,并跳转到步骤8 ;
若η兴1,则跳转到步骤5;
步骤5、随机选择一个小于ρ大于0的大数u,其中if (ρ-1)/2 =- 1 mod p,即u属于模P的非平方剩余集合;
步骤6、计算f (Xi)的平方根Y的值,设中间变量g= u "q, d=f (Xi) "q, w=f (Xi) "(q+ l)/2;
步骤7、采用逐次递减方法使d的阶为1,从而快速求出f (Xi)的平方根Y ;
步骤7. 1、设中间参数r = n;
步骤7. 2、设中间参数m,其初始值设为0 ;
步骤7. 3、计算d模ρ的阶,设c = (Γ2"m mod p,计算c的值,判断c的值是否等于1 ; 若c = 1,表示d模ρ的阶为2~m,因为f (Xi )是模ρ的平方剩余,则m < (r-Ι ),并跳转到步骤7. 4,
若c兴1,则将m的值增大l,m = m+ 1,并跳转至步骤7. 3;
步骤7.4、设t=g~ (2" (r-m- l))mod p,对g、d、w的赋值进行更新,其更新的关系式如下
g = t*t mod ρ ;d = d*g mod ρ ;w = w*t mod ρ ;步骤7.5、判断d是否等于1,若d=l,则w为f (Xi)的平方根,即Y =w,跳转到步骤8, 若否,则将m的值赋给r,转到步骤7. 2 ;
步骤8、计算得出椭圆曲线上一点的纵坐标Y的值,确定椭圆上一点(Xi,Y),根据 Xi=MXk + i,算得明文M。本发明一种快速嵌入明文到椭圆曲线上一点的方法和现有技术相比,其优点在于,本发明的模乘和模幂使用硬件的Montgomery算法实现;第二,采用逐次递减方法使得d 的阶为1,从而快速求出f (Xi)的平方根Y,实现加快了运算速度;第三,明文乘以256再赋值给Xi,这样解密时只需要将解密后的数据再去掉最后一个字节即可得到明文。


图1为本发明一种快速嵌入明文到椭圆曲线上一点的方法的总流程图2为本发明一种快速嵌入明文到椭圆曲线上一点的方法中将d的阶逐次递减为1的方法流程图。
具体实施例方式以下结合

对本发明的实施例作进一步详细描述,但本实施例并不用于限制本发明,凡是采用本发明的相似结构、方法及其相似变化,均应列入本发明的保护范围。如图1所示,本发明公开了一种快速嵌入明文到椭圆曲线上一点的方法,该方法包含以下步骤
步骤1、设椭圆曲线方程f (X)=X3+a*x +b=y 2是定义在有限域Fp上的椭圆曲线,其中χ为椭圆曲线上的横坐标,y为椭圆曲线上的纵坐标。有限域Fp表示p为素数,以ρ为模,则模P的全体余数的集合{0,1,2……(ρ — 1)}关于模ρ的加法和乘法构成一个ρ阶有限域即有限域中的元素只有P个,并用符号Fp表示。步骤2、设椭圆曲线上一点的横坐标Xi=MXk + i,椭圆方程上一点的纵坐标为Y, 其中M为明文,令k = 256,说明将明文乘以256再赋值给Xi,并且i = 0。与该横坐标Xi 相对应的纵坐标设为Y。256=28,在本实施例中采用解密时只需要将解密后的数据再去掉最后一个字节即可得到明文的解密要求。所以取k=256,实现上述的要求。步骤3、由于椭圆曲线方程f (x)=x"3+a*x +b=y~2中,f (χ)有平方根,所以本发明中求得的f (Xi),如果要满足f (Xi) =Y 2,则须满足f (Xi)有平方根的要求。根据欧拉准则可用来简单判定一个数ζ (ζ兴0 mod ρ)是否有二次剩余(即ζ有平方根)还是非剩余。所以本发明中,通过欧拉准则判断f (Xi)是否有二次剩余还是非剩余,即判断f (Xi)是否有平方根。所以根据欧拉准则,设to = f (Xi) “ (p-°/2 mod P,并求to的值。ρ为素数,作为有限域Fp的阶,P-I = 2~nXq,其中q为奇数,η>=1。其中mod运算为模运算,本发明中主要有模乘和模幂运算,该模乘和模幂采用 Montgomery模乘(a*b mod η)的方法实现。判断t0的值,若t0=_l,表示f (Xi)属于模ρ的非平方剩余集合,即f (Xi)模ρ 没有平方根,则令i=i+l,选取下一点Xi,并跳转到步骤2,并将更新Xi的带入f (X)0
若t0=l,则f (Xi) “ (ρ"1)/2 mod p=l,表示f (Xi )属于模P的平方剩余集合,即f (Xi)模P有平方根。说明该Xi所对应的f (Xi)满足步骤3中提出的f (χ)有平方根,f (χ)符合椭圆曲线方程,则跳转到步骤4,进行求出f (Xi)0步骤4、判断上述步骤3中的η的值是否等于1。若是,η=1时,则 ρ = 2Xq + 1 = 2Χ (q+1)— 1 = 4X (q+l)/2 _ 1,其中 q 为奇数,则(q+1) Λ为整数,所以根据ρ = 4X (q+1 )/2 - 1可得ρ = 3mod4,则(p+1)/4 为整数。又根据上述t0=f (Xi) “ (p"1)/2 mod p=l,两边同乘以一个 f (Xi)得 f (Xi) “ (p+1) 72 mod ρ= f (Xi),可得 f (Xi) “ ((p+1)/4r2mod ρ= f (Xi),
则可赋值Y= f (Xi)"(p+1)/4 mod P,根据公式f (Xi)~(p+lV4 mod ρ可直接计算出f (Xi) 的平方根(即椭圆曲线上一点的纵坐标Y),并跳转到步骤8。若否,η兴1,则跳转到步骤5,继续求f (Xi)0步骤5、随机选择一个小于ρ (有限域Fp的阶)大于0的大数U,其满足Ui1)/2 =-1 mod p,即u属于模ρ的非平方剩余集合。步骤6、采用逐次递减方法计算f (Xi)的平方根Y的值,设三个中间变量g= u、 d = f (Xi) "q ;w = f (Xi) -(<1 + 1)/2。可知,w2=f (Xi) "(q + 1) = f (Xi) "(q)Xf (Xi) = f (Xi) Xd,故当 d 等于 1 的时候,w~2= f (Xi)= Y~2,w即为f (Xi)的平方根(即椭圆曲线上一点的纵坐标Y)。步骤7、如图2所示,采用逐次递减方法使d的阶为1,从而快速求出f (Xi)的平方根Y。阶的意义为称使Cfs = 1的最小正整数S为d的阶。步骤7. 1、设一个中间参数r = n,该η为步骤2中的η。步骤7. 2、设中间参数m,其m的初始值设为0。步骤7. 3、计算d模ρ的阶。设中间变量c,赋值c = (T2 m mod ρ,并通过计算c, 判断c的值是否等于1,来计算d模ρ的阶。若c = 1,表示d模ρ的阶为2~m,而根据步骤3可知f (Xi)是模ρ的平方剩余, 所以 f (Xi) “ (p"1)/2 mod p=l JPf (χι) "te-fc-i)*,) mod P=UPcT2^n-1) mod p=1,又因为中间参数r = n,所以m最大只可能是(r_l ),并跳转到步骤7. 4。若c Φ 1,则将m的值增大1,m = m + 1,并跳转至步骤7. 3,再带入c = d 2 m modP。步骤7. 4、设中间变量t,该t=g~ (2"(r^0)mod p,采用t对g、d、w的赋值进行更新。 g、d、w更新的关系式如下
g = t氺t mod ρ ; d = d*g mod ρ ; w = w*t mod ρ ;
根据上述关系式,计算得更新后g、d、w的值。很明显每次循环之后g的阶也为2~m,因为g = tXt mod ρ = g"(2" (n-m))mod p,则 g" (2"m)mod ρ = g" (2"n)mod ρ = if ((2—n)^rnod p= u"^1Vod p=u"((p-1)/2)mod ρ X u"((p-1)/2) mod p=(-l)*(_l)=l,从而 d=dXg 的阶就变为 2~ (m-1),因为 cT2~(m— l)mod p=d2 0ll — n mod pXg"2 (m_1)mod p=(_l) X (-1) = 1。
步骤7. 5、判断d是否等于1,若d=l,则w即为f (Xi)的平方根,椭圆曲线上一点纵坐标Y等于W的值,并跳转到步骤8。若d兴1,则将m赋值给r,r = m,并转到步骤7. 2。步骤8、得出椭圆曲线f (X)=X 3 +a*x +b=y 2上一点的纵坐标Y,同时确定了 Xi的值,即得出椭圆曲线上一点(Xi,Y)。该确定Xi除以256即获得被加密的明文M。尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
权利要求
1.一种快速嵌入明文到椭圆曲线上一点的方法,其特征在于,该方法包含以下步骤 步骤1、设椭圆曲线方程f(x)=x3+a*x +b=y2,X为横坐标,y为纵坐标,该椭圆曲线方程定义为有限域Fp上的椭圆曲线,ρ为素数;步骤2、设椭圆曲线上一点的横坐标Xi=MXk + i,其中M为明文,令k = 256,i = 0, 横坐标Xi相对应的纵坐标设为Y ;步骤3、采用欧拉准则判断f (Xi)是否有平方根,设t0 = f (Xi) “ (p-°/2 mod ρ,ρ为素数,ρ — 1 = 2~nXq,其中q为奇数,η>=1 ;判断t0的值,若t0=-l,f (Xi)属于模ρ的非平方剩余集合,即f (Xi)模ρ没有平方根,则令i=i+l,并跳转到步骤2;若t0=l,f (Xi)属于模ρ的平方剩余集合,即f (Xi)模ρ有平方根,则跳转到步骤4; 步骤4、判断步骤3中η的值是否等于1 ;若 n=l,p = 4X (q+l)/2 - 1,表示 p=3mod4,且由 f (Xi) ~ (ρ-1)/2 mod ρ = 1 得 f (Xir((p+i)/4)-2mod p= f (Xi),则赋值椭圆曲线上一点的纵坐标 γ= f (Xi) "(p+1)/4 mod p, 并跳转到步骤8 ;若η兴1,则跳转到步骤5;步骤5、随机选择一个小于ρ大于0的大数u,其中if (ρ-1)/2 =- 1 mod p,即u属于模P的非平方剩余集合;步骤6、计算f (Xi)的平方根Y的值,设中间变量g= u "%d=f (Xi)"%w=f (Xi) "(q +1)/2 _ 步骤7、采用逐次递减方法使d的阶为1,从而快速求出f (Xi)的平方根Y ; 步骤8、计算得出椭圆曲线上一点的纵坐标Y的值,确定椭圆上一点(Xi,Y),根据 Xi=MXk + i,算得明文M。
2.如权利要求1所述的一种快速嵌入明文到椭圆曲线上一点的方法,其特征在于,所述的步骤7包含以下步骤步骤7. 1、设中间参数r = n;步骤7. 2、设中间参数m,其初始值设为0 ;步骤7. 3、计算d模ρ的阶,设c = Cf2 m mod p,计算c的值,判断c的值是否等于1 ; 若c = 1,表示d模ρ的阶为2~m,因为f (Xi)是模ρ的平方剩余,则m ^ (r-Ι),并跳转到步骤7. 4,若c Φ 1,则将m的值增大1,m = m + 1,并跳转至步骤7. 3 ;步骤7.4、设t=g~ (2" (r-m-0)mod p,对g、d、w的赋值进行更新,其更新的关系式如下g = t*t mod ρ ;d = d*g mod ρ ;w = w*t mod ρ ;步骤7.5、判断d是否等于1,若d=l,则w为f (Xi)的平方根,即Y =w,跳转到步骤8, 若否,则将m的值赋给r,转到步骤7. 2。
全文摘要
本发明公开了一种快速嵌入明文到椭圆曲线上一点的方法,其包含1、设椭圆曲线方程f(x)=x^3+a*x+b=y^2;2、设椭圆曲线上一点的横坐标Xi=256M+i,M为明文;3、求t0=f(Xi)^(p-1)/2modp,p为素数,p-1=2^n×q,其中q为奇数,n>=1,判断t0的值,若t0=-1,转到步骤2;若t0=1,f(Xi)模p有平方根,跳转到步骤4;4、判断n的值,若n=1,则Y=f(Xi)^(p+1)/4modp,跳转到步骤8,若n≠1,跳转到步骤5;5、随机选择一个小于p大于0的大数u,u^(p-1)/2=-1modp;6、设中间变量g=u^q,d=f(Xi)^q,w=f(Xi)^(q+1)/2;7、采用逐次递减法计算d的阶为1;8、确定椭圆曲线上一点的纵坐标Y。本发明提高了明文嵌入到椭圆曲线上一点的速度。
文档编号G06F7/72GK102394747SQ20111037608
公开日2012年3月28日 申请日期2011年11月23日 优先权日2011年11月23日
发明者刘红明, 周玉洁 申请人:上海爱信诺航芯电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1