• 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需要加密解密,所以对性能要求比较高。

  • 相关阅读:
    leetcode 155. Min Stack 、232. Implement Queue using Stacks 、225. Implement Stack using Queues
    leetcode 557. Reverse Words in a String III 、151. Reverse Words in a String
    leetcode 153. Find Minimum in Rotated Sorted Array 、154. Find Minimum in Rotated Sorted Array II 、33. Search in Rotated Sorted Array 、81. Search in Rotated Sorted Array II 、704. Binary Search
    leetcode 344. Reverse String 、541. Reverse String II 、796. Rotate String
    leetcode 162. Find Peak Element
    leetcode 88. Merge Sorted Array
    leetcode 74. Search a 2D Matrix 、240. Search a 2D Matrix II
    Android的API版本和名称对应关系
    spring 定时任务执行两次解决办法
    解析字符串为泛型的方法
  • 原文地址:https://www.cnblogs.com/oaoa/p/14857935.html
Copyright © 2020-2023  润新知