
如果您的私钥是控制您加密货币的终极秘密,那么人们如何能在不需要您透露这个危险秘密的情况下给您转账呢?答案在于现代密码学中最优雅的解决方案之一:公钥。
快速说明一下:公钥是一个从您的私钥中数学推导出的密码密钥。它可以公开共享而没有风险,它允许其他人给您发送加密货币并验证交易确实来自您——而无需透露您的私钥。
这是一种让无需信任的数字交易成为可能的密码学魔法。您无需揭示秘密便能证明所有权。您可以接收资金而不暴露自己遭受盗窃的风险。
加密货币使用公钥密码学,也称为非对称密码学。您拥有两把不同的密钥,它们协同工作但不可互换。
您的私钥是主密钥——绝不要分享。它证明所有权并授权消费。您的公钥是从私钥推导而来的,可以安全共享。它用于接收资金和验证签名。
想象一下邮箱。您的私钥是只有您拥有的邮箱钥匙——它让您可以取信并证明您拥有邮箱。您的公钥就像是邮箱地址——任何人都可以用它给您寄信,但知道地址并不能打开您的邮箱。
聪明的部分在于:这两把钥匙通过单向函数在数学上联系在一起。您总是可以从私钥推导出公钥,但反过来从公钥推导私钥则是不可能的。即使是地球上所有的计算机连续运算几千年也无法做到。
当您创建一个新的加密货币钱包时,钱包会生成一个随机的私钥——256位的数字。这比可观察宇宙中的原子数量还多。
然后,钱包将您的私钥通过椭圆曲线加密函数处理。比特币和以太坊都是这种方法。这个过程是基于数学曲线属性的单向数学操作。结果就是您的公钥。
这个公钥很长,大约有130个十六进制字符。但大多数加密货币会生成一个地址——这是经过校验和验证的公钥的缩短版本,更容易处理和避免输入错误。
对于以太坊,这个过程包括用Keccak-256函数哈希公钥,取最后40个字符,再加上“0x”作为前缀。得到的样子类似于0x742d35Cc6634C0532925a3b844F9e764E03830c0。
对于比特币,它们使用SHA-256然后是RIPEMD-160进行哈希处理,添加版本字节和校验和,然后编码为Base58。您会得到类似于1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa的地址——这实际上是中本聪从创世区块开始的比特币地址。
您真正分享的是地址。它是从公钥推导出来的,而公钥是从私钥推导出来的。这整个推导链是单向的——无法逆推。
公钥实现了两个关键功能:接收资金和验证数字签名。
当有人想给您发送加密货币时,他们需要知道发送到哪里。您的公钥提供了这个信息,通常是以地址的缩短形式。他们创建一笔交易说“发送X数量到Y地址”,将其广播到网络,矿工进行验证。现在您的地址控制那笔加密货币。发送方并不需要您的私钥。
第二个功能是验证数字签名。当您发送加密货币时,您创建一笔交易并用私钥签名。这个签名证明三件事:您授权了这笔特定交易,交易没有被篡改过,并且您控制与地址相关的私钥。
任何人都可以用您的公钥验证这个签名的真实性。他们不需要您的私钥——只需要用您的公钥、签名和交易数据运行数学验证函数。如果验证通过,签名就是有效的。如果不通过,交易会被拒绝。
这就是网络在没有可信赖授权的情况下防止欺诈的方式。每个人都能独立验证交易的合法性,使用的是可以公开获得的信息。
公钥密码学依赖于非对称的数学运算——在一个方向上易于计算,而逆向几乎不可能。
想象一下摔碎一个盘子。把它砸成碎片很简单。但要完美地复原,却是不可能的。又或者混合颜料——轻松地将黄色和蓝色混成绿色,但要把绿色颜料分解回纯黄色和蓝色是不可能的。
在密码学中,我们使用椭圆曲线离散对数问题。您从椭圆曲线上的一个点开始,用您的私钥(只是一个数字)进行乘法运算,结果就是您的公钥(曲线上的另一个点)。
从私钥到公钥?简单——只需几毫秒。从公钥回到私钥?您必须尝试所有可能的私钥。这是2^256种可能性。根据现有的计算能力,这将需要比宇宙的年龄还要长的时间。
这种非对称性就是公钥密码学安全的原因所在。您可以将您的公钥发布给全世界,没有人可以通过此推断出您的私钥。数学保证了这一点。
人们常常混用“公钥”和“地址”,但严格来说它们是不同的。您的公钥是从您的私钥直接推导出来的实际密码密钥——一个用于签名验证的长字符串。您的地址是公钥哈希后的简短校验版本,用于接收资金。
在大多数日常加密货币使用中,您使用的是地址,而不是原始公钥。但是地址是从公钥数学推导出来的,所以它们本质上是联系在一起的。当您进行一笔交易时,您的钱包会包含您的公钥或可以恢复出公钥的签名。网络验证公钥是否与地址匹配,签名是否有效。
最佳实践是使用多个地址以提高隐私性。通过一个种子短语,现代钱包可以使用高清钱包(分层确定性钱包)推导出本质上无限量的公钥。您的种子短语生成一个主私钥,然后确定性地推导出子密钥。同一个种子短语,同一序列的密钥。您备份一个种子短语就可以生成数千个地址。
这里的隐私问题是:加密货币是伪匿名的,而不是完全匿名的。交易是公开的,但身份并不直接显露。您的公钥就像用户名——任何人都能看到与之关联的所有交易。如果有人通过交易所、社交媒体或区块链分析将您的真实身份与您的地址关联起来,他们就可以看到您的整个财务历史。
这就是为什么注重隐私的用户每次交易使用新地址,并且不将地址与他们的身份公开链接的原因。
传统金融需要信任银行来验证账户并更新余额。加密货币用数学取代了这种信任。您创建一笔交易,用私钥签名并广播。成千上万个节点验证您的签名,检查您的资金,并验证共识规则。不需要银行,不需要权威——只是分散的共识。公钥密码学让您在不透露私钥的情况下证明授权。
在加密货币世界中,公钥是您可共享的密码身份。它是通过单向函数从您的私钥数学推导出来的,使得反向计算成为不可能。您可以随意共享——人们用它来给您发送加密货币并验证您的签名。
这种非对称关系——一个钥匙公开且安全,一个钥匙隐秘且强大——是无需信任的数字货币成为可能的原因。您可以从陌生人那里接收资金而不会有风险。您可以在不透露秘密的情况下证明所有权。您可以在没有中介的情况下进行交易。
只要您保护好您的私钥,数学就能保证您的安全。公钥可以尽情公开——在微博上分享,把它印在名片上,放在您的网站上。只要确保您的私钥是保密的。