听说这玩意可以防止否认 —— 数字签名

简介: 发送方发送消息的时候使用私钥对消息进行签名,接收方接收消息的时候使用公钥对签名进行验证即可确定发送者身份。因为签名只能由发送者的私钥完成,所以这个签名一定是由发送者签发的,这样就没有否认的问题了,这就是数字签名(Digital Signature)。

谁骗了谁?


  小艾和小杨是好朋友,并且经常使用固定密钥进行通信。一天小艾收到一条诈骗消息,理所当然,单纯的小艾被骗钱了。小艾kali学的不好,找不到凶手,于是动起了坏心思。小艾将诈骗消息使用和小杨通信的密钥使用单向散列函数计算出MAC然后将消息和 MAC 封装后拿去警察局报警。


  • 小艾:小杨发给我的诈骗消息骗了我的钱。
  • 小杨:我没有发过这条消息。
  • 小艾:你怎么证明不是你发的。
  • 小杨:你怎么证明是我发的。
  • 警察:到底是谁骗了谁?


数字签名


  之前的文章提到消息认证码(MAC)的缺点就是无法防止否认。因为发送方和接收方可以计算出同样的 MAC 值,所以无法判断这个 MAC 值到底是由谁来计算出来的。
  
这个问题的本质在于双方使用同样的密钥生成同样 MAC 值,所以解决这个问题的办法就是让发送者和接收者使用不同的密钥。要求使用不同密钥,很容易想到非对称加密中的公钥与私钥。
  
发送方发送消息的时候使用私钥对消息进行签名,接收方接收消息的时候使用公钥对签名进行验证即可确定发送者身份。因为签名只能由发送者的私钥完成,所以这个签名一定是由发送者签发的,这样就没有否认的问题了,这就是数字签名(Digital Signature)


如何签名与验签?


  • 生成数字签名由消息发送者 A 完成,生成签名就是根据消息内容计算签名值,生成签名意味着认可这个消息的内容。
  • 验证数字签名由消息接受者完成,也可以由第三方来完成。验签成功意味着这个消息是由 A 发出,失败则表示这个消息不是 A 发出的。


  在数字签名的过程中,消息发送者 A 和消息接收者 B 使用不同的密钥来进行签名和验签。这里使用的不同的密钥就是非对称加密中的公钥和私钥。
  
非对称加密中使用公钥加密、私钥解密,数字签名中使用私钥签名、公钥验签,数字签名其实就是公钥密码的反向应用。

公钥

私钥

非对称加密算法

加密消息

解密消息

数字签名

验签

签名


数字签名的方法


1.对消息进行签名


  • 发送者 A 用自己的私钥对消息 M 进行加密生成签名 S
  • A 将加密后的签名 S 和消息 M 发送给接收者 B
  • B 用公钥对签名 S 进行解密,从而得到签名之前的消息 M1
  • B M1 A 直接发送过来的消息 M 进行对比,两者一致则验签成功,否则失败。


2.对消息的hash 值进行签名


  直接对消息进行签名,看起来非常简单,但是在实际应用中很少使用。因为对整个消息进行签名是一个非常耗时的操作,所以我们通常会使用单向散列函数对消息计算出一个 hash 值,然后对这个 hash 值进行签名,这样既可以对消息签名又节省了时间。


  • 发送者 A 用单向散列函数对消息 M 计算 hash H
  • A 用自己的私钥对 H 进行签名 S
  • A 将消息 M 和签名 S 发给接收者 B
  • B A 的公钥对签名 S 进行解密得到 H
  • B 使用单向散列函数对收到的消息 M 计算得到 hash H1,将 H H1 进行比对,两者一致则验签成功,否则失败。


缺点


  • 使用消息认证码(MAC)可以防篡改和仿伪装,但是无法防否认。
  • 使用数字签名可以防篡改、防伪装、防否认。


但是如果验证签名的公钥不是和签名的私钥配对的呢?
  
这样就会导致验签失败,这里我们就需要一个可信任的机构来为我们颁发可信任的公钥,这就需要用到证书了。

相关文章
|
4天前
|
存储 安全 数据安全/隐私保护
加密的艺术:对称加密的奇妙之处(下)
加密的艺术:对称加密的奇妙之处(下)
加密的艺术:对称加密的奇妙之处(下)
|
7月前
aviator 属实搞事情
aviator 属实搞事情
54 0
|
7月前
|
算法 安全 网络安全
花无涯带你走进黑客世界18 加密算法
加密,是以某种特殊的算法改变原有的信息数据,入侵网站一般需要解MD5。 原来在线解MD5的网站还是免费的,越来越多人使用就开始收费了,自己一般没办法解。 国内也有,国外的当然更加强大,文中会贴出来,别着急。
|
8月前
|
供应链 物联网 数据安全/隐私保护
优衣库 UNIQLO,藏着多少秘密
优衣库 UNIQLO,藏着多少秘密
|
9月前
|
JSON 安全 C语言
黑客需要用到的Python技术?
黑客需要用到的Python技术?
|
算法 安全 Java
快速了解常用的消息摘要算法,再也不用担心面试官的刨根问底
加密算法通常被分为两种:对称加密和非对称加密。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法,是对数据进行摘要并且不可逆的算法。 这次我们了解一下消息摘要算法。
547 0
快速了解常用的消息摘要算法,再也不用担心面试官的刨根问底
|
安全 算法 网络安全
面试常问:HTTPS的加密过程 ----- 光明和黑暗的恩怨情仇
面试常问:HTTPS的加密过程 ----- 光明和黑暗的恩怨情仇
126 0
面试常问:HTTPS的加密过程 ----- 光明和黑暗的恩怨情仇
|
数据安全/隐私保护
【杂(瞎)谈(聊)】易经当中的密码学
看到这个标题,估计可能会有不少读者会有疑问,易经这不是个文学作品吗,怎么和数学相关的密码学给搞到一起了,这不是标题党蛤, 下面小Q来给大家聊聊在易经当中所体现的一些密码学的思想,有些资料来源也不太确定,我凭借记忆进行搜索的,如有错误还请各位读者海涵。
【杂(瞎)谈(聊)】易经当中的密码学
|
算法 安全 数据安全/隐私保护
听说这玩意可以防篡改——单向散列函数
由于某些原因,访问国外网站的速度较慢,所以我们常使用镜像网站下载文件。假设你正通过镜像网站从网络上下载一款软件,但是如何保证你下载的软件是正版,没有被恶意篡改过呢?怎么保证我的软件的完整性呢?
听说这玩意可以防篡改——单向散列函数
|
算法 Java 数据安全/隐私保护
快速了解常用的非对称加密算法,再也不用担心面试官的刨根问底
加密算法通常被分为两种:对称加密算法和非对称加密算法。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法,是对数据进行摘要并且不可逆的算法。 这次我们了解一下非对称加密算法。
444 0
快速了解常用的非对称加密算法,再也不用担心面试官的刨根问底