自学内容网 自学内容网

HTTPS加密流程

    为了防止运营商挟持这样的情况,引入了HTTPS这样的加密机制,HTTPS机制和HTTP除了以你入了一套加密机制外其他的与HTTP没什么区别。

    由于HTTP(超文本传输协议)是一种明文传输协议,这意味着HTTP在传输数据的时候是没有任何的加密的,很容易会使数据被第三方拦截和查看,因此为了防止这种情况的发生,我们引入了一套加密机制也就是HTTPS,通过这种方式就可以有效的方式就可以有效的防止第三方拦截数据和查看,这种加密方法分为几步,通过这几步逐步的使这种方式更加完善。

  1)对称加密:由于HTTP是明文传输的,引入只要第三方拿到了这个数据就可以进行查看,是非常不安全的,因此我们引入了一种凡是也就是对称“加密”,通过这种方式将数据进行加密,通过米问的方式进行传输。

    这的对称加密可以理解为有一个密码本,加密和解密都必须使用这个密码本才可以加密和解密数据。

    

    由于一个服务器会同时为多个客户端提供服务,那么我们是每个客户端都是用的套密码本还是各用个的呢?实际情况下我们当然是使用不同的密码本,如果我们使用了同一种密码本,那么如果第三方(黑客)自己创建了一个服务器那么密码不就泄露了吗?因此在客户端连上服务器的时候会随机生成一个随机的对称密钥,客户端只有拿到这个秘钥才可以进行解密。

    2)传输对称密钥给服务器。但传输对称密钥给服务器也会造成非常严重的情况,传输对称密钥虽然听起来起到了很好的作用但是事实上我如果我们只传输对称密钥,并不会对HTTP数据的传输起到明显的作用。

    前面我们讲到了对称加密,那么我们该如何将对称加密的秘钥发送给服务器,并且还有确保不会被第三方搞破坏呢?如果发生线面这种情况又该怎么办呢?

     如果发生这种方情况那么我们的对称加密就恍若无物,没有起到一点作用,因此我们需要对对称密钥进行加密以防止对称秘钥被第三方截获,因此我哦们使用到了对称加密来避免这种情况。

     3)非对称加密:非对称加密就是有两套密码本,如果一个用于加密那么另一个就用于解密, 公开的密码本称为“公钥”,非公开的称为“私钥”,当然这种也不是固定的,主要看人如何使用。

    非对称加密并不是取代了对称加密,传输数据的的加密方式还是对称加密,非对称加密只是起到了辅助作用。

    4)中间人攻击: 虽然上述的加密凡是看起来不错,但是具有严重缺陷,比如黑客的设备在客户端面前假扮服务器,在服务器面前假扮客户端。

    如果发生了中间人攻击这种情况是非常严重的,由于传输数据是需要借助非对称加密,所以在客户端发送数据前会先通过验证公钥的方式确认对方是否是服务器,再决定是否要传输数据,在这个过程中服务器会返回一个响应告诉客户端公钥是啥,但是这个响应被第三方(黑客)截获了,并且自己生成了一个公钥返回给客户端,此时客户端就以为,返回的这个响应是服务器发送的公钥,因此客户端就开始发送“对称密钥”(这个对称密钥使用过黑客自己生成的)。黑客截获到了这个请求之后,就会基于服务器返回的公钥进行加密是服务器认为这个加密后的请求是由自己发送的公钥进行加密的此时客户端和服务器就交流完毕了,之后服务器就开始传输数据数据了。

    由此可见只是使用非对称加密是无法完全的解决这个问题的。

    5)避免中间人攻击,引入证书机制:被中间人攻击这个问题的关键是就是要让客户端确定拿到的公钥是不是正确的,是不是真正有服务器发送来的公钥!

    此处我们需要引入第三方机构,第三方机构的作用是如果你想搭建一个服务器,使用HTTPS就需要在公正机构这里申请证书,谁给你请的时候就需要提供一些材料,比如网站的域名,营业执照,备案号,公钥等等。申请通过后公正机构机会生成一个“电子证书”,这个证书可以理解为一个结构化的字符串里面包含:

    • 证书发布机构
    • 证书有效期
    • 公钥
    • 证书所有者
    • 签名
    • ......

      其中签名是保证证书合法性的关键要点,签名是由校验和(证书中所有字段综合在一起计算校验和)+加密(公正机构会自己生成一堆公钥私钥,其中公钥会发送给哥哥客户端,私钥则会由公正机构自己保存)构成的。

    在服务器申请到证书之后,客户端从服务器中拿公钥并不只是拿公钥而是拿整个证书,此时就可以通过证书中的数字签名,判断证书的合法性来判断这个证书是不是服务器的,有没有被黑客(第三方)篡改过。

    这里还有一个问题,当客户端拿到公正机构的公钥如何确保这个公钥是公正机构发送的而不是何可(第三方)伪造的呢?

    事实是这个公钥并不是通过网络获取到的,而是操作系统内置的,因此黑客(第三方)就难以下手了,当然如果这个黑客(第三方)十分的牛掰,通过技术手段获取到操作系统中的公钥就另当别论了。 

    如果黑客(第三方)截获了证书篡改了数据,同时修改了数字签名使得解密出来的结果和之前的结果一直?

    这种情况理论上是不可执行的,首先这个公正机构的私钥理论上是无法获取的,并且如果采用黑客(第三方)自己生成的私钥进行加密,客户端这里的公钥是无法解密的。


原文地址:https://blog.csdn.net/westdjjdjdk/article/details/142523085

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!