理解HTTPS加密安全传输流程

HTTPS(SSL/TLS)是计算机网络的知识,主要用来对HTTP协议传输的文本进行加密,提高安全性的一种协议。
因为HTTP是明文传输,所以会很有可能产生中间人攻击(获取并篡改传输在客户端及服务端的信息并不被人发觉),HTTPS加密应运而生。
非对称加密,就是用一个密钥对数据进行加密和解密。
对称加密,就分为公钥和私钥,公钥加密的数据可以用私钥解密,私钥加密的数据可以用公钥解密。
①  采用非对称加密,传输数据时无论是服务器向客户端,还是客户端向服务器, 发送密钥,都是有可能被窃取的
② 采用对称加密,服务器有公钥A私钥a ,服务器给客户端发送公钥A的明文(会被窃取);
     客户端有公钥A,使用其加密数 据 发送给服务器;
     服务器拥有私钥a,可以获得数据(中间人没有私钥a无法解密);
     由于客户端只有公钥A,服务器只有使 用私钥加密客户端才能获得数据,此时中间人和客户端都拥有公钥A,数据被窃取。
③  既然一组对称密钥可以实现单项的安全传输,那如果是实现的是两组呢:
      服务器有公钥A私钥a,客户端有公钥B私钥b;
      服 务器向客户端发送公钥A;
      客户端向服务器发送公钥B;
      客户端向服务器发送数据用公钥A加密(只有服务器有私钥a);
      服务器 向客户端发送数据用公钥B加密(只有客户端有私钥b)。
      这样虽然不会被中间人窃取数据,但这样太耗时了,不合适。
④  采用对称和非对称结合的方式:
     服务器有公钥A私钥a;
     客户端向服务器发送请求,服务器发送公钥A的明文数据给客户端(会被窃取);
     客户端根据公钥A制作一份私钥x,使用公钥A对私钥x加密发给客户端(只有客户端有私钥a);
     此时服务器和客户端都拥有了私钥x,后面采用对称加密的方式传输数据
     危害:服务器发送公钥A的明文数据给客户端;
               中间人截取公钥A,把自己的公钥B发给客户端(中间人有私钥b);
               客户端不知道这个公钥B是否是服务器的,制作私钥x,使用公钥B加密私钥x发给服务器;
               中间人截取,使用私钥b获得私钥x,中间人使用公钥A对私钥x加密发给服务器(服务器不知道私钥x已被窃取);
     
     问题:让客户端能够确认收到的公钥,是对应请求的服务器的?
      解决:使用数字证书( 网站在使用HTTPS前,都要向CA机构申领 )传输,数字证书中包含浏览器的公钥数据,持有者信息。
     
     问题:保证数字证书不被修改?
     解决:采用数字签名的方式:
                使用散列函数生成数据对应的散列值,使用签名者的私钥对散列值加密,获得签名;
                签名和证明附加到数据上,发送;
                客户端收到数据,对数据使用散列函数生成散列值1;
                使用签名者的公钥对加密后的散列值解密,获得散列值2;
                比较1 和 2 是否相等
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值