zoukankan      html  css  js  c++  java
  • 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需要加密解密,所以对性能要求比较高。

  • 相关阅读:
    磁盘阵列监控
    Docker-PS命令解析
    .NET编程周记第3期-2020年1月19日
    Microsoft Ignite The Tour Beijing 记录: Learn Connect Explore
    使用TryGetComponent取代GetComponent以避免Editor中的内存分配
    向.Net/Unity 程序员推荐一个十分因吹斯听的网站:sharplab.io
    Unity AR Foundation 和 CoreML: 实现手部的检测和追踪
    如何使用Android Studio在安卓平台对Unity开发的应用进行性能检查?
    Unity的Mesh压缩:为什么我的内存没有变化?
    Unity User Group深圳站——Timeline & Cinemachine分享
  • 原文地址:https://www.cnblogs.com/oaoa/p/14857935.html
Copyright © 2011-2022 走看看