This article has been translated from English to Simplified Chinese.

在本课中,我们将学习数字签名在比特币和其他加密货币中的实际应用。

为了达到这个目的,我们必须先学习几个技术概念,因为它们是创建数字签名所需的“构建模块”:

如果您不熟悉这些概念,可以在之前的课程中找到通俗易懂的解释。点击以上链接了解更多。

数字签名是如何创建的?

让我们逐步了解数字签名的过程:

  1. 当您想发送比特币时,您的钱包会创建一个交易信息。该信息包含您想发送的比特币数量和收款人的地址等信息。
  2. 该信息通过哈希函数处理。
  3. 哈希函数生成一个输出,称为“消息哈希”或简称“哈希”。
  4. 然后,用您的私钥对消息哈希进行加密
  5. 加密后的消息哈希值就成为“数字签名”。

以下是该流程的流程图:

How a Digital Signature is Created

因此,在这个流程的最后,您的钱包创建了两个“项目”:

  1. 交易信息
  2. 数字签名(交易消息的加密哈希值)

此时,还没有任何信息发送到比特币网络。

如果您没有注意到,交易信息本身是创建数字签名的“原料”。

因此,您不能仅使用私钥创建数字签名……您必须同时使用私钥和交易消息的哈希值

这意味着您不能将此数字签名用于其他交易。如果您试图在第二次交易中使用此数字签名,比特币网络将拒绝该签名,因为数字签名仅基于第一次交易的数据。

每个数字签名对于特定交易都是唯一的

数字签名如何验证?

为了从特定的比特币地址上花费比特币必须证明 与该地址关联的 公钥对应的私钥的“所有权”(或:知情权)。

但您希望在不透露私钥的情况下完成验证。

数字签名可以用来证明你知道与公钥关联的私钥,而无需透露实际的私钥。

让我们看看它是如何工作的:

  1. 当您发起比特币交易时,您的钱包软件实际上向比特币网络提供了三个“项目”:原始交易信息数字签名和您的公钥(与当前存储您要发送的比特币的地址相关联)。
  2. 比特币节点收到这些“项目”后,会将其分离出来。
  3. 它将提取原始交易信息,并使用您之前使用的哈希函数进行运算。(所有比特币软件都使用相同的哈希函数。)至于数字签名,它将使用您提供的公钥进行解密。
  4. 然后对比两个哈希值。
  5. 两个哈希值是否完全匹配?
  6. 如果两个哈希值匹配,则证明您是希望发送的比特币的实际所有者。

以下是流程图:

How a Digital Signature is Verified

这里有两点需要说明:

1. 能够使用公钥解密,证明发送者的身份。

在步骤3中,一旦节点能够解密数字签名,就证明了您的“身份”。

请记住,由于私钥和公钥在数学上是关联的,如果你能够用我的公钥解密信息,那就意味着我用我的私钥加密了信息。

如果你无法解密信息,那就意味着它是由别人的私钥加密的。也就是说,信息不是来自我。

2. 完全匹配的哈希值证明信息未被篡改。

在步骤6中,检查两个哈希值是否完全匹配,可以确保原始信息未被篡改

这一点非常重要,因为与数字签名不同,原始交易信息是明文,因为所有比特币交易都是公开的,所有人都可以看到。

请记住,任何细微的变化都会产生完全不同的哈希值。因此,如果有人截获了发送到节点的原始交易信息并进行了修改(例如将比特币发送到他的地址),当信息通过哈希函数时,它会产生与数字签名完全不同的哈希值。

就像手写签名将个人与特定文件联系起来一样,使用密码学的“数字签名”……通过密码学……将身份与特定信息联系起来

总结

现在您已经了解了数字签名的创建和验证方式,下面我们将从宏观的角度来了解交易“签名”的实际含义,以及发送者的“数字签名”如何用于验证其希望发送的比特币的所有权:

Digital Signature Process