走进科学 | 2. 如何使用钱包进行安全签名

签名这个词语对我们来说并不陌生,在很多场景中都会使用到签名。比如:

1、登录某网站时,连接钱包之后会提示你进行签名。

2、discord 使用 collab.land 进行身份认证时,要求连接钱包并签名。

3、在 coinlist 登记优先队列时,也会用参与任务的钱包地址签名进行认证。

或许上面这些场景你都没遇到过,但其实只要你使用过 eth 进行转账,其实你也用到过签名,只不过签名的步骤包含在发起交易的过程中了。所以签名在加密世界里面无处不在,我们如果要使用代码去调用合约抢跑交易,自然也是少不了签名的,所以在本文中,我们将重点讨论下签名的原理和工具。

什么是签名

现实生活中我们都有过签名的经历,很多时候不仅要签名还要盖上指纹印,这里签名的作用就是通过字迹和指纹来证明这是经过你本人确权的,是有法律效应的。当然,我们这里要讨论的是数字签名,和现实中的签名类似,也是要证明你签署的信息或者交易确实是你本人发起的,它的主要作用就是保证了数据的有效性(验证是谁发的)和完整性(证明信息没有被篡改)。这一过程是如何做到的呢?

我们的钱包地址都会有一个私钥,私钥是唯一的并且非常重要,如果别人知道你的私钥他就可以盗走你的资金,拥有私钥的人就拥有整个钱包资产的所有权。这个私钥可以推导公钥,但由于公钥太长,为了简便实用,就出现了“地址”,地址是公钥推导出来的。这些推导过程是单向不可逆的,所以地址不能推出公钥,公钥也不能推出私钥。对比生活中的签名,你的字迹和指纹就代表了你的私钥,只有你可以解锁你的资产。而数字签名就是用你的私钥签署一段信息,而验证人可以通过公钥来验证签署信息的合法性。

注意签名安全

在新版的 metamask 中,会把签名的原始信息展示给用户,比如使用 collab.land 验证 discord 的身份时,点击签名按钮之后会出现签名确认的界面,如图所示:

除了特别注意签名的原始内容之外,还要注意签名界面上发起签名的网页地址是正确的网页地址。

对于一些比较复杂的交易,也要注意签名内容是否正确,比如在 opensea 升级之后,会重点显示签名的原始信息,需要核实签名的信息和当前设置的价格是否一致,以及合约地址等信息,当然重点也要关注发起签名的网页地址是否是官方地址。

所以在签名的过程中,应该反复确认签名的网页发起地址和签名内容,而对于不能确认的网页地址或者域名,或者出现了自己不能确认的签名内容,千万不要确认签名。

签名的工具

在 coinlist 验证优先队列的时候,需要对一段特定的文字进行签名,并提交签名结果,遇到这样的场景,推荐使用 myetherwallet 进行签名和验签,具体使用方法如下:

1、访问 https://www.myetherwallet.com/,选择 “Access my wallet”

2、选择 "Browser Extension", 选择该项使用浏览器钱包,选择小狐狸钱包

3、进入 dashboard 之后,找到左边菜单栏的 “Message” 菜单,这里提供了签名和验签的功能

4、点击 “Sign message”,使用签名功能,输入一段文字信息,如 “I love Web3Eye” ,点击 “Sign” 按钮会调用小狐狸钱包,对签名的内容进行确认,然后点击 “签名按钮完成签名” 。

5、在跳转的页面中便可以看到签名的返回结果,“sig” 字段便是对原始信息 “I love Web3Eye” 签名之后的信息。

6、复制签名信息,可到 “Verify Message” 中进行验签

除此之外,etherscan 也提供了签名和验签的功能,我们也可以把上面的签名结果拿去 etherscan 进行验证。

1、访问 https://etherscan.io/verifiedSignatures,选择 “Verify Signature” 按钮,依照上面的签名信息分别填入地址,签名原始信息和签名信息( sig 字段中的信息,注意在 etherscan 中使用需要加上 0x 的前缀)

2、点击 “continue” 之后便可查看签名结果,注意这里默认选择不对外发布签名信息,这样你签名的信息只有你自己看到,如果选择下面的 “verify & publish ...” 便会将签名信息发布出去,别人也能访问到。

如果你替换签名的信息或者地址,便不能通过验证签名,即使只是改变原始消息的大小写也不能通过验证。

3、点击 “Sign Message” 按钮,可以连接钱包之后,输入原始信息进行签名,该过程和 myetherwallet 类似,大家可以体验一下,这里不再赘述。

至此,我们已对签名有初步的了解和认知,并能使用一些工具进行签名和验签,当然,这已经能帮助我们完成一些工作了,但如果要在抢跑过程中用代码实现签名交易,自动发送交易还需要有更深入的学习和了解,在后面的小节中我们再详细讲解。

关于我们

Web3Eye 是一个专注于技术研究和分享的 Web3 加密技术社区,团队拥有多年区块链研发经验和安全技术能力,以帮助更多人安全地进入 Web3 世界,欢迎关注我们的 Twitter 帐号,了解最新动态。

Subscribe to web3eye.eth
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.