1. 概念
1.1 数字签名

数字签名必须保障:

  1. 接收者能够核实发送者对文档的签名
  2. 发送者时候不能否认对文档的签名
  3. 不能伪造对文档的的签名
1.2 数字签名方案

一个数字签名方案包括如下 3 个算法:

  • 密钥生成:产生用户的公私钥
  • 签名算法:产生消息的签名
  • 验证算法:验收消息的签名是否是合法

数字签名方案为了实现安全认证,需要满足如下条件:

  • 必须相对容易生成该数字签名
  • 必须相对容易识别和验证该数字签名
  • 伪造该数字签名在计算上不可行,既包括对一个已有的数字签名构造新的消息,也包括对一个消息伪造一个数字签名
1.3 RSA 签名和验证方法

签名方法:

  • 签名 = 消息^私钥 mod n

理解:自己用自己的私钥对消息进行签名,别人就可以用可获得的公钥进行验证,和加密解密不一样
在这里插入图片描述
验证方法:

  • 消息 = 签名^公钥 mod n
    在这里插入图片描述
1.4 RSA 签名算法缺点和解决方法(简答题)
  • 对任意 y ∈ Z_n,任何人可计算 x ≡ y^e mod n,因此任何人可伪造对随机消息 x 的签名。

  • 如果消息 x1 和 x2 的签名分别为 y1 和 y2,则知道 x1, y1, x2, y2 的人可伪造消息 x1 x2 的签名 y1 y2。

  • 在 RSA 签名方案中,需签名的消息 x ∈ Zn,所以每次只能对 log2n 位长的消息进行签名。签名速度慢。

  • 解决方法:引入hash函数

1.5 ElGamal 签名算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.6 DSA(DSS) 签名算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更多推荐