您的位置:首頁(yè) > 軟件教程 > 教程 > 比特幣迎來(lái)新技術(shù)更新,Core開(kāi)發(fā)者教你如何驗(yàn)證客戶端

比特幣迎來(lái)新技術(shù)更新,Core開(kāi)發(fā)者教你如何驗(yàn)證客戶端

來(lái)源:好特整理 | 時(shí)間:2022-10-12 15:29:13 | 閱讀:164 |  標(biāo)簽: 如何獲得比特幣 如何投資比特幣 如何挖比特幣   | 分享到:

今日,比特幣又迎來(lái)了新的進(jìn)展,Core開(kāi)發(fā)者Luke Dashjr宣布了Knots 0.19.1.knots20200304客戶端的發(fā)布。

比特幣迎來(lái)新技術(shù)更新,Core開(kāi)發(fā)者教你如何驗(yàn)證客戶端

(注:Bitcoin Knots是Bitcoin Core的衍生客戶端,其具有一些Bitcoin Core尚未實(shí)施的功能,該代碼庫(kù)主要是由Luke Dashjr在負(fù)責(zé)維護(hù))

關(guān)于新客戶端更新的內(nèi)容,你可以在這里找到:https://github.com/bitcoinknots/bitcoin/blob/v0.19.1.knots20200304/doc/release-notes.md

而擺在我們面前的問(wèn)題是,如何驗(yàn)證自己下載的客戶端是安全的,而不是經(jīng)惡意篡改的呢?當(dāng)然,確保從可信網(wǎng)站下載是必須的,那我們又如何確保該可信網(wǎng)站沒(méi)有被攻擊者篡改呢?

這也是本文要講的內(nèi)容,原文作者是Luke Dashjr。

以下是譯文:

期望

以下的說(shuō)明,要求你了解文件在計(jì)算機(jī)中的存儲(chǔ)方式(理論上來(lái)講,如果你知道目錄/文件夾是什么就可以了),以及懂得如何使用命令行來(lái)運(yùn)行程序和訪問(wèn)文件。如果你不了解這些概念,請(qǐng)先從指南開(kāi)始入手。

請(qǐng)注意,本文的說(shuō)明只能幫你安全地安裝比特幣客戶端,其并不會(huì)幫助你保護(hù)你的硬件、操作系統(tǒng),或者避免安裝其它引入惡意軟件的應(yīng)用。通常,如果計(jì)算機(jī)的其他地方受到威脅,則無(wú)論你如何驗(yàn)證自己安裝的客戶端,你的節(jié)點(diǎn)也會(huì)受到威脅。

如果你想要一個(gè)絕對(duì)安全的節(jié)點(diǎn),除了本文提到的說(shuō)明之外,你至少還需要避免使用后門(mén)硬件(包括樹(shù)莓派,英特爾或AMD生產(chǎn)的任何產(chǎn)品),而僅運(yùn)行可信任的基于Linux的操作系統(tǒng),僅安裝或使用你的操作系統(tǒng)供應(yīng)商提供的軟件,或使用GnuPG進(jìn)行了其他驗(yàn)證(如本文所述)的軟件,并確保該軟件更新到最新的漏洞修復(fù)版本。

即使您無(wú)法解決這些問(wèn)題,因此無(wú)法獲得最大的安全性,但這也不意味著你應(yīng)該放棄:無(wú)論如何,驗(yàn)證比特幣節(jié)點(diǎn)軟件仍然是一個(gè)好主意。

概述

要確保你所安裝的比特幣客戶端是安全的,有三個(gè)重要的步驟:

驗(yàn)證OpenPGP密鑰;

驗(yàn)證簽名;

驗(yàn)證文件本身;

每個(gè)步驟都取決于先前的步驟是否成功,雖然我們可以跳過(guò)一個(gè)步驟,但重要的是要了解,除非所有步驟都成功,否則我們就相當(dāng)于沒(méi)有對(duì)安裝進(jìn)行驗(yàn)證。

請(qǐng)注意,舉例來(lái)說(shuō),我將在用于 ppc64le Linux的BitcoinKnots v0.19.0.1.knots20200104客戶端上驗(yàn)證我自己的簽名,而要驗(yàn)證其他人的簽名或其他文件,你需要更改命令行以使用該指紋或文件名。

步驟0:安裝加密軟件GNU Privacy Guard(GPG)

在開(kāi)始之前,你需要確保自己已安裝了GNU Privacy Guard(GPG)工具,這是文件的加密驗(yàn)證所需的。

如果你運(yùn)行了一個(gè)基于Linux的系統(tǒng),通?赏ㄟ^(guò)操作系統(tǒng)供應(yīng)商那進(jìn)行安裝(最近,這通常會(huì)是默認(rèn)安裝的),你可以通過(guò)運(yùn)行g(shù)pg --version進(jìn)行檢查。如果沒(méi)有,請(qǐng)嘗試使用以下命令之一進(jìn)行安裝(如果失敗,請(qǐng)轉(zhuǎn)到下一個(gè)):

apt-get install gnupg

dnf install gnupg2

yum install gnupg2

emerge app-crypt/gnupg

pacman -S gnupg

apk add gnupg

如果您不幸使用的是Windows或macOS操作系統(tǒng),則可以從官方網(wǎng)站下載GnuPG,但我不知道有任何安全的方式可以驗(yàn)證這種下載,當(dāng)然,它們確實(shí)提供了簽名,但這里就遇到了雞與蛋的問(wèn)題:在你安裝好的副本之前,你無(wú)法驗(yàn)證這些簽名!

步驟1:驗(yàn)證OpenPGP密鑰

可以說(shuō),這一步是驗(yàn)證過(guò)程中最困難的部分:你需要確認(rèn)你實(shí)際使用的密鑰,是你信任之人所發(fā)布的正確密鑰。如果你不小心,可能會(huì)得到一個(gè)假冒的“Luke Dashjr”密鑰!

每個(gè)OpenPGP密鑰都有一個(gè)“指紋”,即40個(gè)十六進(jìn)制字符(數(shù)字0-9和a-F),有時(shí)會(huì)顯示空格,以便于閱讀。如果你確保使用的密鑰指紋與受信任簽名者的指紋匹配,則你知道自己擁有了正確的密鑰。

獲取密鑰或指紋

驗(yàn)證密鑰最安全的方法,就是親自見(jiàn)面,并確認(rèn)密鑰“指紋”。幾乎沒(méi)有人記得他們的密鑰指紋,所以我們可能不得不在自己的筆記本電腦或手機(jī)上查找,偶爾(通常是在會(huì)議上)可能會(huì)有“密鑰簽署方”,一群人在會(huì)議上確認(rèn)其他人的指紋,每個(gè)參與者要么親自朗讀自己的指紋,要么手動(dòng)確認(rèn)每個(gè)人看到的或聽(tīng)到的都是正確的。如果你機(jī)會(huì)參與這樣的會(huì)議,這是一個(gè)好的方法來(lái)一次性驗(yàn)證很多密鑰。

如果你不感興趣或沒(méi)有機(jī)會(huì)親自見(jiàn)面,理想情況下應(yīng)該從多個(gè)來(lái)源驗(yàn)證密鑰。有時(shí),會(huì)議會(huì)發(fā)布演示視頻,其中的密鑰指紋可能會(huì)顯示在幻燈片中。當(dāng)然,由于“deep fake”這些新技術(shù)的存在,要注意視頻中的幻燈片是容易被操縱的。

開(kāi)發(fā)人員通常會(huì)在他們的網(wǎng)站上發(fā)布他們的密鑰或指紋,也許還有其他一些途徑(例如,我的密鑰或指紋,會(huì)放在個(gè)人網(wǎng)站、bitcoinknots.org、bitcoin.org以及GitHub上)。

如果你已經(jīng)安裝你了你信任的軟件副本,有時(shí)它會(huì)包含驗(yàn)證更新所需的密鑰(目前Bitcoin Core只包含源代碼)。

檢查密鑰文件的指紋

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

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

這將輸出有關(guān)密鑰文件的許多信息,而相關(guān)信息位于最上面:

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提示密鑰過(guò)期了,那可能也沒(méi)有關(guān)系!在步驟2中,你將更新到同一密鑰的最新版本,這通常會(huì)延長(zhǎng)到期日期。

導(dǎo)入已驗(yàn)證的密鑰

無(wú)論你如何驗(yàn)證密鑰,都應(yīng)該確保記住你使用的是哪個(gè)密鑰,以便將來(lái)更新時(shí)可驗(yàn)證使用的是同一個(gè)密鑰。即使你跳過(guò)了驗(yàn)證密鑰步驟(這是不安全的),至少這將確保你的更新有相同的簽名者。

當(dāng)你確信自己擁有的密鑰是正確的時(shí)候,你可以這樣導(dǎo)入它(將luke-jr.asc替換為包含所需密鑰的文件名):

gpg --import < luke-jr.asc

或者如果你只有指紋,像這樣(把你想用的密鑰指紋放進(jìn)去!):

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

步驟2 :驗(yàn)證簽名

現(xiàn)在你知道要用什么密鑰進(jìn)行驗(yàn)證了,下一步就是檢查簽名是否有效。

在繼續(xù)此步驟之前,必須確保簽名者密鑰的副本是最新的。如果你不這樣做,你可能會(huì)收到一條關(guān)于密鑰已過(guò)期的消息。運(yùn)行(使用你所需的指紋):

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

接下來(lái),(除了你正在檢查的程序文件之外)你將需要兩個(gè)文件:包含文件指紋列表的“.assert”文件和包含該列表簽名的“.assert.sig”文件。這是因?yàn)槲覀兯龅牟皇菍?duì)程序文件本身進(jìn)行簽名,而是對(duì)所有文件進(jìn)行指紋識(shí)別,然后對(duì)該列表進(jìn)行簽名。因此,這兩個(gè)文件你都是需要的。

Bitcoin Core的“assert”文件對(duì)發(fā)布在這里:https://github.com/Bitcoin-Core/gitian.sigs/find/master;

Bitcoin Knots的“assert”文件對(duì)發(fā)布在這里:https://github.com/bitconinkots/gitian.sigs/find/Knots

注意,每個(gè)簽名者都有一個(gè)單獨(dú)的文件對(duì)。如果你正在驗(yàn)證是否有多個(gè)人簽名了你的文件(你應(yīng)該這樣做),則需要檢查每個(gè)文件對(duì)。此外,你還需要確保自己正在獲取要驗(yàn)證的版本的文件!

在列表中找到所需文件后,單擊鏈接在瀏覽器中打開(kāi)該文件,然后右鍵單擊“Raw”或“Download”按鈕并選擇“鏈接另存為”。

一旦你有了這兩個(gè)“assert”文件,你就可以通過(guò)運(yùn)行來(lái)檢查簽名(將文件名調(diào)整為特定的.assert.sig)

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

如果這步成功了,你就會(huì)得到下面的結(jié)果:

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中驗(yàn)證的密鑰匹配,否則它可能是由其他人簽名的!關(guān)于“好簽名”的部分也很重要,而名字和電子郵件地址卻不重要,如果指紋是錯(cuò)誤的,這兩個(gè)都可能是偽造的。

假設(shè)一切順利,你現(xiàn)在知道“.assert”文件是由所述密鑰的控制者提供擔(dān)保的,并且可繼續(xù)驗(yàn)證你的實(shí)際程序文件,是否是該“.assert”文件中列出的。

步驟3:驗(yàn)證文件本身

要驗(yàn)證程序文件,必須首先對(duì)其進(jìn)行加密哈希驗(yàn)證(基本上是提取其指紋)。

這是通過(guò)一個(gè)簡(jiǎn)單的命令完成的(注意替換你正在驗(yàn)證的實(shí)際文件名!):

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

這將輸出如下內(nèi)容:

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

這是文件內(nèi)容的指紋,后跟指定的文件名。

現(xiàn)在,在任何純文本編輯器/查看器中打開(kāi)“.assert”文件,并查找該指紋。它應(yīng)該在頂部的“out_manifest”部分,如果你到達(dá)了“in_manifest”或“base_manifests”,那么你已經(jīng)走得太遠(yuǎn)了。

如果你在“.assert”文件中找到了它,那么你已經(jīng)驗(yàn)證了你擁有的文件,是與簽名者所擔(dān)保的文件是相同的(你將在指紋右側(cè)的“.assert”文件中看到它們的文件名,它可能與你的文件名是相同的)。

而如果“.assert”文件中缺少該文件,則可能表示你使用了錯(cuò)誤的“.assert”文件,或者你的文件是不匹配的(在這種情況下,你將在預(yù)期的文件名旁看到另一個(gè)指紋)。如果文件已列出,但有著不同的指紋,請(qǐng)不要打開(kāi)文件,而是保存它(我們可能會(huì)要求您提供副本),并與受影響項(xiàng)目的安全團(tuán)隊(duì)聯(lián)系。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)