HTTP缺点:
- 通信使用明文,不加密
- 不验证通信身份
- 任何人都可发起请求
- 无法确定请求发送至目标的 Web 服务器是否是按真实意 图返回响应的那台服务器。有可能是已伪装的 Web 服务器。
- 无法验证报文完整性
-
- 接收的内容可能有误
HTTPS简介:
- 与 SSL组合使用的 HTTP 被称为 HTTPS
- HTTP+ 加密 + 认证(证书)+ 完整性保护 =HTTPS
- 通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通信,再由 SSL和 TCP 通信了。
相互交换密钥的公开密钥加密技术
- SSL采用一种叫做公开密钥加密的加密处理方式。
- 加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说, 任何人只要持有密钥就能解密了。
共享/对称密钥加密
- 加密和解密同用一个密钥的方式称为共享密钥加密,也被叫做对称密钥加密
- 存在的问题:
-
- 以共享密钥方式加密时必须将密钥也发给对方,如果通信被监听那么密钥就可会落入攻击者之手,同时也就失去了加密的意义
- 成功的接收到了密钥也需要考虑如何安全的保管该密钥防止被窃取
使用两把密钥的公开(非对称)密钥加密
- 公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,另一把叫做公开密钥,公钥和私钥是配对的
-
- 私有密钥不能让其他任何人知道
- 公开密钥则可以随意发布,任何人都可以获得。
- 使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。
HTTPS 采用混合加密机制
- HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
- 公开密钥加密 与 共享密钥加密 的效率问题
-
- 公开密钥加密处理比共享密钥加密方式更为复杂,因此若在通信时使用公开密钥加密方式则效率很低
- 充分利用两者各自的优势
-
- 在交换密钥环节使用公开密钥加密方式(确保密钥安全)
-
-
- 1.使用公开密钥加密方式安全的交换在稍后的共享密钥加密中要使用的密钥
-
-
- 之后的建立通信交换报文阶段则使用共享密钥加密方式。(确保通信效率)
-
-
- 2.确保交换密钥是安全的前提下,使用共享密钥加密的方式进行通信
-
证明公开密钥正确性的证书
- 公开密钥加密方式存在问题:
-
- 无法证明公开密钥本身就是货真价实的公开密钥。
- 什么是证书:
-
- 客户端与服务器双方都可信赖的第三方机构对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书 后绑定在一起。
- 验证流程概括
-
-
- 0.服务端将自己的公开密钥向认证机构申请数字认证,认证机构在确认了服务端身份过后,使用认证机构的私钥对公开密钥进行数字认证并颁发公钥证书,并将该公开密钥放入公钥证书后绑定在一起。
- 1.服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端以进行公开密钥加密方式通信。
- 2.接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证。
- 3.接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:
-
-
-
-
- 1.认证服务器的公开密钥的是真实有效的数字证书认证机构。
- 2.服务器的公开密钥是值得信赖的。
-
-
HTTPS 的安全通信机制
- SSL 和 TLS
-
- HTTPS 使用 SSL和 TLS这两个协议。
- 问题:
-
-
- 当使用 SSL时,它的处理速度会变慢。
- 和使用 HTTP 相比,网络负载可能会变慢 2 到 100 倍。
-
-
- 结论:非敏感信息则使用 HTTP 通信,只有在包含个人信息等敏感数据时,才利用 HTTPS 加密通信。