密码学学习笔记(十七 ):Edwards曲线数字签名算法 - edDSA

这篇具有很好参考价值的文章主要介绍了密码学学习笔记(十七 ):Edwards曲线数字签名算法 - edDSA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Edwards曲线数字签名算法(Edwards-curve Digital Signature Alogorithm, edDSA)由Daniel J. Bernstein等人在2011年提出,它是一种使用基于扭曲爱德华兹曲线的Schnorr签名变体的数字签名方案。

EdDSA的一个特殊之处在于,该方案不要求每次签名都是用全新的随机数,而且该算法是确定性的。

EdDSA不直接生成密钥,而是首先生成一个密钥并用它派生实际的签名密钥和nonce密钥。这个nonce会以确定性的方式生成每个签名所需要的nonce。

计算签名时,EdDSA首先计算nonce密钥(nonce key)与待签名消息的哈希值作为nonce值。算法之后的执行过程类似于Schnorr签名。

  • 计算nonce: nonce值为HASH(nonce key  message)
  • 计算R值: R值为[nonce]G,其中G是群的基点。
  • 计算挑战: 挑战值为HASH(commitment  publick key  message)
  • 计算证据: 证据S为 nonce + challenge x signing key

最终签名是(R,S)。

密码学学习笔记(十七 ):Edwards曲线数字签名算法 - edDSA,密码学,密码学,学习,笔记
EdDSA的密钥生成算法生成一个密钥,然后用它派生另外两个密钥。算法生成的第一个密钥是实际的签名密钥,该签名密钥可用于生成公钥;算法生成的另一个密钥是nonce密钥,用于在签名时确定性地生成nonce。EdDSA签名与Schnorr签名类似,不同之处在于(1)EdDSA用nonce密钥和消息确定性地生成nonce,以及(2)签名者的公钥包含在挑战中

EdDSA密钥生成

EdDSA密钥对包括:
私钥(整数):privKey
公钥(EC点):pubKey = privKey * G

私钥是从一个被称为种子的随机整数生成的(它应该具有类似的比特长度,就像曲线顺序一样)。

公钥pubKey是椭圆曲线上的一个点,通过EC点相乘计算:pubKey=privKey*G(私钥,乘以曲线的生成点G)。公钥被编码为压缩的EC点:y坐标,与x坐标的最低位(奇偶校验)相结合。

EdDSA 签名

EdDSA_sign(msg, privKey) --> { R, s }

  • 计算pubKey=privafKey*G
  • 确定性地生成一个秘密整数r=hash(hash(privaKey)+msg)mod q
  • 通过将r后面的公钥点乘以曲线生成器来计算:r=r*G
  • 计算h=哈希(R+pubKey+msg)mod q
  • 计算s=(r+h*privKey)mod q
  • 返回签名{R,s}

EdDSA验证签名

EdDSA签名验证算法将文本消息msg+签名者的EdDSA公钥pubKey+EdDSA签名{R,s}作为输入,并产生布尔值作为输出。

EdDSA_signature_verify(msg, pubKey, signature { R, s } ) --> valid / invalid

  • 计算h=哈希(R+pubKey+msg)mod q
  • 计算P1=s*G
  • 计算P2=R+h*pubKey
  • 返回P1==P2

在验证过程中,点P1计算为:P1=s*G。

在签名过程中,s=(r+h*privKey)mod q。现在将s替换为上式:
P1 = s * G = (r + h * privKey) mod q * G = r * G + h * privKey * G = R + h * pubKey

以上正是另一点P2。如果这些点P1和P2是相同的EC点,这证明了由私钥计算的点P1与由其对应的公钥创建的点P2匹配。文章来源地址https://www.toymoban.com/news/detail-601538.html

到了这里,关于密码学学习笔记(十七 ):Edwards曲线数字签名算法 - edDSA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 密码学学习笔记(九):Public-Key Encryption - 公钥加密2

    如果我们知道𝑝, 𝑞 (即𝑁 = 𝑝𝑞) 我们可以在mod N中进行反幂运算。 比如: 我们有一个单向陷门函数,非常适合加密。  取两个大素数,然后N = 𝑝𝑞, 然后挑选一对𝑒, 𝑑  加密:给定𝑃𝐾 = (𝑁, 𝑒) 和一条消息𝑚 在里面 计算密文𝑐 :  解密:给定一个密文𝑐

    2024年02月13日
    浏览(50)
  • 密码学学习笔记(二十一):SHA-256与HMAC、NMAC、KMAC

    SHA-2是广泛应用的哈希函数,并且有不同的版本,这篇博客主要介绍SHA-256。 SHA-256算法满足了哈希函数的三个安全属性: 抗第一原像性 - 无法根据哈希函数的输出恢复其对应的输入。 抗第二原像性 - 给定一个输入和它的哈希值,无法找到一个不同于该输入的新输入,使得这两

    2024年02月11日
    浏览(83)
  • 密码学学习笔记(二):对称加密(二) IND-CPA、IND-CCA安全以及分组密码操作模式

    书接上篇笔记,假设声称对手可以在给定我们方案的密文的情况下找出明文的第一位。我们如何检验这一说法? 通过加密以0或1开头的明文生成密文 将密文交给对手,等待对手决定是哪种情况,检查决定是否正确 不可区分性:  如果我们想模拟任何泄漏怎么办? 为了模拟任

    2024年02月04日
    浏览(55)
  • 密码学学习笔记(二十三):哈希函数的安全性质:抗碰撞性,抗第一原象性和抗第二原象性

    在密码学中,哈希函数是一种将任意长度的数据映射到固定长度输出的函数,这个输出通常称为哈希值。理想的哈希函数需要具备几个重要的安全性质,以确保数据的完整性和验证数据的来源。这些性质包括抗碰撞性、抗第一原象性和抗第二原象性。 抗碰撞性指的是在合理的

    2024年02月05日
    浏览(53)
  • CRYPTO现代密码学学习

    简单介绍 :RC4加密算法是一种对称加密算法,加密和解密使用同一个函数 初始化分为以下几个步骤 初始化存储0-255字节的Sbox(其实就是一个数组) 填充key到256个字节数组中称为Tbox(你输入的key不满256个字节则初始化到256个字节) 交换s[i]与s[j] i 从0开始一直到255下标结束. j是 s

    2024年02月03日
    浏览(64)
  • 图形学学习笔记1:基础变换矩阵

    变换矩阵 (Transformation Marices) ,一切物体的缩放,旋转,位移,都可以通过变换矩阵作用得到,在光栅化中会用到,同时在投影 (projection) 变换也有很多应用 将如下图所示的简单矩阵乘法定义为对向量的线性变换。 最简单的缩放变换 ,如图,即除了(0,0)不变之外都乘以某个系

    2024年03月12日
    浏览(46)
  • web学习笔记(十七)

    目录 1.Bootstrap知识点汇总 1.1什么是Bootstrap 1.2引入Bootstrap 1.3Bootstrap提供的类名  1.4Bootstrap栅格系统 2.Math对象常用方法和属性汇总 2.1属性 2.2方法 Bootstrap 是全球最受欢迎的前端组件库,用于开发响应式布局、移动设备优先的 WEB 项目。 可以在页面引入在线文件,也可以将文件

    2024年01月21日
    浏览(37)
  • Python学习笔记(十七)——Pandas库

    数组只能存储一种类型的数据, 同时, 数组提供了许多方便统计计算的功能 (如平均值 mean 、标准差 std 等) pandas 是基于 numpy 数组构的, 但 二者最大的不同是 pandas 是专门为处 理表格和混杂数据设计的,比较契合统 计分析中的表结构,而 numpy 更适合处 理统一的数值数组

    2024年02月04日
    浏览(40)
  • Java SE 学习笔记(十七)—— 单元测试、反射

    开发好的系统中存在很多方法,如何对这些方法进行测试? 以前我们都是将代码全部写完再进行测试。其实这样并不是很好。在以后工作的时候,都是写完一部分代码,就测试一部分。这样,代码中的问题可以得到及时修复。也避免了由于代码过多,从而无法准确定位到错误

    2024年02月06日
    浏览(54)
  • 自动驾驶规划模块学习笔记-多项式曲线

    自动驾驶运动规划中会用到各种曲线,主要用于生成车辆变道的轨迹,高速场景中使用的是五次多项式曲线,城市场景中使用的是分段多项式曲线(piecewise),相比多项式,piecewise能够生成更为复杂的路径。另外对于自由空间,可以使用A*搜索出的轨迹再加以cilqr加以平滑,也

    2024年02月05日
    浏览(65)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包