码迷,mamicode.com
首页 > Web开发 > 详细

HTTPS该怎么用才安全?

时间:2016-07-29 19:36:38      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:https tls 安全 sha 浏览器

HTTPS新闻

我国仍然有300多万的Windows server2003、XP、Vista用户。而微软早已宣布不再对“Windows server2003、XP、Vista”进行更新服务了,由于系统得不到安全加固,使用这些系统进行web数据交互,更容易引发安全事故:用户信息泄露、系统遭受攻击、资金被盗、窃取数据等等。

国外的大型互联网公司很多已经启用了全站 HTTPS,这也是未来互联网的趋势。

百度是国内全站部署 HTTPS,对国内互联网的全站 HTTPS 进程必将有着巨大的推动作用。

国内的大多网站并没有全站部署 HTTPS,只是在一些涉及账户或者交易的子页面/子请求上启用了HTTPS。

微软和google都已经宣布2016年及2017年之后不再支持 sha1 签名证书。

Mozilla更是坚决,在2016年7月1日起就停止支持sha1算法的SSL。


引言

最近有朋友问我,为什么很多网站变成“https://XXX”了。这是因为http数据传输不安全,而https可以保护用户隐私、防止流量劫持。

当然,现在https中的“TLS1.0 和 SSL3.0”也不安全了。

那https该怎么用才安全呢?下面就简单介绍一下“https”所提供的解决方案。


HTTPS概述

HTTPS 可以认为是 HTTP + TLS

HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的。

TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 1995 年发布,1999 年经过 IETF 讨论和规范后,改名为 TLS。如果没有特别说明,SSL 和 TLS 说的都是同一个协议。

HTTP 和 TLS 在协议层的位置以及 TLS 协议的组成如下图:

技术分享 

TLS 协议主要有五部分:应用数据层协议握手协议报警协议加密消息确认协议心跳协议。

TLS 协议本身又是由 record 协议传输的,record 协议的格式如上图最右所示。

目前常用的 HTTP 协议是 HTTP1.1,常用的 TLS 协议版本有如下几个:TLS1.2TLS1.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 协议提供了三个强大的功能来对抗上述的劫持行为:

内容加密浏览器到web服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。

    加密算法一般分为两种,对称加密和非对称加密。所谓对称加密(也叫密钥加密)就是指加密和解密使用的是相同的密钥。而非对称加密(也叫公钥加密)就是指加密和解密使用了不同的密钥。

身份认证保证用户访问的是web服务,即使被 DNS 劫持到了第三方站点,也会提醒用户没有访问web服务,有可能被劫持

    身份认证主要涉及到 PKI 和数字证书。通常 PKI(公钥基础设施)包含如下部分:

  •     End entity:终端实体,可以是一个终端硬件或者网站

  •     CA:证书签发机构

  •     RA:证书注册及审核机构。比如审查申请网站或者公司的真实性

  •     CRL issuer:负责证书撤销列表的发布和维护

  •     Repository:负责数字证书及 CRL 内容存储和分发

数据完整性防止内容被第三方冒充或者篡改。

    openssl 现在使用的完整性校验算法有两种:MD5 或者 SHA。由于 MD5 在实际应用中存在冲突的可能性比较大,所以尽量别采用 MD5 来验证内容一致性。SHA 也不能使用 SHA0 和 SHA1,中国山东大学的王小云教授在 2005 年就宣布破解了 SHA-1 完整版算法。SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四有时并称为SHA-2


HTTPS该怎么用才安全?

标签:https tls 安全 sha 浏览器

原文地址:http://ifconfig007.blog.51cto.com/11026101/1831659

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!