数字签名学习
用途
- 防篡改:篡改后hash会产生变化
- 身份认证:hash会用发送方的私钥加密,故可以确认发送方身份
- 抗抵赖:发送方无法抵赖自己发送的数据,因为其私钥唯一且仅其拥有。
数字签名-无需保密性(哈希算法+非对称加密)
发送方
- 将要发送的message进行安全哈希算法得到hash
- 对hash使用自己的私钥进行加密得到数字签名
- 发送message和数字签名
接收方
- 使用发送方的公钥解密数字签名得到hash
- 对message采用同样的hash算法得到新的hash
- 对比两个hash值是否相等
数字签名-需要保密性(哈希算法+非对称加密+对称加密)
发送方
- 将要发送的message进行安全哈希算法得到hash
- 对hash使用自己的私钥进行加密得到数字签名
- 对(message,数字签名)使用安全对称加密,密钥key进行加密得到密文1
- 用接收方的公钥对key进行加密得到密文2
- 发送密文1,密文2
接收方
- 首先用自己的私钥,解密密文2得到key
- 用key解密,密文1得到message和数字签名
- 用发送方的公钥解密数字签名得到hash
- 将message进行正向hash,对比两个hash是否相同
Q&A
- 为什么发送方加密hash时使用自己的私钥,而不直接使用对方的公钥?
- 需要区分数字签名和数据加密的概念与场景,数字签名的核心目的是证明发送方身份及验证消息是否被篡改,使用自己的私钥是为了强调自己是发送方,在数字加密过程中才会使用对方的公钥。
- 在需要保密性的数字签名中,可以数字签名和明文分开单独加密吗(即密钥加密明文,接收方公钥加密密钥)?
- 可以,思路都没问题,场景选择问题。但是一起加密安全性更高。
- 加密(明文,数字签名)就要求接受方先解密再验签。
- 单独加密数字签名,可以先独立验证数字签名以确认发送方身份。
- 可以,思路都没问题,场景选择问题。但是一起加密安全性更高。
本文作者:
yd0ng
本文链接: https://blog.yd0ng.top/2025/11/04/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D%E5%AD%A6%E4%B9%A0/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://blog.yd0ng.top/2025/11/04/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D%E5%AD%A6%E4%B9%A0/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!