ECDSA 签名的内在延展性(“重放“攻击)学习

这篇具有很好参考价值的文章主要介绍了ECDSA 签名的内在延展性(“重放“攻击)学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相关推特:https://twitter.com/danielvf/status/1563169773684305921
原理文章:https://www.derpturkey.com/inherent-malleability-of-ecdsa-signatures/
签名的内在延展性,意味着可以为相同的数据创建第二有效的签名,导致如果在签名中没有加入nonce ,deadline等限制条件,攻击者可以再次提交对应交易(使用第二份签名)造成意外损失。
python验证代码:

import imp
from ellipticcurve.ecdsa import Ecdsa
from ellipticcurve.privateKey import PrivateKey
from web3 import Web3;
from ellipticcurve.signature import Signature
from ellipticcurve.curve import secp256k1, getCurveByOid
# Generate new Keys
privateKey = PrivateKey()
publicKey = privateKey.publicKey()

message = "My test message"

# Generate Signature
signature = Ecdsa.sign(message, privateKey)

# To verify if the signature is valid
print(Ecdsa.verify(message, signature, publicKey))

privateKey = PrivateKey(secret=1)
publicKey = privateKey.publicKey()
print(publicKey.toString());
message = "give to"

# Generate Signature
signature = Ecdsa.sign(message, privateKey)
print('aa:',Web3.toHex(signature.r),':   ',Web3.toHex(signature.s))
# To verify if the signature is valid
print(Ecdsa.verify(message, signature, publicKey))
print(signature._toString())
sig2=Signature(r=signature.r,s=secp256k1.N-signature.s,recoveryId=signature.recoveryId);
print('aa:',Web3.toHex(sig2.r),':   ',Web3.toHex(sig2.s))
print(Ecdsa.verify(message, sig2, publicKey))
print(Web3.toHex(secp256k1.N));

再evm合约中测试:


 function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public pure returns (address) {
	//删掉无关代码:
        address signer = ecrecover(hash, v, r, s);
       

        return (signer);
    }

将sig1.r 3dd21cd54e1b1178bba113b5c06b4a58c3b101eb007597fe4a0fca796daa67e7
// sig1.s 4e1bf4b3211203e356603c1a900846e8a40b0b0372aeffb6319de96ec8c25a1d

// sig2.r 3dd21cd54e1b1178bba113b5c06b4a58c3b101eb007597fe4a0fca796daa67e7
// sig2.s b1e40b4cdeedfc1ca99fc3e56ff7b91616a3d1e33c99a0858e34751e0773e724
分别填入对应参数:

ECDSA 签名的内在延展性(“重放“攻击)学习
ECDSA 签名的内在延展性(“重放“攻击)学习
即可返回相同address.
s的计算方式为:Secp256k1.N -sig1.s;文章来源地址https://www.toymoban.com/news/detail-507288.html

到了这里,关于ECDSA 签名的内在延展性(“重放“攻击)学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 算法2_非对称加密算法之ECDSA(椭圆曲线数字签名算法)

    ECDSA(椭圆曲线数字签名算法) AES(高级加密标准): =对称加密 ​ 对业务数据进行加密,防止他人可以看见 ECDSA(椭圆曲线数字签名算法):=非对称加密算法(公钥和私钥) ​ 验证数据的真实性,防止业务数据被篡改 SHA(安全哈希算法)=哈希算法 1. 作用: 因为ECDSA椭圆曲线数字签名算法获得

    2024年02月02日
    浏览(63)
  • 怎么防止数据重放攻击——CBC模式【密码学】(7)

    目录 一、什么是CBC模式  二、初始化向量 三、异或运算  四、密钥少一位会有影响吗  CBC模式中,明文分组在加密前,要与前一组的密文分组进行异或运算,异或运算的结果参与加密函数的运算。 每一个密文分组,都依赖于前面所有的明文分组,包括初始化向量。     加密

    2024年02月09日
    浏览(47)
  • 电商系统中API接口防止参数篡改和重放攻击(小程序/APP)

    说明:目前所有的系统架构都是采用前后端分离的系统架构,那么就不可能避免的需要服务对外提供API,那么如何保证对外的API的安全呢? 即 生鲜电商中API接口防止参数篡改和重放攻击 目录 1. 什么是API参数篡改? 说明:API参数篡改就是恶意人通过抓包的方式获取到请求的接

    2024年02月03日
    浏览(46)
  • Objective-C学习笔记(ARC,分类,延展)4.10

    1.自动释放池@autoreleasepool: 存入到自动释放池的对象,在自动释放池销毁时,会自动调用池内所有对象的release方法。调用autorelease方法将对象放入自动释放池。     Person *p1 = [ [ [ Person alloc ] init ] autorelease]; 2.在类方法里写一个同名的方法,用于创造对象。 (+)instancetype pers

    2024年04月17日
    浏览(41)
  • JAVA -- sm3加密签名,以及防止重复攻击

            后端开发基本都遇到过使用签名校验的情况,签名的作用是为了防止请求数据被别人截取篡改重新请求。         为什么签名验证可以防止请求数据被篡改,因为一般签名的规则就是,你的所有请求参数,按照约定好的格式进行拼接,后面得到一个拼接后的字符串,

    2024年02月12日
    浏览(42)
  • 【Python】查看当前 GPU一些资源信息 | 区块链 面试题:区块链技术中,如何防止“双花”攻击?| 共识机制,区块确认,交易签名,UTXO模型,51%攻击防护

      “当你低落时,就请穿上节日盛装。”     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿   🌟[3] 2022年度博客之星人工智能领域TOP4🌟   🏅[4] 阿里云社区特邀专家博主🏅   🏆[5]

    2024年02月06日
    浏览(53)
  • AI 实力:利用 Docker 简化机器学习应用程序的部署和可扩展性

            利用 Docker 的强大功能:简化部署解决方案、确保可扩展性并简化机器学习模型的 CI/CD 流程。         近年来,机器学习 (ML) 出现了爆炸性增长,导致对健壮、可扩展且高效的部署方法的需求不断增加。由于训练和服务环境之间的差异或扩展的困难等因素,传

    2024年02月13日
    浏览(49)
  • PHP 7.4 新语法:数组延展操作符

    $parts = [\\\'apple\\\', \\\'pear\\\']; $fruits = [\\\'banana\\\', \\\'orange\\\', ...$parts, \\\'watermelon\\\']; // [\\\'banana\\\', \\\'orange\\\', \\\'apple\\\', \\\'pear\\\', \\\'watermelon\\\'];  只能使用数字下标不能是索引下标。 之前的延展符号不能在数组里使用,7.4里的数组也可以用延展符:

    2024年02月10日
    浏览(44)
  • renderdoc源码分析(四) 重放

    //TODO  先贴下飞书文档,后续找时间再整理到这 Docs

    2024年02月13日
    浏览(34)
  • 23REPEAT方法:软工顶会ICSE ‘23 大模型在代码智能领域持续学习 代表性样本重放(选择信息丰富且多样化的示例) + 基于可塑权重巩固EWC的自适应参数正则化 【网安AIGC专题11.22】

    本文为邹德清教授的《网络安全专题》课堂笔记系列的文章,本次专题主题为大模型。 黄邕灵同学@potatotomato:分享了Keeping Pace with Ever-Increasing Data:Towards Continual Learning of Code Intelligence Models《跟上不断增长的数据:迈向代码智能模型的持续学习》 软工顶会ICSE ‘23: Proceedings of t

    2024年02月05日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包