HTTPS 之原理

作者: s_在路上 | 来源:发表于2018-09-17 17:19 被阅读41次

    HTTPSHTTP 协议相比提供了

    • 数据完整性:内容传输经过完整性校验
    • 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
    • 身份认证:第三方无法伪造服务端(客户端)身份

    原理

    HTTPS 在传输数据之前需要客户端与服务端之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL 协议是一套加密传输的协议,使用了非对称加密,对称加密以及 HASH 算法。以浏览器和服务器为例,HTTPS 通信过程如下:

    image
    • 浏览器发起往服务器的 443 端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。

    • 服务器收到请求,选择浏览器支持的加密算法和哈希算法。

    • 服务器下将 CA 证书 返回给浏览器。
      采用 HTTPS 协议的服务器必须要有自己制作或者 CA 证书,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用 CA 证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。公钥给别人加密使用,私钥给自己解密使用。

    • 浏览器解析证书

      • 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应 的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。
      • 用机构的证书公钥解密得到证书的内容和证书签名,内容包括证书的颁发机构,过期时间等。浏览器会先验证证书签名的合法性,签名通过后,会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的公钥了。
      • 如果证书没有问题,那么就生成一个随机数 R,然后用证书对该随机数进行加密。
    • 传送加密信息
      这部分传送的是用证书加密后的随机数 R,目的就是让服务器得到这个随机数 R,以后浏览器和服务器的通信就可以通过这个随机数 R 来进行加密解密了。

    • 服务器解密浏览器传过来的加密信息
      服务端用私钥解密后,得到了客户端传过来的随机数 R ,然后把内容通过随机数 R 进行对称加密。

    • 服务器以随机数 R 为密钥把传输内容使用对称加密算法加密并传输给浏览器。

    • 浏览器以随机数 R 为密钥使用之前约定好的解密算法获取加密内容。

    中间人攻击原理

    中间人攻击原理

    针对SSL的中间人攻击方式主要有两类,分别是SSL劫持攻击和SSL剥离攻击,详细请看中间人攻击原理

    预防中间人攻击

    解决办法:
    HTTPS 双向验证在客户端中内置服务器公钥,在服务器下将 CA 证书给浏览器的时候返回的公钥,服务端要求客户端发送客户端的证书,客户端会将自己的证书发送至服务端。除了验证公钥的有效性之外,再比对公钥是不是和内置的公钥一样,不一样说明被中间者攻击了,就断开链接不在请求了。

    Https双向认证

    相关文章

      网友评论

        本文标题:HTTPS 之原理

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