目录
数字签名
数字签名过程
数字签名
数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人进行伪造,它是对电子形式的消息进行签名的一种方法。
数字签名是非对称加密与哈希算法的应用。
数字签名的文件的完整性是很容易验证,而且数字签名具有不可抵赖性。
普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关
数字签名过程
用到的技术:哈希算法、RSA非对称加密
假如小明要给小红发一个文件,那么怎样才能保证小红收到的文件是小明发的并且文件没有被篡改呢?
发送方:
- 小明告诉小红自己的公钥,并且私钥只有小明自己一个人知道
- 小明对数据M计算哈希运算,得到摘要 D
- 小明使用RSA私钥对摘要D进行加密,得到签名S
- 将数据M和签名S一起发送给小红
接收方:
- 小红收到消息后,首先对数据M使用跟小明一样的哈希算法,得到摘要 D'
- 使用小明的RSA公钥对签名S进行解签,得到D''
- 如果 D' 和 D'' 相同,那么证明 数据M 确实是小明发出的,并且文件内容没有被篡改过