密钥对 — ETH.BUILD
使用 ETH.BUILD 教育工具演示公私钥对。了解密码学密钥对如何保护以太坊账户并实现交易签名。
Date published: 2021年1月14日
由奥斯汀·格里菲斯制作的教程,演示了如何使用 ETH.BUILD 可视化编程工具来理解公私钥对的工作原理,涵盖私钥生成、公钥派生、消息签名和签名恢复。
本文字稿是奥斯汀·格里菲斯发布的原视频文字稿 (opens in a new tab)的无障碍副本。为提高可读性,已进行轻微编辑。
私钥 (0:00)
在第一个视频中,我们使用了哈希,哈希在接下来的内容中将非常重要。但下一个最重要的部分是密钥对。密钥对中最重要的部分是私钥。让我们继续生成一个——它基本上是一个随机的 64 个字符的十六进制字符串,大小与我们刚才处理的哈希相同。
你以此作为你的私钥,然后使用椭圆曲线密码学(你可以去维基百科上查阅一下作为支线任务),我们派生出一个公钥。所以现在我们有了一个私钥和一个公钥。我们刚刚凭空生成了一个私钥,而公钥给了我们一个地址。这就是人们实际可以发送资金的地方。当有人说“发送到我的以太坊地址”时,指的就是这个。
如果我想在富国银行(Wells Fargo)创建一个账户,我必须开车去银行并提供大量信息。这需要一段时间。但在这样一个我可以发送和接收资金的密码学系统中生成一个账户,我只需生成这个私钥。这个 64 个字符的十六进制私钥派生出其他一切。
签名和恢复消息 (1:54)
关于这个密钥对,有一个非常巧妙的特性我们应该探索一下,那就是签名和恢复消息。基本上,你拿出你的私钥,用它来对某种消息进行签名。让我们输入一条消息——“the bear is sticky with honey(熊身上粘满了蜂蜜)”。
我们将其作为我们的消息输入,在启用自动签名的情况下,它会返回一个签名。有点像哈希,我们的签名基本上是获取消息和我们的私钥并对某些内容进行签名。我们从中得到的就是一个签名。
我可以把它发送给全世界——我可以把它公开地发送给所有人——这个签名字符串连同消息一起。任何人都可以用数学方法验证确实是我签署了它。
恢复签名者的地址 (3:17)
让我向你展示它是如何工作的。我们使用一个“恢复(recover)”方法。我们需要两个输入:消息——“the bear is sticky with honey”——和签名。从中输出的是用于对其进行签名的地址。我们可以使用 Blockie 身份图标直观地看到该账户签署了那条消息。
没有任何方法可以篡改它。如果有人哪怕只更改了一个词——比如把“bear(熊)”换成“badger(獾)”——一切都会改变。即使使用相同的签名,不同的消息也会输出不同的地址,而不是正确的地址。
这条消息无法被篡改。我们可以在里面加入一个时间戳——我们可以说“在这一天我预测某事将会发生”,对其进行签名,发布签名和消息,此后任何人都可以用数学方法证明你在那个时间签署了那条消息。
密钥对的关键特性 (4:58)
这就是密钥对的关键特性。一个仅仅由 64 个字符的十六进制随机字符串生成的密钥对,可以用来对消息进行签名,然后该消息可以被恢复。
- 私钥 + 消息 = 签名
- 签名 + 消息 = 公开地址
我们可以用我们的私钥对数据进行签名,人们可以证明是我们签署了它。这将是下一步的一个重要部分。