signature significance签名的意义[2]
防篡改
公钥与私钥[1]
- 公钥加密
使用公钥加密原始数据,可以用私钥解密出原始数据,但不能用公钥解密出原始数据
[加密数据]
我朋友f的公钥fg所有人都知道
我想给他发私密消息,所以用他的公钥加密数据,因此只有他可以解密出我要给他说的内容
- 私钥签名
使用私钥加密原始数据,可以用公钥钥解密出原始数据
[验证身份]
我的私钥s只有我知道,我的公钥g所有人都知道
eg:
我的朋友f告诉我有人冒称我给他发信息,怎么让我的朋友确定是不是我发的?
用私钥加密数据d,发给我的朋友f,告诉它可以解密出原始数据d,他用公钥解密出d,就可以知道确实是我发送的数据
数据摘要
[保证数据的完整性]
将原始数据根据消息摘要算法提取出特定长度的数据,具有唯一性(不考虑碰撞),也叫做数据指纹
- MD5
- SHA-1
数字签名
解决两个问题
- 来源确实是那个人
- 数据传递过程中没有被篡改
解决方案
- 私钥加密 + 数据摘要
Question
- 上面这个过程需要保证公钥可信,怎么做到?
[Anwser] 数字证书
具有公信力的证书机构基本可以保证公钥的可靠性
数字证书包括的有:
证书的发布机构(Issuer)
证书的有效期(Validity)
消息发送方的公钥
证书所有者(Subject)
数字签名所使用的算法
数字签名
- HTTPS使用的就是这种数字证书的机制,具体流程见数字签名是什么,其中服务端传送给客户端的数据是用什么加密的,是客户端的公钥吗?
[1]https://blog.csdn.net/21aspnet/article/details/7249401
[2]https://blog.csdn.net/jiangwei0910410003/article/details/50402000