Public Key
公钥是一串字母和数字,由私钥通过加密方式派生而来。加密货币钱包所有者将其与他人共享,以便接收数字资产,如加密货币或非同质化代币 (NFT)。[1]
它是成对密钥中的一半——另一半是必须保密的私钥——用于公钥加密技术,在不泄露控制资金的秘密的情况下证明资金的所有权。[2] 在区块链上,公钥用于创建公共地址并验证授权交易的数字签名,而私钥则负责签名。[3]
提供公钥类似于向某人发送电子邮件地址:它可以自由地提供给任何希望发送资金的人,每个公钥地址都对应一个授权所有者从该钱包支出的私钥。[1] 共享公钥或地址不会对资金安全产生风险,而丢失私钥则意味着永久失去访问权限。[2]
概述与术语
在日常使用中,公钥和地址这两个术语经常被混淆,但它们是不同的对象。公钥是直接从私钥派生的大数,而地址是该公钥的较短哈希版本,旨在更易于共享,并增加一层抵御某些理论攻击的能力。[2]
完整的公钥通常不会显示在用户可以找到的任何地方;钱包通常显示私钥和地址,区块链浏览器会显示公共地址,但不会显示公钥本身。[3]
将公钥或地址描述为存储加密货币的地方是一种常见但具有误导性的做法。
加密货币是分配了所有权的代码和位,而不是物理保存在某个位置的东西;地址的功能更像是附加在该所有权上的标签。[3] 当两人进行交易时,他们会向对方透露自己的公共地址——地址被比作发送者发送资金所需的银行账号——但公钥本身从未被交换。[3]
这三者之间的关系是不对称的。虽然公钥和地址都是从私钥计算出来的,但反向操作几乎是不可能的:在实际操作中,无法从公钥或地址重新生成私钥。[3]
这对恢复有直接影响。丢失公钥的用户可以从私钥重新创建它,但丢失私钥的用户将发现与相应公共地址关联的任何比特币或山寨币永远无法访问,因为区块链没有中央机构或密码恢复机制。[3][2]
密钥生成与椭圆曲线数学
私钥是一个随机生成的数字,通常为 256 位长。这个密钥空间的大小正是其安全性的来源:crypto.news 将其量化为大约 10^77 个可能的值,并将其与可观测宇宙中估计的 10^80 个原子进行了比较。[2]
然后使用椭圆曲线乘法从该私钥派生出公钥——将私钥乘以曲线上固定的生成点。这是一个单向函数:正向计算速度很快,但反向操作在实际中是不可能的,因为这样做需要解决椭圆曲线离散对数问题,而目前还没有已知的有效解决方案。[2]
Investopedia 同样描述了私钥通过哈希函数(通常是椭圆曲线函数)来创建公钥。[3]
比特币和以太坊都使用相同的椭圆曲线,称为 secp256k1。根据 crypto.news 的说法,这条曲线产生 256 位私钥和 512 位未压缩公钥,或 257 位压缩公钥。[2]
公钥可以以两种形式存储。未压缩公钥为 65 字节:1 字节的前缀 0x04,后跟 32 字节的 x 坐标和 32 字节的 y 坐标。压缩公钥为 33 字节:1 字节的前缀(偶数 y 值为 0x02,奇数 y 值为 0x03),后跟 32 字节的 x 坐标,前缀对 y 的奇偶性进行编码,以便可以重建 y 值。[2]
Investopedia 指出,以太坊公钥为 64 字节,即十六进制格式的 128 个字符,并且在以太坊上,公钥由钱包自动生成。[3]
压缩格式的选择具有实际后果。从同一私钥派生的压缩和未压缩公钥会产生不同的比特币地址,因此将私钥导入使用与原始钱包不同压缩格式的钱包将生成不同的地址。[2]
地址派生
由于原始公钥很长,而且在某些链上,最好在需要之前不出现在账本上,因此钱包在共享之前会将其哈希成较短的地址。除了较短字符串带来的便利之外,从未用于发送交易的地址尚未在链上暴露其公钥,crypto.news 将其描述为针对未来量子攻击的理论保护层。[2]
这两个主要网络派生地址的方式不同。在比特币上,公钥通过 SHA-256 哈希算法,然后通过 RIPEMD-160 产生 160 位哈希;在前面添加一个版本字节,在后面添加一个校验和,结果以 Base58Check 格式编码,产生以 1、3 或 bc1 开头的最终地址。[2]
Investopedia 给出了一个兼容的描述,指出公钥首次创建时是一个长字符串,必须进行压缩和缩短,在比特币上,会添加两个零,并将结果通过 Base58Check 发送以进一步编码。[3]
在以太坊上,公钥通过 Keccak-256 哈希函数运行,所得哈希的最后 20 字节(160 位)作为地址,并添加 "0x" 前缀,以及可选的 EIP-55 校验和。[2] Investopedia 将此描述为以太坊使用公钥的最后 20 字节并在前面添加 0x。[3] 以太坊内部使用未压缩公钥,但在派生过程中剥离前缀字节,仅使用 64 字节的 x 和 y 值。[2]
安全性与随机性失效
任何密钥对的安全性完全取决于用于生成私钥的随机性质量。薄弱或可预测的随机性已多次允许攻击者恢复私钥,crypto.news 记录了几次现实世界的失败案例。[2]
2026 年 7 月,研究人员发现 Coldcard 硬件钱包五年来一直在生成薄弱的私钥,因为固件中的一个构建标志指示设备跳过其专用的硬件随机芯片。在攻击者对该弱点进行逆向工程后,钱包盗取于 2026 年 7 月 30 日开始,在漏洞公开披露之前,大约 1.16 亿美元的比特币被清空。[2]
早期的事件也遵循同样的模式。2013 年,Android SecureRandom 漏洞导致多个比特币钱包生成重复的随机数,这使得攻击者能够从交易签名中计算出私钥。[2] 2022 年 9 月,Profanity 靓号地址生成器遭到利用,研究人员发现其密钥生成仅使用 32 位种子,将有效密钥空间从 2^256 减少到 2^32(约 40 亿种可能性),这可以在几分钟内被暴力破解。[2]
为了减轻此类风险,crypto.news 建议使用具有真实随机数生成器的信誉良好的硬件钱包,并为用户提供通过掷骰子或抛硬币等方法添加自己熵的选项。
其他实际建议包括:切勿共享私钥或助记词;验证地址格式并目视确认其首尾字符,以对抗交换地址的剪贴板恶意软件;研究硬件制造商在熵方面的记录;以及保留助记词的多个安全备份,包括用于环境抵抗的金属备份。[2