术语表 /地址与密钥
私钥
- 私钥是什么?
- 私钥是一个256位的秘密数字,用于授权花费比特币输出;任何得知私钥的人都可以转移其中的比特币,而且没有人能够重新签发私钥。
比特币的所有权取决于持有私钥,而不是任何人账本中的一条记录。私钥是一个小于约1.16乘以10的77次方的随机数,因此猜出一个私钥并不构成威胁,而生成私钥时做得不好才是问题。现代钱包从不向您显示私钥:它们从12或24个单词的备份助记词派生出每一个私钥,您要保护的就是这组助记词。
运作方式
私钥是32字节,通常写成64个十六进制字符,从1到略低于 secp256k1 曲线阶的范围内随机选取。该阶为115,792,089,237,316,195,423,570,985,008,687,907,852,837,564,279,074,904,382,605,163,141,518,161,494,337,是一个78位数字。几乎每一个32字节的值都是有效私钥,这使得生成私钥非常简单,也使得通过暴力破解窃取私钥毫无希望。
签名是私钥唯一的作用。要花费一笔输出,您的钱包会用私钥对交易生成签名,每个节点则根据该输出所要求的公钥来验证这个签名。签名证明私钥存在,却不暴露私钥,因此一笔已确认的花费公布的是签名,而绝不是其背后的秘密。在 Taproot 之前,比特币只使用 ECDSA;BIP-340中规定的 Schnorr 签名在 Taproot 花费中起同样的作用。
真正的薄弱环节在于随机性。密钥空间无法被遍历搜索,但糟糕的软件可以缩小它。2013年8月,比特币项目就 Android 随机数生成器的一个缺陷发布了安全公告,该缺陷使受影响手机上的私钥变得可以预测,并直接导致了币被盗。脑钱包的私钥来自人为编造的一句话,在攻击者开始预先计算字典之后,这类钱包被系统性地清空。这两起失败都与熵有关,而不是密码学被攻破。
购买比特币时为何重要
在交易所购买并不会给您私钥。您得到的是交易所数据库中的一笔余额,其背后是交易所持有的币,而这些币所用的私钥由交易所自己的员工控制。在您进行交易期间,这种安排完全正常,但用于长期储蓄则不好。Mt. Gox 于2014年2月冻结提现并进入破产程序,其债权人一直等到2024年7月才收到首批还款。
提币是托管权真正转移的时刻。您的钱包从助记词派生出一个私钥,给出对应的地址,一旦交易所的交易得到确认,您和这些币之间就不再有任何公司。从那一刻起,各种故障风险由您自己承担:备份丢失、助记词被拍照、钓鱼网站要求您“验证”钱包。
三个习惯可以覆盖大部分风险。在专为此设计的设备上生成私钥,使秘密在不会导出它的硬件内部创建和使用。将助记词备份在耐水耐火的介质上,绝不要保存为照片或云笔记。并且把任何索取私钥或助记词的请求一律视为攻击,没有例外,因为任何交易所、钱包厂商或客服人员都不需要这些信息。
首次购买的每一步中私钥在哪里
跟踪一次购买的全过程,私钥会按一个非常明确的顺序移动。您向交易所转入资金并购买:此时还不存在属于您的私钥,只有一条账本记录。您粘贴提币地址:您的钱包根据从助记词派生出的私钥生成了该地址,而这个私钥从未离开过设备。交易所广播一笔将币锁定到您地址的交易:私钥仍然没有做任何事。数月后您决定花费,此时私钥才首次生成签名,网络对其验证并永久记录。
由这个顺序可以得出两点。私钥可以在首次使用之前控制币多年,因此一个“什么都没做过”的钱包并不是闲置或已过期。而且所有权的转移发生在提币时,而不是购买时,所以提币这一步才是值得反复核对的一步。
私钥 vs 助记词
私钥控制一组币;助记词则生成装满私钥的整个钱包。助记词是 BIP-32层级结构背后熵的一种人类可读编码:12个单词承载128位,24个单词承载256位,钱包从这个根沿着派生路径派生出数十亿个私钥。恢复助记词会重建所有这些私钥。恢复单个私钥只会重建这一个私钥,钱包在其他地方持有的币仍然找不回来。
私钥 vs 钱包导入格式
私钥是一个数字,而钱包导入格式(Wallet Import Format)是把它写下来的一种方式。WIF 将同样的32字节包裹上一个网络字节、一个可选的压缩标志和一个校验和,然后整体以 Base58 编码。底层的秘密没有任何改变,因此 WIF 字符串应得到与原始数字完全相同的保护:任何读到它的人都可以立即花费其中的币。