您的位置:首页 > 理论基础 > 计算机网络

HTTPS协议详述

2016-12-09 19:16 302 查看
HTTPS(也被称为基于TLS的HTTP[1][2],基于SSL的HTTP[3]以及安全的HTTP[4][5])是一种基于计算机网络,被广泛应用于互联网的安全通信协议。HTTPS由基于超文本传输协议(HTTP)通过安全传输层或它的前身-安全套接字层加密的连接组成。HTTPS的主要功能是验证访问的网站以及保护隐私和所传输数据的完整性。

HTTPS在互联网上的部署广受欢迎,它提供了验证网站以及通信中相关的Web服务器的功能,这可以防止中间人攻击(Man-in-the-middle-attacks,简称:MITM攻击)。此外,它还提供在客户端和服务器之间通信的双向加密,可以防止窃听和篡改有和/或伪造的通信内容[6]。在实践中,HTTPS为通信双方提供了一个合理的保障,用户能够与正确的网站进行通信,而网站能够验证使用者是正确的用户(而不是冒名顶替者),HTTPS还能确保用户和站点之间的通信内容不能被读出或由其他第三方伪造。

很久以前,HTTPS连接被主要用于在互联网上的支付业务,电子邮件以及企业信息系统中的敏感交易。在2000年代末和2010年代初,HTTPS开始普遍使用于所有类型的网站来保障网页的真实性,保护账户以及用户的通信内容,身份和上网浏览的隐私信息。

概述

HTTPS的统一资源标识符(URI)方案与标准的HTTP方案具有相同的语法,方案令牌除外。然而,HTTPS向浏览器发送数据时使用加入了加密层的SSL/TLS来保障通信。SSL/TLS特别适合用于HTTP,因为即使只有一方的通信被认证,它仍可以提供保护。而基于互联网的HTTP事务,通常只有服务器身份认证(由客户端检查服务器的证书)。

HTTPS在不安全的网络上建立了一条安全通道。在窃听者和中间人攻击之间提供了合理的保护,它提供了充分的密码套件,并且确保服务器证书验证安全可信。

因为HTTPS完全基于TLS来运行HTTP,对底层HTTP协议的全部内容进行加密。包括请求URL(请求特定网页),查询参数,报头和cookies(通常包含用户身份信息)。但是,由于主机(网站)地址和端口号是底层TCP/IP协议的基本组成部分,HTTPS不能阻止这些信息的暴露。在实践中,这意味着即使在正确配置的网络服务器上,窃听者仍可以推断出网络服务器的IP地址和端口号,以及通信的数据量(数据传输)和持续时间(会话的长度),但是获取不到通信的内容[6]。

Web浏览器通过预装在软件中的认证中心来知道如何信任HTTPS网站。认证中心(例如Symantec,Comodo,GoDaddy和GlobalSign)通过向Web浏览器的创造者提供有效证件的方式得到信任。因此,当且仅当以下所有条件都满足时,用户可以信任通过HTTPS访问到的网站:

用户信任的浏览器软件正确实现HTTPS并正确预装证书中心。

用户信任的证书中心保证只有合法的网站。

该网站提供的有效的证书,是由值得信任的机构签署。

该证书正确识别相应的网站(例如,当浏览器访问“ https://example.com ”,接收到的证书是正确的“example.com”,而不是其它一些实体)。

用户信任的协议加密层(SSL/TLS)能够足够安全地拦截窃听者。

HTTPS在不安全的网络环境下(如公共WiFi接入点)尤其重要,因为在同一个本地网络上的任何人都可以进行数据包窃听,查看没有HTTPS保护的敏感信息。此外,许多免费使用,甚至付费的WLAN网络都参与数据包注入,以便在网页上加入他们自己的广告。 然而,这也可能在很多方面被人恶意利用,例如在网页注入恶意软件和窃取用户的私人信息[7]。

HTTPS对于Tor匿名网络连接也非常重要,恶意的Tor节点可以破坏或改变以不安全的方式通过他们的内容,并在连接中注入恶意软件。 这就是为什么电子前沿基金会和Tor计划已经开始到处推广HTTPS的原因[6],HTTPS已经包含在Tor浏览器套件中[8]。

随着越来越多的有关全球大规模监视和黑客窃取个人信息的消息被披露,无论使用任何Internet连接方式,在所有网站上使用HTTPS的安全协议变得越来越重要[9][10]。虽然一个用户访问单个页面产生的元数据不包含敏感信息,但是当很多信息组合在一起时,可能会暴露很多相关用户的信息并危害用户的隐私[2][11][12]。

部署HTTPS也允许使用SPDY/ HTTP/2,即新一代的HTTP,旨在降低页面加载时间和延迟。

推荐使用HTTP严格传输安全 (HSTS)配合HTTPS来保护用户免受中间人攻击,特别是SSL剥离[12][13]。

HTTPS不应与在RFC 2260中被指定的安全HTTP(S-HTTP)混淆,后者很少被使用。

在网站中使用

截至2015年10月3日,30.1%的互联网的143909个最受欢迎的网站已经安全实现HTTPS[14]。

浏览器集成

大多数浏览器如果收到无效的证书,会提示警告。 老版本的浏览器,连接到一个具有无效证书的网站时,将向用户弹出一个对话框提示,询问他们是否继续访问。 新版本的浏览器在整个窗口显示一条警告。 新版本的浏览器也会在地址栏突出显示网站的安全信息。在新版本的浏览器中,扩展验证证书会使地址栏变为绿色。当用户访问包含加密和未加密的内容混合的站点时,大多数浏览器也会向用户提示警告。

自从14版本起,火狐浏览器使用HTTPS进行谷歌搜索[15],实现“从可能收集用户数据或修改/删除搜索结果的网络基础设施中保护我们的用户”[16]。

电子前沿基金会 ,认为“在一个理想的世界里,每一个Web请求都可以被默认为HTTPS”,并为火狐浏览器提供了一个被称为“无处不在的HTTPS”的插件,默认为数百个常用网站支持HTTPS。这个插件的测试版本也可用于谷歌的Chrome和Chromium两种版本的浏览器[17][18]。

安全

HTTPS的安全性是基于底层的TLS,它通常使用长期公钥和私钥来生成短期会话密钥,然后用于加密客户端和服务器之间的数据流。X.509证书用于验证服务器(有时也验证客户端)。因此, 认证中心和公钥证书必需要验证证书和所有者之间的关系,以及生成,签名和管理证书的有效性。虽然这可能比通过网站的信任核实身份更有利, 2013年全球大规模监视的消息被披露,使人们注意到认证中心具有一个允许中间人攻击的潜在薄弱点[19][20]。在这种情况下,网络信息需要一个重要的特性是正向加密,即使长期密钥或密码在将来被盗用,也能确保过去记录的加密的信息不能被恢复和解密。 并不是所有的Web服务器都提供正向加密功能[21]。

网络站点必须完全托管在HTTPS,没有通过HTTP载入的内容-例如,有的脚本加载不安全-这会使用户将很容易受到一些攻击和监视。 只有包含敏感信息(如登录页面)的网站通过HTTPS加载,而其余部分的网站通过普通的HTTP加载,这也会将用户暴露在攻击之下。 在某些含有隐私信息的网站,每次都通过HTTP,而不是HTTPS访问它,用户和会话将会被暴露。同样地,通过HTTPS的网络站点服务的会话必须启用安全属性[12]。

技术

与HTTP不同

HTTPS网址以“https://”开头,并且默认使用443端口,而HTTP网址以“http://”开头,并且默认使用80端口。

HTTP是不加密的,在中间人攻击和窃听攻击面前十分脆弱,这可以让攻击者获得访问网站的帐户和敏感信息,并修改网页来注入恶意软件或广告。HTTPS旨在抵御这类攻击,并且十分安全可靠地抵御了它们(使用旧的,过时版本的SSL除外)。

网络层

HTTP运行在TCP/IP模型的最高一层,应用层;这与TLS安全协议相同(运行在应用层相对较低的子层)。TLS在传输之前加密HTTP消息,并在抵达时解密消息。严格地说,HTTPS不是一个单独的协议,而是指使用的 SSL/TLS加密连接的普通HTTP。

任何HTTPS消息都会被加密,包括消息头和请求/响应的加载。 除了下面局限性章节中所描述的可能的CCA密码攻击,攻击者只可以知道双方之间正在发生连接,以及他们的域名和IP地址。

服务器设置

要准备一个Web服务器接受HTTPS连接,管理员必须为Web服务器创建一个公钥证书。此证书必须由受信任的认证中心签署,使Web浏览器能接受它而不发出任何警告。证书持有人的权威认证是由Web服务器的运营商提出的。Web浏览器通常获取主要认证中心的签名证书列表,以便验证他们签名的证书。

获得证书

权威签名的证书可能是免费的[22][23],或者每年8美元[24]至70美元[25](2012-年2014年)。

一些组织机构也可以运行他们自己的证书中心,特别是如果他们负责设置浏览器来访问自己的网站(例如,公司内部网站点,或重点高校)。他们可以很容易地将自己的签名证书的副本添加到所使用浏览器发布的受信任的证书。

此外,还存在一个对等网络认证中心, CACERT 。然而,它并不内置在许多流行的浏览器(如火狐浏览器,谷歌Chrome浏览器,IE浏览器)受信任的根证书中,这可能会导致用户会收到警告消息。

即将到来的认证中心,Let’s Encrypt,是在2015年年底推出[26],并提供免费和自动化的网站SSL/TLS证书[27]。根据电子前沿基金会所说,”Let’s Encrypt”会使从HTTP切换到HTTPS“像发出一个命令,或者单击一个按钮一样容易。[28]”

作为访问控制使用

该系统还可用于客户端身份验证,以限制授权用户访问web服务器。 要做到这一点,网站管理员通常会为每个用户创建一个加载到其浏览器的证书。 通常情况下,它包含授权的用户的名称和电子邮箱地址并由服务器自动检查每个连接来验证用户的身份,可能甚至不需要输入密码。

防止泄露密(私)钥

在这方面的一个重要特性是完全向前保密性(PFS)。 拥有一个用于建立HTTPS会话的长期非对称密钥,即使将来也不能轻易地获得短期会话密钥来解密对话。 Diffie-Hellman密钥交换 (DHE)和椭圆曲线Diffie-Hellman密钥交换(ECDHE)是在2013年已知的唯一具有该属性的产品。它在火狐浏览器,Opera浏览器和谷歌浏览器的会话中使用率仅为30%,而在苹果的Safari浏览器和微软的IE浏览器会话使用率几乎为0%[21]。规模较大互联网服务供应商中,自2011年以来(截止到2013年9月)只有谷歌支持PFS。

证书到期之前可以被撤销,例如因为保密的私钥性已经被破解。新版本的流行浏览器,如火狐[29],Opera[30],和Windows Vista中的IE浏览器[31]实现在线证书状态协议(OCSP)来验证,事实并非如此。浏览器将证书的序列号发送到证书中心或其委托通过OCSP和权威回应,告诉浏览器证书是否仍然有效[32]。

局限性

SSL/TLS有两种版本选择,简单的和联合的。联合的版本更安全,但为了自己的身份验证,用户需要安装个人客户端证书到他们的网页浏览器。

无论使用何种策略(简单或联合),受保护的程度强烈依赖于网络浏览器执行的正确性以及服务器软件和实际支持的加密算法。

SSL/TLS并不阻止整个网站被使用网络爬虫编入索引,并且在某些情况下, 加密资源的URI只需要通过知道所截取的请求/响应的大小就可以推断[33]。这使得攻击者能够获得到明文(公开的静态内容)和加密文本 (静态内容的加密版本),允许密码攻击 。

因为TLS运行在HTTP底层并且不具有更高级别的协议的知识,TLS服务器对于特定的IP/端口组合只能严格地呈现一个证书[34]。这意味着,在大多数情况下,在HTTPS状态使用基于名称的虚拟主机是不可行的。 存在一个被称为服务器名称指示 (SNI)的解决方案,它在加密连接之前先发送主机名到服务器,虽然很多旧的浏览器不支持这个扩展。支持SNI的浏览器有火狐浏览器Firefox 2,欧朋浏览器Opera 8,苹果浏览器Safari2.1,谷歌浏览器Chrome 6和Windows Vista中的Internet Explorer 7以及它们的更高版本[35][36][37]。

从体系结构的角度来看:

SSL/TLS连接通过前机(front machine)第一次启动TLS连接来管理。如果由于某些原因(路由,流量优化等),该前机不是应用服务器,但是它不得不解密数据,已经找到的解决方案是传输的用户认证信息或证书到应用服务器,这需要知道谁将要连接服务器。

对于SSL/TLS与双向认证,SSL/TLS会话被第一个发起连接的服务器管理。 在加密的情况下必须沿着链接服务器传播,会话超时管理变得非常难以实现。

具有双向SSL/TLS的安全系数是最大的,但是在客户端,没有办法恰当地结束SSL/TLS连接,用户只能通过等待服务器会话到期或关闭所有相关的客户端应用程序来断开连接。

一个被称为SSL剥离的复杂类型的中间人攻击在2009年黑帽会议上被提出。这种类型的攻击通过改变https:链接到一个http:链接击败了HTTPS提供的安全策略,它利用很少有互联网用户在他们的浏览器界面实际键入“https”开头的事实优势:他们通过点击链接进入一个安全的网站,误以为正在使用HTTPS,而事实上使用的是HTTP。 然后,攻击者可以使用明文与客户端进行通信[38]。这促使被称作HTTP强制安全传输技术的HTTP策略得到发展。

2010年5月,一篇由微软研究院和美国印第安纳州大学的研究人员发表的研究论文发现可以从侧面渠道(如数据包的大小)来推断出详细敏感的用户数据。更具体地说,研究人员发现,窃听者可以推断出用户的疾病/药物/手术,他/她的家庭收入和投资秘密,尽管HTTPS在保护医疗、税收、投资和网络搜索的几个高知名度,顶级的在线Web应用程序[39]。

参考文献

Network Working Group(2000年5月)。”HTTP Over TLS”。互联网工程任务组。取自2015年2月27日 。

“HTTPS as a ranking signal”.谷歌网站管理员中心博客。Google Inc.August 6, 2014.取自2015年2月27日。”You can make your site secure with HTTPS (Hypertext Transfer Protocol Secure) […]”.

“Enabling HTTP Over SSL”.Adobe Systems公司。取自2015年2月27日 。

“Secure your site with HTTPS”.Google Support.Google,Inc.取自2015年2月27日 。

“What is HTTPS?”.科摩多CA有限公司。取自2015年2月27日,”Hyper Text Transfer Protocol Secure (HTTPS) is the secure version of HTTP […]”。

“HTTPS Everywhere常见问题解答”。取自2012年5月3日。

“Hotel Wifi JavaScript Injection”.取自 2012年7月24日。

The Tor Project, Inc.”Tor”.torproject.org.

Konigsburg,Eitan;Pant,Rajiv;Kvochko,Elena(2014年11月13日)。”Embracing HTTPS”. 纽约时报。取自2015年2月27日。

Gallagher,Kevin(2014年9月12日)。”Fifteen Months After the NSA Revelations, Why Aren’t More News Organizations Using HTTPS?”. 新闻基金会的自由。取自2015年2月27日。

Grigorik,Ilya;Far,Pierre(2014年6月26日),”Google I/O 2014-HTTPS Everywhere”.谷歌开发者。取自2015年2月27日。

“How to Deploy HTTPS Correctly”. 取自2012年6月13日。

“HTTP Strict Transport Security”.Mozilla开发者网络 。

“SSL Pulse”.值得信赖的互联网运动.2015-10-03.取自2015年10月19日 。

“Firefox 14.0.1 Release Notes”.取自2012年7月24日。

“Firefox Rolling Out HTTPS Google search”.取自2012年7月24日。

彼得·埃克斯利:加密的HTTPS无处不在Firefox扩展网络EFF博客,2010年6月17日。

HTTPS EverywhereEFF项目。

Law Enforcement Appliance Subverts SSL,Wired, 2010-04-03。

新的研究表明,政府可能伪造SSL证书,EFF,2010-03-24。

SSL: Intercepted today, decrypted tomorrow, Netcraft, 2013-06-25.

“Free SSL Certificates from a Free Certificate Authority”. sslshopper.com.取自2009-10-24。

Justin Fielding (2006-07-16). “Secure Outlook Web Access with (free) SSL: Part 1”. TechRepublic.取自2009-10-24。

“Namecheap.com SSL Services”. Namecheap.取自2012年1月30日。

“Secure Site Pro with SSL Certificate”.取自2014年8月23日。

“Launch schedule”. Let’s Encrypt.取自2015年9月21日。

Kerner, Sean Michael (2014年11月18日)。”Let’s Encrypt Effort Aims to Improve Internet Security”. eWeek.com. Quinstreet Enterprise. 取自2015年2月27日。

Eckersley, Peter (2014年11月18日)。”Launching in 2015: A Certificate Authority to Encrypt the Entire Web”. 电子前沿基金会。取自2015年2月27日。

“Opera 8 launched on FTP”.Mozilla基金会。2009年4月27日,取自2009年5月13日。

“Opera 8 launched on FTP”.Softpedia. 19 April 2005.取自2009年5月13日。

Lawrence, Eric(2006年1月31日)。”HTTPS Security Improvements in Internet Explorer 7”.MSDN.取自2009年5月13日。

Myers, M; Ankney, R; Malpani, A; Galperin, S; Adams, C(1999年6月)。”Online Certificate Status Protocol – OCSP”.互联网工程任务组 。取自2009年5月13日。

Pusep, Stanislaw(2008年7月31日)。”The Pirate Bay un-SSL”. 取自2009年3月6日。

“SSL/TLS Strong Encryption: FAQ”. Apache.org.

Lawrence, Eric(2005年10月22日)。”Upcoming HTTPS Improvements in Internet Explorer 7 Beta 2”.微软。取自2009年5月12日。

“Server Name Indication (SNI)”. inside aebrahim’s head.

Pierre, Julien. “Browser support for TLS server name indication” (2001-12-19)。Bugzilla.Mozilla基金会。取自2010-12-15。

“sslstrip”. 取自2011-11-26。

Shuo Chen, Rui Wang, XiaoFeng Wang, and Kehuan Zhang (2010年5月)。”Side-Channel Leaks in Web Applications: a Reality Today, a Challenge Tomorrow”(PDF).IEEE2010年安全和隐私研讨会。

原文:https://en.wikipedia.org/wiki/HTTPS
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  https