文章目录
1. 概念
1.1 数字签名
数字签名必须保障:
- 接收者能够核实发送者对文档的签名
- 发送者时候不能否认对文档的签名
- 不能伪造对文档的的签名
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) 签名算法