[发明专利]适用于椭圆曲线密码安全保护的随机点生成方法无效
申请号: | 200910202023.X | 申请日: | 2009-12-24 |
公开(公告)号: | CN102109974A | 公开(公告)日: | 2011-06-29 |
发明(设计)人: | 马博;包斯刚 | 申请(专利权)人: | 上海华虹集成电路有限责任公司 |
主分类号: | G06F7/72 | 分类号: | G06F7/72 |
代理公司: | 上海浦一知识产权代理有限公司 31211 | 代理人: | 王函 |
地址: | 201203 上海市浦东*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 适用于 椭圆 曲线 密码 安全 保护 随机 生成 方法 | ||
技术领域
本发明涉及ECC(椭圆曲线密码)安全保护中需要对椭圆曲线上的点进行掩码的方法,具体涉及一种适用于ECC安全保护的随机点生成方法,尤其适用于包含ECC算法的芯片的应用。
背景技术
ECC(椭圆曲线密码)算法容易受到DPA(差分功耗分析)攻击,对抗这种攻击的一种防御措施就是在公钥生成过程中用椭圆曲线上一个随机点对计算的输入点进行掩码,用掩码后的点和标量计算公钥,然后对计算结果进行恢复处理,最后得出正确的公钥。这样,每次生成公钥时芯片的功耗公钥都会随机变化,消除了功耗和密钥之间的相关性,达到保护密钥的目的。
根据传统方法描述,生成椭圆曲线上随机点最简单的方法就是随机选取某个椭圆曲线定义域内的横坐标,通过该椭圆曲线方程计算出纵坐标。但是,椭圆曲线方程中纵坐标都是二次项式,计算纵坐标的值就需要进行开方或解一元二次方程运算,而开方或解一元二次方程运算又是通过大量的模乘运算实现的,所消耗的时间代价十分巨大。
下面是椭圆曲线算术中的大数开方或解一元二次方程算法:
1.有限域Fp中求平方根:
p为质数,g为满足0≤g<p的整数。g的根为整数y,满足y2≡g(mod p)(式中符号“≡”表示等式两边都做mod p运算)。如果g=0,只有一个根0;如果g≠0,g有0个或2个根。若一个根为y,那么另一个根为p-y。
输入:域Fp,g;
输出:g的平方根y。
算法1:当p≡3(mod 4),计算整数u=(p-3)/4。
1)计算y=gu+1 mod p
2)计算z=y2 mod p.
如果z=g,表示有两个根,那么输出y;否则表示没有根,输出“nosquare roots exist.(没有平方根存在)”。
算法2:当p≡5(mod8),计算整数u=(p-5)/80。
1)计算γ=(2g)umodp
2)计算i=2gγ2modp
3)计算y=gγ(i-1)modp
4)计算z=y2modp
5)如果z=g,表示有两个根,那么输出y;否则表示没有根,输出“没有平方根存在”。
算法3:当p≡1(mod4),计算整数u=(p-1)/4。
1)令Q=g;
2)产生随机数0≤P<p;
3)计算Lucas序列元素:
U=U2u+1modp,V=V2u+1modp;
其中元素U和V的计算方法为:
U0=0,U1=1,Uk=PUk-1-QUk-2,k>2;
V0=2,V1=P,Vk=PVk-1-QVk-2,k>2。
4)如果V2=4Q(modp),输出y=V/2modp并跳出程序;
5)如果U≠(1modp),输出“没有平方根存在”并跳出程序;
6)返回步骤2)。
2.解有限域F2m中的二元方程(z2+z=β)
如果β是有限域F2m中的元素,那么方程z2+z=β有0或2个解。当β=0,解为0和1;当β≠0且其中一个解为z,那么另一个解为z+1。
下面的算法为在有限域F2m中(多项式基)求方程z2+z=β的解。
输入:域F2m,β;
输出:方程z2+z=β的解z。
1)随机选取t∈F2m。
2)令z=0,w=β。
3)i从1到m-1,做以下两个步骤:
A.令z=z2+w2t。
B.令w=w2+β。
如果w≠0,输出“无解存在”并跳出程序。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海华虹集成电路有限责任公司,未经上海华虹集成电路有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910202023.X/2.html,转载请声明来源钻瓜专利网。