为什么HTTP仍被普遍使用,而不是我认为更安全的HTTPS?

评论

示例:为什么不能按常规通过HTTPS下载应用程序?

并非直接相关,而是Troy Hunt的有趣观点:troyhunt.com/i-wanna-go-fast-https-massive-speed-advantage基本上HTTP / 2仅与TLS一起使用,因此使用HTTPS可以提高速度(如果客户端和服务器使用HTTP / 2)。

IMO,浏览器完全不应接受没有方案的地址。如果您想查找有关域名或IP地址的信息,那么对于Chrome和其他没有单独搜索字段的浏览器来说,这是很痛苦的事情。

对于寻求解决方案的人:使用扩展名

#1 楼

SSL / TLS的开销很小。当Google将Gmail切换为HTTPS(从可选功能更改为默认设置)时,他们发现CPU开销约为+ 1%,网络开销为+ 2%;有关详细信息,请参见此文本。但是,这是针对Gmail的,它由私有,动态,非共享数据组成,并托管在Google的系统中,可以从任何地方以极低的延迟访问它们。与HTTP相比,HTTPS的主要效果是:


连接启动需要一些额外的网络往返。由于此类连接“保持活动”并在任何可能的情况下都可以重用,因此当给定站点进行重复交互时(如Gmail中的典型情况),这种额外的延迟可以忽略不计。大部分服务于静态内容的系统可能会发现网络开销不可忽略。
代理服务器无法缓存使用HTTPS服务的页面(因为它们甚至看不到那些页面)。同样,Gmail不会缓存任何静态内容,但这是一个非常特定的上下文。 ISP非常喜欢缓存,因为网络带宽是它们的生命力。
HTTPS是SSL / TLS中的HTTP。在TLS握手期间,服务器显示其证书,该证书必须指定预期的服务器名称-发生在HTTP请求本身发送到服务器之前。除非使用称为服务器名称指示的TLS扩展,否则这将阻止虚拟主机。这需要客户的支持。特别是,Internet Explorer在Windows XP(IE 7.0及更高版本上不支持服务器名称指示)上,仅在Vista和Win7上支持。考虑到当前使用WinXP的桌面系统的市场份额,不能假设“每个人”都支持服务器名称指示。相反,HTTPS服务器必须为每个服务器名称使用一个IP; IPv6部署的当前状态和IPv4地址短缺使这成为一个问题。
在以下意义上,HTTPS比HTTP“更安全”:数据被认证为来自命名服务器,并且对于任何可能在网上窃听的人,传输都是机密的。这是一种安全模型,在许多情况下都没有意义:例如,当您观看来自Youtube的视频时,您并不真正在乎该视频是真正来自youtube.com还是来自(故意)发送的某些黑客您想要观看的视频;而且该视频无论如何都是公共数据,因此此处的机密性不高。同样,仅相对于服务器的证书进行身份验证,该证书来自客户端浏览器知道的证书颁发机构。证书不是免费的,因为证书的意义在于它们涉及证书颁发机构对证书所有者的物理识别(我并不是说商业证书颁发机构对证书进行公平定价;但是即使是佛陀本人运营的最公正的证书颁发机构,也会仍然需要收取证书费用)。商业CA只会将HTTPS设置为“默认”。此外,尚不清楚X.509证书所包含的PKI模型是否真的是整个Internet的“默认情况”(特别是当涉及证书与DNS之间的关系时)—有人认为服务器证书应在创建域时由注册服务商颁发。)
在许多企业网络中,HTTPS意味着窃听者无法看到数据,并且该类别包括各种内容过滤器和防病毒软件。将HTTPS设置为默认值将使许多系统管理员感到不满。

所有这些都是为什么HTTPS不一定是Web的默认协议的好主意的原因。但是,这并不是HTTPS当前不是Web的默认协议的原因。 HTTPS不是默认值,仅仅是因为首先存在HTTP。

评论


静态内容的+1很受欢迎。考虑具有多个标签的站点。由于每个映像都有一个单独的连接,因此在移动平台上,例如2048位或4096位加密连接的计算开销可能会变得相当可观,因为移动平台上CPU使用率的增加会很快耗尽电池,用户可能会因为某些原因而避开您的站点,另一个他们认为这会耗尽电池电量。当然,这是将非机密静态内容托管在单独的服务器(没有SSL)上的一个优点。

–茉莉
2011年6月6日在1:17

@puddingfox:浏览器将仅打开几个与给定站点(例如3或4)的SSL连接,并使用HTTP保持活动状态在每个站点内发送多个连续的HTTP请求。此外,只有第一个需要进行非对称密钥交换(涉及一个2048位左右的密钥)。其他连接将使用SSL / TLS“恢复会话”功能(更快的握手,更少的消息,仅对称加密)。最后,大多数SSL / TLS服务器使用RSA密钥,而RSA的客户端部分很便宜(服务器承担RSA的大部分费用)。

–托马斯·波宁(Thomas Pornin)
2011年6月6日上午10:58

好答案。但是,有一个为什么有些偏执狂的人可能想通过https观看youtube视频的原因:通过https观看它们意味着窃听者将不容易汇编您观看的视频记录。

–沃伦·露
14年4月13日在6:20

关于您不太在乎视频是否真的来自youtube.com的说法,这是错误的。如果我正在观看布鲁斯·施耐尔(Bruce Schneier)谈论加密的视频,并且我可能会根据他的意见做出决定,那么我想知道消息在传输过程中没有被更改。

– dotancohen
2014年11月4日13:59

准确性如何?您可以在YouTube上找到vid,但可以从Facebook获得内容。您转到Facebook,然后显示Google。您访问了Google,它向您显示了生命不安全的事物。或可能会使您入狱的东西。就像...病毒下载或零时差攻击,利用您的计算机共享盗版内容,或播放反国家言论(在多个国家/地区发生严重或重大罪行),或导出加密货币,或发布国家机密,任何事情。每个人都需要HTTPS,但他们还不知道。

–起搏器
16年1月26日在22:23

#2 楼

尽管已经给出了很好的答案,但我相信到目前为止,在一个方面都没有被注意。

这里是:纯HTTP是Web的默认协议,因为Web上的大多数信息都不会需要安全性。

我并不是要轻视这个问题,也不是贬低某些网站/应用程序的安全性。但是我们有时可能会忘记多少网络流量:


仅包含完全公开的信息
或几乎没有价值或没有价值
或将更多访问者视为提高网站(新闻媒体,网络效果网站)的价值

几个简单的例子,我敢肯定您可以在自己的脑海中快速做出更多贡献:


几乎所有公司网站(有时也称为“固件站点”)都列出了有关公司的公共信息。
几乎所有选择广告支持作为主要获利策略的新闻媒体,博客,电视台等。
服务可能提供登录名和其他个性化设置,但也会向匿名浏览(YouTube fx)的任何人免费赠送其内容。


评论


我同意,没有任何理由不容忽视。我想知道的一件事,与您对公共信息的观点有关。在HTTPS交易期间从单个IP到一个或多个网站查看的URL是否可区分?例如,假设以下是通过一个IP在5分钟内指向两个网站的HTTPS URL:“ A.com/1”,“ A.com/2”、“A.com/3”、“B.com/1” ,“ B.com/2”;监视数据包不会显示任何内容,仅显示访问过“ A.com”和“ B.com”的IP,显示访问过的所有HTTPS URL的完整列表,仅显示“ A.com”和“ B.com”的IP , 或者是其他东西?

–错误
2011年6月6日下午0:15

@blunders:评论不是提出新问题的最佳场所。查看以下链接,或打开一个新问题。 security.stackexchange.com/questions/2914/…

– Jesper M
2011年6月6日上午10:36

“小册子站点”上的电话号码可能是完全公开的信息。这并不意味着能够欺骗该网站上的电话号码不会带来安全风险。

–基督徒
2014年9月9日15:49

@JesperMortensen,您将“不需要安全性”与“不需要隐私”混淆了。是的,数据是公开的,这并不意味着我们可以避免使用HTTPS(mitm可以简单地返回一个虚假的误导页面)。

–起搏器
2015年2月16日在9:55



@JesperMortensen,好吧,我意识到这第三条评论已经晚了几个月,但这很重要:HTTPS并不仅仅涉及安全性。这也与准确性有关。您说网络不需要安全性,但是网络需要准确性吗? (试想一下,当我们访问a.com时会出现多少混乱,但是从b.com中获取内容,反之亦然。您转到youtube.com希望看到一些视频,但是它将您重定向到bing.com。)

–起搏器
16 Jan 26 '21:52



#3 楼


服务器上的CPU负载大大增加,尤其是对于静态内容。
使用数据包捕获进行调试更加困难。
它不支持基于名称的虚拟服务器


评论


+2 @ D.W .:猜测有一种通用方法可以共享特定于应用程序的实现是很有意义的;这意味着您不能只复制密钥和配置的副本以呈现内置于调试器中的解密。是的,我看到了@Thomas答案中列出的内容,该答案发布在@Mike Scott之后;保持原样,因为我想知道@Mike Scott是否还有其他原因。干杯!

–错误
2011年6月6日18:47

@ D.W。也不支持Windows XP。它在2014年4月终止的支持打破了SNI部署的最后一个主要障碍。

–达米安·耶里克(Damian Yerrick)
2015年2月19日,0:40

@tepples,我的评论是4年前写的。显然,Windows XP的情况已经随着时间而发展。 (而且,是否支持Windows XP并不重要。重要的是有多少用户使用Windows XP,即,如果您打开SNI,则有多少用户将无法使用您的网站。正如我在我的文章中写道评论,请参阅Thomas Pornin的答案。)

– D.W.
2015年2月19日,0:51



@ D.W。我指出您的评论此后已经过时。抱歉,我没有对此进行更明确的说明。但是,即使您有很多XP用户,与本身可能会受到零时差损害的计算机建立安全连接又有什么意义呢?

–达米安·耶里克(Damian Yerrick)
2015年2月19日,0:57

@tepples,不是那么简单。该用户对网站所有者的价值是什么?答案将取决于站点。他们不会失去该用户,并且可能能够通过该用户获利(例如,该用户可能想从他们那里购买商品,因此,如果他们阻止了此类用户,他们可能会失去一笔交易)。我对您的论点大体同情,但是,我要说的是,这并没有您想证明的那么简单。如果您想说服他人,那么了解决定他们决定的考虑因素很重要。

– D.W.
2015年2月19日在0:59



#4 楼

Http始终是默认值。最初不需要任何东西使用https,因为在某些情况下它变得很明显需要安全性,因此几乎增加了一些附加内容。

甚至现在,仍有许多网站不需要https完全替换http仍然不是一个令人信服的论点。

通过运行TLS安全连接的更有效机制,CPU开销已不再是一个问题。

#5 楼

没有人指出一个明显的问题,是使用http作为默认值而不是https引起的。

几乎没有人愿意在请求需要加密和/或签名的资源时写完整的uri。

以gmail为例,当用户访问gmail.com时,他们实际上是在访问默认协议http而不是https。此时,在对手拦截流量的情况下,安全性已失败。为什么?因为可以从https请求中删除html,并将它们指向http。

如果https实际上是默认协议,则您到网站的会话将受到保护。

对于为什么通过https选择http的问题,上述各种答案适用。世界还没有为广泛使用加密做好准备。

评论


您正在描述“ SSL剥离”攻击。此后,浏览器已实施HTTP严格传输安全性(HSTS)作为对策,包括HSTS预加载列表和HTTPS Everywhere(本质上是第三方HSTS预加载列表)。

–达米安·耶里克(Damian Yerrick)
2015年2月19日,0:43

@tepples HSTS比没有用的要糟,因为它还可以在提供错误的服务器所有者安全感的同时被剥离。

–爱丽丝
2015年2月19日在2:48

@Alice,您的意思是HSTS可以被剥夺?

–起搏器
15年3月28日在23:56

@Dogeatcatworld,问题是询问浏览器为何将用户的请求(在URL中键入)从web.com更改为http://web.com而不是https://web.com?

–起搏器
15年3月28日在23:58

@Pacerier用户首次使用https:方案链接到未使用预加载列表的使用HSTS的站点时,重写所有链接的HTTP代理可以重写该链接以改用http:方案。这就是存在预加载列表的原因,但是没有任何预加载列表是详尽无遗的。只要用户留在脱机代理后面,仅访问不在浏览器预加载列表中的网站,永远不会手动键入https:方案,并且永远不会注意到在正确的位置缺少锁定图标,那么用户就不会意识到任何攻击。

–达米安·耶里克(Damian Yerrick)
2015年5月1日15:52



#6 楼

除了其他原因已经给出的原因之外:



在服务器上设置HTTPS所需的其他工作

服务器管理员需要配置每个域的证书。这涉及与证书颁发机构进行交互以证明您是该域的真正所有者并获得证书续订。这可能意味着手动生成证书签名请求并购买续订,或者设置一个自动过程来做到这一点(例如使用Let's Encrypt的certbot)。在任何一种情况下,比不使用HTTPS都需要更多的工作。在浏览器和SSL客户端库中变得越来越普遍。

传统上,必须在特定服务器和端口上使用SSL为每个不同的站点使用不同的IP地址。这具有进行基于名称的托管(虚拟托管)的能力-一种广泛使用的做法,允许从同一IP地址托管许多不同的域。使用HTTPS,基于常规名称的托管不起作用,因为在解密包含主机名的HTTP请求之前,服务器需要知道SSL / TLS验证层中要显示的主机名。

服务器名称标识(SNI)有效地在SSL / TLS层上实现了基于名称的托管,从而消除了这一限制。


变更速度慢

HTTPS是对现有协议HTTP的修改,在许多人开始考虑安全性之前,HTTP已经根深蒂固。一旦技术确立并像HTTP一样普遍存在,即使改变的原因引人注目,整个世界也要花费很长时间才能过渡到其继任者。



评论


嗨,fjw-这是一个非常老的问题,答案很好,而且答案也可以接受。您的答案不会带来任何新变化-我鼓励您通过回答新问题做出贡献。

–Rory Alsop♦
2014年9月9日下午13:29

您是否真的认为这是低质量的答案?真的很抱歉,我在研究某些东西时遇到了这个问题,并认为现有的答案未能解决我认为很重要的问题。我非常不同意这是“低质量的答案”。

–胸骨
2014年9月9日14:32

它被社区成员标记给我,我同意他们的观点。我在上面的评论解释了我的观点。

–Rory Alsop♦
2014年9月9日下午14:46

#7 楼

Thomas已经写了一个很好的答案,但是我想我会提供一些其他原因,说明HTTPS并未得到更广泛的使用...


不需要。正如Jesper的回答深刻地指出“网络上的大多数信息不需要安全性”。但是,随着搜索引擎,广告公司,国家级互联网过滤器和其他“老大哥”计划(例如,国家安全局)进行的跟踪越来越多;这就需要采取更大的隐私保护措施。
速度。由于额外的往返行程和对证书吊销列表(OCSP等)的额外请求,通常感觉很慢。值得庆幸的是SPDY(由Google创建,现在已在所有主流浏览器中支持),以及CloudFlare的一些有趣的工作正在帮助改变这一点。
证书的价格。大多数证书颁发机构对证书收取大量费用(数百美元)。值得庆幸的是,这里有免费的选择,但是这些选择并没有得到太多的宣传(不确定为什么吗?)。
IP地址的价格。在IPv6普及之前,网站将面临IPv4地址日益稀缺(因而成本上升)的问题。 SNI使得可以在单个IP地址上使用多个证书,但是Windows XP或IE 6没有SNI支持,大多数站点仍需要专用IP地址来提供SSL。
服务器CPU使用率增加。这是一个普遍的信念,但是根据Google的说法,“ SSL / TLS不再在计算上变得昂贵”。


评论


也缺乏向后兼容性。

–cnst
2014年12月22日在3:01

发布此答案一周后,Windows XP本身不再受支持。这有什么变化?

–达米安·耶里克(Damian Yerrick)
2015年2月19日,0:44

@tepples没什么,因为据我所知,这些人并没有自动升级到Windows 7。

–爱丽丝
2015年2月19日在2:49

StartSSL现在已经得到了一些宣传,但是没有您想像的方式:-)

–dave_thompson_085
17年1月18日在17:20



我必须说,我非常不同意TLS在计算上并不昂贵的说法。假定站点均由功能强大的硬件提供服务。当Web服务器恰好在以功耗为主要考虑因素的嵌入式设备上运行时,这根本不是事实。

–乔恩·特劳特温
17年3月31日在22:41

#8 楼

我在同事中发现的最简单和最合理的解释是,它始终是使用HTTP完成的,为什么现在要对其进行更改。 >

评论


HTTP的隐私始终被破坏。

–起搏器
2015年3月28日23:59



iOS 9破坏了它。对于非浏览器应用程序,默认情况下没有http。并且默认情况下不允许过时的https实现。

– gnasher729
16年4月20日在14:34

#9 楼

真正的答案是,当前格式的SSL证书很难使用。它们是如此无法使用,以致威胁到证书的安全性,因为人们会采取捷径来完成工作。我说这是因为经常处理2向SSL(PKI证书),由规范的复杂性和配置组合(密码限制,选项,特定于语言的库错误)引起的TLS堆栈不兼容问题等),称为“ TLS”。

请参阅LetsEncrypt的兴起,以证明这是事实。

Caddy是使用LetsEncrypt的反向代理项目。它可以在服务器运行时续订证书,并且由于续签是自动进行的,因此人们可以使用非常短的有效期。