一、数字签名简介
数字签名过程的一般模型:
在收发双方不能完全信任的情况下,需要除认证之外的其他方法来解决他人伪造或当事人否认的问题。
数字签名是解决这个问题最好的方法。
数字签名必须具有的特征:
- 验证签名者、签名日期和时间(消息来源)
- 认证被签的消息内容(数据完整性)
- 签名由第三方仲裁以解决争执
数字签名具有认证功能。
攻击:
伪造:
数字签名应满足的条件:
直接数字签名:
只涉及通信双方(发收双方)的数字签名方案
假定接收方已知发送方的公钥,用共享的密钥(对称密码)对整个消息和签名加密,则可以获得保密性
先进行签名,再执行外层的加密,在发生争执时,第三方可以查看消息及签名。
该方法的有效性依赖于发送方私钥的安全性。
二、数字签名算法(DSA)
使用安全Hash算法(SHA),最新版本还包括基于RSA和椭圆曲线密码的数字签名算法。
两种数字签名的方法:
DSA使用的是只提供数字签名功能的算法,与RSA不同,DSA虽然是一种公钥密码方案,但不能用于加密或密钥交换。
在RSA方法中,Hash函数的输入是要签名的消息,输出是定长的Hash码,用发送方的私钥将该Hash码加密成签名,然后发送消息及其签名。接收方收到消息,计算Hash码。接收方用发送方的公钥对签名解密,如果计算出的Hash码与解密出的结果相同,则认为签名是有效的。因为只有发送方拥有私钥,所以只有发送方能够产生有效的签名。
DSA方法也使用Hash函数,它产生的Hash码和为此次签名而产生的随机数k作为签名函数的输入,签名函数依赖于发送方的私钥和一组参数,这些参数为一组通信伙伴所共有,我们可以认为这组参数构成全局公钥。签名由两部分组成,标记为s和r。
DSA是建立在求离散对数之困难性以及ElGamal和Schnorr最初提出的方法之上。
三、椭圆曲线数字签名算法(ECDSA)
来源:https://blog.csdn.net/qq_35443700/article/details/102754857