zoukankan      html  css  js  c++  java
  • HTTPS协议

    在了解HTTPS协议之前,我们先了解一下两个概念:对称加密和非对称加密

    对称加密:是指加密的密匙和解密密匙是一样的。通常使用的AES和TEA算法,他的特点是计算量小,又有一定的破解门槛

    非对称加密:是指加密的密匙和解密的密匙是不一样的,也就是密匙成对出现(根据公匙无法推知私匙,根据私匙也无法推知公匙)

    加密解密使用不同的密匙(公匙加密需要私匙解密,私匙加密需要公匙解密),他的特点是计算量大,常用的友RSA、ECC算法

    基于性能的考虑一般都使用非对称加密算法得出密匙,再用对称加密算法对消息内容进行加密,再传输

    HTTP 协议可以轻松抓包并获得其中的内容,是一个不安全的协议,

    而 HTTPS ( Hypertext Transfer Protocol over Secure Socket Layer )则是以安全为目标的 HTTP 通道,

    简单来讲是 HTTP 的安全版,HTTPS 的安全基础是 TLS(SSL 的升级版)

    它是一个URI scheme(抽象标识符体系),句法类同 HTTP 体系,用于安全的 HTTP 数据传输

    HTTPS:URL 表明它使用了HTTPS ,但 HTTPS 的存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与TCP 之间)

    1.TLS

    TLS协议可用于保护正常运行与TCP智商的任何应用协议的通信

    TLS协议的有点在于它是与应用层协议无关的,高层的应用协议能透明的建立于TLS协议之上

    TLS协议的工作流程如下

    (1)客户端的浏览器向服务器传送客户端TLS协议的版本号、加密算法的种类,产生的随机数,以及其他服务器和客户端之间通信所需要的各种信息

    (2)服务器向客户端传送TLS协议的版本号、加密算法的种类、随机数以及其他相关的信息,同时服务器还要想客户端传送自己的证书

    (3)客户端利用服务器出过来的信息验证服务器的合法性,服务器的合法性包括:

      (1)证书是否过期(2)发行服务器证书的CA是否可靠(3)发行者证书的公式能否正确解开服务器证书的“发行者的数字签名”

      (4)服务器证书上的域名是否和服务器的实际域名想匹配等

    如果合法性验证没有通过,通信将断开;如果合法性验证通过,将继续进行(4)

    (4)客户端随机产生一个用于后面通信的“对称密码”,然后用服务器的公匙(由(2)传送过来的)对其加密,然后将加密后的“预主密码”传给服务器

    (5)如果服务器要求客户的身份认证(在握手过程中为可选),用户可以产生一个随机数然后对其进行数据签名,将这个含义签名的

    随机数和客户自己的整数以及加密过的“预主密码”一起传给服务器

    (6)如果服务器要求客户的身份认证,服务器必须检验客户整数和签名随机数的合法性,具体的合法性的验证过程包括:

      (1)客户的整数使用日期是否有效(2)为客户提供证书的CA是否可靠(3)发型CA的公匙是否能否正确解开客户证书的发型CA的数字签名

      (4)检验客户的证书是否在证书废止列表(CRL)中。

    检验如果没有通过,通信立刻中断;如果验证通过,服务器将用那个自己的私匙解开加密的“预主密码”,

    然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通信密码)

    (7)服务器和客户端用相同的主密码即“通话密码”,一个对称密匙用于TLS协议的安全数据通讯的加解密通信。同时在TLS通信过程中,

    还要完成数据通信的完整性,防止数据通信中的任何变化

    (8)客户端向服务器端发出信息,指明后面的数据通信将使用(7)中的主密码为对称密匙,同时通知服务器客户端的握手过程结束

    (9)服务器向客户端发出信息,指明后面的数据通信将使用(7)中的主密码为对称密匙,同时通知客户端服务器端的握手结束

    基于TLS的HTTPS有以下几个特点

    (1)客户端产生的密匙只要客户端和服务器端能得到 (2)加密的数据只要客户端和服务器才能得到明文

    (3)客户端到服务端的通信是安全的

    HTTPS和HTTP的区别

    (1)HTTPS协议需要到CA申请证书,一般免费的证书很少,需要交费

    (2)HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议

    (3)HTTP和HTTPS使用的是完全不同的连接方式,用的端口不同,前者是80,后者是443

    (4)HTTP的连接很简单,是无状态的;HTTPS协议是由SSL和HTTP协议构成的可进行加密传输的、身份认证的网络协议,比HTTP协议安全

    (5)目前,HTTPS的应用比HTTP少,是因为HTTPS比较耗性能,对于安全性没那么高要求的应用来说,用HTTP就足够了

  • 相关阅读:
    Mysql:mysqlslap:基于5.7.36的修改版:不自动创建测试schma、不删除测试schema、默认生成初始化记录数为1
    Mysql:mysqlslap:自带的简单压力测试工具:使用、bug等:续(为了方便阅读)
    《微服务设计》
    E: Unable to locate package vim
    'dependencies.dependency.version' for org.testng:testng:jar is either LATEST or RELEASE (both of them are being deprecated)
    Linux
    硬盘IO性能估算入门
    [转载]在 Linux 中使用 fsck 命令修复文件系统
    阿里巴巴 P8、P9 及以上到底是什么水平?
    课程表-python
  • 原文地址:https://www.cnblogs.com/tijie/p/10583502.html
Copyright © 2011-2022 走看看