区块链中的数字签名起到什么作用?

论坛 期权论坛 期权     
链客区块链社区   2019-10-27 05:55   1234   0
数字签名是用于验证数字数据的真实性和完整性的加密机制。我们可能会将其视为普通手写签名的数字版本,但具有更高的复杂性和安全性。



简单来说,我们可以将数字签名描述为附加到消息或文档的代码。在生成之后,代码充当证明消息在从发送方到接收方的路上没有被篡改的证据。


虽然使用密码学保护通信的概念可以追溯到古代,但是由于公钥密码学(PKC)的发展,数字签名方案在20世纪70年代成为可能的现实。因此,要了解数字签名的工作原理,我们首先需要了解散列函数和公钥加密的基础知识。






散列函数
哈希是数字签名系统的核心要素之一。散列过程涉及将任何大小的数据转换为固定大小的输出。这是通过称为散列函数的特殊算法来完成的。散列函数生成的输出称为散列值或消息摘要。


当与加密相结合时,可以使用所谓的加密散列函数来生成充当唯一数字指纹的散列值(摘要)。这意味着输入数据(消息)的任何更改都将导致完全不同的输出(散列值)。这就是加密散列函数被广泛用于验证数字数据真实性的原因。






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


作为一种加密工具,PKC比更基本的对称加密方法更安全。虽然旧系统依赖相同的密钥来加密和解密信息,但PKC允许使用公钥进行数据加密,并使用相应的私钥进行数据解密。


除此之外,PKC方案还可以应用于数字签名的生成。本质上,该过程包括散列消息(或数字数据)以及签名者的私钥。接下来,消息的接收者可以使用签名者提供的公钥来检查签名是否有效。


在某些情况下,数字签名可能涉及加密,但情况并非总是如此。例如,比特币区块链使用PKC和数字签名,但不像许多人倾向于认为的那样,在这个过程中没有加密。从技术上讲,比特币部署了所谓的椭圆曲线数字签名算法(ECDSA)来验证交易。






数字签名如何运作
在加密货币的背景下,数字签名系统通常包括三个基本步骤:散列,签名和验证。


哈希数据
第一步是散列消息或数字数据。这是通过散列算法提交数据以生成散列值(即消息摘要)来完成的。如上所述,消息的大小可能会有很大差异,但是当它们被散列时,它们的所有散列值都具有相同的长度。这是哈希函数的最基本属性。


但是,散列数据不是生成数字签名的必要条件,因为可以使用私钥来签署完全没有散列的消息。但对于加密货币,数据总是经过哈希处理,因为处理固定长度的摘要有助于整个过程。


签名
对信息进行哈希处理后,邮件的发件人需要对其进行签名。这是公钥密码学发挥作用的时刻。有几种类型的数字签名算法,每种算法都有自己独特的机制。但实质上,散列消息将使用私钥进行签名,然后消息的接收者可以使用相应的公钥(由签名者提供)来检查其有效性。


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


值得注意的是,数字签名与每条消息的内容直接相关。因此,与手写签名不同,无论消息如何,每个数字签名的消息都会有不同的数字签名。


验证
让我们举一个例子来说明整个过程,直到验证的最后一步。想象一下,Alice向Bob写了一条消息,哈希,然后将哈希值与她的私钥结合起来生成数字签名。签名将作为该特定消息的唯一数字指纹。


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


因此,爱丽丝秘密保密私钥至关重要。如果另一个人拿到了Alice的私钥,他们就可以创建数字签名并伪装成Alice。在比特币的背景下,这意味着有人可以使用Alice的私钥在未经她许可的情况下移动或使用她的比特币。



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7
帖子:9
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP