HTTPS新闻
v 我国仍然有300多万的Windows server2003、XP、Vista用户。而微软早已宣布不再对“Windows server2003、XP、Vista”进行更新服务了,由于系统得不到安全加固,使用这些系统进行web数据交互,更容易引发安全事故:用户信息泄露、系统遭受攻击、资金被盗、窃取数据等等。
v 国外的大型互联网公司很多已经启用了全站 HTTPS,这也是未来互联网的趋势。
v 百度是国内首个全站部署 HTTPS,对国内互联网的全站 HTTPS 进程必将有着巨大的推动作用。
v 国内的大多网站并没有全站部署 HTTPS,只是在一些涉及账户或者交易的子页面/子请求上启用了HTTPS。
v 微软和google都已经宣布2016年及2017年之后不再支持 sha1 签名证书。
v Mozilla更是坚决,在2016年7月1日起就停止支持sha1算法的SSL。
引言
最近有朋友问我,为什么很多网站变成“https://XXX”了。这是因为http数据传输不安全,而https可以保护用户隐私、防止流量劫持。
当然,现在https中的“TLS1.0 和 SSL3.0”也不安全了。
那https该怎么用才安全呢?下面就简单介绍一下“https”所提供的解决方案。
HTTPS概述
HTTPS 可以认为是 HTTP + TLS
v HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的。
v TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 1995 年发布,1999 年经过 IETF 讨论和规范后,改名为 TLS。如果没有特别说明,SSL 和 TLS 说的都是同一个协议。
HTTP 和 TLS 在协议层的位置以及 TLS 协议的组成,如下图:
v TLS 协议主要有五部分:应用数据层协议、握手协议、报警协议、加密消息确认协议、心跳协议。
v 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暂时没有已知的安全漏洞,比较安全,同时有大量扩展提升速度和性能,推荐大家使用。但是Windows server2003、XP、Vista不支持TLS1.1和TLS1.2。
需要关注一点的就是 TLS1.3 将会是 TLS 协议一个非常重大的改革。不管是安全性还是用户访问速度都会有质的提升。不过目前没有明确的发布时间。
同时 HTTP2 也已经正式定稿,这个由 SPDY 协议演化而来的协议相比 HTTP1.1又是一个非常重大的变动,能够明显提升应用层数据的传输效率。
HTTPS怎么用才安全?
HTTP 本身是明文传输的,没有经过任何安全处理。
例如:用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时,发现首页或者结果页面浮了一个很长很大的广告,这也肯定是中间者往页面插的广告内容。如果劫持技术比较低劣的话,用户甚至无法访问百度。
这里提到的中间者主要指一些网络节点,是用户数据在浏览器和web服务器中间传输必须要经过的节点。比如 WIFI 热点,路由器,防火墙,反向代理,缓存服务器等。
在 HTTP 协议下,中间者可以随意嗅探用户搜索内容,窃取隐私甚至篡改网页。不过 HTTPS 是这些劫持行为的克星,能够完全有效地防御。总体来说,HTTPS 协议提供了三个强大的功能来对抗上述的劫持行为:
v 内容加密:浏览器到web服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。
加密算法一般分为两种,对称加密和非对称加密。所谓对称加密(也叫密钥加密)就是指加密和解密使用的是相同的密钥。而非对称加密(也叫公钥加密)就是指加密和解密使用了不同的密钥。
v 身份认证:保证用户访问的是web服务,即使被 DNS 劫持到了第三方站点,也会提醒用户没有访问web服务,有可能被劫持。
身份认证主要涉及到 PKI 和数字证书。通常 PKI(公钥基础设施)包含如下部分:
End entity:终端实体,可以是一个终端硬件或者网站
CA:证书签发机构
RA:证书注册及审核机构。比如审查申请网站或者公司的真实性
CRL issuer:负责证书撤销列表的发布和维护
Repository:负责数字证书及 CRL 内容存储和分发
v 数据完整性:防止内容被第三方冒充或者篡改。
openssl 现在使用的完整性校验算法有两种:MD5 或者 SHA。由于 MD5 在实际应用中存在冲突的可能性比较大,所以尽量别采用 MD5 来验证内容一致性。SHA 也不能使用 SHA0 和 SHA1,中国山东大学的王小云教授在 2005 年就宣布破解了 SHA-1 完整版算法。SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四个有时并称为SHA-2。
原文地址:http://ifconfig007.blog.51cto.com/11026101/1831659