SM2 算法攻击原理分析
标准 SM2 数字签名算法流程如下图所示。
在签名过程中,待签名的消息为 M M M,它的数字签名 ( r , s ) (r,s) (r,s),签名者 A 的公私钥分别为 P A P_A PA 和 d A d_A dA, H v H_v Hv 为长度为 v v v 比特的密码杂凑算法, G G G 为椭圆曲线的一个基点,其阶数为素数, k k k 为临时私钥。
攻击者一般选择与私钥直接相关的计算进行攻击,只要通过攻击破解出私钥,就可以解密获取用户的全部明文信息,或者伪造用户的签名信息。因此重点关注SM2算法的签名运算和解密运算。
在签名算法流程中,第 4 4 4 步须进行临时私钥与基点的点乘计算,常规的点乘计算如下:
可以看到该方法将点乘运算转换为倍点和点加运算,每一次循环是否进行点加操作与 k k k 的每个比特是否为 0 0 0 相关。
其他常见的攻击方法
攻击者利用倍点攻击,通过比较 k P kP kP 与 k ( 2 P ) k(2P)