比特币迎来新技术更新,Core开发者教你如何验证客户端

  发布时间:2024-04-13 11:40:01   作者:手工客  
今日,比特币又迎来了新的进展,Core开发者Luke Dashjr宣布了Knots 0 19 1 knots20230304客户端的发布。(注:Bitcoin Knots是Bitcoin Core的衍生客户端,其具有一些Bitcoin Core尚未实施的功能,该代码库主要是由Luke Dashjr在负责维护)

今日,比特币又迎来了新的进展,Core开发者Luke Dashjr宣布了Knots 0.19.1.knots20200304客户端的发布。

比特币迎来新技术更新,Core开发者教你如何验证客户端

(注:Bitcoin Knots是Bitcoin Core的衍生客户端,其具有一些Bitcoin Core尚未实施的功能,该代码库主要是由Luke Dashjr在负责维护)

关于新客户端更新的内容,你可以在这里找到:https://github.com/bitcoinknots/bitcoin/blob/v0.19.1.knots20200304/doc/release-notes.md

而摆在我们面前的问题是,如何验证自己下载的客户端是安全的,而不是经恶意篡改的呢?当然,确保从可信网站下载是必须的,那我们又如何确保该可信网站没有被攻击者篡改呢?

这也是本文要讲的内容,原文作者是Luke Dashjr。

以下是译文:

期望

以下的说明,要求你了解文件在计算机中的存储方式(理论上来讲,如果你知道目录/文件夹是什么就可以了),以及懂得如何使用命令行来运行程序和访问文件。如果你不了解这些概念,请先从指南开始入手。

请注意,本文的说明只能帮你安全地安装比特币客户端,其并不会帮助你保护你的硬件、操作系统,或者避免安装其它引入恶意软件的应用。通常,如果计算机的其他地方受到威胁,则无论你如何验证自己安装的客户端,你的节点也会受到威胁。

如果你想要一个绝对安全的节点,除了本文提到的说明之外,你至少还需要避免使用后门硬件(包括树莓派,英特尔或AMD生产的任何产品),而仅运行可信任的基于Linux的操作系统,仅安装或使用你的操作系统供应商提供的软件,或使用GnuPG进行了其他验证(如本文所述)的软件,并确保该软件更新到最新的漏洞修复版本。

即使您无法解决这些问题,因此无法获得最大的安全性,但这也不意味着你应该放弃:无论如何,验证比特币节点软件仍然是一个好主意。

概述

要确保你所安装的比特币客户端是安全的,有三个重要的步骤:

验证OpenPGP密钥;

验证签名;

验证文件本身;

每个步骤都取决于先前的步骤是否成功,虽然我们可以跳过一个步骤,但重要的是要了解,除非所有步骤都成功,否则我们就相当于没有对安装进行验证。

请注意,举例来说,我将在用于 ppc64le Linux的 Bitcoin Knots v0.19.0.1.knots20200104客户端上验证我自己的签名,而要验证其他人的签名或其他文件,你需要更改命令行以使用该指纹或文件名。

步骤0:安装加密软件GNU Privacy Guard(GPG)

在开始之前,你需要确保自己已安装了GNU Privacy Guard(GPG)工具,这是文件的加密验证所需的。

如果你运行了一个基于Linux的系统,通常可通过操作系统供应商那进行安装(最近,这通常会是默认安装的),你可以通过运行gpg --version进行检查。如果没有,请尝试使用以下命令之一进行安装(如果失败,请转到下一个):

apt-get install gnupg

dnf install gnupg2

yum install gnupg2

emerge app-crypt/gnupg

pacman -S gnupg

apk add gnupg

如果您不幸使用的是Windows或macOS操作系统,则可以从官方网站下载GnuPG,但我不知道有任何安全的方式可以验证这种下载,当然,它们确实提供了签名,但这里就遇到了鸡与蛋的问题:在你安装好的副本之前,你无法验证这些签名!

步骤1:验证OpenPGP密钥

可以说,这一步是验证过程中最困难的部分:你需要确认你实际使用的密钥,是你信任之人所发布的正确密钥。如果你不小心,可能会得到一个假冒的“Luke Dashjr”密钥!

每个OpenPGP密钥都有一个“指纹”,即40个十六进制字符(数字0-9和a-F),有时会显示空格,以便于阅读。如果你确保使用的密钥指纹与受信任签名者的指纹匹配,则你知道自己拥有了正确的密钥。

获取密钥或指纹

验证密钥最安全的方法,就是亲自见面,并确认密钥“指纹”。几乎没有人记得他们的密钥指纹,所以我们可能不得不在自己的笔记本电脑或手机上查找,偶尔(通常是在会议上)可能会有“密钥签署方”,一群人在会议上确认其他人的指纹,每个参与者要么亲自朗读自己的指纹,要么手动确认每个人看到的或听到的都是正确的。如果你机会参与这样的会议,这是一个好的方法来一次性验证很多密钥。

如果你不感兴趣或没有机会亲自见面,理想情况下应该从多个来源验证密钥。有时,会议会发布演示视频,其中的密钥指纹可能会显示在幻灯片中。当然,由于“deep fake”这些新技术的存在,要注意视频中的幻灯片是容易被操纵的。

开发人员通常会在他们的网站上发布他们的密钥或指纹,也许还有其他一些途径(例如,我的密钥或指纹,会放在个人网站、bitcoinknots.org、bitcoin.org以及GitHub上)。

如果你已经安装你了你信任的软件副本,有时它会包含验证更新所需的密钥(目前Bitcoin Core只包含源代码)。

检查密钥文件的指纹

要查看密钥文件的指纹,你可以使用以下命令:

gpg --import-options show-only --import --with-fingerprint luke-jr.asc

这将输出有关密钥文件的许多信息,而相关信息位于最上面:

pub rsa8192 2012-03-23 [SC] [expires: 2020-06-09]

E463 A93F 5F31 17EE DE6C 7316 BD02 9424 21F4 889F

在本示例中,E463 A93F 5F31 17EE DE6C 7316 BD02 9424 21F4 889F 就是我的密钥指纹。

注意:如果GPG提示密钥过期了,那可能也没有关系!在步骤2中,你将更新到同一密钥的最新版本,这通常会延长到期日期。

导入已验证的密钥

无论你如何验证密钥,都应该确保记住你使用的是哪个密钥,以便将来更新时可验证使用的是同一个密钥。即使你跳过了验证密钥步骤(这是不安全的),至少这将确保你的更新有相同的签名者。

当你确信自己拥有的密钥是正确的时候,你可以这样导入它(将luke-jr.asc替换为包含所需密钥的文件名):

gpg --import < luke-jr.asc

或者如果你只有指纹,像这样(把你想用的密钥指纹放进去!):

gpg --keyserver hkp://keyserver.ubuntu.com --recv-key E463A93F5F3117EEDE6C7316BD02942421F4889F

步骤2 :验证签名

现在你知道要用什么密钥进行验证了,下一步就是检查签名是否有效。

在继续此步骤之前,必须确保签名者密钥的副本是最新的。如果你不这样做,你可能会收到一条关于密钥已过期的消息。运行(使用你所需的指纹):

gpg --keyserver hkp://keyserver.ubuntu.com --refresh-key E463A93F5F3117EEDE6C7316BD02942421F4889F

接下来,(除了你正在检查的程序文件之外)你将需要两个文件:包含文件指纹列表的“.assert”文件和包含该列表签名的“.assert.sig”文件。这是因为我们所做的不是对程序文件本身进行签名,而是对所有文件进行指纹识别,然后对该列表进行签名。因此,这两个文件你都是需要的。

Bitcoin Core的“assert”文件对发布在这里:https://github.com/Bitcoin-Core/gitian.sigs/find/master;

Bitcoin Knots的“assert”文件对发布在这里:https://github.com/bitconinkots/gitian.sigs/find/Knots

注意,每个签名者都有一个单独的文件对。如果你正在验证是否有多个人签名了你的文件(你应该这样做),则需要检查每个文件对。此外,你还需要确保自己正在获取要验证的版本的文件!

在列表中找到所需文件后,单击链接在浏览器中打开该文件,然后右键单击“Raw”或“Download”按钮并选择“链接另存为”。

一旦你有了这两个“assert”文件,你就可以通过运行来检查签名(将文件名调整为特定的.assert.sig)

gpg --verify bitcoin-core-linux-0.19-build.assert.sig

如果这步成功了,你就会得到下面的结果:

gpg: Signature made Sun 19 Jan 2020 03:47:15 AM UTC

gpg: using RSA key E463A93F5F3117EEDE6C7316BD02942421F4889F

gpg: Good signature from “Luke Dashjr ” [ultimate]

注意密钥的指纹是粗体显示的。该指纹必须要和你在步骤1中验证的密钥匹配,否则它可能是由其他人签名的!关于“好签名”的部分也很重要,而名字和电子邮件地址却不重要,如果指纹是错误的,这两个都可能是伪造的。

假设一切顺利,你现在知道“.assert”文件是由所述密钥的控制者提供担保的,并且可继续验证你的实际程序文件,是否是该“.assert”文件中列出的。

步骤3:验证文件本身

要验证程序文件,必须首先对其进行加密哈希验证(基本上是提取其指纹)。

这是通过一个简单的命令完成的(注意替换你正在验证的实际文件名!):

Linux: sha256sum bitcoin-0.19.0.1.knots20200104-powerpc64le-linux-gnu.tar.gz

Windows: certUtil -hashfile bitcoin-0.19.0.1.knots20200104-win64.zip SHA256

macOS: shasum -a 256 bitcoin-0.19.0.1.knots20200104-osx-unsigned.dmg

这将输出如下内容:

d370692590c4546ac0de250da91c6c288d9ee5252f1a4b857a5b80c4e3d81149 bitcoin-0.19.0.1.knots20200104-powerpc64le-linux-gnu.tar.gz

这是文件内容的指纹,后跟指定的文件名。

现在,在任何纯文本编辑器/查看器中打开“.assert”文件,并查找该指纹。它应该在顶部的“out_manifest”部分,如果你到达了“in_manifest”或“base_manifests”,那么你已经走得太远了。

如果你在“.assert”文件中找到了它,那么你已经验证了你拥有的文件,是与签名者所担保的文件是相同的(你将在指纹右侧的“.assert”文件中看到它们的文件名,它可能与你的文件名是相同的)。

而如果“.assert”文件中缺少该文件,则可能表示你使用了错误的“.assert”文件,或者你的文件是不匹配的(在这种情况下,你将在预期的文件名旁看到另一个指纹)。如果文件已列出,但有着不同的指纹,请不要打开文件,而是保存它(我们可能会要求您提供副本),并与受影响项目的安全团队联系。

相关文章

  • 新手如何获得比特币?获取比特币有哪些方法?

    新手如何获得比特币?获取比特币有哪些方法?

    新手如何获得比特币?在数字货币世界,新手的第一个也是最困难的任务是获取一些比特币。与其他正常外币不同,您不能在银行或自助机购买比特币。比特币交易是不可逆转的。而大多数电子支付网络(如信用卡,借记卡,PayPal和银行帐户转帐)都是可逆的。对于销售比特币的人来说,
    04-29
  • 怎么样挖比特币(入门级干货如何挖矿赚比特币)

    怎么样挖比特币(入门级干货如何挖矿赚比特币)

    怎么样挖比特币准备矿机-下载软件-注册账户-开启自动挖矿一枚比特币要挖多久1、现在的速度,如果24小时开着电脑,需要三个月左右才能挖到一个比特币。也就是说一台电脑一个月最
    07-06
  • 比特币怎么玩入门知识(新手怎么上手比特币几大总结经验)

    比特币怎么玩入门知识(新手怎么上手比特币几大总结经验)

    比特币作为一种数字货币,既可用于购买商品和服务,也可进行交易和投资。如果您有兴趣尝试比特币投资,这里提供了一份比特币入门教程,帮助您从零开始了解比特币并开始交易。这份比特币入门教程旨在提供一系列简单明了的步骤,帮助新手逐步了解比特币的基础知识,并为他们提供开始交易的指引。教程内容将覆盖比特币的定义、工作原理、使用场景以及如何创建和保护自己的比特币钱包等方面的内容。此外,教程还会介绍如何选择安全可靠的比特币交易平台,以及基本的交易策略和风险管理技巧。通过学习这份比特币入门教程,您可以逐步建立对比特币的理解,
    09-19
  • 如何开始比特币交易?如何获得第一枚比特币?

    如何开始比特币交易?如何获得第一枚比特币?

    如何开始比特币交易?如何获得第一枚比特币?比特币是由一系列概念和技术作为基础构建的数字货币生态系统。狭义的“比特币”代表系统中的货币单位,用于储存和传输价值。用户主要通过互联网使用比特币系统,当然其
    11-18
  • 如何在国内购买比特币,比特币值得买吗?

    如何在国内购买比特币,比特币值得买吗?

    如何在国内购买比特币,比特币值得买吗?比特币呀,可谓是家喻户晓的东西,即便是没有接触到数字货币行业的人,可能也听说过,比特币的大名,从最开始的几元钱涨到现在的几千元,发展前景,报以看好的态度,纷纷决定,购买一些入手,那么问题
    11-26
  • 比特币怎么挖?如何快速拥有比特币

    比特币怎么挖?如何快速拥有比特币

    比特币怎么挖?如何快速拥有比特币如果你想要快速拥有一枚比特币,那么自己去买一枚是最快速,也是最简单直接的方法,我本人就是在zb上面交易。注册充值后可直接进行交易。从本质上来说,获取比特币的
    05-10
  • 挖矿是什么(如何挖掘比特币)

    挖矿是什么(如何挖掘比特币)

    挖矿是什么(如何挖掘比特币)
    03-11
  • 如何获得比特币?快捷获得比特币方式汇总

    如何获得比特币?快捷获得比特币方式汇总

    自2009年山本聪提出比特币的概念出来之后,比特币就一路高歌猛进,势不可挡。随着比特币的增值,人们对比特币的热爱程度也越来越高,现在就连跳广场舞的大妈大娘们,在肉铺卖牛羊肉的大叔大爷们都问怎么获得比特币。如何获得比特币也成为广大非专业人士的一个大
    10-08
  • 比特币如何获取?升值空间还有多大?

    比特币如何获取?升值空间还有多大?

    第一种是挖矿:比如在阿寺家财务制度中,大家手动在自己的账本上记账从而获得奖励。在比特币网络中,负责记录比特币交易信息的角色称为矿工 每隔十分钟,矿工们都会将交易记录打包存储到新的区块中并获得奖励。这个过程就是挖矿。随着比特币余量越来越少,参与挖矿的人却日见增多,目前挖矿的难度非常高,人力和设备的资本投入也非常庞大。
    12-08
  • 比特币网络如何产生新的比特币?

    比特币网络如何产生新的比特币?

    ​自比特币诞生以来一直都备受投资者关注,虽然在发行初期并没有很多投资者追捧它,但它的发展趋势依旧十分广阔,并且比特币是一种加密货币,这也使它的安全性得到了一定的保障,比特币也与其他数字货币不同,它不受任何机构或个人掌控,具有特定的算法
    03-16
  • DeFi挖矿指南:如何参与区块链DeFi项目流动性挖矿?

    DeFi挖矿指南:如何参与区块链DeFi项目流动性挖矿?

    这篇文章主要介绍了DeFi挖矿指南:如何参与区块链DeFi项目流动性挖矿?教你如何安装浏览器钱包,如何将数字货币从交易所提币到浏览器钱包,如何做链上交易,以示例进行流动性挖矿操作,其实DeFi 挖矿方法很简单,按照下文步骤,你就可以完成了。下面一起来看看吧!
    09-28
微信 投稿 脚本任务 在线工具