图解HTTP之确保Web安全的HTTPS

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daaikuaichuan/article/details/84930784

一、HTTP的缺点

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

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

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

1、通信加密

  一种方式就是将通信加密。 HTTP 协议中没有加密机制, 但可以通过和 SSL(Secure Socket Layer, 安全套接层) 或TLS(Transport Layer Security, 安全层传输协议) 的组合使用,加密 HTTP 的通信内容。

  用 SSL建立安全通信线路之后, 就可以在这条线路上进行 HTTP通信了。 与 SSL组合使用的 HTTP 被称为 HTTPS(HTTPSecure, 超文本传输安全协议) 或 HTTP over SSL。

在这里插入图片描述

2、内容的加密

  还有一种将参与通信的内容本身加密的方式。 由于 HTTP 协议中没有加密机制, 那么就对 HTTP 协议传输的内容本身加密。 即把HTTP 报文里所含的内容进行加密处理。

在这里插入图片描述

二、HTTP+ 加密 + 认证 + 完整性保护=HTTPS

在这里插入图片描述

  HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。通常情况下,HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简而言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。

在这里插入图片描述

  SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说,SSL是当今世界上应用最为广泛的网络安全技术。在采用了SSL之后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。

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

  公开密钥加密使用一对非对称的密钥。 一把叫做私有密钥(private key) , 另一把叫做公开密钥(public key) 。 顾名思义, 私有密钥不能让其他任何人知道, 而公开密钥则可以随意发布, 任何人都可以获得。使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理, 对方收到被加密的信息后, 再使用自己的私有密钥进行解密。 利用这种方式, 不需要发送用来解密的私有密钥, 也不必担心密钥被攻击者窃听而盗走。

在这里插入图片描述

2、HTTPS 采用混合加密机制

  HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。 若密钥能够实现安全交换, 那么有可能会考虑仅使用公开密钥加密来通信。 但是公开密钥加密与共享密钥加密相比, 其处理速度要慢。

3、既然HTTPS安全可靠,那为何所有的Web网站不一直使用HTTPS?

  • 因为与纯文本通信相比,加密通信会消耗更多的CPU以及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定会随之减少。

  • 购买证书的开销也很大,要进行HTTPS通信,证书是必不可少的,而使用的证书必须要向认证机构(CA)购买。通常,一年的授权费用需要600人民币左右。

  所以,如果是非敏感信息一般都使用HTTP通信,只有在包含个人信息等敏感数据时,才会使用HTTPS加密通信。

三、HTTPS工作原理

1. 首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;

2. 客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);

3. 消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;

4. 发送给服务端,此时只有服务端(RSA私钥)能解密;

5. 解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。

在这里插入图片描述

四、确认访问用户身份的认证

  某些Web页面只想让特定的人浏览,或者干脆本人可见。未达到这个目标,必不可少的就是认证功能。HTTP/1.1使用的认证方式如下:

  • BASIC认证(基本认证) → 不够灵活,达不到多数Web网站期望的安全性等级(直接发送明文密码BASE64编码),因此它并不常用。

  • DIGEST认证(摘要认证) → 采用质询响应方式,相比BASIC认证,密码泄露的可能性就降低了。

  • SSL客户端认证 → 借助HTTPS的客户端证书完成认证,凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。

  • FormBase认证(基于表单认证)。

猜你喜欢

转载自blog.csdn.net/daaikuaichuan/article/details/84930784