众所周知,https相对于http来说安全了有很多,大概思想就是有了CA认证,那啥是CA认证呢,到底https对http来说有了那几点优化呢?
首先要浅谈下对称和非对称加密对于http的优化
a指客户端,b指服务端
对称加密:(AES加密)
假如a和b通讯:
a:你好啊,我是小a 这样b当然轻而易举的能收到
如果用对称加密的话
a:xxx(对称加密工具)
b:收到加密工具解密xxx,这样就能获取到 你好啊,我是小a
那在应用层实用对称加密的话,如果中间人第一次就截取到了这个加密工具那她就能篡改a的内容向b发信息
这样显然是不可靠的,由此由来了非对称加密
非对称加密 (RSA加密)
这里要知道的是公钥和私钥的概念:
就是公钥加密的,必须要私钥来解密,这样即使获得了公钥,中间人也获取不到内容了。
假如a和b通讯:
1,b 先把自己的公钥发给a
2,a 先用对称加密加密xxx(对称加密工具),然后后用b发给他的公钥在进行二次加密
xxxx=xxx进行非对称加密工
然后因为私钥是自己b保留的所有人都拿不到b的私钥,所以b在获得这个xxxx时,用自己的私钥解密xxxx,从而获得了xxx(对称加密),在通过对称解密获得 你好啊,我是小a,然后在通过对称加密给a发信息。那这样是否安全了呢?
我们知道,如果中间人把第一步篡改成把自己的公钥匙发给a那这样
a其实不知道被篡改了,同样用了中间人的公钥进行非对称加密
yyyy=xxx进行非对称加密工
因为私钥在中间人那里,中间人能获取到xxx然后解得明文:从而篡改a发给b的值,那其实也有问题的。
最终方案 CA认证机构
首先基于第二种类型的情况下,b一开始并没有把自己的公钥给a
而是给了特定的机构,也就是CA机构,来申请这个证书
证书里包括了b的公钥信息 然后用CA机构自己的私钥来加密b,
并且通过b的特有信息生成证书签名然后在用私钥加密证书从而给到
a(简单来说就是2层的私钥加密)
那a通过浏览器维护的权威证书机构的名称和公钥来解密此证书
从而获得b的公钥信息和b的特有信息
也就是为了防止中间人篡改b的公钥匙,因为机构的公钥不只a知道,其他人也知道,如果拦截了此信息获得了b的公钥匙信息和特有信息怎么办?
其实大可不必担心
因为假如中间人篡改了信息拿到了b的特定信息和b的公钥信息,由于没有CA机构的私钥,从而不能生成对正确的证书,所以只能用不正确的私钥生成假的证书,由于a只会用CA的公钥去解密,所以假的证书是不行的,也就是说中间人能拿到拿到明文的内容,而不能篡改明文,以前一直以为获取不到内容的,其实在极端情况下是可以获取的
网友评论