比特幣交易簽章能被剪貼到另一筆交易嗎?

紙本簽名一旦被掃描,就可能遭人剪貼到另一份文件。比特幣交易裡的數位簽章也會公開傳播,任何人都能複製那串資料,因此很自然會擔心:別人能不能把它貼進另一筆交易,再次動用同一把鑰匙控制的資產?
不過,驗證者不只檢查簽章長得是否一樣。簽章是針對一份由特定交易欄位計算出的訊息產生;收款條件、金額或被花用的來源改變,驗證時得到的訊息通常也會改變。原有簽章即使逐位元複製,往往已無法通過檢查。
因此,較準確的理解是:比特幣簽章是一份有範圍的授權證明,不是一張可以到處兌現的通行證。一般交易採用的簽署方式會保護主要輸入與輸出,但協議也提供刻意縮小範圍的選項,方便多人組合交易。能否更動內容,要看簽章實際承諾了哪些資料。
簽署的是交易摘要,不是畫面上的一句話
錢包建立交易時,會先整理要花用的 UTXO、新輸出的金額與花費條件,以及版本、時間鎖和序號等資料。簽章規則再從其中選取應受保護的欄位,依固定方式序列化並計算出摘要。持有人用私鑰對這份摘要產生簽章,驗證者則用對應的公鑰核對。
摘要有一個重要效果:原始交易即使很長,簽署流程仍能處理固定長度的訊息;只要受保護欄位有細微變化,重新計算出的摘要通常就完全不同。舊簽章與新摘要配不起來,檢查便會失敗。
私鑰不會隨簽章公開。旁人可以取得交易、簽章與公鑰,並反覆驗證三者是否相符,卻不能因為看過一次有效結果,就從中還原私鑰或任意替其他交易製造新簽章。這正是公開驗證能與個人控制權並存的基礎。
換一個輸入,原授權通常就失效
每個交易輸入都會指出先前哪一筆交易的哪一個輸出要被花用。這個「交易識別碼加輸出位置」的組合稱為前序輸出參照。即使兩個 UTXO 都由同一把私鑰控制,只要參照不同,待簽署資料也通常不同。
想像一筆交易原本花用甲輸出,將一部分價值送往某個收款地址,剩餘部分回到自己的新輸出。攻擊者若把輸入換成乙輸出,或把收款條件換成自己的,摘要就會跟著變動;原簽章無法替這份新內容背書。
金額也是同一個道理。比特幣的手續費來自輸入總額與輸出總額之差,沒有一個獨立欄位可以在簽署後任意調高。若有人減少收款輸出、增加自己的輸出或改變找零,受保護的輸出資料改變,原簽章通常便失效。
重送同一筆交易,不等於再次扣款
一份已簽署交易可以被許多人保存與轉傳。網路連線不穩時,錢包甚至可能主動重送;這只是讓相同資料再次抵達更多參與者,不會憑空生成第二組可花用輸入。
全節點會檢查交易引用的輸出是否仍未花用。相同交易第一次有效花掉該輸出後,其他想再次花用它的資料就會和目前的帳本狀態衝突。交易還沒有取得交易確認時,不同花法可能暫時在網路中競爭;一旦其中一筆進入有效區塊,另一筆不會因為帶著某個曾經有效的簽章就自動被接受。
所以,「複製一筆完整交易」與「把簽章移植到新交易」要分開看。前者只是重播同一份候選資料,後者改變了驗證訊息,通常會讓簽章失效。
簽章雜湊旗標會改變保護範圍
「通常」之所以重要,是因為比特幣允許簽署者選擇簽章雜湊類型。日常最常見的 SIGHASH_ALL 會承諾主要輸入資料與全部輸出,讓別人難以在保留簽章的同時改掉收款安排。
SIGHASH_NONE 可以不承諾輸出,SIGHASH_SINGLE 只承諾與目前輸入相對應的特定輸出;ANYONECANPAY 則能把輸入範圍縮到目前這一個輸入,讓其他人之後加入資金。不同旗標還能組合,實際涵蓋欄位會隨傳統交易、隔離見證與 Taproot 的簽章規則而有細節差異。
這些選項有明確用途,例如多人各自提供輸入,或先固定自己關心的輸出,再由其他參與者補齊交易。代價是授權邊界更難憑直覺判斷。若簽署者刻意留下可修改部分,別人在那個範圍內調整交易,並不算破解簽章;那正是原簽章允許的行為。
一般錢包多半替普通付款選擇保護範圍較完整的預設值。遇到要求簽署陌生原始交易、特殊協作流程或看不懂的硬體錢包提示時,畫面顯示的收款條件、金額與費用是否都受承諾,才是值得核對的重點。只看到「簽章有效」四個字,還不足以說明簽署者同意了哪些欄位。
還要區分交易變形與跨網路重播
早期傳統交易曾有一類交易可塑性問題:第三方可能改動不受簽章保護的表示方式,使交易識別碼變化,卻沒有把款項改送給自己。後來的隔離見證設計大幅縮小第三方改變交易識別碼的空間。這類「同一筆經濟行為有不同表示」和拿簽章授權另一筆任意付款,風險性質並不相同。
另一個邊界出現在網路分裂。如果兩條網路保留相同歷史、同一個 UTXO 也同時存在,而且其中一邊沒有額外的重播保護,一份交易可能在兩邊都符合規則。這稱為跨網路重播;它依賴兩套帳本共享起點,不能推論成同一條網路能把已花用輸出扣除兩次。
真正需要保護的是簽署前的內容
數位簽章能阻止別人在事後悄悄改動受承諾的交易資料,卻不能替簽署者判斷原始內容是否合理。若惡意軟體在簽署前就把收款地址換掉,錢包仍可能對錯誤內容產生完全有效的簽章。硬體裝置要求使用者在可信螢幕上確認金額與收款資訊,正是在縮小這段風險。
結論可以濃縮成一句話:簽章資料本身當然能被複製,但它的有效性黏在簽署規則所選定的交易訊息上。更換輸入、收款條件或金額後,原簽章通常不再成立;只有原先明確留下的可修改範圍,或兩套共享歷史且缺乏重播保護的網路,才可能接受同一份授權。理解這條邊界,比把簽章當成不可複製的秘密字串,更接近比特幣實際的安全模型。