全網最深入的比特幣生態防釣魚指南(Taproot 升級最新版)

作者:OneKey 中文,來源:作者推特@OneKeyCN

2021年末,Taproot 升級在第709,632 個區塊生效。那時候的人們,沉浸在以太坊NFT 的熱潮之中,無人知曉這將是BTC 最「創造豐富」的一次升級。

Taproot 與Segwit 升級一起為BTC 網路引入了新特性,也讓區塊資料間接擴容(相當於1 MB 到4 MB),成為了2023 年至今BTC 生態爆發的導火線。 Taproot Assets、 Ordinals BRC-20、 ARC-20、 Runes 等新資產湧現,也讓Taproot 的轉帳採用率基本上保持在一半甚至以上。

然而,新資產與新特性的引進也伴隨著新的安全挑戰。

比特幣生態有著與以太坊生態不一樣的底層模型。目前BTC 新資產生態這種「好多東西都有待建造」和「理解門檻偏高」的場面,相信讓許多用戶都感到興奮——畢竟這往往意味著「暴富」的機會。

但這也會對用戶的安全操作意識提出了新的要求,否則很容易不明不白就丟幣。甚至還出現瞭如之前Atomic 市場錯誤使用簽章類型導致駭客攻擊的事故。

下文OneKey 深入淺出告訴大家如何在安全基礎設施有限的BTC 生態,最大程度保護資產安全,預防釣魚。

Taproot 升級的具體影響簡析

在講述具體的防釣魚措施之前,我們需要鋪墊下Taproot 升級的影響。

除了先前提到間接促進了BTC 多資產生態的繁榮之外,在BTC 交易底層其實也發生了很大的變化,主要是兩個:Schnorr 簽名和MAST 技術。而這兩者結合PSBT (部分簽名交易)之後,便讓駭客釣魚的發揮空間更多了。

一個是Schnorr 簽名。沒錯,這次升級把白皮書裡的ECDSA 簽名換掉了。這個簽章的技術特性是多個簽章或公鑰聚合為一個。以往需要多個簽名一次次確認的工作,現在只需要驗證一次,直接縮小了簽名的佔用空間。

一個是MAST 技術。如果說前者是聚合簽名,那麼MAST 就是用來「聚合」多個腳本(對於腳本,你可以理解為比特幣的有限「智能合約」)。同時,提交驗證解鎖花費的時候,也只需要驗證花費條件其中的一個。很多條件的複雜的腳本的佔用空間可以大大縮小。

這兩個技術對隱私性的影響是最大的,同時也隱含了安全風險的空間。

對於轉帳記錄,升級後所有的UTXO 轉帳看起來都一樣。在Mempool 裡面轉帳類型都顯示為P2TR ,位址都是bc1p 開頭相同長度的位址。

在以前,你可以很輕鬆區分轉帳到普通地址(P2PKH / P2WPKH)和轉帳到腳本地址(P2SH / P2WSH)的差異。

現在觀察其他人花費掉一個UTXO 之前,你根本無法分辨轉帳到普通地址與轉帳到腳本地址的差異。

對於腳本,礦工驗證也只需要暴露腳本的一個花費條件,其他的分支腳本,外界不得而知。

預防比特幣生態新資產釣魚的5 個心術

顯然,目前BTC 一層的資產生態的安全基礎設施遠不如以太坊強大,有許多東西需要使用者先行理解學習。

同時,釣魚的原理也和以太坊不太一樣,很多釣魚攻擊在被發現之前可能整個市場都不太了解。例如Atomic 市場的*SIGNHASH_NONE 簽章安全事故,Unisat / Xverse 錢包也是後來才加入的安全提醒。

(1)第一個心術:老生常談的加密安全基本功。

也就是注意私鑰離線儲存安全、注意是否為信任的網址和注意保護電腦不要中招木馬病毒等等。

可是,在FOMO 的市場中,新專案可能尚未形成信任共識就會有使用者想要去「衝」,這時候接下來的幾個心術就特別重要。

(2)第二個心術:明確輸入輸出。

以太坊有「盲簽名」。也就是說在簽名的時候,如果錢包不解析,你只能看到一段亂七八糟的字符,無法預知簽名之後資產會發生什麼變化。這也就造成了丟幣的風險。

而在比特幣中,一定會明確一個交易的輸入和輸出,以及輸入輸出的對應的轉帳地址。 (也就是:「從哪裡來,來了多少幣」和「到哪裡去,去了多少幣」。)

簽名的時候,不論是否使用PSBT,交易前後會發生的變化,是一定會明確地顯示在錢包中。所以核對輸入輸出是否符合自己的意圖預期,非常重要。

例如如果駭客想要一次釣走你的所有Ordinals 銘文NFT,在交易的輸入(INPUT)中,一定會顯示你的所有銘文NFT 都被放進去了。同時輸出(OUTPUT)中會顯示他們都去到了陌生的地址裡。

以使用Unisat 在MagicEden 掛單Ordinals 銘文NFT 為範例。當你在MagiEden 市場掛單一個或多個銘文NFT 時,彈出的PSBT 簽名請求會顯示交易的輸入(INPUT)是你的某一個銘文或者多個銘文,輸出則會顯示,一旦交易成功,你會收到多少的比特幣。

(3)第三個心術:簽名類型要小心。

你可以在這裡看到比特幣目前的簽名類型的科普(https://btcstudy.org/2021/11/09/bitcoin-signature-types-sighash/)。

這裡面唯一要注意的簽名類型就是 SIGHASH_NONE(0x02)和SIGHASH_NONE | SIGHASH_ANYONECANPAY(0x82)。這兩個都意味著你「只對交易的輸入簽名,不管交易的輸出」。

對於交易銘文資產而言,安全的簽名類型應該是SIGHASH_SINGLE | SIGHASH_ANYONECANPAY(0x83),能夠透過PSBT 免信任建構一個完整的交易。這也是MagicEden、OKX 等主流銘文交易市場使用的簽章類型。

以Atomic 市場前錯誤使用SIGHASH_NONE | SIGHASH_ANYONECANPAY(0x82) 簽名為例。

當你掛單Atom 銘文資產的時候,你在簽名的時候確實看到了正確的輸入和輸出,即「規定了我掛單的資產在輸入裡,輸出也有我能收到的錢」。

但是,駭客完全可以拿到這個PSBT 修改輸出,提交的交易也會被礦工打包,最終讓你收不到掛單的錢。總之是因為使用的簽名類型只對輸入部分簽名,最後導致「零元購」。

還好,目前主流的BTC 生態錢包,像是Unisat 和Xverse,已經都支援了高亮提醒或禁止SIGHASH_NONE 類別的簽章類型。如果看到了相關的簽名類型的提示,在非特殊用途的情況下,請勿使用這種簽名。

(4)第四心術:使用腳本要小心。

假如某個項目或平台,需要你轉帳資產到某個腳本地址,你要格外小心。在簽名的時候,你會看到你的資產在輸出中去到了一個陌生的地址。

根據先前的內容你會知道,Taproot 升級後,腳本位址和使用者私鑰位址是一樣的。

假如竊盜者試圖用私鑰地址欺騙,收到的資產是可以直接轉走的。

假如是真的腳本地址。那要看他們是否公開了腳本地址的全部內容。假如是公佈不完整的內容,儘管在使用的時候用戶可以正常地簽署操作轉移資產,也有可能隱藏了一個或多個的惡意UTXO 解鎖條件。未來某一天可能突然「收網」轉走全部的UTXO 資產。

即使他們開源了整個腳本的內容,目前市面上的錢包也並沒有驗證腳本MAST 完整性和輸出地址的對應性的功能,需要懂技術的用戶自行使用Taproot 的演算法確認。或十分信任這個專案和團隊。

還好對於目前的應用,各種銘文資產的交易都不需要使用複雜的腳本,使用PSBT(部分簽名交易)來規定好輸入和輸出即可。

但在未來的BTC L2 操作中,大機率會涉及複雜多條件的比特幣腳本。例如Babylon @babylon_chain 的比特幣質押腳本中,就有相對複雜的罰沒邏輯和解鎖邏輯。

假如你要使用這種比特幣腳本的原生質押方式,此時開源腳本並驗證安全性、完整性就尤為重要,否則就需要用戶絕對信任項目方。

(5)第五個心術:注意安全動態,注意防患於未然。

注意安全領域的頭帳號,保證自己能跟上最新釣魚手法,第一時間獲得警告。諸如SlowMist 的餘弦@evilcos 、Go Plus 安全官方@GoPlusSecurity 、Scam Sniffer @realScamSniffer 、我們OneKey 官方帳號@OneKeyCN 。

關於防患於未然,我們可以遷移其他地方的安全經驗。

例如,在以太坊中,有一種釣魚方式——即構造頭尾相似的地址,導致用戶在歷史記錄中錯誤複製而丟失資產。而在建構BTC 簽名交易的時候,也有可能因為沒有清楚檢查輸出的地址而踩到坑。

在Unisat / Xverse 等主流BTC 生態錢包中,Taproot 位址展示為bc1px…e9wh0 (例),而bc1p 為Taproot 位址的固定開頭。

這相當於只展示了6 個字母為用於確認。相對有常用地址通訊錄功能、基本上都展示10 位元以上的以太坊的錢包標配,顯然還不夠。

這意味著駭客有不小的可能,去透過產生匹配的地址進行客製化釣魚(儘管目前在比特幣上還不多)。

所以如果做的絕一些,防患於未然,應要核對盡可能完整的地址。

總之…..

Study Bitcoin.

Study Bitcoin Security.

隨著Taproot 為比特幣引入新資產新場景,我們也必須學習新形式的安全威脅,尤其是不斷演化的釣魚技術。

尤其是現在生態基礎建設不完善的情況,即使是誤操作丟幣、燒幣都時有發生,更別說精心策劃的釣魚了。

Total
0
Shares
Related Posts