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

这篇具有很好参考价值的文章主要介绍了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密码算法安全非常重要。文章来源地址https://www.toymoban.com/news/detail-769362.html

到了这里,关于SM2签名算法中随机数K的随机性对算法安全的影响的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 随机数算法,SQL

    随机数算法,SQL

    记录 id      权重 1       5 2       10 3       50 4      100 找权重最大的那个值,调用rand()函数,它会随机生成一个0-1的值 然后 rand * 100 得出一个随机值  它的范围  0 =  随机值   100 例如本次随机值为2,那么找到 大于2的所有记录,然后升序 此时查询结果为 2     

    2024年02月09日
    浏览(15)
  • CUDA 的随机数算法 API

    参考自 Nvidia cuRand 官方 API 文档 如下是是在 dropout 优化中手写的 uniform_random 的 Kernel: 我们首先来看 curand_init 函数的签名和语义: 给定相同的seed、sequence、offset 参数下, curand_init 会保证产生相同的其实状态 state。另外此函数会在调用 2^67 ⋅ sequence + offset 次 cu_rand API 之后「

    2024年02月03日
    浏览(14)
  • 基于FPGA的LFSR16位伪随机数产生算法实现,可以配置不同的随机数种子和改生成多项式,包含testbench

    基于FPGA的LFSR16位伪随机数产生算法实现,可以配置不同的随机数种子和改生成多项式,包含testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.完整算法代码文件 vivado2019.2仿真结果如下:           LFSR(线性反馈移位寄存器)提供了一种在微控制器上快速生成非序列数字列表的简单方法。生成伪随机数只需要右移操作和 XOR 操作。LFSR 完全由其多项式

    2024年02月11日
    浏览(12)
  • Hadoop中的加密解密机制——伪随机数生成算法介绍

    作者:禅与计算机程序设计艺术 Hadoop作为当下最流行的大数据处理平台,提供了丰富的功能支持,如海量数据的存储、分析与计算。其中一个重要的环节就是数据安全问题。无论是存储集群还是计算集群,都需要提供数据保护措施来确保数据的完整性和可用性。今天我将介绍

    2024年02月06日
    浏览(13)
  • C# 随机数生成 Mersenne Twister 马特赛特旋转演算法 梅森旋转算法

    C# 随机数生成 Mersenne Twister 马特赛特旋转演算法 梅森旋转算法

    NuGet安装MathNet.Numerics 引用: using MathNet.Numerics.Random; Mersenne Twister算法是一种伪随机数发生器,名字来源于其周期长度通常取自Mersenne质数。它是由Makoto Matsumoto(松本)和Takuji Nishimura(西村)于1997年开发的,基于有限二进制字段上的矩阵线性再生。它的主要作用是生成伪随机数

    2024年02月09日
    浏览(10)
  • iOS MT19937随机数生成,结合AES-CBC加密算法实现。

    按处理顺序说明: 1. 生成随机数序列字符串函数 生成方法MT19937,初始种子seed,利用C++库方法,生成: 2. 对第一部中的随机数序列字符串进行sha256加密,得到64字节的一个数据流函数。  3. AES-CBC加密解密方法 /*     CCCrypt方法提供了CBC 和 ECB 两种AES加密模式,     如果不传

    2024年04月09日
    浏览(19)
  • C++调用openssl实现国标sm2签名算法的使用

    C++调用openssl实现国标sm2签名算法的使用

    SM2算法基于ECC椭圆曲线算法,广泛用于区块链、HTTPS 等需要非对称加密的场景。是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。 下面链接可以了解一些关于SM2的基础知识。 椭圆曲线加密算法(E

    2024年01月24日
    浏览(13)
  • SM2椭圆曲线公钥密码算法--密钥对与数字签名

    SM2椭圆曲线公钥密码算法--密钥对与数字签名

    SM2算法全称是SM2椭圆曲线公钥密码算法(SM是商用密码的拼音缩写),是一种基于“椭圆曲线”的密码ECC(Elliptic Curve Cryptography)。2016年,SM2成为中国国家密码标准。 在商用密码体系中,SM2主要用于替换RSA加密算法。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于

    2024年02月11日
    浏览(21)
  • 商用密码应用与安全性评估要点笔记(SM2数字签名算法)

    商用密码应用与安全性评估要点笔记(SM2数字签名算法)

    1、SM2算法简介         SM2密码算法是我国2010年发布的商用密码算法,属于公钥密码算法,也成为非对称密钥机制密码算法。SM2基于椭圆曲线离散对数问题,相对于RSA基于大整数因数分解更具优越性。         SM2算法于2012年成为我国密码行业标准,并于2017年被ISO采纳,成为

    2024年02月09日
    浏览(11)
  • 国密SM2算法的加密签名消息语法封装解析p7格式signedData

    国密SM2算法的加密签名消息语法封装解析p7格式signedData

    前文可参考:SM2算法的加密签名消息语法规范(三)如何构造signedData_天对地,雨对风的博客-CSDN博客系列。 这里直接讲openssl asn1解析和封装的部分代码。 国密 p7格式标准,参考:GMT0010-2012 1、p7 签名结构:  编写结构体GMTSignedData.h 注意:SM2_SignedData_st结构中的sign类型修改为

    2024年02月11日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包