私钥

比特币私钥是一个秘密整数,用于授权在比特币公钥下进行支出。钱包软件使用私钥创建数字签名;比特币节点使用相应的公钥验证签名,而无需学习私钥。任何获得可用私钥的人通常都可以授权与其合法控制者相同的支出条件,因此密钥必须保密。
私钥不是比特币地址。地址对有关锁定脚本或支出条件的信息进行编码,旨在共享以接收付款。现代钱包可能会从一个受保护的种子中派生出许多密钥和地址,并且某些支出条件需要多个密钥而不是一个。
数学基础
比特币使用 secp256k1 椭圆曲线。有效的密钥是一个 32 字节的值,解释为从 1 到 n−1 的整数,其中 n 是曲线生成器的阶数。通过椭圆曲线点乘计算出相应的公钥。此操作被设计为单向操作:BIP 32 描述从公钥恢复私钥需要大约 2128 椭圆曲线操作(在假定的 secp256k1 安全性下)。[1]
比特币历史上使用 ECDSA 签名。 Taproot 输出使用 BIP 340 Schnorr 签名方案,该方案也使用 secp256k1。[2]密钥的数学强度并不能保护它免受弱随机性、有缺陷的随机数生成、恶意软件、侧通道或不安全的备份过程的影响。
生成与推导
钱包应使用加密安全的随机数生成器生成密钥,或使用经过审查的确定性钱包方案派生密钥。 BIP 32 定义了分层确定性 (HD) 钱包,其中根种子生成扩展密钥树。扩展私钥包括密钥材料和链码,可以派生出整个分支,因此暴露它可能会危及许多地址而不是一个。[1]
恢复字本身并不是普通的私钥。在 BIP 39 等方案中,钱包生成的熵被编码为单词序列并转换为种子,HD 钱包从中导出密钥。[3]因此,恢复短语或根种子至少与派生私钥一样敏感。一个人选择的单词并不能安全地替代钱包生成的熵;请参阅脑钱包。
扩展密钥和派生路径
扩展公钥可以派生并监视非强化公钥的分支,而无需获得普通的支出权限。这对于只读钱包和接收系统很有用,但它也揭示了该分支的交易关系和余额。根据 BIP 32,公开非强化子私钥及其父扩展公钥可以泄露父私钥;强化推导旨在防止特定的升级。[1]
派生路径标识密钥在 HD 树中的位置。如果钱包类型、派生方案、脚本类型、帐户或可选密码未知,仅种子可能不足以直接恢复。因此,备份应包括软件记录的恢复过程所需的非秘密钱包元数据,而不是将秘密材料放在在线笔记中。
表示和钱包描述
私钥可以在内部存储为 32 字节。旧版软件可以以钱包导入格式 (WIF) 导出单个密钥,这是一种包含网络和公钥压缩信息的 Base58Check 编码。扩展私钥具有不同的编码,通常以特定于实现的前缀开头,例如 xprv。
编码并不会使密钥更安全。十六进制、WIF、扩展私钥、二维码、助记词和钱包备份都可以泄露支出权限。本文故意不提供有效的私钥示例,因为示例经常被复制、索引或错误资助。
输出脚本描述符提供了如何导出钱包脚本和密钥的机器可读描述。描述符可以仅包含仅监视钱包的公共信息,也可以包含私钥材料;后者必须作为秘密予以保护。比特币核心的描述符钱包接口区分公共描述符和私有材料返回的描述符。[4]
导入、扫描、重新扫描
导入私钥将其添加到钱包中,以便钱包可以监控和花费相关输出。 Sweeping创建一个交易,将这些输出移动到由接收钱包控制的新密钥。行为因钱包、脚本类型、描述符支持和重新扫描策略而异。单个导入的密钥可能无法重建相关的 HD 钱包地址或原始钱包的备份策略。
请勿将资助的私钥或恢复短语粘贴到网站、区块浏览器、转换器、支持聊天、AI 提示或不熟悉的钱包中。请遵循创建备份的钱包的文档。如果必须恢复旧密钥,请在受控设备上使用受信任的最新软件,并在转移资金之前验证目标钱包。
托管安排
并非每个比特币输出都由一个私钥控制。常见的安排包括:
- 单签名托管,一键满足消费条件;
- 多重签名托管,其中需要多个密钥的阈值;
- 硬件签名,其中设备隔离密钥材料并签署批准的交易;
- 仅观察协调,其中在线系统构建和监控交易,但单独的系统对它们进行签名;和
- 阈值签名,各方共同创建签名,而无需在一个地方重建一个完整的私钥。
这些安排改变了故障模型,而不是备份的需要。多重签名钱包可以减少对一台设备的依赖,但恢复还需要正确的脚本或描述符、密钥来源、阈值策略和足够的幸存签名者。未经测试的复杂性本身可能会导致永久性损失。
旧密钥存储
纸钱包和物理比特币通常存储单个私钥或加密的私钥记录。 BIP 38 为此类记录指定了使用 scrypt 和 AES 的密码保护格式。[5]这些格式在恢复历史资金时仍然具有相关性,但它们缺乏现代高清备份的许多属性,并且可能因打印机泄露、介质不可读、密码较弱、软件不兼容或部分支出后意外重复使用而失败。
密码短语仅保护其熵和实现。加密不会修复可预测生成的、加密前复制的或解密时暴露的密钥。
安全和存储
常见的故障模式包括:
- 恶意软件、剪贴板替换、屏幕截图、日志记录或云同步泄露秘密;
- 可预测或有偏差的随机数生成;
- 用户选择的短语,可以离线猜出;
- 重复使用源代码、文档、谜题或网站中发布的密钥;
- 丢失、损坏或备份不完整;
- 要求提供种子或密钥来“验证”、“同步”、“认领”或“恢复”钱包的网络钓鱼;和
- 泄露扩展私钥,或在不安全的 BIP 32 设计中将非强化子私钥与相关扩展公钥数据组合。[1]
良好的备份策略取决于钱包和威胁模型。典型的保护措施包括使用维护的钱包软件、在物理受保护的位置保存离线备份、使用非敏感或测试数据测试恢复以及在适当的情况下使用硬件签名设备。备份应该考虑到盗窃、物理损坏、丧失能力、继承和软件过时,而不会不必要地增加可以读取机密的人员或系统的数量。
疑似妥协
如果私钥可能已暴露,请将其视为已泄露。在受信任的设备上,创建一个具有新熵的新钱包,验证其备份,并将资金转移到新的接收地址。对于复杂的钱包或金额较大的钱包,首先确定哪些输出和相关密钥可能受到影响,并在不泄露秘密的情况下获得合格的帮助。转移后不要重复使用旧密钥,也不要依赖于删除一份副本:攻击者可能已经保留了它。
私钥、公钥和地址
- 私钥创建签名并且必须保密。
- 公钥允许节点验证签名并可以从私钥派生。
- 比特币地址是与特定输出脚本相关的面向用户的编码;它不仅仅是公钥的另一个名称。
- 扩展密钥将密钥与链码相结合以进行确定性推导,并且可以代表钱包的整个分支。
- 描述符描述一个或多个输出脚本及其密钥派生;它可能仅供公开,也可能包含私人材料。
另见
参考资料
- ↑ 1.0 1.1 1.2 1.3 BIP 32: Hierarchical Deterministic Wallets, “Conventions” and “Security”, accessed 27 August 2026.
- ↑ BIP 340: Schnorr Signatures for secp256k1, “Public Key Generation” and “Default Signing”, accessed 27 August 2026.
- ↑ BIP 39: Mnemonic code for generating deterministic keys, accessed 27 August 2026.
- ↑ Bitcoin Core 30.0 RPC: listdescriptors, accessed 27 August 2026.
- ↑ BIP 38: Passphrase-protected private key, accessed 27 August 2026.