一、HTTPS简介
百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS。本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义。
HTTPS可以认为是HTTP+TLS,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的。
TLS是传输层加密协议,它的前身是SSL协议,最早由netscape公司于1995年发布,1999年经过IETF讨论和规范后,改名为TLS。如果没有特别说明,SSL和TLS说的是同一个协议。
HTTP和TLS在协议层的位置以及TLS协议的组成如下图:
TLS协议主要有五部分:应用数据层协议,握手协议,报警协议,加密消息确认协议,心跳协议。
TLS协议本身又是有record协议传输的,record协议的格式如上图最右所示。
目前常用的 HTTP 协议是 HTTP1.1,常用的 TLS 协议版本有如下几个:TLS1.2, TLS1.1, TLS1.0 和 SSL3.0。其中 SSL3.0 由于 POODLE 攻击已经被证明不安全,但统计发现依然有不到 1% 的浏览器使用 SSL3.0。TLS1.0 也存在部分安全漏洞,比如 RC4 和 BEAST 攻击。
TLS1.2 和 TLS1.1 暂时没有已知的安全漏洞,比较安全,同时有大量扩展提升速度和性能,推荐大家使用。
需要关注一点的就是 TLS1.3 将会是 TLS 协议一个非常重大的改革。不管是安全性还是用户访问速度都会有质的提升。不过目前没有明确的发布时间。
同时 HTTP2 也已经正式定稿,这个由 SPDY 协议演化而来的协议相比 HTTP1.1 又是一个非常重大的变动,能够明显提升应用层数据的传输效率。
二、HTTPS功能介绍
百度使用HTTPS协议主要是为了保护用户隐私,防止流量劫持。
HTTP本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间这完全能够看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面插得广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。
这里提到的中间者主要指一些网络节点,是用户数据在浏览器和百度服务器中间传输必须要经过的节点。比如WIFI热点,路由器,防火墙,反向代理,缓存服务器等。
在HTTP写一下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过HTTPS是这些劫持行为的克星,能够完全有效的防御。
总体来说,HTTPS协议提供了三大强大的功能来对抗上述的劫持行为:
1、内容加密。浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。
2、身份认证。保证用户访问的是百度服务,即使被DNS劫持到了第三方站点,也会提醒用户没有访问百度服务,有可能被劫持。
3、数据完整性。防止内容被第三方冒充或者篡改。
HTTPS原理介绍
1、内容加密
加密算法分为两种:对称加密和非对称加密,对称加密是指加密和解密使用的是相同的密钥。而非对称加密就是指加密和解密使用不同的密钥。
2、身份认证
身份认证主要涉及到PLI和数字证书。通常来讲PKI(公钥基础设施)包含如下部分:
End entity:终端实体,可以是一个终端硬件或者网站。
CA:证书签发机构。
RA:证书注册及审核机构。比如审查申请网站或者公司的真实性。
CRL issuer:负责证书撤销列表的发布和维护。
Repository:负责数字证书及 CRL 内容存储和分发。
申请一个受信任的数字证书通常有如下流程:
1, 终端实体生成公私钥和证书请求。
2, RA 检查实体的合法性。如果个人或者小网站,这一步不是必须的。
3, CA 签发证书,发送给申请者。
4, 证书更新到 repository,终端后续从 repository 更新证书,查询证书状态等。