什么是数字签名?

数字签名是一种加密机制,用于验证数字和数据的真实性和完整性。我们可以将其视为传统手写签名的数字版本,比签名更复杂、更安全。

简而言之,我们可以将数字签名理解为添加到信息或文档中的代码。生成数字签名后,可作为证明信息从发送人到接收人传输过程中未被篡改的证据。

虽然可以使用密码学来保护通信机密性的概念追溯到古代,但随着公钥密码学(PKC)随着数字签名计划的发展,数字签名计划直到20世纪70年代才成为现实。因此,要了解数字签名的工作原理,首先需要了解散列函数和公钥加密的基本知识。

散列函数

哈希它是数字签名的核心要素之一。哈希值的操作过程是将任何长度的数据转换为固定长度。这是通过特殊操作实现的,称为散列函数。散列函数操作产生的值称为哈希值或新闻摘要。
当哈希值与加密算法结合,即使用加密散列函数生成散列值(摘要),该值可以作为唯一的数字指纹。这意味着输入数据(信息)的任何变化都会导致完全不同的输出值(散列值)。这就是为什么加密散列函数被广泛用于验证数字和数据的真实性。

公钥加密(PKC)

公钥加密或PKC是指使用一对密钥的加密系统:公钥和私钥。这两个密钥在数学上是相关的,可用于数据加密和数字签名。

PKC作为一种加密工具,与PKC相比对称加密它具有更高的安全性。对称加密系统依赖于相同的密钥进行加密和解密信息,但PKC使用公钥进行数据加密,并使用相应的私钥进行数据解密。

此外,PKC还可以应用于生成数字签名。本质上,发送人使用自己的私钥加密信息(数据)的哈希值。接下来,新闻的接收人可以使用签名人提供的公钥来检查数字签名是否有效。

在某些情况下,数字签名本身可能包括加密过程,但并非总是如此。例如,比特币区块链使用PKC和数字签名,而不是像大多数人认为的那样加密。从技术上讲,比特币部署了所谓的椭圆曲线数字签名算法(ECDSA)验证交易。

数字签名的工作原理

在加密货币的背景下,数字签名系统通常包括三个基本流程:散列、签名和验证。

散列数据

第一步是散列新闻或数据。通过散列算法计算数据,生成哈希值(即消息摘要)。如上所述,消息的长度可能会有很大的不同,但当消息传播时,它们的哈希值都有相同的长度。这是散列函数最基本的属性。

然而,仅仅分散信息并不是生成数字签名的必要条件,因为私钥也可以用来加密未分散的信息。但对于加密货币,消息需要通过分散函数进行处理,因为固定长度的哈希值有助于加密货币的程序运行。

签名

信息分散后,发件人需要签名。这里使用公钥密码学。有几种类型的数字签名算法,每种算法都有自己独特的操作机制。本质上,私钥用于签名分散的信息(哈希值),然后接收者可以使用相应的公钥(由签名者提供)来检查其有效性。

换句话说,如果在生成签名时不使用私钥,新闻的接收者将无法使用相应的公钥来验证其有效性。公钥和私钥是由新闻发送者生成的,但只与接收者共享。

需要注意的是,数字签名与每条消息的内容有关。因此,每条消息的数字签名不同于手写签名。

验证

让我们举一个例子来解释整个过程,包括从开始到最后一步的验证。我们假设阿里克向Bob发送了一条消息,并将其分散,以获得哈希值,然后将哈希值与她的私钥结合起来生成数字签名。数字签名将是消息中唯一的数字指纹。

当Bob收到消息时,他可以使用Alice提供的公钥来检查数字签名的有效性。这样,Bob就可以确定签名是由Alice创建的,因为只有她有与公钥对应的私钥(至少这与我们假设的一致)。

因此,Alice保存私钥是非常重要的。如果另一个人得到了Alice的私钥,他们也可以创建数字签名并伪装成Alice。在比特币的背景下,这意味着有人可以使用Alice的私钥,并可以在未知的情况下转移或使用她的比特币。

为什么数字签名很重要?

数字签名通常用于实现数据完整性、身份验证和不可否认性三个目标。

  • 数据完整性。Bob可以验证Alice的消息是否被篡改。消息中的任何变化都会产生完全不同的数字签名。
  • 真实性。只要Alice保管好自己的私钥,Bob就可以用她的公钥确认数字签名是Alice自己创建的,而不是别人创建的。
  • 不可否认的性别。生成签名后,除非她的私钥以某种方式泄露,否则Alice将来不会否认签名。

案例

数字签名可应用于各种数字文档和证书。因此,它们有几个应用程序。最常见的案例包括:

  • 信息技术。提高互联网通信系统的安全性。
  • 金融。数字签名可用于审计、财务报告、贷款协议等。
  • 法律。数字签名可应用于包括政府文件在内的各种商业合同和法律协议。
  • 卫生保健。数字签名可以防止处方和医疗记录的欺诈。
  • Blockchain。数字签名计划确保只有加密货币的合法所有者才能签署交易和移动资金(只要他们的私钥不受侵犯)。

局限性

数字签名方案面临的主要挑战主要局限于以下三个因素:

  • 算法。数字签名方案中使用的算法对质量要求很高。它包括可靠的散列函数选择加密系统。
  • 实施。若算法完整,但没有良好的实施方案,数字签名系统也可能存在隐患。
  • 私钥。如果私钥丢失或以某种方式泄露,则不能保证其真实性和不可否认性。对于加密货币用户来说,丢失私钥可能会导致重大财产损失。

电子签名和数字签名

简而言之,数字签名可以理解为一种特定类型的电子签名,特别是使用电子签名文档和信息。因此,所有的数字签名都可以被视为电子签名,但事实并非如此。

它们之间的主要区别在于身份验证。数字签名需要部署加密系统,如散列函数公钥加密和加密技术。