总结:
-
HTTP 的缺点:
- 明文传输
- 不验证通信双方的身份
- 无法证明报文完整性
-
什么是 HTTPS
基于 SSL/TLS (提供加密、认证和完整性保护) 的 HTTP 通信 称为 HTTPS;
第七章、HTTPS
1、HTTP 的缺点
1、通信使用明文
因为 TCP/IP 是使用明文传输的网络,所以基于 TCP/IP 的 HTTP 可能被窃听;
解决方法是加密,加密的对象可分为:
- 通信的加密(http通过和 SSL(Secure Socket Layer,安全套接层)和 TLS(Transport Layer Security,安全层传输协议) 组合使用)
- 内容的加密(对内容加密依然有被篡改的风险)
2、不验证通信方的身份
HTTP 协议不存在确认通信方的处理步骤,所以通信双方的身份可能被伪造;
解决办法是使用 SSL 等其它协议来确定通信方:
- SSL 不仅提供加密处理,还使用了一种称为证书(一对公钥密钥)的手段来确认通信方的身份;
3、无法证明报文完整性
HTTP 协议无法证明通信的报文完整性,因此在通信过程中的内容有可能被篡改(中间人攻击);
解决方法:
-
HTTP 自身增加 MD5 和 SHA-1 等方法来对文件的数字签名(eg:使用 PGP 来创建数字签名)做散列处理;
(无法保证确认结果完全正确,因为 PGP 和 MD5 本身可能被改写)
-
使用 SSL 提供的 认证 和 加密处理 及 摘要功能;
2、HTTPS(HTTP Secure)
HTTP + 提供 加密、认证 和 完整性保护(使用SSL、TSL) = HTTPS
当使用 HTTPS 时,HTTP 经由 SSL/TSL 和 TCP 通信;
1、HTTPS 采用 对称加密 和 非称加密 并用的混合机制
-
加密方法
- 对称加密
- 非对称加密(公开密钥加密)
-
HTTPS 采用 对称加密 和 非称加密 并用的混合机制
因为 非对称加密 和 对称加密 相比,其处理速度要慢,单纯使用 非对称加密对于访问量大服务器来说要消耗大量资源(建立 SSL 通信、信息的加解密);
所以在 HTTPS 在建立传输前先使用 非对称加密 获取 传输过程中需要使用的 对称加密的密钥;
然后在信息传输过程中使用 对称加密的方式通信;(前一阶段保证了数据通信 所用的对称加密密钥不被第三方获得)
-
HTTPS 使用非对称加密时的问题
-
无法证明 公钥 本身是 客户需要连接的 服务器 的公钥,即无法验证服务器的合法性;
解决方法:使用 CA (第三方数字证书认证机构) 颁发的 公钥证书;
-
-
-
HTTPS 引入 CA 进行通信的具体过程
-
客户端证书
提供和公钥证书类似的效果,但是是用来证明客户端的;
银行的网上银行采用了 客户端证书 来确认用户是否从特定的终端访问网银;
因为客户端证书的安装和费用问题,普通情况下极少使用;
-
自签名证书
每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书;
但这在互联网上是 无用 的签名证书;