发明名称 一种多方位防侧信道攻击的签名方法
摘要 本发明公开一种多方位防侧信道攻击的签名方法。该方法中包含的技术或类似技术对底数进行掩码,并获得RSA签名或其它公钥系统签名。方案中同时获得两个模幂结果,且幂指数互为反码。模幂实现时,使用了防止输出错误数据的校验技术;不使用跳转语句的模幂算法,操作运算过程中数据或运算结果数据汉明重量相等的技术。本发明有效保护了RSA STD运算过程中已知的容易被攻击的步骤。本发明提供的模幂校验,可完整的使用到RSA CRT运算当中,同时实现模幂及补码幂的算法可类似的移植到SM2的点乘运算中。模幂是否被攻击的校验可以类似的移植到SM2的点乘运算中。
申请公布号 CN106452789A 申请公布日期 2017.02.22
申请号 CN201610943335.6 申请日期 2016.11.02
申请人 北京宏思电子技术有限责任公司 发明人 王亚伟;王磊;张文婧;雷艳
分类号 H04L9/32(2006.01)I;H04L9/00(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 北京高沃律师事务所 11569 代理人 王加贵
主权项 一种多方位防侧信道攻击的签名方法,其特征在于,包含:步骤一,输入RSA的模数N、消息M、私钥元素d、公钥元素e,所述私钥元素d的长度为t比特,所述公钥元素e的长度小于等于N的比特长,且保证M小于N;步骤二,生成长度为t比特的随机数trng1,并用所述随机数trng1先后乘公钥元素e和私钥元素d,该运算结果减去当前使用的随机数trng1,并减去私钥元素d,得到数据z1;步骤三,生成长度为t比特的随机数trng2,以所述随机数trng2为底数,步骤b中得到的数据z1为指数,比特长度为bitlen比特,执行如下操作:设置3块t比特的空间分别为S<sub>0</sub>,S<sub>1</sub>,A,三块空间分别赋值为;S<sub>0</sub>=S<sub>1</sub>=1,A=trng2;i从0到bitlen执行如下过程:①获得z1的当前比特值;②如果当前比特为0则计算S<sub>0</sub>=S<sub>0</sub>*A,如果当前比特为1,则执行S<sub>1</sub>=S<sub>1</sub>*A;③对A平方并放入A中;校验S<sub>0</sub>*S<sub>1</sub>*X‑A是否为0,如果不为0,退出;步骤四,步骤三中输出结果分别记为S<sub>0</sub>,S<sub>1</sub>;步骤五,生成长度为t比特的随机数trng3,并用该随机数先后乘公钥元素e和私钥元素d,该运算结果减去当前使用的随机数trng3,并加上私钥元素d,得到数据z2;步骤六,N为模数,trng2为乘法因子对摘要M进行模乘掩码,得到结果记为maskM;步骤七,以maskM为底数,z2位指数,执行如3中a、b、c操作,获得结果S'<sub>0</sub>,S<sub>1</sub>';步骤八,计算S<sub>1</sub>*S′<sub>1</sub>,并以该结果为底数,公钥元素e为指数,N为模数,执行3中a、b、c三步,得到输出结果S″<sub>0</sub>,S″<sub>1</sub>,如果S″<sub>1</sub>=M,则输出S<sub>1</sub>*S′<sub>1</sub>,或者不输出数据。
地址 100089 北京市海淀区知春路23号509室