美文网首页
浅谈https的加密过程

浅谈https的加密过程

作者: Hello_Kugou | 来源:发表于2020-09-28 16:58 被阅读0次

背景

前段时间看了一道面试题,题目是论述一下https加密过程,正好过段时间要将公司服务器http换成https,提前梳理一下内部过程

涉及知识点

TLS/SSL

神马是TLS/SSL:TLS、SSL其实是类似的东西,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。

加密类型

对称加密
  • 对称加密的意思就是,加密数据用的密钥,跟解密数据用的密钥是一样的。
    对称加密的优点在于加密、解密效率通常比较高。缺点在于,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人。此外,对于多个有数据交换需求的个体,两两之间需要分配并维护一把密钥,这个带来的成本基本是不可接受的。
非对称加密
  • 非对称加密的意思就是,加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的。

什么叫做公钥呢?其实就是字面上的意思——公开的密钥,谁都可以查到。因此非对称加密也叫做公开密钥加密。
相对应的,私钥就是非公开的密钥,一般是由网站的管理员持有。

  • 公钥、私钥两个有什么联系呢?
    简单的说就是,通过公钥加密的数据,只能通过私钥解开。通过私钥加密的数据,只能通过公钥解开。
    很多同学都知道用私钥能解开公钥加密的数据,但忽略了一点,私钥加密的数据,同样可以用公钥解密出来。而这点对于理解HTTPS的整套加密、授权体系非常关键。
  • 用非对称加密,就能解决数据传输安全的问题了吗?前面特意强调了一下,私钥加密的数据,公钥是可以解开的,而公钥又是加密的。也就是说,非对称加密只能保证单向数据传输的安全性。

公开密钥加密:两个明显的问题

问题一:公钥如何获取

浏览器是怎么获得XX的公钥的?当然,小明可以自己去网上查,某网站也可以将公钥贴在自己的主页。然而,对于一个动不动就成败上千万的社交网站来说,会给用户造成极大的不便利,毕竟大部分用户都不知道“公钥”是什么东西。

解决方案

这里要涉及两个非常重要的概念:证书、CA(证书颁发机构)。

  • 证书:可以暂时把它理解为网站的身份证。这个身份证里包含了很多信息,其中就包含了上面提到的公钥。

也就是说,当小明、小王、小光等用户访问XX的时候,再也不用满世界的找XX的公钥了。当他们访问XX的时候,XX就会把证书发给浏览器,告诉他们说,乖,用这个里面的公钥加密数据。

  • CA(证书颁发机构)

强调两点:

可以颁发证书的CA有很多(国内外都有)。
只有少数CA被认为是权威、公正的,这些CA颁发的证书,浏览器才认为是信得过的。比如VeriSign。(CA自己伪造证书的事情也不是没发生过。。。)
证书颁发的细节这里先不展开,可以先简单理解为,网站向CA提交了申请,CA审核通过后,将证书颁发给网站,用户访问网站的时候,网站将证书给到用户。

问题二:数据传输仅单向安全

前面提到,公钥加密的数据,只有私钥能解开,于是小明登录的账号、密码用公钥加密是安全了,半路不怕被拦截。
然后有个很大的问题:私钥加密的数据,公钥也能解开。加上公钥是公开的,小明的隐私数据相当于在网上换了种方式裸奔。(中间代理服务器拿到了公钥后,毫不犹豫的就可以解密小明的数据)

解决方案

HTTPS虽然用到了公开密钥加密,但同时也结合了其他手段,如对称加密,来确保授权、加密传输的效率、安全性。

概括来说,整个简化的加密通信的流程就是:

小明访问XX,XX将自己的证书给到小明(其实是给到浏览器,小明不会有感知)
浏览器从证书中拿到XX的公钥A
浏览器生成一个只有自己自己的对称密钥B,用公钥A加密,并传给XX(其实是有协商的过程,这里为了便于理解先简化)
XX通过私钥解密,拿到对称密钥B
浏览器、XX 之后的数据通信,都用密钥B进行加密
注意:对于每个访问XX的用户,生成的对称密钥B理论上来说都是不一样的。比如小明、小王、小光,可能生成的就是B1、B2、B3.

HTTP和HTTPS的区别

HTTP

HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。这些节点可能是路由器、代理等。

HTTPS

HTTPS其实就是secure http的意思啦,也就是HTTP的安全升级版。稍微了解网络基础的同学都知道,HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义了数据如何进行包装。

区别

HTTP --> TCP (明文传输)
HTTPS相对于HTTP有哪些不同呢?其实就是在HTTP跟TCP中间加多了一层加密层TLS/SSL。
原先是应用层将数据直接给到TCP进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。
大致如图所示

image.png

HTTPS握手流程

面啰啰嗦嗦讲了一大通,HTTPS如何确保数据加密传输的安全的机制基本都覆盖到了,太过技术细节的就直接跳过了。

最后还有最后两个问题:

  1. 网站是怎么把证书给到用户(浏览器)的
  2. 上面提到的对称密钥是怎么协商出来的

上面两个问题,其实就是HTTPS握手阶段要干的事情。HTTPS的数据传输流程整体上跟HTTP是类似的,同样包含两个阶段:握手、数据传输。
握手:证书下发,密钥协商(这个阶段都是明文的)
数据传输:这个阶段才是加密的,用的就是握手阶段协商出来的对称密钥

大致流程我画了一下流程图以供参考

image.png

本篇文章参考了一下博文:[https://blog.csdn.net/jasonjwl/article/details/50985271?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param]

相关文章

  • 浅谈https的加密过程

    背景 前段时间看了一道面试题,题目是论述一下https加密过程,正好过段时间要将公司服务器http换成https,...

  • 浅谈HTTPS加密

    了解web网络基础,什么是http HTTP( HyperText Transfer Protocol,超文本传输...

  • https加密过程

    自苹果要求使用https以来,项目中全部换用https请求了。平时开发中对https理解的也不是很深入,只是知道客...

  • https加密过程

    HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服...

  • https加密过程

  • HTTPS加密过程

    我不是生产者,我只是个搬运工 1.HTTP和HTTPS的区别与联系: 二者都是网络传输协议,https是http的...

  • https加密过程

    http和https 二者都是网络传输协议(应用层),https是在http基础上进行加密的 https是符合ht...

  • HTTPS加密过程

    关键在于“检查证书”合法性的过程,这个步骤不需要联网,最终依赖的是浏览器或操作系统早就内置好的信息。

  • https加密过程

    https协议实际上就是包裹了ssl的http,有一个公式 http+加密+认证+完整性保护 = https ht...

  • HTTPS的加密过程

    一、HTTPS HTTPS即加密的HTTP,HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTT...

网友评论

      本文标题:浅谈https的加密过程

      本文链接:https://www.haomeiwen.com/subject/svoduktx.html