区块链深度学习

证明“我是我” 区块链通过数字签名来验证

2018-09-12  本文已影响30人  2544ba5df612

随着互联网的飞速发展,互联网交易越来越多,为了防止发送节点的信息和数据被恶意伪造和篡改,我们需要引入数字签名方案。那么到底这个数字签名是一个什么样的过程呢?接下来我们就来说一说这个数字签名到底是什么!

签名在现实生活中中,作为签名者身份的一种证明,简单证明“我就是我”。和传统的签名不一样,互联网的发展和数字签名的出现,让签名认证这个概念应用到了更多的层面。

1.签名认证:数字签名在网络交易上和实际签名一样的认可功能,不可抵赖,签名放拥有私钥,保证签名只能自己操作,在出现签名的环境下,使用私钥验证签名的真伪。

2.防篡改:这个通过网络下载来说明最为直观,你在网络上下载一个文件,数字签名和文件混合一个整体数据包,通过对数字签名的验证,保证文件在传输过程中未被篡改。

3.验证数据的完整性:如2同理,如果文件有丢失,签名将不完整,解开数字签名和之前的比较就会出现不一致。保证文件的完整。

4.仲裁机制:数字签名也可以认为是一个数字身份,通过唯一私钥生成,在网络上交易互动时要求收到一个数字签名的回文,保证过程的完整。如果对交互过程出现抵赖,那么用数字便于仲裁。

5.保密性:对于有安全级别要求文件,数字签名加密后传输,保证数据在被中途截取后无法获得其真实内容。有利于数据的安全性。

6.防重放:在数字签名中,如果采用了对签名报文添加流水号、时间戳等技术,可以防止重放攻击。

7.多重数字签名:通过多次数字签名,对文件数据进行多人认证。

数字签名整个过程验证简单,只需要公钥、私钥进行加解密的验证,从数字签名过程来简单理解下原理。

1.一段需发送的数据经过hash计算生成一份摘要。

2.摘要通过发送者私钥进行加密。

3.发送者将使用私钥加密后的摘要和报文,生成一段待发送的数据包。数字签名即为经过私钥加密后的加密摘要。

4.接收者使用之前一样的hash算法对报文计算摘要。

5.接收者再通过发送者公钥对摘要进行加密计算D。

6.接收者通过发送者公钥对数字签名进行解密D’。

7.两者进行比较即可验证。

如果您还是没有理解上面略微抽象的描述,那可以先看完后面的解释,再回头看上面这一段。

具体的加密过程如下:(以下是通俗易懂版)

1.运用某个算法自动生成一对公钥和私钥,公钥可以给所有人,私钥自己留着。

2.信息发送者用私钥对信息进行加密,将信息发送出去。

3.信息接受者把收到的信息用公钥进行解密,得到真正的信息。

叫花鸡和大猪蹄子经常约去喝酒,为了不让媳妇知道,所以他们先各自生成一对公钥和私钥,把公钥给对方,在约的时候,用私钥把自己的信息进行加密,对方收到后,用公钥对信息进行解密,就可以避免被媳妇发现聊天内容。

同样,数字签名也可以运用到信息的验证中。

4.信息接受者把得到的信息解密后和真正的信息进行比对,以验证加密者的身份,同时验证信息没有被篡改。

有一天大猪蹄子觉得这种方式也不完善,万一信息在发送过程中被篡改怎么办,他便和叫花鸡约定,“以后我给你发消息的时候,会先发一个“芝麻开门”,如果你公钥解密出来是这句,那就是我发的,否则就不是我。”

这样,叫花鸡就可以识别大猪蹄子发送的信息了,同时这个信息也没有被篡改。

数字签名有两个基本要求

1.可用性:私钥加密之后的信息可以被公钥解密,并且得到正确的结果。

2.不可逆向性:即使拿到无数的密文,也无法获取到私钥的内容,更无法伪造私钥对其他信息进行加密。

回到区块链中,节点中的接受者在接到发送者的信息的时候,首先需要验证其身份,同时需要验证信息是否被篡改。

加密者先对信息进行哈希运算,得到256位的哈希结果(摘要),同时对摘要进行私钥加密,将信息附带摘要密文广播给所有节点。

其他节点收到信息之后,拆分为信息和摘要密文,同样对信息进行哈希运算得到结果1,用公钥对摘要密文进行解密得到结果2,如果结果1和结果2相同,那么发送者发出的信息没有被篡改。

这里,验证了两个数据:

1.信息是发送者发出来的,不是伪造的信息;

2.信息在发送过程中没有被篡改。

上一篇 下一篇

猜你喜欢

热点阅读