织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

硬核 | 技术详解密码学签名在以太坊上应用

时间:2020-10-22 17:17来源:未知 作者:admin 点击:
密码学签名是区块链关键技术之一,不仅可以用来发送交易,还可以与去中心化交易所、多签合约和其它智能合约交互。 原文标题:《干货 | 以太坊上的数字签名》 撰文:Maarten Zuidho
密码学签名是区块链关键技术之一,不仅可以用来发送交易,还可以与去中心化交易所、多签合约和其它智能合约交互。

原文标题:《干货 | 以太坊上的数字签名》

撰文:Maarten Zuidhoorn
翻译 & 校对:闵敏 & 阿剑

密码学签名是区块链的关键技术之一,可以在不暴露私钥的前提下证明地址的所有权。该技术主要用来签署交易(当然也可以用来签署其他任意消息)。本文会讲解数字签名技术在以太坊协议中的用法。

 

什么是密码学签名?

当我们讨论密码学中的签名时,我们其实是在讨论所有权、有效性和完整性证明。举例来说,这些签名可以用来:

  • 证明你拥有地址的私钥(即认证功能);
  • 确保信息(例如,邮件)没有被篡改;
  • 验证你下载的 MyCrypto 版本是合法的。

密码学签名是基于数学公式的。我们拥有一个输入消息、一个私钥和一个(通常情况下是秘密的)随机数,就可以得到一串数字作为输出值,也就是签名。使用另一个数学公式可以进行反向计算,在不知道私钥和随机数的情况下进行验证(译者注:即验证该签名是否出自跟某个公钥对应的私钥)。这类算法有很多,如 RSA 和 AES,但是以太坊(和比特币)采用的都是椭圆曲线数字签名算法(ECDSA)。请注意,ECDSA 只是签名算法。与 RSA 和 AES 不同,这种算法不能用于加密。

椭圆曲线的例子之一。以太坊采用的是 SECP256k1 曲线

通过椭圆曲线点乘算法(elliptic curve point manipulation),我们可以使用私钥计算出一个不可逆向计算的值(译者注:即 「公钥」,公钥无法逆向计算出私钥)。这样一来,我们就可以创建出安全且不可篡改的签名。能够生成不可逆向计算的值的函数叫做 「陷门函数(trapdoor function)」:

陷门函数指的是在一个方向上易于计算,但是在缺少特殊信息(即,陷门)的情况下很难反向计算的函数。

使用 ECDSA 签名并验证

ECDSA 签名由两个数字(整数)组成:rs。以太坊还引入了额外的变量 v(恢复标识符)。签名可以表示成 {r, s, v}

在创建签名时,你要先准备好一条待签署的消息,和用来签署该消息的私钥(dₐ)。简化后的签名流程如下:

  1. 对待签署消息进行哈希计算,得到哈希值(e)。
  2. 生成一个安全的随机数 k
  3. k (责任编辑:admin1)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容