数字签名的原理及其应用

版权申明】非商业目的注明出处可自由转载
博文地址:https://blog.csdn.net/ShuSheng0007/article/details/79674177
出自:shusheng007

文章目录

  • 概述
  • 用途
  • 原理
    • 非对称加密
    • 数字摘要
    • 签名过程

概述

我们日常都亲自签过各种名,例如你和你的公司签订劳动合同时候会签上你自己的名字。那这个签名有什么用呢?对于公司来说就是将来开除你的时候可以让你不可抵赖。当然合同条款都是不允许涂改的,不然就得重写,这个用来保证合同的不可伪造性。

数字签名和这个类似,是用来保证一段信息不可伪造而且使这段信息产生者不可抵赖
例如小明和二狗互不相识,碰巧在各自家里组局打王者荣耀,小明总抢二狗的蓝爸爸,二狗怒了,直接问候了小名妈妈:“xx妈”。假设二狗对这个信息加了数字签名。走到哪里大家都会知道是二狗骂了小明“xx妈”,无论二狗如何狡辩说信息不是他发的,或者说他发的不是“xx妈”而是其他的。

用途

保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。

原理

要理解数字签名的原理,必须先要对非对称加密数字摘要这两种技术有所了解,不然无法进行。因为数字签名就是对这两种技术的实际应用。

非对称加密

非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:
1 A生成一对密钥并将其公钥向B公开;
2 B使用该密钥对机密信息进行加密后再发送给A
3 A接到信息后用自己的私钥对加密后的信息进行解密。

例如大名鼎鼎的RSA非对称加密算法。

数字摘要

数字摘要是将任意长度的消息变成固定长度的短消息。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度的密文,这一串密文又称为数字指纹,不同的明文摘要成密文,其结果总是不同的(严格意义上说存在相同的几率,因为有可能发生哈希碰撞),而同样的明文其摘要必定一致。

例如MD5 SHA1SHA256SHA384SHA512 等都是摘要算法,被破解难度由左到右逐渐升高。

签名过程

假设AB发送信息 HB现在持有A的公钥

签名
A对要发送的信息H做数字签名并发送
1.A将要发送的信息H使用摘要算法(例如SHA256)生成消息摘要M。
2.A将M用自己的私钥加密生成数字签名 S.
3.A将消息H与数字签名S一起发送给B
解签名
B接收到信息后需要解签名拿到确认拿到正确的信息
1.BA的公钥对接到的数字签名S2解密获得了消息摘要M2
2.B使用相同的摘要算法(例如SHA256)将收到的信息H2生成消息摘要M3
3.B对比M2与M3,如果相同说明消息是从A发过来的,而且没有被篡改。

整个过程如下图所示
数字签名的原理及其应用_第1张图片
那么以上过程是如何保证信息的不可伪造不可抵赖这两个特性的呢?

  • 保证不可伪造原理
    数字签名通过数字摘要来保证信息的不可伪造性,因为接收者B会使用相同的摘要算法提取接收到信息的消息摘要,然后和接收到的消息摘要做对比,消息摘要算法保证了不同的原始信息的消息摘要一定不同,所以只要发现消息摘要不同即可判定信息被纂改了。

  • 保证不可抵赖原理
    数字签名通过非对称加密来保证信息的不可抵赖性,因为接收者B是使用发送方A的公钥对消息摘要做的解密,而消息摘要是经过发送发方A私钥加密的,而公私钥是成对的,所以只要验证成功(说明钥匙对上了)即可判定消息就是A发的。
    当然我们的前提是假设B持有了A的公钥,那么B如何确定无疑的获得A的公钥也是一个大课题,当前大家采用了数字证书来解决这一问题,有机会再详细述说。

是不是很神奇,数字签名被广泛应用在了HTTPS协议,区块链等技术上。

你可能感兴趣的:(加密技术)