• 【图解HTTP】确保WEB安全的HTTPS


    【HTTP的缺点】

    【通信使用明文,内容可能会被窃听】

    HTTP报文使用明文方式发送

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

    按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。

    即使经过加密处理的通信,也会被窥视到通信内容,但是无法破解报文信息的含义。

     窃听相同段上的通信,只需要收集在互联网上流动的数据报就行了。

    对于收集来的数据包的解析工作,可交给抓包工具

    【加密处理防止被窃听】

    加密的对象

    【通信加密】

    HTTP可以通过和SSL(安全套接层)或TLS(安全层传输协议)的组合使用,加密HTTP的通信内容。

    用SSL建立安全通信线路后,就可以在这条线路上进行HTTP通信。与SSL组合使用的HTTP称为HTTPS 

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

    【内容加密】

    由于HTTP协议中没有加密机制,那么就对HTTP协议传输的内容本身加密。

    即把HTTP报文例所含的内容加密处理。

    要求客户端和服务器同时具备加密和解密机制。主要应用在Web服务中。

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

    HTTP协议中的请求和响应不会对通信方进行确认。

    也就是说存在“服务器是否就是发送请求中URI真正指定的注解,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。

    【任何人都可发送请求】

    在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都以发送请求。

    另外,服务器只要接受到请求,不管对方是谁都会返回一个响应

     【HTTP隐患】

    (1)无法确定请求发送至目标的Web服务器是否是按真实意图返回相应的那台服务器

    (2)无法确定响应返回到的客户端是否是按真实意图接受响应的客户端

    (3)无法确定正在通信的对方是否具备访问权限

    (4)无法判定请求是来自何方,出自谁手

    (5)即使是无意义的请求也会全收。无法组织海量请求下的Dos攻击。

    【查明对手的证书】

    SSL不仅提供加密处理,而且使用了一种被称为证书的手段,可以用于确定方。

    证书是由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。

    另外,伪造证书是很困难的。所以只要能够确认通信方持有的证书,即可判断通信方的真实意图。

     另外,客户端持有证书即可完成个人身份的确认,也可用于对Web网站的认证环节。

    【接受到的内容可能有误】

    由于HTTP协议无法证明通信报文完整性。没有办法确认,发送的请求和接受到的请求/响应是前后相同的。

     【中间人攻击】请求或响应在传输涂中,遭攻击者拦截并篡改内容的攻击

     【如何防止篡改】

    常用:MD5、SHA-1散列值校验、数字签名方法

    提供文件下载服务的web网站也会提供相应的以PGP创建的数字签名及MD5算法生成的散列值。

    PGP是用来证明创建文件的数字签名,MD5是由单向函数生成的散列值。

    (1)不论使用哪一种方法,都需要操作客户端的用户本人亲自检查验证。浏览器无法自动帮用户检查。

     (2)但是PGP和MD5本省被改写的话,用户是没有办法意识到的。

    为了有效防止这些弊端,有必要使用HTTPS。

    【HTTP+加密+认证+完整性保护=HTTPS】

     经常会在web登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用http://,而是用https://。

    另外,当浏览器访问HTTPS通信有效的web网站时,浏览器的地址栏会出现一个带锁的标记

     【HTTPS是身披SSL外壳的HTTP】

    HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替了而已。

    通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再有SSL和TCP通信。

    所以HTTPS就是身披SSL协议这层外壳的HTTP。

     在采用SSL后,HTTP就拥有了HTTPS加密、证书和完整性保护等功能。

    SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telent等协议均可配合SSL协议使用。

    SSL是当今世界上应用最为广泛的网络安全技术。

    【相互交换秘钥的公开密钥加密技术】

    【共享秘钥加密】

    加密和解密用同一个秘钥,又叫对称秘钥加密

     

     

    【公开秘钥加密方法】

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

    私有秘钥不能让其他任何人知道,而公开秘钥可以随意发布,任何人都可以获得。

    使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有秘钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。

    另外,要想根据密文和公开秘钥,恢复到信息原文是异常困难的。

     【HTTPS采用混合加密机制】

    HTTPS采用共享秘钥加密和公开秘钥加密两者并用的混合加密机制。

    在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。

     【证明公开秘钥正确性的证书】

    公开密钥加密方式存在的问题:无法证明公开密钥本身是真的公开密钥。

    公开密钥传输途中,可能被攻击者替换掉了。

    为了解决上述问题,可以使用由数字证书认证机构和其他相关机构颁发的公开密钥证书。

    【HTTPS的安全通信机制】

    HTTPS通信步骤:

     当使用SSL时,它的处理速度会变慢。

     (1)使用HTTPS网络负载可能会慢2到100倍。处理和TCP连接、发送HTTP请求和相应以外,还必须进行SSL通信,因此整体上处理通信量不可避免会增加。

    (2)SSL必须进行加密处理。在服务器和客户端都需要进行加密和解密的运算处理。因此从结果上讲,会比HTTP消耗更多服务器和客户端的硬件资源,导致负载增强。

    针对速度变慢这一问题,并没有根本性的解决方案,会使用SSL加速器这种硬件来改善问题。该硬件为SSL通信专用硬件,相对软件讲,能够提高数倍SSL计算速度。

    【为什么不一直使用HTTPS】

    (1)加密通信会消耗更多的CPU。

    (2)购买证书需要开销。

    所以,只有对敏感信息才会使用加密。

  • 相关阅读:
    redis键的过期删除策略
    差分方程模型:蛛网模型
    C# App.xaml.cs的一些操作
    java计算机毕业设计线上竞赛训练系统录屏源程序+mysql+系统+lw文档+远程调试
    手把手教你搭建SpringCloud项目
    Python Django 之连接 Mysql 数据库详解
    1.1 向量与线性组合
    Django--重定向redirect
    字符串的认识
    音质和音色一样吗?
  • 原文地址:https://blog.csdn.net/m0_52043808/article/details/126698731