【密码学】一文读懂数字签名

简介: 本文来简单的聊一聊数字签名,先来看下面一个例子。

一文读懂数字签名


(@8FYZV)9{C~UP1Q$4FL{5A.jpg一文读懂数字签名


本文来简单的聊一聊数字签名,先来看下面一个例子。


小明和小红是一对好朋友,然后呢,他们经常传小纸条进行聊天,为了确保这个小纸条的来源,他们需要在小纸条上签上自己的名字,这里假设他们能够互相认识对方的签名,并且其他人无法去模仿他们的签名,这样过了很久,他们这个方法确实也很有效,但是,思考一个问题,这是纸质的消息,可以在上面进行签名,但是如果是电子的信息呢,这总不能给信息用笔签上一个字吧,显然这也是不太现实的。

如果没有签名,那么消息发送者很有可能去抵赖,说自己没有发过这个消息,这便会产生一系列的问题,好在,这个对于信息的签名也是有方案的,被称之为数字签名,接下来,就来聊一聊数字签名是怎么工作的,本文并不会去介绍具体的签名算法,而是简单的聊一下什么是数字签名。


数字签名框架

VRRU6`6U`9[ANIG5XVJE%KY.png

image.gif数字签名框架

如上图所示,Bob有自己的私钥,然后用这个私钥对消息M进行签名得到S, 最终将M|S发送给Alice,而Alice利用Bob的公钥,采用同样的方法对签名进行一个验证,如果验证通过,则说明消息确实是Bob发送的,否则不可确定消息是Bob发送的。


数字签名和消息验证码的区别

讲到了数字签名,这就顺带回顾一下之前讲过的消息认证码,也就是MAC, 消息认证呢,这可以保证信息不受到第三方的攻击,但是不能够抵御来自通信双方自身发生的攻击,还是用小明和小红举例子吧,假设小明给小红发了一个消息,

  • 明晚八点小树林见[MAC]

然后,明天小红就去小树林了,可是等了好久,也没看到小明过来,这时候小红气坏了,决定明天去找小明问个明白,为什么发了消息,却没有来。

到了第二天,小红问小明,昨天晚上为什么没有来,小明说,昨晚去哪?

小红说,你发的消息,明晚八点小树林见, 看这不是,小明看了一眼,疑惑的说,我没发过这条消息啊,这时候,小红也没有啥办法证明这确实是小明发的。

从上面可以看出,消息认证码虽然说是可以保证消息的完整性不被破坏,但是无法抵御小明耍赖说没发过消息的这种情况。

因此,数字签名有如下三个特征:

  • 它必须可以认证签名者,签名日期和时间
  • 它必须能够认证被签名消息的内容
  • 签名应该可以被第三方仲裁,解决争执

还是用上面这个例子,如果小明发送的消息带有小明个人的签名,如下:

  • 明晚八点小树林见[SIGN]

由于这个签名是只有小明才能够产生的,因此小明无法抵赖自己发送过这条消息。


小结

本文简单介绍了一下数字签名的概念和数字签名的过程,但是没有给出具体的签名算法,在这里给自己挖一个坑,后面将挑几个签名算法进行一下描述,感觉自己之前文章中好像也留了不少的坑,哈哈,挖坑一时爽,填坑火葬场,溜了溜了。


相关文章
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1172 0
【密码学】一文读懂XTEA加密
|
Rust 算法 安全
【密码学】一文读懂HMAC
本文将来聊一聊基于哈希函数的消息认证码,在此之前,先来科普一下什么是 「消息认证码」 (MAC), 先来看一个简单的栗子
1480 0
【密码学】一文读懂HMAC
|
Web App开发 Rust 算法
【密码学】一文读懂ChaCha20
好久没写新的加密算法的原理了, 这次所选取的加密算法结构比较简单, 一起来看一下吧。
6964 0
【密码学】一文读懂ChaCha20
|
Rust 算法 Go
【密码学】一文读懂MurMurHash3
本文应该是MurMurHash算法介绍的最后一篇,来一起看一下最新的MurMurHash算法的具体过程,对于最新的算法来说,整个流程和之前的其实也比较相似,这里从维基百科当中找到了伪代码,也就不贴出来Google官方给出的推荐代码了,先来看一下维基百科给出的伪代码,这里只有32位的伪代码。
1881 0
【密码学】一文读懂MurMurHash3
|
Rust 算法 网络安全
【密码学】一文读懂CMAC
介于上一篇文章比较水,然后这个和上一篇也比较相似,CMAC是为了解决DAA当中安全性不足的问题而出现的,这个算法一共有三个密钥,K, K1, K2, 其中K1和K2可以由K导出,接下来就来一起看一下CMAC的具体过程吧,这一篇文章其实也不长。
3428 0
【密码学】一文读懂CMAC
|
Rust 算法 安全
【密码学】一文读懂MurMurHash2
上次我们聊过了一代的MurMurHash算法,是的,我又来水文章了,今天呢,接着来聊一下二代的MurMurHash算法,二代算法的整体结构实际上和一代算法差不太多,只是对于每一轮数据的处理过程当中的运算有一些差异,算法的来源依然是来自于Google官网给提供的源码,对着源码看的结构,对于这个算法呢,有两个版本,一个是32位的,一个是64位的,对于32位的算法和64位的算法,区别在于两个初始的魔数不同,整体运算过程还是十分相似的。
2034 0
【密码学】一文读懂MurMurHash2
|
算法 数据安全/隐私保护
【密码学】一文读懂Whirlpool
首先呢,祝大家今晚节日快乐,Whirlpool是由Vincent Rijmen(高级加密标准的联合创始人)和Paulo S.L.M.Barreto设计的,后者于2000年首次提出了它。
1031 0
【密码学】一文读懂Whirlpool
|
算法 安全 Go
【密码学】一文读懂HKDF
我这又来水一篇文章,来聊一下HKDF(基于HMAC的密钥导出函数)。密钥派生函数是密钥管理的组成部分,他的目标是通过一些初始的数据派生出来密码学安全的随机密钥。
2982 1
【密码学】一文读懂HKDF
|
算法 安全 数据安全/隐私保护
【密码学】 一篇文章讲透数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改, 并验证消息的可靠性, 也可以防止否认。
641 0
【密码学】 一篇文章讲透数字签名
|
算法 数据安全/隐私保护
【密码学】一文读懂SHA-1
SHA-1(Secure Hash Algorithm 1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦资料处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。
1111 1
【密码学】一文读懂SHA-1