什么是数字签名及其运作方式?

中级Jan 19, 2024
区块链将数字签名作为其去中心化验证过程的一个组成部分,在不暴露用户身份的情况下创建了一种安全的验证过程
什么是数字签名及其运作方式?

本文介绍

数字签名是一种加密工具,用于网络安全、电子商务和软件分发等领域。它们提供了一种验证数字信息或文件的来源和完整性的方法。

然而,区块链技术将数字签名的使用普及为其去中心化和交易验证过程中不可或缺的一部分。本文将仔细研究数字签名的工作原理、区块链使用的各种算法及其在 Web3 领域的应用。

理解数字签名

来源:CoinGeek

数字签名是一种用于验证数字消息、文档或交易的真实性和完整性的加密技术。数字签名被认为比电子签名更安全。

传统上,签名确保协议具有法律约束力,验证涉及方的身份,并对合同条款的接受做出明确确认。数字签名进一步解决了篡改和伪造的问题,使其成为一种更安全的签名形式。

数字签名的特点

数字签名的主要特点包括:

  • 身份验证: 数字签名通过使用发送者的公钥来验证消息,证明消息是由声称的发送者发送的。
  • 不可否认性: 数字签名使用发送者的公钥解密签名,如果成功,发送者将无法否认发送消息的事实。
  • 完整性: 通过验证哈希值/摘要的能力证明数据在传输过程中没有被篡改。

非对称加密

来源:WikiBooks

非对称加密是一种使用两个不同密钥进行数据加密和解密的方法,因此其中一个密钥(即公钥)会公开共享给任何人。另一个密钥,称为私钥,是一个保密且安全存储的仅签名者知道的密钥。使用其中一个密钥加密的数据只能使用另一个密钥解密。

在密码学中,密钥通常是由数字和字母组成的字符串,用于将数据混淆,使其看起来随机。然而,拥有正确解密数据的密钥的人可以将其解密回原始形式。

例如,假设我们使用一个密钥(28j932d8kd8)对图像进行加密。使用该密钥加密后,我们的图像被表示为”X5CSycg14=xJ”。然而,通过使用正确的密钥解密,我们可以恢复我们的图像。

你需要了解的关键术语

哈希(Hashing)

哈希是将数据(文本、文件)转换为固定长度的字母和数字输出的过程,使用哈希函数(或散列函数)进行。它是一个单向过程,哈希值无法恢复为原始输入,但是相同的输入将始终生成相同的哈希值。

来源:CyberHoot

在上面的图片中,一段文字(谜语)通过哈希函数(SHA-256)进行处理,转换成一个哈希值(由一串固定长度的数字和字母组成)。

什么是哈希函数(散列函数)?

哈希函数是一种处理待签名数据的算法,产生一个固定大小的哈希值。哈希函数确保签名始终保持固定长度,无论原始数据的大小如何。

哈希值

哈希函数的最终输出结果是哈希值,也称为摘要(digest),它对于每个输入都是唯一的。哈希值的大小范围从32位到256位不等,取决于所使用的哈希函数。哈希值仅在数据认证或数字签名创建等过程中需要单次使用。因此,每笔交易的数字签名是唯一的。

数字签名如何运作?

要执行数字签名,您需要以下内容:

  1. 密钥对: 密钥对由公钥和私钥组成。私钥用于创建签名,相应的公钥用于验证签名。

  2. 要签名的数据: 您想要签名的内容或消息。这可以是文档、交易或任何数字数据。

  3. 哈希函数: 将哈希函数应用于数据以创建固定大小的哈希值。然后,使用私钥对此哈希值进行加密,生成数字签名。

  4. 数字签名算法: 将私钥与要签名的数据结合的算法,通常涉及哈希函数。此算法生成数字签名。

  5. 验证机制: 任何想要验证数字签名的人都需要访问公钥和相同的数字签名算法。公钥用于解密数字签名并显示哈希值,然后将其与从原始数据计算得出的哈希值进行比较。

它们如何结合起来工作?

来源:CamCert — 发送方使用其私钥对哈希值进行签名(加密),接收方通过比较哈希值来验证消息的真实性

步骤1:通过哈希函数将原始数据转换为摘要/哈希值。

步骤2:使用发送者的私钥对摘要进行签名,生成一个加密文件。

步骤3:将加密文件发送给接收者,接收者可以使用发送者的公钥对其进行解密,生成一个摘要。

步骤4:解密后,将数据再次通过相同的哈希函数运行,生成一个等效的摘要。

步骤5:通过将新生成的摘要与接收到的数据旁边的摘要值进行比较,验证数据的完整性。匹配表示数据完整无误。

让我们使用这个关于Mark作为发送方和Karen作为接收方之间文件传输的示例。

  1. 签名和发送:Mark通过发送文件来启动该过程。文件通过哈希算法生成一个摘要/哈希值。然后,该摘要使用Mark的私钥进行加密,完成数字签名;即文件和他的私钥的组合。
  2. 接收和验证:接收方Karen使用Mark的公钥解密数字签名,获取原始摘要。同时,Karen对收到的文件应用相同的哈希算法,生成另一个摘要。
  3. Karen比较这两个摘要:一个是解密后的签名摘要,一个是独立生成的摘要。如果它们匹配,Karen就可以确保文件的完整性,并确认Mark作为发送方的真实性。

区块链中使用的签名算法

选择数字签名算法取决于诸如安全要求、密钥大小和性能考虑等因素。每个算法都有其优点和缺点,并且根据密码学的进展和新兴安全挑战的出现,其使用可能会继续发展。

本节讨论了区块链技术中最常用的数字签名算法。

  1. ECDSA,Elliptic Curve Digital Signature Algorithm(椭圆曲线数字签名算法):这种算法使用较短的密钥,需要较少的计算资源,并利用”椭圆曲线密码学密钥”,这些密钥是曲线上的一组有限点,其中某些操作在一个方向上容易执行,但在反向上具有挑战性。为了安全起见,ECDSA依赖于离散对数问题。它是区块链技术中最流行的签名算法。

  2. EdDSA,Edwards-curve Digital Signature Algorithm(Edwards曲线数字签名算法):这是一种基于椭圆曲线密码学的现代高效数字签名算法。它被引入以解决某些问题并提高性能,相比于ECDSA等其他签名方案。该算法旨在通过相对较小的密钥尺寸提供强大的安全性,使其非常适用于各种应用,包括区块链技术,例如Cardano和Solana。

  3. Schnorr算法:Schnorr签名是一种数字签名算法,它能够实现聚合,即将多个对同一消息的签名捆绑为一个签名。这种签名不仅更节省空间,还能够促进更高效的验证过程。
    它在涉及多方对共同消息进行签名的场景中非常有效,比如对多重签名(multisig)地址进行交易授权。在这种情况下,每个参与方都必须提供自己的公钥和签名。因此,如果三个参与方打算对同一消息进行签名,证明将涵盖三个公钥和三个签名。这在计算和存储上似乎是低效的,因为每个节点需要执行三次签名验证函数,并存储三个不同的签名和公钥集合。.
    Schnorr算法简单地生成一个对他们的公钥求和有效的签名。密钥聚合可以减少燃气费用,并提高底层可扩展性,因为来自多重签名交易的签名与来自单方交易的签名占据区块中相同的空间量。

  4. BLS签名: BLS(Boneh-Lynn-Shacham)密码算法基于椭圆曲线群上的双线性配对。它由Dan Boneh、Ben Lynn和Hovav Shacham于2001年引入。BLS密码学的主要重点是高效且安全的签名方案,支持聚合等独特属性。此外,BLS签名被用于以太坊2.0和Chia。

区块链哈希算法(Hashing Algorithm)和签名算法(Signature Algorithm)

  1. 比特币(BTC):
    哈希算法:SHA-256
    数字签名算法:ECDSA,Schnoor(TapRoot软分叉)

  2. 以太坊(ETH):
    哈希算法:Keccak
    数字签名算法:ECDSA

  3. 莱特币(LTC):
    哈希算法:Scrypt
    数字签名算法:ECDSA

  4. 瑞波币(XRP):
    哈希算法:SHA-256
    数字签名算法:ECDSA

  5. 卡尔达诺(ADA):
    哈希算法:Keccak
    数字签名算法:EdDSA(Edwards曲线数字签名算法)

  6. Polkadot(DOT):
    哈希算法:Blake2
    数字签名算法:EdDSA

  7. Tezos(XTZ):
    哈希算法:Blake2b
    数字签名算法:EdDSA

  8. BNB Chain(BNB):
    哈希算法:Keccak(用于BEP-2代币)
    数字签名算法:ECDSA

比特币如何使用数字签名

比特币利用椭圆曲线数字签名算法(ECDSA)为每个交易生成唯一的签名。然而,随着最近的进展,通过TapRoot软分叉引入了Schnorr算法。这个算法以存储效率和验证速度高效而闻名,通过其交易聚合功能,可以使比特币的可扩展性提高30%。

来源:TimesofIndia — 只有已签名的交易才能被网络节点传播和验证

比特币交易的基本机制涉及一系列步骤,其中包括使用数字签名。

以下是概述:

  1. 发送方决定进行比特币交易,这可能涉及将比特币发送给另一个用户或多个用户。
  2. 发送方创建一个包含关键细节的交易消息,例如收件人的钱包地址、发送的比特币数量、任何相关费用以及用作交易输入的比特币(未花费交易输出或UTXO)的来源。
  3. 发送方使用椭圆曲线数字签名算法(ECDSA)使用其私钥对交易消息进行签名。此数字签名提供了交易已获得发送地址的合法所有者授权的证据。
  4. 交易消息使用SHA-256(安全哈希算法256位)进行哈希,然后使用RIPEMD-160(RACE Integrity Primitives Evaluation Message Digest 160-bit,RACE完整性原语评估讯息摘要160位)进一步哈希。此过程生成一个固定长度的哈希,通常称为交易ID或哈希。
  5. 签名的交易被广播到比特币网络,在其中对所有节点(参与比特币网络的计算机)可见。网络中的节点,包括矿工,验证交易的有效性。此验证包括检查数字签名,以确保其与发送方的公钥匹配,并且交易中使用的输入(UTXO)是未花费且有效的。
  6. 矿工收集有效的交易,并竞争解决一个复杂的数学问题(工作证明)。首先解决问题的矿工将包含已验证交易的区块添加到区块链中。
  7. 新添加的区块被广播到网络,其他节点验证工作证明以及区块内交易的有效性。一旦达成共识,区块被视为已确认,并且交易被永久记录在区块链中。
  8. 接收者的钱包余额会根据收到的比特币进行更新,而发送者的钱包余额会根据已使用的未使用交易(UTXOs)输出进行调整。

Web3中数字签名的应用

现在我们了解了签名的工作原理和重要性。让我们来重点介绍数字签名在保护交易安全、验证身份和确保Web3生态系统中数据完整性方面的实际应用。

交易认证

以Alice想要将 ETH 转账给Bob为例。她用私钥对交易进行签名,生成数字签名。以太坊网络使用Alice的公钥验证签名,确保交易得到了她的授权。这也适用于NFT的所有权转移,因为它在区块链上通过签名交易记录,确保了所有权变更的合法性。

智能合约执行

智能合约被构建用于与签名进行交互,并在验证后执行交易。例如,在一个去中心化借贷平台上,用户发起贷款请求。该请求触发智能合约的执行。用户用他们的私钥对交易进行签名,智能合约验证签名以执行贷款协议。

去中心化身份和认证

用户使用他们的区块链身份(例如以太坊地址)登录去中心化应用(dApp)。dApp要求用户提供一个签名消息(私钥),作为所有权的证明。数字签名验证了用户的身份。

这也可以是吸引新的Web3用户的简单方法,因为他们不需要创建帐户和存储另一个密码,用户可以隐藏他们的身份,而且不需要透露私人细节,比如他们的电子邮件地址。

数据完整性和NFT的不可否认性

艺术家在将数字艺术文件作为NFT铸造之前,用他们的私钥对其进行签名。数字签名确保了艺术作品的完整性,并且艺术家无法否认其创作权。

投票系统

在一个去中心化的投票平台上,选民通过用他们的私钥对选票进行签名来投票。数字签名验证了投票,并确保每个选民可以验证他们的贡献。这种应用在治理投票和共识协议投票中可见。

跨链互操作性

用户使用桥接协议将代币从一个区块链转移到另一个区块链。用户在源链上签署一笔交易,目标链验证签名,允许跨链转移。

挑战和未来趋势

量子攻击的挑战

数字签名仍然是区块链上一种可靠的身份验证方式。然而,大规模量子计算机的发展将对区块链的安全性构成威胁,因为量子计算机可以迅速解密加密算法

量子计算机能够以惊人的速度处理任务,仅需几秒钟就能完成传统计算机需要数小时才能完成的任务,恶意行为者可以利用量子计算机进行量子攻击,从而破坏整个区块链的安全性。

然而,我们可以通过后量子时代的数字签名来预防这些攻击,这些签名已经在开发中,尽管它们会占用区块链上更多的存储空间。

结论

数字签名基于非对称加密和哈希原理,用于验证数据的真实性和完整性。它通过使用发送者的私钥对数据的哈希形式进行身份验证,并由接收者使用发送者的公钥进行验证。区块链最常用的加密算法是ECDSA、EdDSA、Schnorr和BLS签名。

此外,数字签名的应用主要包括交易认证、智能合约执行、治理投票、跨链转账和NFT的数据完整性。

作者: Paul
译者: Sonia
文章审校: Piccolo、Edward、Ashley He
* 投资有风险,入市须谨慎。本文不作为Gate.io提供的投资理财建议或其他任何类型的建议。
* 在未提及Gate.io的情况下,复制、传播或抄袭本文将违反《版权法》,Gate.io有权追究其法律责任。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
立即注册