数字签名是一种用于验证数字数据的真实性和完整性的加密机制。我们可以将其视为常规手写签名的数字版本,但具有更高级别的复杂性和安全性。
简单来说,我们可以将数字签名描述为附加到消息或文档的代码。一旦生成,它就可以证明消息在从发送者到接收者的整个过程中没有被篡改。
使用加密技术保护通信通道的概念可以追溯到远古时代,而数字签名系统直到 20 世纪 70 年代才随着公钥加密技术的发展而出现。因此,要了解数字签名的工作原理,我们首先需要了解哈希函数和公钥密码学的基础知识。
哈希函数
散列是数字签名系统的主要元素之一。散列过程涉及将任何大小的数据转换为特定格式的输出。这是使用一种特殊的算法(也称为哈希函数)完成的。哈希函数生成的输出数据称为哈希或消息摘要。
当与加密技术结合时,所谓的加密哈希函数可用于生成充当唯一数字标识符的哈希(摘要)。这意味着输入(消息)的任何更改都会导致完全不同的输出(哈希)。因此,加密哈希函数是验证数字数据真实性的流行工具。
公钥密码学 (PKC)
公钥密码术或PKC(来自英语Public-key cryptography)是指使用一对公钥(public)和私钥(private)的密码系统。这两个数学相关的密钥可用于加密数据和创建数字签名。
作为一种加密工具,PKC 比对称加密工具更安全。虽然此类旧系统使用相同的密钥来加密和解密信息,但 PKC 允许您使用公钥加密数据并仅使用相应的私钥解密数据。
此外,公钥加密可用于生成数字签名。从本质上讲,该过程包括对消息(或数字数据)以及签名者的私钥进行哈希处理。然后,消息的接收者将能够使用签名者提供的公钥来验证签名的有效性。
在一些可能的实现中,数字签名可以包括加密,这意味着该功能不能持续工作。例如,比特币区块链也使用公钥加密和数字签名,但与普遍看法相反,其过程中没有加密。从技术角度来看,比特币使用所谓的椭圆曲线数字签名算法(ECDSA)来验证其交易。
数字签名的工作原理
在加密货币的背景下,数字签名系统通常由三个主要阶段组成:散列、签名过程本身及其验证。
数据散列
第一步是对消息或数字数据进行哈希处理。这是通过使用散列算法处理信息来生成散列本身(消息摘要)来完成的。如前所述,消息的大小可能有很大差异,但一旦经过哈希处理,所有哈希值将具有相同的长度。这是哈希函数最基本的属性之一。
但是,对数据进行哈希处理并不是创建数字签名的必要条件,因为可以使用私钥来对消息进行签名。但当涉及到加密货币时,数据总是经过哈希处理,因为使用固定长度的摘要可以简化整个信息处理过程。
签名
一旦数据被散列,消息的发送者必须对其进行签名,这就是公钥加密发挥作用的地方。数字签名算法有多种类型,每种算法都有其独特的机制。但无论如何,散列消息都将使用私钥进行签名,然后接收者可以使用相应的公钥(由签名者提供)验证其真实性。
换句话说,如果在创建签名时不包含私钥,则消息的接收者将无法使用相应的公钥来验证其有效性。由于公钥和私钥是由消息的发送者生成的,因此只有公钥与接收者共享。
值得注意的是,数字签名与每条消息的内容直接相关。因此,与手写签名不同(无论文档的上下文如何,手写签名通常都是相同的),每条数字签名消息都将具有完全不同的数字签名 ID。
检查
让我们通过一个示例来更好地说明直到最后一步(内容验证)的整个过程。想象一下,爱丽丝向鲍勃写入一条消息,对其进行哈希处理,然后将哈希值与她的私钥结合起来以创建数字签名。在这种情况下,签名充当该特定消息的唯一数字标识符。
当Bob收到消息时,他可以使用Alice提供的公钥来验证数字签名。这样,鲍勃就可以验证签名是由她创建的,因为她是唯一拥有相应私钥的人(至少应该如此)。
因此,Alice 的私钥保密就显得极其重要。如果另一个人拥有她的私钥,他将能够创建数字签名并代表她进行交易。在第一个加密货币的背景下,这种情况意味着有人可以在未经Alice许可的情况下移动或花费她的比特币。
为什么数字签名很重要?
基本上,数字签名旨在实现三个结果:数据完整性、身份验证和不可否认性。
数据的完整性。 Bob 可以验证 Alice 的消息在此过程中没有发生变化。消息中任何更改的结果都将生成完全不同的签名。
验证。只要 Alice 的私钥保密,Bob 就可以使用她的公钥来验证数字签名是由 Alice 创建的,而不是其他人创建的。
不可否认性。一旦生成签名,Alice 将无法否认她与签名的关系,除非她的私钥已以某种方式泄露。
用例
数字签名可以应用于各种类型的数字文档和证书。因此它们有多种用途,一些最常见的用例包括:
信息技术。提高互联网通信系统的安全性。
金融。在审计、费用报告、贷款协议和许多其他财务文件中实施。
法律问题。用于所有类型的商业合同和法律协议,包括政府文件。
卫生保健。防止处方和医疗记录欺诈。
区块链。数字签名系统确保只有加密货币的合法所有者才能签署交易以进一步转移资金(除非所有者的私钥已被泄露)。
缺陷
该技术可能遇到的主要问题至少取决于三个组成部分:
算法。用于生成数字签名的算法的质量极其重要。这包括选择强大的哈希函数和加密系统。
执行。如果算法工作正常,并且数字签名技术的集成尚未完全成功,则该系统很可能存在一定数量的缺陷。
私钥。如果私钥因某种原因泄露或被泄露,则身份验证和不可否认性将失效。对于加密货币用户来说,丢失私钥可能会导致重大的财务损失。
电子签名与数字签名
简单来说,数字签名是指一种特定类型的电子签名,以及对文档和消息进行电子签名的任何方法。因此,所有数字签名都是电子签名的子类型,但按照相反的顺序,该表达式并不总是正确的。
它们之间的主要区别在于身份验证方法。数字签名使用加密系统,例如哈希函数、公钥加密和加密技术。
结论
哈希函数和公钥密码学是数字签名系统的基础,现在适用于广泛的应用。如果正确实施,数字签名可以提高安全性、确保完整性并促进所有类型数字数据的身份验证。
在区块链技术领域,数字签名用于授权和签署加密货币交易。这项技术对于比特币尤其重要,因为签名可以保证比特币只能由拥有相应私钥的人使用。
尽管我们多年来一直使用电子签名和数字签名,但它们仍然有改进的空间。当今的大部分官僚机构仍然是纸质的,但随着我们转向更多的数字数据处理系统,我们可能会看到更多地采用数字签名。
