• https如何工作


    一、http

    网络协议基于分层架构构建了七层模型,是ISO建立的用于计算机或者通信系统之间的互联的标准体系。下图展示了其中的五层:

    http被称为超文本传输协议,是互联网上应用最为广泛的一种网络协议,建立在应用层当中。主要用于从www服务器传输超文本到本地浏览器,更加得高效。

    由于http协议是明文传输,也不要求验证主体,所以在传输过程很容易被获取数据内容,这对于互联网数据来说是很不安全的,因此,https就应运而生。

    二、加密算法

    在了解https之前,需要对一些加密算法有一个概念:

    1、对称加密

    我们使用密钥A去加密一段数据内容,再使用密钥B去解密这段数据内容,如果加密的密钥A和解密的密钥B是一样的,那么这就是对称加密。如:AES、DES加密算法

    2、非对称加密

    非对称加密则加密的密钥A和解密的密钥B不一样,所以非对称加密需要两个密钥,它们是成对存在的。通常称用于加密和传输的密钥为公钥,用于解密的密钥为私钥,私钥不在网络中传输。被公钥加密的数据,必须使用对应的私钥才能解密。如:数字签名

    3、hash算法(下文不涉及hash算法,这里简单提及)

    hash算法是一种简单的单向算法,通过hash算法可以针对数据内容生成一段特定长度、唯一的hash值,但是hash值是不可逆的,经常用于不需要数据还原的完整性校验上。如:MD5、SHA算法

    三、https

    在上文中,我们了解了http是不安全的明文传输,那https是怎么做到安全传输的呢?

    其实https并不是应用层上的一个新的通信协议,它只是在http的基础上加入了一层SSL或TLS,如图:

    下面我们通过一个思考过程来了解https是如何工作的:

    1、简单对称加密

    既然http是不安全的协议,那么我如果希望传输的数据是安全的要怎么办呢?我们能想到的最简单的办法就是对被传输的数据进行加密处理,当传到服务器以后进行数据解密。如图:

    这样存在什么问题呢?很显然,如何有人在传输过程截获了data和key,那么他便可以进行解密,所以这样简单的解密过程并不能保证通信安全。

    2、非对称加密解决安全问题

    我们看到,简单的对称加密是不能保证通信安全的。并且,我们发现不安全的主要原因是在于key是可以被截获并用来解密数据的。

    根据这个问题点,我们考虑一下非对称加密。非对称加密中私钥用来解密,公钥用来加密和传输。那么用来解密的私钥就不会被截获,或者截获了公钥却并不能解密。这么一看,似乎非对称加密已经能够解决通信安全方面的问题了,如图:

    通过传输公钥来加密,以及通过私钥来解密达到了传输过程解决安全问题。但是非对称加密算法的效率是远不及对称算法的,如果存在大量的数据传输,那么非对称加密为了安全性就需要付出很大的低效成本,这对于当前互联网环境来说是不可接受的,那么如何解决效率问题呢?

    3、混合使用解决安全和效率问题

    我们可以这么思考,既然对称加密高效,非对称加密安全,那么我们能否设计一个流程同时利用这两个特性呢?

    基于这个想法,我们想数据data通过对称加密,而需要用来解密数据的key通过非对称加密。到服务端以后,先解密key,然后再通过key对称解密大量数据的data,这样既解决了安全性问题,又解决了大量数据传输效率的问题。如图:

    在上面这个思考过程中,我们从对称加密的不安全到解决非对称加密的效率,了解了https是如何实现安全通信的。

    四、证书

    上面的过程中,我们使用公钥私钥等来加密解密,但是这里面存在一个问题。客户端或者服务端如何知道对方是否是伪造的呢?

    从现实生活中类比,如果你需要购买一颗钻石,但你怎么知道这颗钻石是否是真钻呢,为此你需要查看这颗钻石是否配有相应的证书。密钥也一样,密钥需要证书来证明它是可以被信任的。

    这里的类比你可能会存在以下两个疑惑:

    1、客户端或者浏览器等如何知道密钥是有效的可以被信任的?

    其实浏览器之类的客户端内置了很多根证书,所以一个需要被验证的密钥会根据这些内置的根证书进行验证。如:Android已经将150+个CA证书内置在手机当中,这些证书被全世界所信赖。

    2、它们又是如何知道证明密钥有效的证书是不是也是被伪造的呢?

    在这里要先提及一个证书链的概念,如:

    证书A是可信任的,证书A信任证书B,证书B信任证书C,根据这样的依托关系,那么证书B、C也是可信任的,这个即证书链。

    所以当我们要验证证书是否有效的时候,只需要去验证证书是否在可信任的证书链当中即可。如:阿里云给你颁发了证书,那么它会在阿里云的证书链上去验证证书的有效性。所以如果是一个伪造的证书是无法进入证书链的,也就是无效的不被信任的证书。

    参考文章:

    http://www.songzhw.com/2016/09/13/how-does-https-work/

    https://blog.csdn.net/wen303614/article/details/62422856

  • 相关阅读:
    svn服务器的搭建和使用以及git服务器的搭建和使用
    MySQL Performance Schema详解
    Lua集成Redis及Nginx
    分布式系统下的CAP定理
    分布式事务一站式解决方案与实现
    Zookeeper集群搭建及原理
    Redis主从复制搭建及原理
    vue中给img的src添加token
    调度器34—RT负载均衡 Hello
    tracer ftrace笔记(5)—— 使用笔记汇总 Hello
  • 原文地址:https://www.cnblogs.com/lay2017/p/9447757.html
Copyright © 2020-2023  润新知