HTTPS

HTTP的缺点:

       • 通信使用明文(不加密),内容可能会被窃听

       • 不验证通信方的身份,因此有可能遭遇伪装

       • 无法证明报文的完整性,所以有可能已经被篡改

TCP/IP是可能被窃听的网络

为了防止被窃听可能进行加密处理

       a. 通信的加密

    HTTP中没有加密机制,但是可以通过和SSL(安全套接层)或者TLS(安全传输协议)组合使用,对HTTP的通信内容进行加密,SSL会简历安全通信线路,与SSL组合使用的HTTP称为HTTPS

  b. 内容的加密

         对HTTP报文进行加密处理之后再发送请求,客户端和服务端必须同时具备加密和解密机制。

HTTP协议不验证通信方的身份,任何人都可以发送请求,而且无论是谁发送过来的请求都会返回响应。因此会存在以下隐患

  1. 发送请求到的服务器可能是伪装的服务器
  2. 响应返回的客户端可能是伪装的客户端
  3. 无法确定通信的双方是否有访问权限
  4. 无法判定请求是来自何方
  5. 因为无意义的请求也会照单全收,无法阻止海量请求下的Dos攻击(拒绝服务攻击)

HTTP协议无法确定通信方,但是SSL可以

       SSL不提供加密,但是使用了一种证书的手段,由第三方机构颁发,很难伪造,所以只要确定通信双方的证书就可以判断通信的真实意图。

无法证明报文的完整性,可能已经遭篡改,就是文件在传输途中可能被篡改为其他内容,这样遭攻击者拦截并篡改内容的攻击称为中间人攻击(MITM)

       为了防止篡改可以用PGP创建数字签名以及MD5算法生成散列值,浏览器不会帮你验证,需要自己验证,但是这样也不能完全确保结果正确,因为PGP和MD5也有可能被改写。

HTTPS = HTTP+加密+认证+完整性保护 = 身披SSL外壳的HTTP

 

 

相互交换秘钥的公开秘钥加密技术,加密算法是公开的,但是密钥是保密的,加密和解密用同一个密钥的方式称为共享密钥加密,也叫对称密钥加密,一旦被攻击者获取密钥,那么加密就失去意义。

使用两把密钥的公开密钥加密

       使用一对非对称的密钥,一把叫做私有密钥,一把叫做公开秘钥

       用对方的公开密钥进行加密,对方收到之后用自己的私有密钥进行解密

但这有一个缺点,就是无法验证公开密钥就是对方真实的公开密钥,公开密钥在传输过程中也可能会被攻击者替换

       为了解决这个问题可以使用数字证书认证机构CA及其相关颁发的公开密钥证书,会对公开密钥做数字签名,然后将公开密钥放入公钥证书绑定在一起,服务器会把这个公钥证书发送给客户端。数字证书认证机构的公开密钥已经植入到浏览器里了。

 

 

EV SSL证书,可以证明通信一方的服务器是否规范,也可以确认对方服务器背后运营的企业是否真实存在。

客户端证书

       HTTPS还可以对客户端进行认证,确保客户端的真实性,但是需要付费购买,只有特殊业务才需要客户端证书比如登录网银,但是客户端证书只能证明客户端实际存在,但是不能证明用户本人的真实有效性。

SSL机制中认证机构之所以可行,是建立在其信用绝对可靠的前提下。

自认证机构颁发的证书称为自签名证书,但基本上没用,因为无法消除伪装的可能性。

多数浏览器会内置备受信赖的认证机构的证书。

 

HTTPS使用SSL(安全套接层)和TLS(安全传输协议)两个协议,SSL是由网景通讯率先倡导的,现在主导权转移到IETF(Internet工程任务组)的手中,TSL是以SSL为原型开发的协议,有时候统称该协议为SSL协议,当前主流的是SSL3.0和TLS1.0,SSL和TLS是并列关系,加密算法不同。

 

有些网站不使用HTTPS协议,因为一租证书需要花钱,因为HTTPS需要加密解密,所以对性能要求比较高。

posted @ 2021-06-07 10:49  喵喵队立大功  阅读(93)  评论(0编辑  收藏  举报