2021年末,Taproot升级在第709,632个区块生效。那时候的人们,沉浸在以太坊NFT的热潮之中,无人知晓这将是BTC最「造富」的一次升级。
Taproot与Segwit升级一起为BTC网络引入了新特性,也让区块数据间接扩容(相当于1MB到4MB),成为了2023年至今BTC生态爆发的导火索。TaprootAssets、OrdinalsBRC-20、ARC-20、Runes等新资产涌现,也让Taproot的转账采用率基本一直保持在一半甚至以上。
然而,新资产与新特性的引入也伴随着新的安全挑战。
比特币生态有着与以太坊生态不一样的底层模型。目前BTC新资产生态这种「好多东西都有待建设」和「理解门槛偏高」的场面,相信让很多用户都感到兴奋毕竟这往往意味着「暴富」的机会。
但这也会对用户的安全操作意识提出了新的要求,否则很容易不明不白地就丢币。甚至还出现了如之前Atomic市场错误使用签名类型导致黑客攻击的事故。
下文深入浅出告诉大家如何在安全基础设施有限的BTC生态,最大程度保护资产安全,预防钓鱼。
在讲述具体的防钓鱼措施之前,我们需要铺垫下Taproot升级的影响。
除了此前提到间接促进了BTC多资产生态的繁荣之外,在BTC交易底层其实也发生了很大的变化,主要是两个:Schnorr签名和MAST技术。而这两者结合PSBT(部分签名交易)之后,便让黑客钓鱼的发挥空间更多了。
一个是Schnorr签名。没错,这次升级把白皮书里的ECDSA签名换掉了。这个签名的技术特性是多个签名或者公钥聚合为一个。以往需要多个签名一次次确认的工作,现在只需要验证一次,直接缩小了签名的占用空间。
一个是MAST技术。如果说前者是聚合签名,那么MAST就是用来「聚合」多个脚本(对于脚本,你可以理解为比特币的有限「智能合约」)。同时,提交验证解锁花费的时候,也只需要验证花费条件其中的一个。很多条件的复杂的脚本的占用空间可以大大缩小。
这两个技术对隐私性的影响是最大的,同时也隐含了安全风险的空间。
对于转账记录,升级后所有的UTXO转账看起来都一样。在Mempool里面转账类型都显示为P2TR,地址都是bc1p开头相同长度的地址。
在以前,你可以很轻松区分转账到普通地址(P2PKH/P2WPKH)和转账到脚本地址(P2SH/P2WSH)的区别。
现在观察其他人花费掉一个UTXO之前,你根本无法分辨转账到普通地址与转账到脚本地址的区别。
对于脚本,矿工验证也只需要暴露脚本的一个花费条件,其他的分支脚本,外界不得而知。
显然,目前BTC一层的资产生态的安全基础设施远没有以太坊强大,有许多东西需要用户先行理解学习。
同时,钓鱼的原理也和以太坊不太一样,很多钓鱼攻击在被发现之前可能整个市场都不太了解。例如Atomic市场的*SIGNHASH_NONE签名安全事故,Unisat/Xverse钱包也是后来才加入的安全提醒。
也就是注意私钥离线储存安全、注意是否为信任的网址和注意保护电脑不要中招木马病毒等等。
可是,在FOMO的市场中,新项目可能尚未形成信任共识就会有用户想要去「冲」,这时候接下来的几个心术就尤为重要。
以太坊有「盲签名」。也就是说在签名的时候,如果钱包不解析,你只能看到一段乱七八糟的字符,无法预知签名之后资产会发生什么变化。这也就造成了丢币的风险。
而在比特币中,一定会明确一个交易的输入和输出,以及输入输出的对应的转账地址。(也就是:「从哪来,来了多少币」和「到哪里去,去了多少币」。)
签名的时候,不论是否使用PSBT,交易前后会发生的变化,是一定会明确地显示在钱包中。所以核对输入输出是否符合自己的意图预期,非常重要。
例如假如黑客想要一次性钓走你的所有Ordinals铭文NFT,在交易的输入(INPUT)中,一定会显示你的所有铭文NFT都被放进去了。同时输出(OUTPUT)中会显示他们都去到了陌生的地址里。
以使用Unisat在MagicEden挂单Ordinals铭文NFT为例子。当你在MagiEden市场挂单一个或者多个铭文NFT时,弹出的PSBT签名请求会显示交易的输入(INPUT)是你的某一个铭文或者多个铭文,输出则会显示,一旦交易成功,你会收到多少的比特币。
你可以在这里看到比特币目前的签名类型的科普(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类的签名类型。如果看到了相关的签名类型的提示,在非特殊用途的情况下,不要使用这种签名。
假如某个项目或者平台,需要你转账资产到某个脚本地址,你要格外小心。在签名的时候,你会看到你的资产在输出中去到了一个陌生的地址。
根据此前的内容你会知道,Taproot升级后,脚本地址和用户私钥地址是一样的。
假如盗窃者试图用私钥地址欺骗,收到的资产是可以直接转走的。
假如是真的脚本地址。那要看他们是否公开了脚本地址的全部内容。假如是公布不完整的内容,尽管在使用的时候用户可以正常地签名操作转移资产,也有可能隐藏了一个或者多个的恶意UTXO解锁条件。可能会在未来某一天突然「收网」转走全部的UTXO资产。
即使他们开源了整个脚本的内容,目前市面上的钱包也并没有验证脚本MAST完整性和输出地址的对应性的功能,需要懂技术的用户自行使用Taproot的算法确认。或者十分信任这个项目和团队。
好在对于目前的应用,各种铭文资产的交易都不需要使用复杂的脚本,使用PSBT(部分签名交易)来规定好输入和输出即可。
但是在未来的BTCL2操作中,大概率会涉及到复杂多条件的比特币脚本。例如Babylon@babylon_chain 的比特币质押脚本中,就有相对复杂一些的罚没逻辑和解锁逻辑。
假如你要使用这种比特币脚本的原生质押方式,此时开源脚本并验证安全性、完整性就尤为重要,否则就需要用户绝对信任项目方。
关注安全领域的头部账号,保证自己能跟上最新钓鱼手法,第一时间获得警告。诸如SlowMist的余弦@evilcos、GoPlus安全官方@GoPlusSecurity、ScamSniffer@realScamSniffer、我们OneKey官方账号@OneKeyCN 。
关于防患于未然,我们可以迁移其他地方的安全经验。
例如,在以太坊中,有这样一种钓鱼方式即构造头尾相似的地址,导致用户在历史记录中错误复制而丢失资产。而在构造BTC签名交易的时候,也有可能因为没有清楚地检查输出的地址而踩到坑。
在Unisat/Xverse等主流BTC生态钱包中,Taproot地址展示为bc1pxe9wh0(例),而bc1p为Taproot地址的固定开头。
这相当于只展示了6个字母为用于确认。相对有常用地址通讯录功能、基本都展示10位以上的以太坊的钱包标配,显然还不够。
这意味着黑客有不小的可能,去通过生成匹配的地址进行定制化钓鱼(尽管目前在比特币上还不多)。
所以如果做的绝一些,防患于未然,应要核对尽可能完整的地址。
总之......
StudyBitcoin.
StudyBitcoinSecurity.
随着Taproot为比特币引入新资产新场景,我们也必须学习新形式的安全威胁,尤其是不断演化的钓鱼技术。
尤其是现在生态基础设施不完善的情况,即使是误操作丢币、烧币都时有发生,更别说精心策划的钓鱼了。
非常好学习网(www.veryok.net)工作总结,工作计划,活动方案,申请书范文,满分作文,读后感,观后感,祝福语等!
Copyright (C) 2010-2026 veryok.net, All Rights Reserved 版权所有
非常好学习网版权所有 客服联系QQ:671102