作者:Yajin;来源:Yajin科研创业
2026 年 7 月底,一批用 Coldcard 硬件钱包的人,在毫不知情的情况下把数字货币丢了。
Coldcard 是比特币圈里口碑很好的硬件钱包,主打安全:一个手掌大小的专用设备,私钥锁在里面,签名也在里面完成,平时完全不联网。很多人买它,看重的就是它离线、私钥不出设备。
可就在 7 月 30 日,攻击者在 41 分钟里,把 1196 个 Coldcard 钱包里的一千多枚比特币一次性转走,按当时价格接近 7000 万美元(CoinDesk[1])。攻击者自始至终没碰过任何一台设备。这些钱包很多都离线存放了好几年,持有人以为它们放在了最安全的地方。

一家做比特币安全的公司 CEO 在事发后写道:从 2021 年起,用这批 Coldcard 生成的每一组助记词,接下来几天都会变成公开信息(Bitcoin Magazine[2])。
为什么一个离线的、私钥不出设备的硬件钱包,会被人隔空转走?这是因为大多数人对硬件钱包为什么安全的理解,本身就是错的。我们见过很多人把"我用了硬件钱包"直接当成"我的数字货币安全了"。这篇文章想讲清楚:你的数字货币到底靠什么守护,硬件钱包能守住哪一层,又守不住哪一层。
在区块链上,管住一笔数字货币的是一把钥匙,不是账户。
这把钥匙叫私钥,本质上是一串很长的随机数字。谁掌握这串数字,谁就能对转账签名、动用对应地址里的钱。这和银行完全不同:银行卡密码丢了可以重置,账户被盗可以挂失,而私钥一旦落到别人手里,这笔钱就归了别人。
一串几十位的随机数字,人记不住。于是就有了助记词,通常是 12 或 24 个英文单词,把那串数字换成更容易记录和备份的形式。
一个钱包里往往不止一个地址,这些地址和私钥并不是各自单独生成的,而是从同一个源头派生出来的。助记词记录的就是这个源头:它先经过一套公开的固定运算,生成一颗种子(seed),种子再按"分层确定性"(HD)的规则,派生出这个钱包里成千上万个私钥和地址。所以助记词的安全等级比单个私钥更高:丢掉一个私钥,损失的只是一个地址;丢掉助记词,整个钱包都会失守。

那么,这串最初的随机数字,是怎么来的?
答案是随机生成。钱包设备要在天文数字那么多种可能里,随机取出一个数字,作为整个钱包的源头,助记词、种子和所有私钥都由它决定。这里的"随机",是整个安全的根基。可以把它想成去庙里求签:签筒里的签越多、摇得越没有规律,别人越猜不出你摇到的是哪一支,只不过这里的签多到天文数字。签筒里有多少种可能、摇得有多没规律,安全领域把它叫做熵。熵越高,越安全。
真正的随机并不容易。计算机本质上是台按固定规则运转的机器,让它生成一个真正随机的数,它其实做不到,只能按某个公式算出一个"看起来很乱"的数。为了得到高质量的随机,正规的硬件钱包里会专门放一个硬件随机数发生器,用物理噪声(比如电路里的热噪声)产生真正的随机,相当于摇一个真正的骰子。
Coldcard 出问题,就出在这一步。
它 2021 年 3 月的一次固件更新,因为一个构建配置的疏忽,设备在生成这个根随机数时跳过了硬件随机数发生器,改用一段可预测的软件算法来生成(Block 工程团队复盘[3])。结果,签筒里本该有天文数字那么多支签,实际只剩下极少几种可能。对攻击者来说,猜中的难度从"宇宙里挑一粒沙"降到了只剩几种。他们不必碰设备,把这有限的可能逐一算一遍,就能反推出私钥。

于是,那 1196 个离线冷钱包,设备一直锁在抽屉里,私钥也确实没有离开设备,可它们的私钥从生成的那一刻起就能被算出来。攻击者不必碰设备,几十分钟就批量把它们转走。设备本身没有被攻破,被攻破的是它生成钥匙时依赖的随机数。
所以,数字货币的安全,从来不取决于设备离不离线,而取决于那把钥匙够不够随机、够不够保密。 硬件钱包守住的是保密这一环,可一旦随机性出了问题,离线也无济于事。
如果觉得"随机数不够"只是个小众技术问题,不至于出大事,那么另一起事件的金额要大得多。
2025 年 10 月,美国司法部宣布没收约 12.7 万枚比特币,按当时价格约 150 亿美元,是美国历史上金额最大的一次资产没收(BlockSec 分析[4])。这批比特币名义上的持有人,是柬埔寨太子集团(Prince Group)的创始人陈志,他被指控在东南亚经营大规模"杀猪盘"诈骗。
真正的关键不在没收本身,而在这批比特币的来路。链上分析公司追踪发现,这 12.7 万枚比特币源自 2020 年 12 月的 Lubian 矿池被盗事件,金额几乎完全吻合,应为同一批(Arkham 研究[5])。Lubian 当年为什么会被盗?调查指向的原因和 Coldcard 一样:生成私钥用的随机数太弱,以致私钥可以被暴力破解,据估算破解一个只要一个多小时。
一边是普通人的几百枚比特币,一边是牵动国家级机构的 12.7 万枚比特币,根源却是同一个:随机数不够。无论金额大小,弱随机数都同样致命。
这类事还在不断发生。2022 年有一个叫 Profanity 的工具,用来生成"靓号"地址,也就是开头或结尾带一串好看字符的地址,曾一度流行,可它生成私钥用的随机数同样太弱,这些地址的私钥后来都能被反推出来,做市商 Wintermute 因此损失约 1.6 亿美元。这个漏洞我们当时第一时间做了分析(BlockSec 分析[6])。后来我们还用它做过一次白帽救援:一笔被盗资金正好停在一个 Profanity 生成的地址里,我们用同一个漏洞反算出私钥,赶在对方转移之前追回了这笔钱,交还给项目方(BlockSec 救援复盘[7])。
钥匙的来源讲清楚了,另一个同样关键的问题是:这把钥匙,该由谁、由几方才能动用。这决定了一笔钱是一个人独自支配,还是需要多方共同批准。
自托管和托管,是两大类。自托管是私钥、助记词都在自己手里,不受第三方控制,硬件钱包、手机钱包都属于这一类,代价是丢失、被盗、备份缺失的后果都得自己承担,没有人兜底。托管是把数字货币放在交易所或专业托管方那里,私钥由他们保管,自己只有一个账号,好处是有客服、能找回、用起来跟银行差不多,代价是并不直接持有私钥,得信任那家机构不出问题、不携款潜逃。两种方式没有绝对的优劣,只有适不适合。分清自己更担心哪一类风险,比照搬"必须自托管"更重要。
如果选自托管,钥匙还可以有几种"由谁签"的安排。这几种经常被混淆,其实差别很大,用几个类比就能分清。
单签:一把钥匙开一把锁,由一个人掌控。最简单,也最脆弱,钥匙一旦丢失,资产全部损失。前面 Coldcard 被盗的,都是单签钱包。
多签:一扇门上装了好几把锁,要凑够几个人各自插上自己的钥匙,门才打开,比如常说的"5 个里任意 3 个"。任何一个人的钥匙丢了或被盗,钱仍然安全,因为单把钥匙开不了门。企业和大额金库常用这种。
合约多签:同样是几个人一起开锁,只不过这套规则不是私下约定的,而是写成一段公开的程序(在以太坊这类链上叫智能合约),谁是签名人、要几个人、每一笔谁签过,都公开可查。透明是它的突出优点。它也有一处短板,和后面要讲的盲签有关。
MPC(多方计算,也叫门限签名):这个常被误解成"把一把完整钥匙切成几段分给几个人",其实不是。真正的做法是,几个人从一开始就各自拿着一块碎片,一把完整的钥匙从头到尾都不存在。签名时,每个人用自己那块碎片算出一部分,几部分合到一起,直接生成一个完整、标准的签名,而完整的钥匙从头到尾都没有出现过。它更灵活、成本更低,也便于更换参与方。
另一种做法听起来很像,其实差别很大:把一把已经存在的完整钥匙,切成几段分开保管(技术上叫 Shamir 秘密共享,简称 SSS)。它和 MPC 的差别在一处:SSS 签名时,要先把够数的碎片凑到一起,在某个环境里把完整钥匙拼回来,再用它签名;MPC 则从不拼装,完整钥匙不会出现。
这并不意味着 SSS 不安全。只要每一片分片都存放在可信执行环境(TEE,也就是设备里一块与外界隔离的安全区域)里,拼装也在这块安全区域内完成,完整钥匙始终不暴露在外,SSS 一样安全可靠。它的安全性取决于拼装在什么环境里发生:放在 TEE 这类隔离环境里就没问题,只有当拼装发生在普通、不受保护的环境里时,完整钥匙才可能泄露。MPC 则从机制上省掉了拼装这一步。

判断一个方案是不是真的分散,与其记名字,不如看一点:签名的那一刻,某个地方会不会出现一把完整的钥匙?如果会,那个地方守得够不够严。
还有一个绕不开的问题:不管是 MPC 还是 SSS,钥匙一旦拆成分片,这些分片交给谁保管?这决定了资产的安全程度,也决定了到底要信任谁。常见有三种。第一种,分片都在自己手里,分散在自己的几台设备上,属于纯粹的自托管,最独立,但备份和恢复的复杂度也全落在自己身上。第二种,自己和一家服务商各持一部分,比如三片里自己拿两片、服务商拿一片,市面上大多数 MPC 钱包都是这么做的,好处是丢一台设备不至于全部损失、服务商还能协助恢复,代价是要信任这家服务商不作恶、不出事。第三种,交给一组互相独立的机构分持,多用于企业金库。分片本身不等于安全,关键还是看这些分片由谁保管、彼此独立到什么程度。
上一层讲的是谁来签,这一层讲的是另一件完全独立的事:私钥这串数字物理上存在什么地方,以及它能不能被复制出去。硬件钱包的价值和局限,都在这一层。
软件钱包:私钥存在手机、电脑或某个服务器的软件里。最方便,但也最脆弱,一旦设备感染木马,私钥就可能被读取。
硬件钱包:私钥存在一个专用小设备的安全芯片里,签名在设备内部完成,私钥不主动离开设备。Ledger、Trezor 和前面的 Coldcard 都是这一类。它挡住了一大类风险:电脑上的病毒,触及不到安全芯片里的私钥。
但硬件钱包有个关键的局限:普通硬件钱包里的私钥和助记词,是可以被导出的。 这本是为了备份、恢复、换设备,可它也意味着,只要有人能接触到设备,或者接触到抄下来的助记词,就能复制出私钥,在任何一台电脑上动用这笔钱,全程不必碰持有人那台设备。所以私钥存在自己设备上,并不意味着别人拿不走。
为了防住助记词被人拿走,还有一个常被忽略的机制,叫 passphrase(口令)。它相当于在 12 或 24 个助记词之外,再加一个只有自己知道的密码,可以是一个词,也可以是一句话,因此常被称作"第 25 个词"。助记词加上这个口令,才共同算出真正的钱包;换一个口令,得到的是另一个完全不同、互不相干的钱包。这个口令不存在设备里,也不在助记词里,只在使用者脑子里。
它正好防住前面那种情况:即便助记词被抄走、拍照,甚至像 Coldcard 那样被反推出来,只要攻击者不知道口令,他打开的也只是一个空钱包,真正的资金在另一个由口令派生出的地址里,不受影响。事发后不少人指出,当初设了 passphrase 的 Coldcard 用户,很可能没有受损。
这套机制有代价:口令没有任何找回渠道,一旦忘记,资金会连同助记词一起永久无法恢复;口令若设得太简单,也就失去了作用。所以它适合能管好一个额外秘密的人,用来给大额资产再加一道别人拿不走的锁。
真正从物理上堵死"导出"这条路的,是更高一级的 HSM(硬件安全模块),一种银行和大机构在用的防篡改硬件:钥匙在里面生成,被标记为不可导出,物理上无法离开硬件,一旦遭到拆解,它会自动清除内部的钥匙。这也是它和消费级硬件钱包的本质区别。
除此之外还有"温度"的说法,讲的是私钥离网络有多近、动用起来有多快。冷钱包完全离线,相当于把钥匙锁进地下室的保险柜,最安全也最慢,适合存放大额、长期不动的资金。热钱包始终联网、随时能签,相当于把钥匙带在身上,最快也最危险,只适合存放小额、需要频繁动用的资金。稳妥的做法是分层:大部分放冷钱包,一小部分放热钱包,不要把全部资产都放在随时能动用的地方。
综合这两层,硬件钱包的定位就清楚了。它确实解决了一个真问题:让私钥离开联网的电脑,躲开绝大多数病毒和远程入侵,这份价值是实实在在的,但它管不了三类问题:造钥匙时随机数够不够(Coldcard 就栽在这里)、抄在纸上的助记词有没有被人看到,以及下面要讲的一类,私钥根本没丢,持有人却亲手把钱转了出去。
只要私钥守得好、随机数也足够随机,是不是就万无一失了?还有一整类攻击,根本不去偷私钥,而是诱导持有人自己签下一笔看似正常、实则危险的交易。硬件钱包对这类攻击帮不上忙,因为签名确实是本人亲手按下的。
这类攻击的核心叫盲签。在硬件钱包上按下确认时,屏幕上本该显示"转 1000 USDC 到某某地址",可现实里,很多复杂交易在小屏幕上只能显示成一长串看不懂的乱码。签名者其实是在看不懂的内容上确认,以为批准的是一笔正常交易,实际批准的是另一笔。

2025 年 2 月的 Bybit 事件正是这样发生的,一次被转走约 15 亿美元,是史上最大的加密货币盗窃案(BlockSec 深度分析[8])。Bybit 用的恰恰是"多签加硬件钱包"这套被公认最稳妥的方案。攻击者没有去偷私钥,而是攻陷了签名界面背后的一个第三方工具,让签名者在屏幕上看到一笔正常交易,实际批准的却是一份把金库控制权交出去的恶意程序。多签和硬件钱包都在正常工作,仍然没能防住盲签:几名签名者在被篡改的界面上,一起批准了错误的交易。
同样的攻击方式,2024 年又出现在印度交易所 WazirX(约 2.3 亿美元,The Record 报道[9])和借贷协议 Radiant Capital(约 5000 万美元,官方复盘[10])身上。这类 Safe 钱包盲签攻击,我们在那篇 Bybit 分析里做过系统梳理(BlockSec 分析[8])。Radiant 那一次尤其能说明问题:开发者用了硬件钱包、用了交易模拟工具、走了标准流程,最后还是被攻破,因为硬件钱包解析不了那种复杂交易,签名者看到的依然是一串乱码。
防住盲签靠的不是更谨慎,而是引入一个独立的第三方,在签字之前用一套独立的系统把交易翻译成看得懂的内容,再核对一遍。关键在于"独立":如果只信自己的界面,一旦界面被篡改(Bybit 就是这样),拿自己的界面核对自己,等于没有核对。
还有一类更日常的陷阱,叫地址投毒。攻击者会在转账历史里植入一个与常用收款地址高度相似的地址(往往开头结尾几位都一样)。下次转账时,习惯性地从历史记录里复制粘贴,稍不注意就会选中那个伪造的。2024 年就有人这样一次损失约 6800 万美元(后来追回,CoinDesk[11])。这类攻击利用的是复制粘贴这一普遍习惯,硬件钱包同样挡不住,因为签的是一笔真交易,只是收款地址被本人选错了。转账前完整核对地址,尤其是中间几位,是最可靠的办法。
前面讲的都是人在用钱包。接下来几年,会出现一个新的使用者:AI Agent,一个能自己读网页、调用工具、完成付款的程序。让 Agent 帮忙管钱、自动完成一些小额支付,前景不错,但它带来的安全挑战是全新的。
问题的根本在于,AI Agent 分不清哪句是用户的指令、哪句是它读到的攻击者的话。对它而言,用户的命令和它从网页、文档里读到的文字,属于同一类输入。于是攻击者只要在某个网页里藏一句话,就可能诱导 Agent 执行未经授权的操作,比如把钱转走。这类攻击已经被反复验证。所以对一个能碰钱的 AI Agent,就该把它当成一个可能已被控制的内部账户来防范。
面对这种不确定,一种常见做法是给 Agent 设定提示词规则,叮嘱它"别做坏事",但这种做法并不可靠。没有谁能保证一个概率模型每次都听话,一个"通常"会拒绝恶意交易的模型,提供的只是概率,而不是确定的防线。真正的安全,不能依赖模型这次刚好没出错,而要建立在一套确定性的规则引擎上:由一段和模型完全无关、写死的程序,最终裁决这个 Agent 能动什么、不能动什么。
这一原则已有具体实现。BlockSec 开源的 Web3 Companion[12] 就是这样一个参考实现。它假设 AI Agent 完全不可信,即便被彻底攻陷,也动不了用户的钱。做法是把私钥和最终授权,放在 Agent 够不到的地方,Agent 全程只能提议一笔交易,是否放行由几道它无权修改的确定性检查决定,包括写死的限额、白名单,以及最后一道用户本人的指纹或人脸确认。AI 可以协助操作,但不能让它单独掌握最终授权。
把这些年有代表性的钱包安全事件放在一起,会发现根因反复出现,归起来就是有限的几类。理解这些根因,才知道自己该防什么。
按根因可以分成四类:造钥匙时随机数不够(Coldcard、陈志、Profanity)、私钥或助记词被泄露(Slope、Atomic)、盲签(Bybit、WazirX、Radiant)、被诱导转错地址(地址投毒、钓鱼签名)。硬件钱包主要能防住第二类里"病毒偷私钥"的一部分,对其余三类基本无效。可见安全不取决于买到哪台"最安全的设备",而在于把这几类风险分别防住。
对普通人来说,不必成为专家,记住下面几条,就能避开绝大多数风险。
第一,不要把全部资产集中在一个钱包、一台设备上。分散存放,一处出问题,不至于全部损失。Coldcard 事发后,币安创始人 CZ 也在强调这一点(CoinDesk[13])。
第二,助记词只抄在纸上,不要放到网上。不要拍照、上传网盘或通过微信发给自己。抄在纸上,分开存放在两个安全的地方。它一旦变成数字文件,就相当于暴露在联网环境中。
第三,大额资金用多签或 MPC,不要用单签。只由一把钥匙控制的资金,钥匙一旦丢失就全部损失。让动用这笔钱需要多方共同批准。
第四,签名前看清自己在签什么。看不懂交易内容,就先不要签。大额转账,用一个独立的工具再核一遍收款地址和金额,尤其警惕任何催促"立即签名"的情形。
第五,分清自己更担心哪一类风险。如果担心自己保管不当、希望省事,把大部分资产放在可靠的托管方,未必比自己盲目操作更危险;如果希望资产完全自主,就要切实做到前四条。没有普适的方案,选择适合自己的即可。
回到开头那批离线冷钱包。它们的持有人做了很多正确的事:选用口碑很好的硬件钱包、离线存放、私钥不出设备。他们只是没想到,问题出在最源头:设备当年生成这些钥匙用的随机数,从一开始就不够随机。
保护数字货币的关键,是那把钥匙,而不是某一台设备。钥匙生成得足够随机、保管得足够严密,比守好任何一台硬件都重要。
这篇讲的是普通人怎么守住自己的数字货币。如果是企业、要做稳定币的收付款,要守的就不止一把钥匙:从密钥管理、多签架构,到牌照和链上合规,要求要高得多。这方面我们专门写过一份白皮书,《稳定币支付进入规模化阶段,企业如何跨过安全与合规两道门槛》,感兴趣可以关注我们后续的推送。
声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。
白话区块链
PANews
华尔街见闻
