当前位置: 首页 > news >正文

SM2签名算法中随机数K的随机性对算法安全的影响

        一、构造如下SM2签名算法过程1
        Sig1 r1 =         F2BFC778C66127C74E3613FAA1AB6E207059740B317597A78BBFCDF58AED0A51
        Sig1 s1 = 4FC719D00334CCC23098036DEEAA71DB464A076EFA79283389D3414D70659E88
        私钥d = B3124DC843BB8BA61F035A7D0938251F5DD4CBFC96F5453B130D890A1CDBAE32
        公钥P = DC9A1F6E4334DDAC74E5104AC1797B3372A765E94B0C1DAC6032CDB0934758D21AB40618825661CAD4C8542D0736101B9975C7FE23A67B00BEC38587B202C5FA
        用户身份ID = 1234567812345678
        待签名消息M = 12345678901234567890
        随机数k = 0000000000000000000000000000000000000000000000000000000000000123

        二、构造如下SM2签名算法过程2
        Sig1 r2 = 000E4A9838E4FCF75507F3EA012B7D2C9D7C6D76B9F1B1EE18D8A6F238991653
        Sig1 s2 = 21B3190B669F6ABA735726BF140ABF6F52E6C3273DA3B461178E7D9A980D21AE
        私钥d = B3124DC843BB8BA61F035A7D0938251F5DD4CBFC96F5453B130D890A1CDBAE32
        公钥P = DC9A1F6E4334DDAC74E5104AC1797B3372A765E94B0C1DAC6032CDB0934758D21AB40618825661CAD4C8542D0736101B9975C7FE23A67B00BEC38587B202C5FA
        用户身份ID = 1234567812345678
        待签名消息M = 1234567890AB1234567890AB
        随机数k = 0000000000000000000000000000000000000000000000000000000000000123

        以上两次SM2签名过程中随机数k相同,在对手获得两次签名结果Sig1和Sig2的情况下,能否计算出私钥d?

        由SM2签名算法可知
        (1)s1 = (k-r1d)/(1+d) mod n
        (2)s2 = (k-r2d)/(1+d) mod n
        (3)s1-s2 = (r2-r1)d/(1+d) mod n
        (4)d = (s1-s2)/[(r2-r1)-(s1-s2)] mod n
        (5)n = FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123,(具体见GMT 0003.5-2012 SM2 椭圆曲线公钥密码算法第5部分:参数定义)

        到此,若k为固定值时私钥d可以在Sig1、Sig2和n已知的情况下能够被推导出来。下面具体计算
        (1)s1-s2 mod n = 2E1400C49C956207BD40DCAEDA9FB26BF3634447BCD573D27244C3B2D8587CDA
        (2)r2-r1 mod n = 0D4E831E7283D53006D1DFEF5F800F0B9F26D8D6AA421F71E0D4CD05E7814D25
        (3)[(r2-r1)-(s1-s2)] mod n = DF3A8258D5EE73284991034084E05C9F1DC773FA0F32B0CAC24BFD5C48FE116E
        (4)1/[(r2-r1)-(s1-s2)] mod n,也就是DF3A8258D5EE73284991034084E05C9F1DC773FA0F32B0CAC24BFD5C48FE116E的逆元=
E5E3D3B7FF47A46B11EC572C81242A0915AC5A01EEEF04DB30E1FA62421CD2D
        (5)d = 2E1400C49C956207BD40DCAEDA9FB26BF3634447BCD573D27244C3B2D8587CDA * E5E3D3B7FF47A46B11EC572C81242A0915AC5A01EEEF04DB30E1FA62421CD2D mod n =
B3124DC843BB8BA61F035A7D0938251F5DD4CBFC96F5453B130D890A1CDBAE32

        用户私钥d被完整推导出来,由此可见随机数k的随机性对于SM2密码算法安全非常重要。

http://www.lryc.cn/news/180366.html

相关文章:

  • 郁金香2021年游戏辅助技术中级班(六)
  • 毛玻璃员工卡片悬停效果
  • 闪存工作原理
  • 从0到一配置单节点zookeeper
  • 【JVM】第三篇 JVM对象创建与内存分配机制深度剖析
  • 【信创】麒麟v10(arm)-mysql8-mongo-redis-oceanbase
  • maven settings.xml文件(包含了配置阿里云镜像)
  • 分类预测 | MATLAB实现WOA-FS-SVM鲸鱼算法同步优化特征选择结合支持向量机分类预测
  • Redis是否要分库的实践
  • String 进阶
  • ESP32设备通信-两个ESP32间UART通信
  • LCR 052.递增顺序搜索树
  • Mysql集群技术问答
  • 2023版 STM32实战4 滴答定时器精准延时
  • ESP32设备驱动-数据持久化到Flash
  • Swift data范围截取问题
  • PICO首届XR开发者挑战赛正式启动,助推行业迈入“VR+MR”新阶段
  • 【计算机网络】应用层协议原理
  • buuctf-[WUSTCTF2020]CV Maker
  • 数据库表操作详解
  • axios配置代理ip
  • Apache Commons Pool2 池化技术
  • 二叉树的最近公共祖先LCA
  • AWS SAA知识点整理(作成中)
  • C++模板大全(持续更新,依不同网站整理而成)
  • 《CTFshow-Web入门》10. Web 91~110
  • 计组--总线
  • Git中的HEAD
  • 软件设计师_数据库系统_学习笔记
  • 毛玻璃态计算器