比特幣新技術更新怎麼去驗證客戶端呢,比特幣已經更新了新的技術,很多人不知道怎麼去驗證客戶端,下面跟著小編一起來看看吧,希望這篇文章能對你有所幫助。
要確保你所安裝的比特幣客戶端是安全的,有三個重要的步驟:
驗證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和aF),有時會顯示空格,以便於閱讀。如果你確保使用的密鑰指紋與受信任簽署者的指紋匹配,則你知道自己擁有了正確的密鑰。
取得密鑰或指紋
驗證密鑰最安全的方法,就是親自見面,並確認密鑰「指紋」。幾乎沒有人記得他們的密鑰指紋,所以我們可能不得不在自己的筆記型電腦或手機上查找,偶爾(通常是在會議上)可能會有“密鑰簽署方”,一群人在會議上確認其他人的指紋,每個參與者要么親自朗讀自己的指紋,要么手動確認每個人看到的或聽到的都是正確的。如果你機會參與這樣的會議,這是一個好的方法來一次驗證很多金鑰。
如果你不感興趣或沒有機會親自見面,理想情況下應該從多個來源驗證金鑰。有時,會議會發布演示視頻,其中的密鑰指紋可能會顯示在幻燈片中。當然,由於「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.knots202001149 bitcoin-0.19.0.1.knots20200104-power-64le-linling
這是檔案內容的指紋,後面跟著指定的檔案名稱。
現在,在任何純文字編輯器/檢視器中開啟“.assert”文件,並尋找該指紋。它應該在頂部的“out_manifest”部分,如果你到達了“in_manifest”或“base_manifests”,那麼你已經走得太遠了。
如果你在「.assert」文件中找到了它,那麼你已經驗證了你擁有的文件,是與簽名者所擔保的文件是相同的(你將在指紋右側的「.assert」文件中看到它們的檔名,它可能與你的檔名是相同的)。
而如果“.assert”文件中缺少該文件,則可能表示你使用了錯誤的“.assert”文件,或者你的文件是不匹配的(在這種情況下,你將在預期的文件名旁看到另一個指紋)。如果文件已列出,但有著不同的指紋,請不要打開文件,而是保存它(我們可能會要求您提供副本),並與受影響項目的安全團隊聯繫。