数字签名算法
主要包括两个独立的算法:签名算法、验证算法
签名者使用一个签名算法(一般来说是保密的)签名一个消息,所签的名通过一个公开的验证算法来验证。验证算法根据签名是否真实来判断真伪
具有代表性的数字签名算法
- RSA数字签名算法
- EIGamal数字签名算法
- 美国的数字签名标准/算法(DSS/DSA)
- … …
算法实现
基于RSA的数字签名算法
数字签名标准算法DSA
——都属于“常规数字签名方案”
常规数字签名方案的特点
- 签名者知道他所签署信息的内容
- 任何人只要知道签名者的公钥,就可以在任何时刻验证签名的真实性,不需要签名者的“同意”信号或来自其他方面的信号;
- 具有基于单向函数运算的安全性
——在实际应用中,可能需要放宽或加强上述特点中一个或多个。
其他专用数字签名方案
指定批准人签名方案 某个指定的人员可以自行验证签名的真实性,其他任何人除非得到该指定人员或签名者的帮助,否则不能验证签名;
小组(群)签名方案 一个小组的任何成员可以签署文件,验证者可以确认签名来自小组,但不知道是小组的哪一名成员签署了文件
一次性签名方案 仅能签署单个信息的签名方案
不可抵赖签名方案 在签名和验证的常规成份之外添上“抵赖协议”,则仅在得到签署者的许可信号后才能进行验证;
带有“数字时间标记系统”签名方案 将不可篡改的时间信息纳入数字签名方案