七星网络安全

数字签名 数字证书 和https

2017-12-19  本文已影响11人  rivir

在双钥体系中,公钥用来加密信息,私钥用来数字签名。

数字签名

RSA 加密保障了信息的机密性,但无法保证信息的完整性

数字签名是利用了私钥加密信息摘要, 信息摘要可以保证数据的完整性,私钥可以对发送者信息证明,(相当于发送者在文件上签名了一样,所以叫数字签名)

但其中还有一个问题,就是无法保证公钥的来源性是否正确

比如如下一个问题:

a 生成一对公私钥并把公钥发给b, 随后a就可以用自己的私钥发送信息给b, b用手中的公钥解密信息即可, 但假如有c在b的电脑上替换b的公钥为c自己的公钥, 那么c就可以用私钥伪造a发送信息给b, 因为b无法验证公钥是否来自a还是来自c, 那么就会导致b误认为c发过来的信息和之前一样还是a发送给他的

公私钥就跟是钥匙和锁一样总是成对而且是唯一的,a生产锁和钥匙,把钥匙给你,你用这把锁去开门,如果可以开对,那么就证明这把锁是a的, c如果要伪造一把锁是不可能的,但如果c把你的钥匙和锁都换成他自己的,那么你用c的钥匙开c的锁,自然是可以打开的,但此时锁却不是a的

数字证书

数字证书就是为了解决这个公钥的来源问题

a 把自己的公钥给第三方权威机构CA, 然后CA为a制作了一张包含a的公钥和a的个人信息的数字证书, 下次a想给b发文件,只需要把该文件, 文件的数字签名,文件的数字证书都交给b, b从CA获取CA的公钥解密数字证书,就可以得到a的公钥和a的信息,然后再用a的公钥验证数字签名。

在这个过程中, b获取公钥是从CA获取到的,而不是b给他的,而且CA证书是定期会失效的,CA证书信息还包含权威机构的认证信息,别人是伪造不了的。

SSL

ssl 是https协议给http外加的一层隧道协议

这个协议主要用于网页加密。客户端向服务器发出加密请求。服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

客户端(浏览器)中会有一个证书管理器, 有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

如果浏览器发现用户正在浏览的网址和数字证书中的网址不一致,那么浏览器就会发出如下警告:

image.png

如果这张数字证书不是由受信任的机构颁发的,那么浏览器发出警告为:

image.png

参考:

https://www.zhihu.com/question/52493697

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

上一篇下一篇

猜你喜欢

热点阅读