资讯专栏INFORMATION COLUMN

如何验证 Bitcoin Core 软件签名

tigerZH / 645人阅读

摘要:在签名操作中,首先对信息进行取散列值的操作,然后使用信息发送者的私钥加密这个散列值,获得一个数字签名,并将签名和原信息一同发送。

来自 简书
btc address: 1FmWXNJT3jVKaHBQs2gAs6PLGVWx1zPPHf
eth address: 0xd91c747b4a76B8013Aa336Cbc52FD95a7a9BD3D9

有多重要

了解下 Electrum钱包的钓鱼事件

GPG介绍
1991年,程序员Phil Zimmermann开发了加密软件PGP,被用来加密邮件。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。

签名:是为了接收方能够确认信息确实来自信息所声称的发送方,并且没有在传递过程中被第三方修改。在签名操作中,OpenPGP 首先对信息进行取散列值的操作,然后使用信息发送者的私钥加密这个散列值,获得一个数字签名,并将签名和原信息一同发送。接收方的 OpenPGP 软件也根据协议计算信息的散列值,并用信息发送者的公钥解密数字签名中的散列值信息,能解密就说明信息的发送者确实是预想的发送方,而两个散列值比对,就能确定信息并未被篡改。

安装

sudo apt-get install gnupg

发现key

下载文件 https://bitcoin.org/bin/bitco...

文件内容是这样的

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

5659c436ca92eed8ef42d5b2d162ff6283feba220748f9a373a5a53968975e34  bitcoin-0.17.1-aarch64-linux-gnu.tar.gz
aab3c1fb92e47734fadded1d3f9ccf0ac5a59e3cdc28c43a52fcab9f0cb395bc  bitcoin-0.17.1-arm-linux-gnueabihf.tar.gz
b1e1dcf8265521fef9021a9d49d8661833e3f844ca9a410a9dd12a617553dda1  bitcoin-0.17.1-i686-pc-linux-gnu.tar.gz
6aa567381b95a20ac96b0b949701b04729a0c5796c320481bfa1db22da25efdb  bitcoin-0.17.1-osx64.tar.gz
e3d785d800b71d277959d15b2c2b33d44dd72c1288e559928a40488dd935c949  bitcoin-0.17.1-osx.dmg
3e564fb5cf832f39e930e19c83ea53e09cfe6f93a663294ed83a32e194bda42a  bitcoin-0.17.1.tar.gz
e9245e682126ef9fa4998eabbbdd1c3959df811dc10df60be626a5e5ffba9b78  bitcoin-0.17.1-win32-setup.exe
6464aa2d338f3697950613bb88124e58d6ce78ead5e9ecacb5ba79d1e86a4e30  bitcoin-0.17.1-win32.zip
fa1e80c5e4ecc705549a8061e5e7e0aa6b2d26967f99681b5989d9bd938d8467  bitcoin-0.17.1-win64-setup.exe
1abbe6aa170ce7d8263d262f8cb0ae2a5bb3993aacd2f0c7e5316ae595fe81d7  bitcoin-0.17.1-win64.zip
53ffca45809127c9ba33ce0080558634101ec49de5224b2998c489b6d0fc2b17  bitcoin-0.17.1-x86_64-linux-gnu.tar.gz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBCAAGBQJcIeQ5AAoJEJDIAZ42wulk0NoQAIunIBT06bd2IhhxV/48NUvf
sgTto4qYrKuX5Vkn+kfGuMBvNpmILi5CiVtnucWo7fKM6k5IPMyBQuE9iDVDzT9i
YemA9Au8Xy2aIGmVriuQoXxk8b17wAMS9uw362A3nXCz3kA+BWMDuMfBp3P3NPM/
PeOg6n04Q7seO/zNdT5i/ysaFB/XA8szrQxCRukSrXeGMUpv79UbcWOu3+nfGit9
yYo/F2yO57Yacv597rKILlg29QxEVTqa5+slMdwuU7NP5AdAcQV4EtFqoCOqM7C7
JL/zZWYnTywK3l0hOuCBJiY86izutWME5xgm7Eh3ORj+K6ZYT4iXw2JIkTdumeuS
X0WDE3ShH4rb35IaQX75FJLp5R7hLTXiNgng7b8Xhy/62bJ75Ob4HVVSLG1Lkhps
vtml10br+78qXiofzk8zaAW6KaG7G9nbBa0hfDjUEsYzA6P5iWA+53ykupc82HNa
ZT2gk+wWhNhZOd/ANheriM0eqm/ZlK7oydYRRtf9Tamk+XJgREU1x8cWlMZcCPEE
uIUzb7/REvYSjwcwArYLCq/eFPfjQe7jcG2WexnpxxkKJBvu2v4zVw9LLUPll094
BAmfk34iJKhN2cGVhvjO0Q9GKk0B2HzvhD5xn1Hnlp+NbXVNbKonYvkB71D3GY4W
t/eRyv7Erfi4dhHf+8oQ
=UEoM
-----END PGP SIGNATURE-----
gpg --verify SHA256SUMS.asc

# gpg: Signature made 2018/12/25 using RSA key ID 36C2E964
# gpg: Can"t check signature: public key not found

发现关键信息 RSA key ID 36C2E964

导入public key
gpg --keyserver hkp://keys.gnupg.net/ --recv-keys 36C2E964

# gpg: requesting key 36C2E964 from hkp server keys.gnupg.net
# gpg: key 36C2E964: "Wladimir J. van der Laan (Bitcoin Core binary release signing key) " not changed
# gpg: Total number processed: 1
# gpg:              unchanged: 1
验证

gpg --verify SHA256SUMS.asc

gpg: Signature made Tue 25 Dec 2018 04:03:05 PM CST using RSA key ID 36C2E964
gpg: Good signature from "Wladimir J. van der Laan (Bitcoin Core binary release signing key) "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 01EA 5486 DE18 A882 D4C2  6845 90C8 019E 36C2 E964

Good signature from ... 说明这个文件是由 Wladimir J. van der Laan 签发。

这只是验证了 SHA256SUMS.asc 文件是由 Wladimir签发的,我们还要验证Bitcoin Core的签名。

验证Bitcoin Core软件

Bitcoin Core软件是由sha256算法签名的

sha256sum bitcoin-0.17.1-x86_64-linux-gnu.tar.gz
# 53ffca45809127c9ba33ce0080558634101ec49de5224b2998c489b6d0fc2b17  

把得到的结果与 SHA256SUMS.asc做对比,如果结果吻合,可以放心使用

还有另一种方式

sha256sum -c SHA256SUMS.asc
# bitcoin-0.17.1-x86_64-linux-gnu.tar.gz: OK
删除 public key
gpg --list-keys
gpg --delete-key 36C2E964
Don’t Trust, Verify

大家应该有意识并且学会验证 Bitcoin Core 软件,当然还有其他的软件,未被恶意修改。

Don’t Trust, Verify —— 不要相信它,去验证它


参考:

https://zhuanlan.zhihu.com/p/...
http://www.ruanyifeng.com/blo...
http://pool.sks-keyservers.net
https://linux.cn/article-4378...
https://superuser.com/a/999312

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24612.html

相关文章

  • 比特币如何使用BIP70支付协议API

    摘要:支付协议对于比特币的各种重要功能的开发至关重要,因此,了解它如何使用比特币非常重要。单击比特币时,将忽略其余部分中的指令它们仅用于向后兼容,并且在给定处找到的数据优先。 支付协议是用于指代BIP70,71,72和73中指定的协议的术语。支付协议旨在通过用可编码更复杂参数的小文件替换普遍存在的比特币地址来为比特币添加附加功能。它指定了直接在资金发送方和接收方之间流动的支付请求,付款和支付...

    gekylin 评论0 收藏0
  • 区块链笔记(2)直观感受比特币

    摘要:书接上回区块链笔记基础概念扫盲,我们讨论了关于比特币以及区块链的许多基础概念,可能通过我略带类比的描述,让你初步有了一些概念,但是对于一个比特币到底长什么样以及如何使用比特币进行交易可能还不是很清楚,说的直白点就是听过猪叫,但没吃过猪肉。 解惑是每个人都在走的一条路,可谁又能解这漫漫无期呢?路上总是麻醉的人多,释怀的人少。 书接上回区块链笔记(1)基础概念扫盲,我们讨论了关于比特币以及...

    DrizzleX 评论0 收藏0
  • UTXO 和 Account 模型对比

    摘要:模型模型中,交易只是代表了集合的变更。模型是无状态的,更容易并发处理。模型对于模型,模型保存了世界状态,链的状态一般在区块中以和等形式进行共识。交易只是事件本身,不包含结果,交易的共识和状态的共识本质上可以隔离的。 在当前区块链世界中,主要有两种记录保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式。Bitcoin 采用的是 UT...

    ephererid 评论0 收藏0
  • CITA 是如何达到 15000 TPS 的?

    摘要:本文将会简要讨论秘猿科技是如何对进行性能优化的。在区块链中,的共识是一个连续的共识。预处理在传统的类共识的区块链中,共识和交易的处理都是串行的。在共识的过程中,是闲置的。减少不必要的消息。例如,在服务收到时,需要对其合法性进行验证。 在前两期中,秘猿小课堂给大家分享了构建高性能区块链内核 CITA 背后的思考。这一期,我们深入研究 CITA 是如何进行性能优化,并且将交易处理的性能达到...

    BLUE 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<