https协议是如何保障数据安全的?[]

如果我们要在web的通信过程中保证数据安全,

那就必须保证两点:
    1, 确保我们要访问的服务器的真实性
    2, 在前一条的基础之上构建起来一个不被监听,不被伪造,不被修改的安全的数据传输通道

    只要能够保证这两点,就可以保证数据安全

那么,如何构建出来一个安全的数据传输通道呢?
我们一般都会想到将数据进行加密,我们来看一看使用传统的加密方式能不能实现数据安全:

1, 使用对称加密:
        假使服务器告诉了客户端一个秘钥,服务器在发送数据的时候通过秘钥进行加密,数据包到达客户端之后客户端再通过这个秘钥进行解密,这样我们就可以进行安全的数据交互了,
    
    问题:
        这个秘钥该如何传递呢,服务器该如何在保证黑客窃取不到的情况下将秘钥发送给客户端呢?

2, 使用非对称加密的第一次尝试:
        非对称加密由一个公钥和一个私钥构成,他们共同被称为一个秘钥对儿,加解密的原则是公钥加密私钥解密,私钥解密公钥加密,客户端请求服务器,服务器发给客户端公钥,之后客户端发送的每一条数据都经过公钥加密之后再发送给服务器
        当数据到达服务器,服务器使用自己的私钥解密即可,这个过程中,虽然黑客很有可能获得公钥,但是他没有私钥因而解不开客户端发给服务器的数据,从而保证了数据的安全,
    问题:    
        虽然解决了被监听,被修改的问题,却没有解决被伪造的问题,由于黑客知道了公钥,他就可以伪造客户端的身份,向服务器发送消息,
        
3, 使用非对称加密的第二次尝试:
        客户端先告诉服务器,客户端的公钥是什么,然后客户端使用私钥对数据进行加密,信息到达服务器哪里,服务器使用客户端发给它的公钥解开即可,这个过程中黑客虽然拿到了我的公钥,但是由于拿不到我的私钥,所以黑客仿造不了我的身份
    问题:
        虽然解决了被伪造问题,但是信息的内容完全被黑客知道了,客户端发给服务器的使用私钥加密的信息,黑客直接使用他获取的公钥打开即可,这些信息就完全被公开了
        
4, 使用对称加密和非对称加密结合的办法:
                客户端先请求服务器的公钥,服务器发给客户端公钥,之后客户端使用公钥加密一个秘钥,这个秘钥是客户端提前准备好的,客户端把通过公钥加密之后的秘钥发给服务器,
                服务器使用私钥打开,这样,客户端和服务器就都获得了秘钥,接下来服务器放弃非对称加密的方式,转而使用对称加密的方式,由于黑客不知道服务器的私钥,进而得不到客户端生成的那个秘钥,因此保证了数据安全
    问题:
        如何保证我访问的服务器就是我想访问的那一台呢?即如何防止服务器身份被伪造呢?

5, 使用ca认证:
        举个例子,我们是信任谷歌公司的,谷歌公司信任它旗下的谷歌浏览器,谷歌浏览器信任赛门铁克(一个ca认证机构)公司,赛门铁克公司信任英雄联盟的官网,因此,当用户使用谷歌浏览器访问英雄联盟官网的时候,
        谷歌浏览器就会显示一个绿色的图标并告诉你,这是个受信任的网站,这里就使用到了信任的传递。回到我们的例子中去,我们现在就需要一个客户端和服务器都信任的东西,而这就是一些ca机构,如赛门铁克(Symantec),
        他们存在的意义就在于向整个互联网证明的某个网站的真实性和所有权,
        如果你需要开一个网站,你必须向ca机构上传一些你的图片,资料,注册信息等用以向ca机构证明你对你的网站的所有权,当认证通过之后,ca机构就会颁发给你一个数字签证证书,其实就是你的网站用来做非对称加密的秘钥对儿,
        这样,当有用户使用谷歌浏览器访问你的网站的时候,谷歌信任了赛门铁克,赛门铁克证明了你的网站的合法性,经过一层一层的信任传递,谷歌浏览器最终会向用户声明,这是一个受信任的网站,以上就是真实的网络安全通道的建立过程
        

6,最后的总结:
        在https协议的安全保护机制之下,如果有客户端向服务器发起请求,服务器就会发给客户端经由ca机构认证(使用ca机构的公钥加密)过的公钥,客户端拿到数据包之后,会使用ca认证机构的私钥解密,如果解密成功,则说明这个网站是一个
        经过了ca认证之后的受信任的网站,然后客户端在本地生成一个秘钥,并使用网站发给客户端的公钥加密,之后客户端将加过密的秘钥发送给服务器,服务器再使用自己的私钥解密,即可拿到客户端产生的秘钥,这样,服务器和客户端就都拿到了秘钥,就可以使用
        对称加密进行安全通信啦,这个过程中,黑客即使拿到了网站的公钥,也无法破解客户端发给服务器的数据包,这里的ca认证在于解决服务器的真实性问题,这里由客户端生成的秘钥是为了解决构建安全通道的问题。
        

    最后:
        其实说了这么多,安全通信最终使用的还是对称加密,但由于客户端和服务器的分离,迫使我们解决秘钥的安全传递问题,我们必须使用非对称加密来保证客户端向服务器传递秘钥的过程的安全性,一旦秘钥传递成功,对称加密的条件即成立,安全通道问题也就解决了,最后,只需要使用ca认证机构确定网站的真实性即可。
        那么,qq,微信的聊天内容会不会被腾讯知道呢,理论上是不能的,腾讯就像黑客一样,即使他再邪恶,在网络传输中,也只能起到传递数据包的作用,即使他知道公钥,也解不开数据包,自然是获取不到明文数据的。
        而就像我刚才说的,“理论上”嘛,你懂的!

学IT,上博学谷

你可能感兴趣的:(mysql,数据库)