一文说明白ECDSA secp256k1 secp256r1 EdDSA ed25519千丝万缕的关系

这篇具有很好参考价值的文章主要介绍了一文说明白ECDSA secp256k1 secp256r1 EdDSA ed25519千丝万缕的关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

基本认知

数字签名

secp256k1

secp256r1

ed25519

ECDSA七宗罪

EdDSA的诞生

参考


前言

基本认知

  • secp256r1、secp256k1、ed25519都是签名算法,而且是具体数字算法的实现。
  • secp256k1、secp256r1都属于椭圆曲线数字签名算法ECDSA(Elliptic Curve Digital Signature Algorithm)签名的具体实现,只是椭圆曲线函数不同。是由 NIST(National Institute of Standards and Technology)这个组织确定的。
  • ed25519属于EdDSA (Edwards-curve Digital Signature Algorithm) 签名算法的具体实现,是由ANFS组织推进的ed25519密钥体系相关进展。

数字签名

  • 数字签名的核心是私钥加签、公钥验签;加签是利用私钥对数据进行签名生成签名值,验签是从签名中恢复公钥的过程。
  • 数字签名在以太坊中有三种用途。首先,签名证明私钥的所有者,暗示着以太坊账户的所有者,已经授权支付ether或执行合约。其次,授权的证明是_undeniable_(不可否认)。第三,签名证明交易数据在交易签名后没有也不能被任何人修改。

下图是各加密货币采用的签名算法的现状,可见除了想起项目NEO采用还采用spec256r1,多数是spec256k1。

secp256r1,区块链,区块链,ECDSA,EdDSA

secp256k1

特定的椭圆曲线称为secp256k1,即曲线 y² = x³ + 7 在有限域 (⼜名伽罗瓦域)。

secp256r1,区块链,区块链,ECDSA,EdDSA

secp256r1

secp256k1和secp256r1都是ECDSA(椭圆曲线数字签名算法)曲线的参数,区别是他们所使用的随机质数不同,目前行业内对于r1算法的安全性存疑。

ed25519

ed25519是基于扭曲爱德华曲线Edwards25519和SHA-512的EdDSA签名机制。

其中Edwards25519曲线是Bernstein等人在2006年提出的蒙哥马利曲线Curve25619的等价变换形式, Curve25519的提出是为了加速ECDH的计算。之所以采用Curve25519的等价变换形式而不是直接利用Curve25519的原因在于ECDH与EdDSA依赖 的点群运算不同,这可以看成是为上层协议适配中层点群运算的经典示例.另外两个曲线在底层有限域的选取中也充分考虑了快速实现与应用编码问题.而Ed25519的签名设计则将ECDSA中常见的随机数问题纳入考量,直接在签名机制内部解决了随机数产生的问题。

curv25519⽤于加密,x25519⽤于密钥交换,ed25519是基于25519曲线的签名。起初⽆⼈问津, 2013 年爱德华·斯诺登曝光棱镜计划后,该算法突然⼤⽕,⼤量软件,如OpemSSH都迅速增加了对 25519 系列的⽀持。

ed25519是⽬前最快的椭圆曲线加密算法,性能远远超过 NIST 系列,⽽且具有⽐ P-256 更⾼的安全性。ed25519是⼀个数字签名算法,签名和验证的性能都极⾼, ⼀个4核 2.4GHz 的 Westmere cpu,每秒可以验证 71000 个签名,安全性极⾼,等价于RSA约3000-bit。

签名过程不依赖随机数⽣成器,不依赖hash函数的防碰撞性,没有时间通道攻击的问题,并且签名很⼩,只有64字节,公钥也很⼩,只有32字节。

BANKIA已成功采用ed25519加密算法,实现链上数据安全传输,ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,性能在数十倍以上。

Ed25519也确实引入了一个在基于secp256k1或者secp256r1的ECDSA签名机制中不存在的问题.一个由于椭圆曲线的余因子(cofactor)不为1导致的问题,使得Monero中可以八花一笔交易(问题已经被修正).secp256k1和secp256r1的余因子为1,所以无需考虑余因子的问题,也不会引发安全问题.而Edwards25519的余因子为8,此时就不得不在应用时将余因子纳入考量的范畴.而余因子为8也部分影响了Ed25519签名机制的设计.

ECDSA七宗罪

  1. 如果签名过程中随机数值泄露, 则任何知道该随机数值的⼈可以使⽤该随机数产⽣签名值恢复私钥

  2. 如果同一个用户对两个不同的消息签名时,采用了相同的随机数,则则任何⼈都可以通过两个签名值恢复出私钥

  3. 如果两个用户执行ECDSA签名时采用了相同的随机数,则两人中的任何一方可以推算出另一方的私钥

  4. 如果相同的私钥和随机数被同时用于ECDSA签名和Schnorr签名,则任何⼈都能够恢复出私钥

  5. ECDSA签名值的可锻造性带来的安全隐患

  6. ECDSA签名值的DER编码的不唯一性会带来的安全隐患

  7. 如果验签时不要求提供被签名的消息,则任何人都可以伪造签名值

EdDSA的诞生

ECDSA安全以及执行效率的问题, 要求在工程手段之外更为深度的改进, 一个自然的方向是重新构建椭圆曲线以及签名机制以便在多个层次上同时改进: 改进底层算术运算加速中层点群运算, 中层点群运算适配上层协议, 并在上层签名机制设计时同时考虑 ECDSA 签名机制的问题与局限性加以避免. EdDSA (Edwards-curve Digital Signature Algorithm) 签名机制是这个研究方向上的成果。

 EdDSA 签名机制是 Bernstein 等人在 2012 年设计的基于爱德华曲线 (Edwards Curves) 的数字签名算法。EdDSA 签名机制是 Schnorr 签名机制的一个变种, 其设计初衷是在不牺牲安全性的前提下提升签名/验签速 度, 并同时解决前述的 ECDSA 在应用方面存在的一些问题.文章来源地址https://www.toymoban.com/news/detail-731411.html

参考

  • https://github.com/dalek-cryptography/ed25519-dalek
  • https://github.com/jpopesculian/ed25519-dalek-bip32
  • https://github.com/jedisct1/rust-ed25519-compact
  • https://github.com/w3f/hd-ed25519
  • https://github.com/ZenGo-X/multi-party-eddsa
  • https://github.com/ZcashFoundation/ed25519-zebra
  • https://github.com/RustCrypto/signatures
  • Cryptography behind cryptocurrencies
  • ECDSA在区块链应用中的七宗罪
  • docs/190722-secp256k1-ecdsa-dangers.pdf at master · coinexchain/docs · GitHub
  • 维基百科 EdDSA
  • ECDSA VS Schnorr signature VS BLS signature
  • Extended twisted Edwards curve坐标系及相互转换
  • Edwards-Curve Digital Signature Algorithm (EdDSA)
  •  Cryptography behind top 20 cryptocurrencies
  • Ed25519 BIP32 · Issue #6301 · solana-labs/solana · GitHub
  • https://smith-mcf.medium.com/solana-vanity-address-using-gpus-5a68ad94d1d4
  • 区块链中的Ed25519_mutourend的博客-CSDN博客_ed25519

到了这里,关于一文说明白ECDSA secp256k1 secp256r1 EdDSA ed25519千丝万缕的关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【明解STM32】一文搞明白STM32芯片存储结构

    目录 一、前言 二、内核存储结构 三、芯片存储映射 四、总结         本篇介绍STM32芯片的存储结构,ARM公司负责提供设计内核,而其他外设则为芯片商设计并使用,ARM收取其专利费用而不参与其他经济活动,半导体芯片厂商拿到内核授权后,根据产品需求,添加各类组

    2024年02月16日
    浏览(32)
  • Spring-WebFlux使用,一文带你从0开始学明白Spring-WebFlux,学明白响应式编程

    传统的基于Servlet的Web框架,如Spring MVC,在本质上都是阻塞和多线程的,每个连接都会使用一个线程。在请求处理的时候,会在线程池中拉取一个工作者( worker )线程来对请求进行处理。同时,请求线程是阻塞的,直到工作者线程提示它已经完成为止。 在Spring5中,引入了一个新

    2024年02月03日
    浏览(32)
  • 【玩转Linux操作】一文带你明白Shell的判断,循环语句

    🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 注意写空格 if … then 形式 类似于C/C++里面的 if-else 语句 🎈示例 🎈示例 🎈示例 类似于C/C++的 switch 语句 🎈示例 注意写空

    2024年02月13日
    浏览(32)
  • NVIDIA驱动、CUDA、cuDNN、Torch、Tensorflow对应版本一文搞明白

    目录 CUDA下载:CUDA Toolkit Archive | NVIDIA Developer cuDNN下载:cuDNN Archive | NVIDIA Developer 1.NVIDIA驱动和CUDA版本对应  2.CUDA和cuDNN版本对应  3.Tensorflow和CUDA、cuDNN版本对应(经过官方测试的构建配置) 3.1 GPU  3.2 CPU 4.pytorch和CUDA对应 网址:CUDA 12.1 Update 1 Release Notes 网址:cuDNN Archive | NVIDIA

    2024年02月15日
    浏览(35)
  • 个人建站实战,一文说明白:云服务器+域名+备案+SSL(Https)

    目录 一、前言 二、术语定义 1、服务器 2、云服务器 3、域名 4、备案 5、Https 6、网站程序 三、网站搭建 1、准备网站程序 2、买一台云服务器 3、把网站程序部署到云服务器上 4、注册域名 5、工信部备案 6、公安备案 7、Https 四、结语 昨天和闺女聊天,闺女说爸爸你后面的头

    2024年02月07日
    浏览(42)
  • 【从删库到跑路】一文带你明白MySQL数据库的 事务 操作

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 建议大家先看目录 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作

    2024年02月13日
    浏览(30)
  • 密码学学习笔记(十七 ):Edwards曲线数字签名算法 - edDSA

    Edwards曲线数字签名算法(Edwards-curve Digital Signature Alogorithm, edDSA)由Daniel J. Bernstein等人在2011年提出,它是一种使用基于扭曲爱德华兹曲线的Schnorr签名变体的数字签名方案。 EdDSA的一个特殊之处在于,该方案不要求每次签名都是用全新的随机数,而且该算法是确定性的。 EdDSA不直

    2024年02月16日
    浏览(37)
  • 2023年【R1快开门式压力容器操作】最新解析及R1快开门式压力容器操作复审考试

    题库来源:安全生产模拟考试一点通公众号小程序 R1快开门式压力容器操作最新解析是安全生产模拟考试一点通生成的,R1快开门式压力容器操作证模拟考试题库是根据R1快开门式压力容器操作最新版教材汇编出R1快开门式压力容器操作仿真模拟考试。2023年【R1快开门式压力容

    2024年02月06日
    浏览(29)
  • ECDSA密钥

      指加密和解密使用相同密钥的加密算法。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。   指加密和解密使用不同密钥的加密算法,也称为公私钥加密,公钥是公开的,私钥是私有的。    1.公钥加密,私钥

    2023年04月16日
    浏览(44)
  • .net core ECDsa

    ECDsa(Elliptic Curve Digital Signature Algorithm)是一种基于椭圆曲线密码学的数字签名算法。在.NET Core中,System.Security.Cryptography.ECDsa 类提供了对ECDsa算法的支持。 ECDsa 算法用于生成和验证数字签名,其主要用途包括: 数字签名: 使用私钥对数据进行签名,生成数字签名。这个数字

    2024年01月16日
    浏览(25)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包