克劳德·香农,奠定了信息论基础的数学家,曾用熵来衡量结果的不确定性程度。对于一个公平的六面骰子,每一面出现的概率相等——都是六分之一。这使得每次投掷产生大约2.585比特的熵。抛硬币产生1比特,投掷八面骰则产生3比特。

重要的不是被投掷的骰子在原子层面表现出随机行为。事实并非如此。结果由物理定律决定,但同时变化的微小变量太多,任何人都无法可靠地计算出最终结果。骰子以特定的速度、角度、高度和旋转离开手,然后撞击桌面并在每次反弹时改变方向。
实际上,即使是投掷方式中微小的改变也可能导致完全不同的结果。手指位置稍有不同或力量略大,都会使轨迹发生足够大的变化,以至于观察运动过程也无法预测最终的数字。理论上结果可能是确定的,但对于生成钱包来说,重要的是攻击者无法复制或计算它。
将掷骰结果转化为可用数据
计算机无法直接使用一系列掷骰结果。首先必须将投掷结果转换成二进制数据,而转换方法至关重要。
简单的“奇偶”方法易于理解,但浪费了大部分可用的熵。每次投掷被简化为1比特,尽管骰子生成了约2.6比特的信息。更高效的方法是收集一长串投掷结果并处理整个序列,通常使用加密哈希函数。这样可以保留更多的随机性。
同样的原则也是Diceware——一种久经考验的创建安全密码短语的方法——以及手动创建比特币钱包的基础。一个典型的12词钱包恢复助记词包含128比特的熵。按每次投掷约2.6比特计算,大约50次公平的投掷就能提供足够的原始信息来超过这个门槛。
硬件钱包Coldcard的制造商Coinkite公司建议,追求接近256比特熵的用户应进行99次或更多次的投掷。这并不会使钱包的使用难度加倍,但能为生成的秘密提供更大的数学安全余量。
对掷骰生成的种子进行实际检验
在Coinkite披露了一个可以追溯到2021年的固件问题后,这种区别变得尤为重要。在某些Coldcard设备上,软件可能会绕过内部硬件随机数生成器,转而使用与设备非机密信息相关的、更脆弱的流程。
由于可以恢复该算法的部分内容,攻击者可以缩小可能的钱包密钥范围,而不是搜索整个密钥空间。据估计,该漏洞导致了约1,128.6633 BTC(截至美国东部时间13:00)从大约100个地址被盗。

完全基于足够多次独立掷骰创建的钱包种子,并未通过同一渠道面临风险。这些用户提供了自己的熵,因此有故障的硬件生成器并未参与创建钱包的核心秘密。
然而,这种保护仅适用于通过掷骰生成的种子短语。它并不能自动保护设备生成的所有其他秘密数据。
Wizard Sardine分析细则
8月1日,安全研究员凯文·洛埃克在Wizard Sardine网站上发布了对Coldcard漏洞的评估。他最重要的评论涉及Coldcard中独立于钱包主种子生成自身秘密密钥的功能。
“我认为极其重要的是要强调,即使是通过导入或掷骰生成种子的用户,如果他们使用了以下功能,也仍然易受攻击,”洛埃克在X上写道,随后展示了一个易受攻击系统的示意图。
该示意图显示了有漏洞的随机数生成器如何为Coldcard的几个次要功能提供支持。这些功能包括创建纸钱包、克隆设备、加密USB会话、Secret Teleport转账功能、创建共签密钥、内置密码生成器以及硬件安全模块的认证代码生成。

通过99次掷骰创建的主钱包被保留在系统的独立部分。问题在于,其他工具仍然可能向有故障的生成器请求新的随机数据。因此,安全的种子并不能保证在同一设备上生成的每个密码、备份、认证代码或次要密钥都同样安全。
为何大多数新用户不会选择掷骰子
通过掷骰生成的熵在技术上若正确执行是可靠的,但对于大多数新用户来说,这并非一个现实的默认选项。投掷骰子50或99次,准确输入每次结果,并确保没有一次投掷被遗漏或重复,需要耐心和高度的专注力。一个输错的数字可能完全改变最终的地址,而大多数设备无法确定错误是由于投掷失误、输入错误还是对指令理解有误造成的。

这个过程也存在正常工作的硬件生成器所没有的风险。用户可能在纸上记录投掷结果、拍照、输入在线工具,或将列表留在可能被他人发现的地方。有些人可能以重复或受控的方式投掷骰子,使用做过手脚或有损坏的骰子,或者因为觉得过程过于繁琐而过早停止。数学基础可能很可靠,但结果的安全性完全取决于用户执行程序的仔细程度。

这就是为什么即使在比特币资深用户中,掷骰子也并不总是被认为是许多人的最佳方法。它用对手动过程的信任取代了对设备的信任。对于了解熵的本质、验证方法并对投掷序列保密的、具有技术警惕性的用户来说,这种交换可能有意义。对于首次设置钱包的普通购买者来说,这创造了几种可能造成不可逆错误的机会,同时也是一个乏味的过程。

此外,如果为了获得和保障资金,人们必须坐在桌旁记录99次掷骰的结果,那么比特币的大规模普及将是难以想象的。安全措施必须经受住真实家庭环境、繁忙日程、注意力分散以及不愿学习密码学的用户的考验。手动生成熵应该作为高级用户的一个可用选项,但长期目标是创建能够正确生成强随机性、清晰地解释过程、并且尽可能少需要专业知识就能操作的硬件和软件。
Coldcard持有者应检查什么
拥有易受攻击的Coldcard设备的用户首先应检查设备上安装的固件版本。然后,他们应分析在使用过时固件时使用了哪些功能,而不是仅仅关注主钱包种子是如何生成的。
任何使用易受攻击设备生成纸钱包、克隆密钥、密码、共签密钥或认证代码的人,都可能需要立即更换这些资料。安装更新可以防止新生成的秘密数据出现同样的问题,但不会修复之前已经生成的内容。
此次事件也加强了使用多厂商设备钱包的实践合理性。在多签方案中,可能需要来自不同制造商的独立硬件设备来批准交易。这种结构并不能排除固件出现错误,但可以防止单个有缺陷的随机数生成器独自危及整个钱包。








