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

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

一文读懂数字签名


(@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]

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


小结

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


相关文章
|
7月前
|
算法 安全 关系型数据库
密码学系列之七:数字签名
密码学系列之七:数字签名
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1285 0
【密码学】一文读懂XTEA加密
|
Rust 算法 安全
【密码学】一文读懂HMAC
本文将来聊一聊基于哈希函数的消息认证码,在此之前,先来科普一下什么是 「消息认证码」 (MAC), 先来看一个简单的栗子
1711 0
【密码学】一文读懂HMAC
|
Web App开发 Rust 算法
【密码学】一文读懂ChaCha20
好久没写新的加密算法的原理了, 这次所选取的加密算法结构比较简单, 一起来看一下吧。
7809 0
【密码学】一文读懂ChaCha20
|
算法 安全 Go
【密码学】一文读懂HKDF
我这又来水一篇文章,来聊一下HKDF(基于HMAC的密钥导出函数)。密钥派生函数是密钥管理的组成部分,他的目标是通过一些初始的数据派生出来密码学安全的随机密钥。
3120 1
【密码学】一文读懂HKDF
|
算法 安全 数据安全/隐私保护
【密码学】 一篇文章讲透数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改, 并验证消息的可靠性, 也可以防止否认。
736 0
【密码学】 一篇文章讲透数字签名
|
算法 数据安全/隐私保护
【密码学】一文读懂SHA-1
SHA-1(Secure Hash Algorithm 1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦资料处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。
1224 1
【密码学】一文读懂SHA-1
|
算法 搜索推荐 安全
【密码学】一文读懂CCM
本文简单介绍了CCM模式下的认证和加密机制,实际上这个是AES-CTR模式和CMAC的一个组合,如果理解了前面这两个,本文应该还是比较好理解的。
3417 0
【密码学】一文读懂CCM
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂基于Elgamal的数字签名
本文来先填一下之前挖的坑,简单介绍一个实际的数字签名的方案,给自己挖的坑总是要自己来填的。
【密码学】一文读懂基于Elgamal的数字签名
|
Rust 算法 安全
【密码学】一文读懂RSA
本文来聊聊RSA, 这是一个非对称密码,和之前所提到的AES与DES不同的是,这个加密方式有两个密钥,一个是公钥,一个是私钥,公钥用来加密,私钥用来解密。相比于对称密码,非对称密码大多基于某个数学难题,比如接下来要谈论的RSA即基于大整数分解的困难性来的,因此为了说明白这个加密算法,首先要先补充"一"点点数学知识。