永利酒店赌场前端学HTTP之安全HTTP

为什么 HTTP 有时候比 HTTPS 好?

2015/05/15 · HTML5 · 3
评论 ·
HTTP,
HTTPS

原文出处:
stormpath   译文出处:开源中国社区   

做为一家安全公司,我们在站点Stormpath上经常被开发者问到的是有关安全方面最优做法的问题。其中一个被经常问到的问题是:

我是否应当在站点上运行HTTPS?

很不幸,查遍整个因特网,你大多数情况下会得到同样的建议:加密所有的东西!对所有站点进行SSL加密等等!然而,现实情况表明这通常不是一个好的建议。

许多情况下使用HTTP比使用HTTPS要好很多。事实上,HTTP是一个在性能上和可用性上比HTTPS更好的一种协议,这也就是我们经常推荐客户使用HTTP的原因。下面我们说一说我们的理由……

使用 HTTPS 会出现的问题

HTTPS 是一个错漏百出的协议.
此协议及其现今流行的实现中许许多多众所周知的问题使得它不适用于许多各种各样的web服务。

HTTPS 十分缓慢

永利酒店赌场 1

应用 HTTPS 的主要阻碍之一就是 HTTPS 协议十分缓慢的这一事实。

就其特性而言,HTTPS
就是在两端之间进行安全的加密通信。这需要两端都持续耗费宝贵的CPU时间周期:

●一开始说“hello”就决定使用哪种类型的加密方式 (暗号方案套件)

●验证SSL证书

●为每一个请求的验证以及对请求/回应的验证核实,运行加密代码

而这听起来不是特别形象,其实就是加密代码运行的是CPU密集型的操作。它会重度使用浮点运算的CPU寄存器,会征用你的CPU从而使得请求的处理变慢。

这里有一个内容十分丰富的 ServerFault 线程,展示了在使用代用 Apache2
的一个 Ubuntu
服务器时,相比之下的处理速度你所能预计会有多大的降低:

如下是结果:

永利酒店赌场 2

永利酒店赌场,即使是像上面所展示的一个非常简单的示例,HTTPS也能将你的Web服务器的速度拖慢超过40倍!
这可拖了web性能很大的后腿.

在今天的环境中, 将你的应用程序作为 REST API
的一个组成部分来构建是很普遍的 — 使用 HTTPS
确实是会拖慢你的网站、影响你的应用程序性能并给你的服务器CPU带来不必要的冲击的一种方式,而且通常会惹恼你的用户。

对于许多对速度敏感的应用程序而言,使用原始的 HTTP 常常要好很多。

HTTPS 不是一个放之四海而皆准的安全保障

永利酒店赌场 3

许多人都会抱有 HTTPS
会让他们的站点更安全,这样一种印象。这其实不是真的。

HTTPS 只是对你和服务器之间的流量进行了加密 —
一旦HTTPS信息的传输中断了,一切就又都是一场公平的游戏。

这意味着如果你的计算机已经感染的了恶意软件,或者你已经被受到欺骗运行了某些恶意软件
— 这个世界上所有的HTTPS对于你而言也都无能为力了。

此外,如果 HTTPS 服务器上存在任何的漏洞,某些攻击者就能够简单的等到
HTTPS 已经处理结束,然后再在其它的层(例如 web
服务这一层)抓取到不管什么数据。

SSL 证书本身也经常被滥用。比如,其在浏览器上的处理方式就很容易发生错误:

●每种浏览器(Mozilla,google
等)都是独立审计并核准根证书提供商来保证他们安全地处理SSL证书

●一旦核准通过,这些根 SSL
证书就会被添加到浏览器的可信证书列表,这意味任何由根证书提供商签名的证书都是默认可信的。

●这些提供商因此可随意乱搞,导致各类安全问题频发,比如2011年发生的
DigiNostar 事件。

以上种种,著名证书授权机构错误地签名了大量的伪造和欺诈的证书,直接损害数以万计的Mozilla用户的安全。

而 HTTP 并没有提供任何形式的加密服务,至少你知道你正在处理什么东西。

HTTPS流量很容易被监听

如果你正在构建一个需要被不安全的设备(比如移动 app)使用的 web
服务,你可能觉得因为你的服务运行于 HTTPS 上,通信就不会被监听了。

如果真这么想的话,你就错了。

其他人可以轻松地在电脑上设置代理来截获并查看HTTPS流量,也就越过了SSL证书检查,这就直接泄漏了你的私人信息。

这篇博文就演示了移动设备上的 https 消息监听。

你觉得没多大事?别做梦了!就连Uber这种大公司的移动应用都被逆向了,它们也用了
HTTPS。如果你灰心了,我劝你还是别看这篇文章了。

好了,接受现实吧,不管你怎么做,攻击者都能用这样或那样的方法来监听你的网络流量。与其把时间浪费在修复
SSL 的问题上,还不如花点时间想想如何明智地使用 HTTP 吧。

HTTPS 有漏洞

大家都知道 HTTPS 并不是铁板一块。多年来 HTTPS 被曝出了不少漏洞:

●POODLE (pdf)

●BEAST

●CRIME

●Heartbleed

●…

以后的攻击会越来越多。再加上 NSA 为了解密,正不遗余力地收集着 SSL
流量——使用 HTTPS 似乎一点用处都没有,因为不定什么时候你的 HTTPS
流量就会被一览无余。

HTTPS 太贵

最后要说的一点是 HTTPS
太贵了。你需要从根证书颁发机构购买浏览器和客户端能够识别的 SSL 证书。

这可不便宜啊。

SSL证书年费从几美刀到几千不等——如果你正在构建基于多个微服务(multiple
microservices)的分布式应用,你需要买的证书可不只一个。

对于小项目或预算紧张的人来说成本一下子就抬高了不少。

为什么 HTTP 是一个不错的选择

在另一方面,让我们稍稍不那么消极片刻,而是专注于积极的东西 :
是什么使得HTTP很棒的。大多数开发者并不欣赏它的好处。

正确条件下的安全

当然HTTP本身没有提供任何安全性,通过正确的设置你的基础设施和网络,你可以避免几乎所有的安全问题。

首先,对于所有的你可能会用到的内部HTTP服务,
要确保你的网络是私有的,不能从公共的外部环境嗅探到数据包.
这意味着你将可能徐昂要将你的HTTP服务部署在一个像Amazon
EC2这样的非常安全的网络里面.

通过在 EC2 部署公共的云服务器,就能保证你拥有一流的网络安全,
防止任何其他的AWS用户嗅探到你的网络流量.

使用 HTTP 的不安全性来扩展

人们过多的关注于 HTTP
缺乏安全和加密特点的时候,许多人没有想到的是,这种协议可以提供很好的扩展性。

大部分现代的Web应用程序通过队列来扩展。

你有一个Web服务器接受请求,然后用处在相同网络上的服务器集群运行单独的jobs来处理更多的CPU和内存密集型任务。

为了处理任务的排队,人们通常使用一个诸如 RabbitMQ or Redis
这样的系统。两个都是不错的选择,但是否可以除了你的网络外不使用任何基础设施组件而获得任务队列的好处呢?

使用HTTP,你可以!

它是这样工作的:

●建立Web服务器和所有处理服务器共享子网的一个网络。

●让你的处理服务器侦听网络上的所有数据包,和被动嗅探网络流量。

●当Web服务器收到HTTP流量,那些处理服务器可以简单地读取进来的请求(纯文本,因为HTTP不加密),并立即开始处理工作!

上述系统的工作原理就像一个分布式队列,快速,高效,简单。

使用 HTTPS,上述情况是不可能的,但是,通过使用
HTTP,可以大大加快您的应用程序同时去除(不必要的)基础设施–这是一个大的胜利。

不安全和自负

最后一个我建议使用HTTP而不是HTTPS的原因:不安全。

是的,HTTP 没有给你的用户提供安全,但是,安全真的有必要吗?

不仅大部分 ISP
监控网络通信,过去数年的很长一段时间里,很明显的是政府已经存储并解密了大量网络通信。

使用 HTTPS
的顾虑正好比将一个挂锁来放在一尺高的篱笆上,大致来说,你不可能保证应用的安全。所以,何必这么麻烦呢?

开发仅依靠 HTTP
的服务,这并没有给你的用户一种安全的错觉,或者欺骗用户认为自身很安全。事实上,他们很有可能认为是不安全的,

开发基于 HTTP 的程序,你的生活将得到简化,并增强和你用户的透明。

考虑一下吧。

在逗你玩呢 !! >:)

愚人节快乐哦 !

我喜欢你不会真的任务我会建议你不去使用HTTPs ! 我想要非常明确的告诉你 :
如果你要构建任何什么类型的web应用, 要使用 HTTPS 哦!

你要构建什么类型的应用程序或者服务并不重要,而如果它没有用到HTTPS,你就做错了.

现在,让我们来聊聊HTTPS为什么很棒.

HTTPS 是安全的

永利酒店赌场 4

HTTPS 是一个业绩优良的很棒的协议.
虽然这些年来有过几次针对其漏洞的利用事件发生,
但它们一直都是相对较为轻微的问题,而且也很快被修复了.

而诚然,NSA确实在某个阴暗的角落收集着SSL流量,
但他们能够解密即使是很少量SSL流量的可能性都是极小的 —
这会需要快速的,功能齐全的量子计算机,并耗费数量惊人的钞票.
这玩意存在的可能性貌似不存在,因此你可以高枕无忧了,因为你知道你的站点上的SSL确实在为你的用户数据传输保驾护航.

HTTPS 速度是快的

上面我曾提到HTTPS“遭罪似的慢” , 但事实则几乎完全相反.

HTTPS 确实需要更多的CPU来中断 SSL 连接 —
这需要的处理能力对于现代计算机而言是小菜一碟了.
你会遇到SSL性能瓶颈的可能性完全为0.

目前你更有可能在你的应用程序或者web服务器性能上遇到瓶颈.

HTTPS 是一个重要的保障

虽然 HTTPS 并不放之四海而皆准的web安全方案,但是没有它你就不能以策万全.

所有的web安全都倚赖你拥有了 HTTPS. 如果你没有它,
那么不管你对你的密码做了多强的哈希加密,或者做了多少数据加密,攻击者都可以简单的模拟一个客户端的网络连接,读取它们的安全凭证——然后轰的一声——你的安全小把戏结束了.

因此 —
虽然你不能有赖于HTTPS解决所有的安全问题,你绝对100%需要将其应用于你构建的所有服务上
— 否则完全没有任何办法保证你的应用程序的安全.

此外,虽然证书签名很显然不是一个完美的实践,但每一种浏览器厂商针对认证机构都有相当严格和严谨的规则.
要成为一个受到信任的认证机构是非常难的,而且要保持自己良好的信誉也同样是困难的.

Mozilla (以及其其他厂商)
在将不良根认证机构踢出局这项工作方面表现相当出色,而且一般也真正是互联网安全的好管家.

永利酒店赌场前端学HTTP之安全HTTP。HTTPS 流量拦截是可以避免的

先前我提到过,可以很容易的通过创建属于你自己的SSL证书、信任它们,从而在SSL通讯的中途拦截到流量.

虽然这绝对有可能,但也很容易可以通过 SSL 证书钢钉 来避免 .

本质上讲,依照上面链接的文章中给出的准则,
你可以是的你的客户只去信任真正可用的SSL证书,有效的阻挡所有类型的SSL
MITM攻击,甚至在它们开始之前 =)

如果你是要把SSL服务部署到一个不受信任的位置(像是一个移动或者桌面应用),
你最应该考虑使用SSL证书钢钉.

HTTPS(再也)不贵了

虽然历史上HTTPS曾经昂贵过,而这是事实 — 但再也不是这样了.
如今你能够从许许多多的web主机那里买到非常便宜的SSL证书.

此外, EFF (电子前沿基金会) 正要推出一个完全免费的 SSL 证书提供机构:

它会在 2015 推出, 并必然将改变所有web开发者的游戏规则.
一旦让加密的方案上线,你就能够对你的网站和服务进行100%的加密,完全没有任何花费.

请一定要访问他们的网站,并订阅更新哦!

HTTP 在私有网络上并不是安全的

早些时候,我谈到HTTP的安全性怎么是不重要的,特别是如果你的网络被锁上(这里的意思是切断了同公共网络的联系)
— 我是在骗你。

而网络安全是重要的,传输的加密也是!

如果一个攻击者获得了对你的任何内部服务的访问权限,所有的HTTP流量都将会被拦截和解读,
不管你的网络可能会有多“安全”. 这很不妙哦。

这就是为什么 HTTPS 不管是在公共网络还是私有网络都极其重要的原因。

额外的信息:
如果你是吧服务部署在AWS上面,就不要想让你的网络流量是私有的了! AWS
网络就是公共的,这意味着其它的AWS用户都潜在的能够嗅探到你的网络流量 —
要非常小心了。

我早些时候有提到,HTTP可以用来代替队列,是的,我没说错,但这是一个很可怕的主意!

由于安全原因,放大服务的规模,是一个很可怕的,糟糕的注意。请不要这么做。

(除非这是一个概念证据,只为了造一个很酷的演示产品而已)

总结

如果你正在做网页服务,毫无疑问,你应该使用HTTPS。

它很容易、廉价,且能获得用户信任,没有理由不用它。作为码农,我们必须要承担起保护用户的重任,要做到那点,方法之一就是强制使用HTTPS、

希望你喜欢这篇文章,供君一乐。

赞 1 收藏 3
评论

永利酒店赌场 5

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

前面的文章中,我们已经探讨了ARP缓存中毒、DNS欺骗以及会话劫持这四种中间人攻击形式。在本文中,我们将研究SSL欺骗,这也是最厉害的中间人攻击方式,因为SSL欺骗可以通过利用人们信赖的服务来发动攻击。首先我们先讨论SSL连接的理论及其安全性问题,然后看看SSL连接如何被利用来发动攻击,最后与大家分享关于SSL欺骗的检测以及防御技巧。

情人节的晚上,天空中淅淅沥沥的下着带有些寒意的小雨。HTTP
先生孤零零的坐在咖啡厅中,对着面前的电脑发呆。他有意的屏蔽掉了周边情侣们的窃窃私语,这对单身的他来说是狗粮,也是一阵阵伤害。这时,咖啡厅的门被打开了,风姿绰约的“S”小姐出现在
HTTP 先生的眼中。当 HTTP 先生遇见 S 小姐,会产生怎样的化学反应呢?

前面的话

  HTTP的主要不足包括通信使用明文(不加密),内容可能会被窃听;不验证通信方的身份,有可能遭遇伪装;无法证明报文的完整性,有可能被篡改

  基本认证和摘要认证能够使得用户识别后较安全的访问服务器,但在实际环境中,它们并不足以保护那些重要的事务处理。这时,就需要一种更复杂、更安全的技术,通过数字密码来保护HTTP事务免受窃听和篡改的侵害。本文将详细介绍安全HTTP

 

  为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL(Secure
Sockets layer)协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。SSL目前的版本是3.0,TLS(Transport
Layer
Security)1.0是对SSL3.0版本的升级。实际上我们现在的HTTPS都是用的TLS协议(你可以看一下你浏览器https协议),但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。目前TLS的版本是1.2,定义在RFC5246中,暂时还没有被广泛的使用。

   SSL和HTTPS

HTTP 是目前互联网应用最广泛的协议,伴随着人们网络安全意识的加强,HTTP“S”
被越来越多地采纳。不论是访问一些购物网站,或是登录一些博客、论坛等,我们都被
HTTPS 保护着,甚至 Google Chrome、Firefox 等主流浏览器已经将所有基于
HTTP 的站点都标记为不安全。

HTTPS介绍

  人们会用Web事务来处理一些很重要的事情。如果没有强有力的安全保证,人们就无法安心地进行网络购物或使用银行业务。如果无法严格限制访问权限,公司就不能将重要的文档放在Web服务器上。Web需要一种安全的HTTP形式

  前面的博客讨论了一些提供认证(基本认证和摘要认证)和报文完整性检査(摘要qop=”auth-int”)的轻量级方法。对很多网络事务来说,这些方法都是很好用的,但对大规模的购物、银行事务,或者对访问机密数据来说,并不足够强大。这些更为重要的事务需要将HTTP和数字加密技术结合起来使用,才能确保安全

  HTTP的安全版本要高效、可移植且易于管理,不但能够适应不断变化的情况而且还应该能满足社会和政府的各项要求。我们需要一种能够提供下列功能的HTTP安全技术:服务器认证(客户端知道它们是在与真正的而不是伪造的服务器通话);客户端认证(服务器知道它们是在与真正的而不是伪造的客户端通话);完整性(客户端和服务器的数据不会被修改);加密(客户端和服务器的对话是私密的,无需担心被窃听);效率(一个运行的足够快的算法,以便低端的客户端和服务器使用);普适性(基本上所有的客户端和服务器都支持这些协议);管理的可扩展性(在任何地方的任何人都可以立即进行安全通信);适应性(能够支持当前最知名的安全方法);在社会上的可行性(满足社会的政治文化需要)

  HTTPS是最流行的HTTP安全形式。它是由网景公司首创的,所有主要的浏览器和服务器都支持此协议。HTTPS方案的URL以

  使用HTTPS时,所有的HTTP请求和响应数据在发送到网络之前,都要进行加密。HTTPS在HTTP下面提供了一个传输级的密码安全层—可以使用SSL,也可以使用其后继者——传输层安全(Transport
Layer
Security,TLS)。由于SSL和TLS非常类似,所以一般地,不太严格地用术语SSL来表示SSL和TLS

永利酒店赌场 6

  大部分困难的编码及解码工作都是在SSL库中完成的,所以Web客户端和服务器在使用安全HTTP时无需过多地修改其协议处理逻辑。在大多数情况下,只需要用SSL的输入/输出调用取代TCP的调用,再增加其他几个调用来配置和管理安全信息就行了

 

 

   安全套接字层(SSL)或者传输层安全(TLS)旨在通过加密方式为网络通信提供安全保障,这种协议通常与其他协议结合使用以确保协议提供服务的安全部署,例如包括SMTPS、IMAPS和最常见的HTTPS,最终目的在于在不安全网络创建安全通道。

为什么 HTTP 是不安全的?我们先来简单看下 HTTP 访问过程。

数字加密

  在详细探讨HTTPS之前,先介绍一些SSL和HTTPS用到的加密编码技术的背景知识。主要包括密码——对文本进行编码,使偷窥者无法识别的算法;密钥——改变密码行为的数字化参数;对称密钥加密系统——编/解码使用相同密钥的算法;不对称密钥加密系统——编/解码使用不间密钥的算法;公开密钥加密系统——一种能够使数百万计算机便捷地发送机密报文的系统;数字签名——用来验证报文未被伪造或篡改的校验和;数字证书——由一个可信的组织验证和签发的识别信息

  密码学是对报文进行编/解码的机制与技巧。人们用加密的方式来发送秘密信息已经有数千年了。但密码学所能做的还不仅仅是加密报文以防止好事者的读取,我们还可以用它来防止对报文的篡改,甚至还可以用密码学来证明某条报文或某个事务确实出自你手,就像支票的手写签名或信封上的压纹封蜡一样

【密码】

  密码学基于一种名为密码(cipher)的秘密代码。密码是一套编码方案——一种特殊的报文编码方式和一种稍后使用的相应解码方式的结合体。加密之前的原始报文通常被称为明文(plaintext或cleartext)。使用了密码之后的编码报文通常被称作密文(ciphertext)

永利酒店赌场 7

  用密码来生成保密信息已经有数千年了。传说尤利乌斯•凯撒(Julius
Caesar)曾使用过一种三字符旋转密码,报文中的每个字符都由字母表中三个位置之后的字符来取代。在现代的字母表中,“A”就应该由“D”来取代,“B”就应该由“E”来取代,以此类推

永利酒店赌场 8

  用rot3(旋转3字符)密码将报文“meet me at the pier at
midnight”编码为密文“phhwphdwwkhslhudwplgqljkw”。通过解码,在字母表中旋转移位3个字符,可以将密文解密回原来的明文报文

  最初,人们需要自己进行编码和解码,所以起初密码是相当简单的算法。因为密码很简单,所以人们通过纸笔和密码书就可以进行编解码了,但聪明人也可以相当容易地“破解”这些密码

  随着技术的进步,人们开始制造一些机器,这些机器可以用复杂得多的密码来快速、精确地对报文进行编解码。这些密码机不仅能做一些简单的旋转,它们还可以替换字符、改变字符顺序,将报文切片切块,使代码的破解更加困难

  编码算法和编码机都可能会落入坏人的手中,所以大部分机器上都有一些号盘,可以将其设置为大量不同的值以改变密码的工作方式。即使机器被盗,没有正确的号盘设置(密钥值),解码器也无法工作

  这些密码参数被称为密钥(key)。要在密码机中输入正确的密钥,解密过程才能正确进行。密码密钥会让一个密码机看起来好像是多个虚拟密码机一样,每个密码机都有不同的密钥值,因此其行为都会有所不同

  下图显示了使用密钥的密码实例。加密算法就是普通的“循环移位N字符”密码。N的值由密钥控制。将同一条输入报文“meet
me at the pier at
midnight”通过同一台编码机进行传输,会随密钥值的不同产生不同的输出。现在,基本上所有的加密算法都会使用密钥

永利酒店赌场 9

【数字密码】

  随着数字计算的出现,出现了以下两个主要的进展:从机械设备的速度和功能限制中解放出来,使复杂的编/解码算法成为可能;支持超大密钥成为可能,这样就可以从一个加密算法中产生出数万亿的虚拟加密算法,由不同的密钥值来区分不同的算法。密钥越长,编码组合就越多,通过随机猜测密钥来破解代码就越困难

  与金属钥匙或机械设备中的号盘设置相比,数字密钥只是一些数字。这些数字密钥值是编/解码算法的输入。编码算法就是一些函数,这些函数会读取一块数据,并根据算法和密钥值对其进行编/解码

永利酒店赌场 10

  给定一段明文报文P、一个编码函数E和一个数字编码密钥e,就可以生成一段经过编码的密文C。通过解码函数D和解码密钥d,可以将密文C解码为原始的明文P。当然,编/解码函数都是互为反函数的,对P的编码进行解码就会回到原始报文P上去

 

一、HTTP和HTTPS的基本概念

   在本文中,我们将重点探讨通过HTTP(即HTTPS)对SSL的攻击,因为这是SSL最常用的形式。可能你还没有意识到,你每天都在使用HTTPS。大多数主流电子邮件服务和网上银行程序都是依靠HTTPS来确保用户浏览器和服务器之间的安全通信。如果没有HTTPS技术,任何人使用数据包嗅探器都能窃取用户网络中的用户名、密码和其他隐藏信息。

永利酒店赌场 11

对称密钥

  很多数字加密算法都被称为对称密钥(symmetric-key)加密技术,这是因为它们在编码时使用的密钥值和解码时一样(e=d)。我们就将其统称为密钥k

  在对称密钥加密技术中,发送端和接收端要共享相同的密钥k才能进行通信。发送端用共享的密钥来加密报文,并将得到的密文发送给接收端。接收端收到密文,并对其应用解密函数和相同的共享密钥,恢复出原始的明文

永利酒店赌场 12

  流行的对称密钥加密算法包括:DES、Triple-DES、RC2和RC4

  保持密钥的机密状态是很重要的。在很多情况下,编/解码算法都是众所周知的,因此密钥就是唯一保密的东西了

  好的加密算法会迫使攻击者试遍每一个可能的密钥,才能破解代码。用暴力去尝试所有的密钥值称为枚举攻击(emmieration
attack)。如果只有几种可能的密钥值,居心不良的人通过暴力遍历所有值,就能最终破解代码了。但如果有大量可能的密钥值,他可能就要花费数天、数年,甚至无限长的时间来遍历所有的密钥,去査找能够破解密码的那一个

  可用密钥值的数量取决于密钥中的位数,以及可能的密钥中有多少是有效的。就对称密钥加密技术来说,通常所有的密钥值都是有效的。8位的密钥只有256个可能的密钥值,40位的密钥可以有2的40次个可能的密钥值(大约是一万亿个密钥)

  在传统的对称密钥加密技术中,对小型的、不太重要的事务来说,40位的密钥就足够安全了。但现在的高速工作站就可以将其破解,这些工作站每秒可以进行数十亿次计算

  相比之下,对于对称密钥加密技术,128位的密钥被认为是非常强大的。实际上,长密钥对密码安全有着非常重要的影响,美国政府甚至对使用长密钥的加密软件实施了出口控制,以防止潜在的敌对组织创建出美国国家安全局(National
Security Agency, NSA)自己都无法破解的秘密代码

  对称密钥加密技术的缺点之一就是发送者和接收者在互相对话之前,一定要有一个共享的保密密钥

  如果想要与Joe进行保密的对话,可能是在看了公共电视台的家装节目之后,想要订构一些木工工具,那么在安全地订购任何东西之前,要先在你和www.joes-hardware.com之间建立一个私有的保密密钥。你需要一种产生保密密钥并将其记住的方式。你和Joe的五金商店,以及因特网上所有其他人,都要产生并记住数千个密钥

  比如Alice(A)、Bob(B)和Chris(C)都想与Joe的五金商店(J)对话。A、B和C都要建立自己与J之间的保密密钥。A可能需要密钥Ka,B可能需要密钥Kb,C可能需要密钥Kc。每对通信实体都需要自己的私有密钥。如果有N个节点,每个节点都要和其他所有个节点进行安全对话,总共大概会有N*N个保密密钥:这将是一个管理噩梦

 

  HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和响应的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

   使用HTTPS技术是为了确保服务器、客户和可信任第三方之间数据通信的安全。例如,假设一个用户试图连接到Gmail电子邮箱账户,这就涉及到几个不同的步骤,如图1所示。

抓包如下:

公开密钥

  公开密钥加密技术没有为每对主机使用单独的加密/解密密钥,而是使用了两个非对称密钥:一个用来对主机报文编码,另一个用来对主机报文解码。编码密钥是众所周知的(这也是公开密钥加密这个名字的由来),但只有主机才知道私有的解密密钥。这样,每个人都能找到某个特定主机的公开密钥,密钥的建立变得更加简单。但解码密钥是保密的,因此只有接收端才能对发送给它的报文进行解码

  [注意]大部分公开密钥査找工作实际上都是通过数字证书来实现

永利酒店赌场 13

  下图中,节点X可以将其加密密钥ex公之于众。现在,任何想向节点X发送报文的人都可以使用相同的公开密钥了,因为每台主机都分配了一个所有人均可使用的编码密钥,所以公开密钥加密技术避免了对称密钥加密技术中成对密钥数目的N*N扩展问题

永利酒店赌场 14

  尽管每个人都可以用同一个密钥对发给X的报文进行编码,但除了X,其他人都无法对报文进行解码,因为只有X才有解码的私有密钥dx。将密钥分隔开来可以让所有人都能够对报文进行编码,但只有其所有者才能对报文进行解码。这样,各节点向服务器安全地发送报文就更加容易,因为它们只要査找到服务器的公开密钥就行了

  通过公开密钥加密技术,全球所有的计算机用户就都可以使用安全协议了。制定标准化的公开密钥技术包是非常重要的,因此,大规模的公开密钥架构(Public-Key
Infrastructure, PKI)标准创建工作已经开展许多年了

【RSA】

  所有公开密钥非对称加密系统所面临的共同挑战是,要确保即便有人拥有了下面所有的线索,也无法计算出保密的私有密钥:公开密钥(是公有的,所有人都可以获得);一小片拦截下来的密文(可通过对网络的嗅探获取);一条报文及与之相关的密文(对任意一段文本运行加密器就可以得到)

  RSA算法就是一个满足了所有这些条件的流行的公开密钥加密系统,它是在MIT发明的,后来由RSA数据安全公司将其商业化。即使有了公共密钥、任意一段明文、用公共密钥对明文编码之后得到的相关密文、RSA算法自身,甚至RSA实现的源代码,破解代码找到相应的私有密钥的难度仍相当于对一个极大的数进行质因数分解的困难程度,这种计算被认为是所有计算机科学中最难的问题之一。因此,如果发现了一种能够快速地将一个极大的数字分解为质因数的方法,就不仅能够入侵瑞士银行的账户系统,而且还可以获得图灵奖了

  RSA加密技术的细节中包括很多繁琐的数学问题。你不需要拥有数论方面的博士学位,有大量的库可以用来执行RSA算法

  任何人只要知道了其公开密钥,就可以向一台公共服务器发送安全报文,所以非对称的公开密钥加密系统是很好用的。两个节点无须为了进行安全的通信而先交换私有密钥

  但公开密钥加密箅法的计算可能会很慢。实际上它混合使用了对称和非对称策略。比如,比较常见的做法是在两节点间通过便捷的公开密钥加密技术建立起安全通信,然后再用那条安全的通道产生并发送临时的随机对称密钥,通过更快的对称加密技术对其余的数据进行加密

 

  HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

永利酒店赌场 15

永利酒店赌场 16

数字签名

  到目前为止,我们已经讨论了各种使用对称和非对称密钥加/解密保密报文的密钥加密技术

  除了加/解密报文之外,还可以用加密系统对报文进行签名(sign),以说明是谁编写的报文,同时证明报文未被篡改过。这种技术被称为数字签名(digital
signing)

  数字签名是附加在报文上的特殊加密校验码。使用数字签名有以下两个好处:1、签名可以证明是作者编写了这条报文。只有作者才会有最机密的私有密钥,因此,只有作者才能计算出这些校验和。校验和就像来自作者的个人“签名”
一样;2、签名可以防止报文被篡改。如果有恶意攻击者在报文传输过程中对其进行了修改,校验和就不再匹配了。由于校验和只有作者保密的私有密钥才能产生,所以攻击者无法为篡改了的报文伪造出正确的校验码

  数字签名通常是用非对称公开密钥技术产生的。因为只有所有者才知道其私有密钥,所以可以将作者私有密钥当作一种“指纹”使用

  下图说明了节点A是如何向节点B发送一条报文,并对其进行签名的

永利酒店赌场 17

  首先,节点A将变长报文提取为定长的摘要;然后,节点A对摘要应用了一个“签名”函数,这个函数会将用户的私有密钥作为参数。因为只有用户才知道私有密钥,所以正确的签名函数会说明签名者就是其所有者;一旦计算出签名,节点A就将其附加在报文的末尾,并将报文和签名都发送给B;在接收端,如果节点B需要确定报文确实是节点A写的,而且没有被篡改过,节点B就可以对签名进行检査。节点B接收经私有密钥扰码的签名,并应用了使用公开密钥的反函数。如果拆包后的摘要与节点B自己的摘要版本不匹配,要么就是报文在传输过程中被篡改了,要么就是发送端没有节点A的私有密钥,也就是说它不是节点A

 

  HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

图1: HTTPS通信过程

如上图所示,HTTP
请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下:

数字证书

  数字证书被称为因特网上的“ID卡”,它包含一组信息,所有这些信息都是由一个官方的“证书颁发机构”以数字方式签发的。基本的数字证书中通常包含一些纸质ID中常见的内容,比如:对象的名称(人、服务器、组织等);过期时间;证书发布者(由谁为证书担保);来自证书发布者的数字签名

  数字证书通常还包括对象的公开密钥,以及对象和所用签名算法的描述性信息。任何人都可以创建一个数字证书,但并不是所有人都能够获得受人尊敬的签发权,从而为证书信息担保,并用其私有密钥签发证书。典型的证书结构如下图所示

永利酒店赌场 18

【X.509V3证书】

  数字证书没有单一的全球标准。就像不是所有印刷版ID卡都在同样的位置包含了同样的信息一样,数字证书也有很多略有不同的形式。现在使用的大多数证书都以一种标准格式——X.509V3,来存储它们的信息。X.509V3证书提供了一种标准的方式,将证书信息规范至一些可解析字段中。不同类型的证书有不同的字段值,但大部分都遵循X.509
v3结构。下表中介绍了X.509证书中的字段信息

永利酒店赌场 19

永利酒店赌场 20

  基于X.509证书的签名有好几种,其中包括Web服务器证书、客户端电子邮件证书、软件代码签名证书和证书颁发机构证书

【认证】

  通过HTTPS建立了一个安全Web事务之后,现代的浏览器都会自动获取所连接服务器的数字证书。如果服务器没有证书,安全连接就会失败。服务器证书中包含很多字段,其中包括:Web站点的名称和主机名;Web站点的公开密钥;签名颁发机构的名称;来自签名颁发机构的签名

  浏览器收到证书时会对签名颁发机构进行检査。如果这个机构是个很有权威的公共签名机构,浏览器可能已经知道其公开密钥了,
因为浏览器会预先安装很多签名颁发机构的证书。下图中说明了如何通过其数字签名来验证证书的完整性

永利酒店赌场 21

  如果对签名颁发机构一无所知,浏览器就无法确定是否应该信任这个签名颁发机构,它通常会向用户显示一个对话框,看看他是否相信这个签名发布者。签名发布者可能是本地的IT部门或软件厂商

 

Http协议 Https协议
Http Http
TCP SSL
IP TCP
  IP

   图1显示的过程并不是特别详细,只是描述了下列几个基本过程:

永利酒店赌场 22

HTTPS细节

  HTTPS是最常见的HTTP安全版本。它得到了很广泛的应用,所有主要的商业浏览器和服务器上都提供HTTPS。HTTPS将HTTP协议与一组强大的对称、非对称和基于证书的加密技术结合在一起,使得HTTPS不仅很安全,而且很灵活,很容易在处于无序状态的、分散的全球互联网上进行管理

  HTTPS加速了因特网应用程序的成长,已经成为基于Web的电子商务快速成长的主要推动力。在广域网中对分布式Web应用程序的安全管理方面,HTTPS也是非常重要的

  HTTPS就是在安全的传输层上发送的HTTP。HTTPS没有将未加密的HTTP报文发送给TCP,并通过世界范围内的因特网进行传输,而是在将HTTP报文发送给TCP之前,先将其发送给了一个安全层,对其进行加密

永利酒店赌场 23

  HTTP安全层是通过SSL及其现代替代协议TLS来实现的。我们遵循常见的用法,用术语SSL来表示SSL或者TLS

  安全HTTP是可选的。因此,对Web服务器发起请求时,我们需要有一种方式来告知Web服务器去执行HTTP的安全协议版本,这是在URL的方案中实现的。
通常情况下,非安全HTTP的URL方案前缀为http,如下所示:

http://www.joes-hardware.com/index.html

  在安全HTTPS协议中,URL的方案前缀为https,如下所示:

https://cajun-shop.securesites.com/Merchant2/merchant.mv?Store_Code=AGCGS

  请求一个客户端(比如Web浏览器)对某Web资源执行某事务时,它会去检査
URL的方案:如果URL的方案为http,客户端就会打开一条到服务器端口80(默认情况下)的连接,并向其发送老的HTTP命令;如果URL的方案为https,客户端就会打开一条到服务器端口443(默认情况下)的连接,然后与服务器“握手”,以二进制格式与服务器交换一些SSL安全参数,附上加密的HTTP命令

永利酒店赌场 24

  SSL是个二进制协议,与HTTP完全不同,其流量是承载在另一个端口上的(SSL通常是由端口443承载的)。如果SSL和HTTP流量都从端口80到达,大部分Web服务器会将二进制SSL流量理解为错误的HTTP并关闭连接。将安全服务进一步整合到HTTP层中去就无需使用多个目的端口了,在实际中这样不会引发严重的问题

  下面来详细介绍下SSL是如何与安全服务器建立连接的

  在未加密HTTP中,客户端会打开一条到Web服务器端口80的TCP连接,发送一条请求报文,接收一条响应报文,关闭连接

  由于SSL安全层的存在,HTTPS中这个过程会略微复杂一些。在HTTPS中,客户端首先打开一条到Web服务器端口443(安全HTTP的默认端口)的连接。一且建立了TCP连接,客户端和服务器就会初始化SSL层,对加密参数进行沟通,并交换密钥。握手完成之后,SSL初始化就完成了,客户端就可以将请求报文发送给安全层了。在将这些报文发送给TCP之前,要先对其进行加密

永利酒店赌场 25

  在发送已加密的HTTP报文之前,客户端和服务器要进行一次SSL握手,在这个握手过程中,它们要完成以下工作:交换协议版本号;选择一个两端都了解的密码;对两端的身份进行认证;生成临时的会话密钥,以便加密信道

  在通过网络传输任何已加密的HTTP数据之前,SSL已经发送了一组握手数据来建立通信连接了

  下图是SSL握手的简化版本。根据SSL的使用方式,握手过程可能会复杂一些,但总的思想就是这样

永利酒店赌场 26

【服务器证书】

  SSL支持双向认证,将服务器证书承载回客户端,再将客户端的证书回送给服务器。而现在,浏览时并不经常使用客户端证书,大部分用户甚至都没有自己的客户端证书。服务器可以要求使用客户端证书,但实际中很少出现这种情况

  另一方面,安全HTTPS事务总是要求使用服务器证书的。在一个Web服务器上执行安全事务,比如提交信用卡信息时,你总是希望是在与你所认为的那个组织对话。由知名权威机构签发的服务器证书可以帮助你在发送信用卡或私人信息之前评估你对服务器的信任度

  服务器证书是一个显示了组织的名称、地址、服务器DNS域名以及其他信息的X.509
v3派生证书。你和你所用的客户端软件可以检査证书,以确保所有的信息都是可信的

永利酒店赌场 27

  SSL自身不要求用户检査Web服务器证书,但大部分现代浏览器都会对证书进行简单的完整性检査,并为用户提供进行进一步彻査的手段。网景公司提出的一种Web服务器证书有效性算法是大部分浏览器有效性验证技术的基础。验证步骤如下所述:

  1、日期检测

  首先,浏览器检査证书的起始日期和结束日期,以确保证书仍然有效。如果证书过期了,或者还未被激活,则证书有效性验证失败,浏览器显示一条错误信息

  2、签名颁发者可信度检测

  每个证书都是由某些证书颁发机构(CA)签发的,它们负责为服务器担保。证书有不同的等级,每种证书都要求不同级别的背景验证。比如,如果申请某个电子商务服务器证书,通常需要提供一个营业的合法证明

  任何人都可以生成证书,但有些CA是非常著名的组织,它们通过非常清晰的流程来验证证书申请人的身份及商业行为的合法性。因此,浏览器会附带一个签名颁发机构的受信列表。如果浏览器收到了某未知(可能是恶意的)颁发机构签发的证书,那它通常会显示一条警告信息。有些证书会携带到受信CA的有效签名路径,浏览器可能会选择接受所有此类证书。换句话说,如果某受信CA为“Sam的签名商店”签发了一个证书,而Sam的签名商店也签发了一个站点证书,浏览器可能会将其作为从有效CA路径导出的证书接受

  3、签名检测

  一旦判定签名授权是可信的,浏览器就要对签名使用签名颁发机构的公开密钥,并将其与校验码进行比较,以査看证书的完整性

  4、站点身份检测

  为防止服务器复制其他人的证书,或拦截其他人的流量,大部分浏览器都会试着去验证证书中的域名与它们所对话的服务器的域名是否匹配。服务器证书中通常都包含一个域名,但有些CA会为一组或一群服务器创建一些包含了服务器名称列表或通配域名的证书。如果主机名与证书中的标识符不匹配,面向用户的客户端要么就去通知用户,要么就以表示证书不正确的差错报文来终止连接

  SSL是个复杂的二进制协议。除非你是密码专家,否则就不应该直接发送原始的SSL流量。幸运的是,借助一些商业或开源的库,编写SSL客户端和服务器并不十分困难

  OpenSSL是SSL和TLS最常见的开源实现。OpenSSL项目由一些志愿者合作开发,目标是开发一个强壮的、具有完备功能的商业级工具集,以实现SSL和TLS协议以及一个全功能的通用加密库

【代理】

  客户端通常会用Web代理服务器代表它们来访问Web服务器。比如,很多公司都会在公司网络和公共因特网的安全边界上放置一个代理。代理是防火墙路由器唯一允许进行HTTP流量交换的设备,它可能会进行病毒检测或其他的内容控制工作

永利酒店赌场 28

  但只要客户端开始用服务器的公开密钥对发往服务器的数据进行加密,代理就再也不能读取HTTP首部了,从而代理就无法知道应该将请求转向何处了

永利酒店赌场 29

  为了使HTTPS与代理配合工作,要进行几处修改以告知代理连接到何处。一种常用的技术就是HTTPS
SSL隧道协议。使用HTTPS隧道协议,客户端首先要告知代理,它想要连接的安全主机和端口。这是在开始加密之前,以明文形式告知的,所以代理可以理解这条信息

  HTTP通过新的名为CONNECT的扩展方法来发送明文形式的端点信息。CONNECT方法会告诉代理,打开一条到所期望主机和端口号的连接。这项工作完成之后,直接在客户端和服务器之间以隧道形式传输数据。CONNECT方法就是一条单行的文本命令,它提供了由冒号分隔的安全原始服务器的主机名和端口号。host:port后面跟着一个空格和HTTP版本字符串,再后面是CRLF。接下来是零个或多个HTTP请求首部行,后面跟着一个空行。空行之后,如果建立连接的握手过程成功完成,就可以开始传输SSL数据了

CONNECT home.netscape.com:443 HTTP/1.0 
User-agent: Mozilla/1.IN

<raw SSL-encrypted data would follow here...>

  在请求中的空行之后,客户端会等待来自代理的响应。代理会对请求进行评估,确保它是有效的,而且用户有权请求这样一条连接。如果一切正常,代理会建立一条到目标服务器的连接。如果成功,就向客户端发送一条200
Connection Established响应

HTTP/1.0 200 Connection established
Proxy-agent: Netscape-Proxy/1.1

 

   1. 客户端浏览器使用HTTP连接到端口80的

可以看到,客户端发出的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉,所以我们经常会听到一词“劫持”。

二、HTTP与HTTPS有什么区别?

  2. 服务器试用HTTP代码302重定向客户端HTTPS版本的这个网站

试想下,你正在进行一次在线付款操作,你需要输入银行卡号、密码等信息,然后这些信息会经过网络发送到银行系统,“一切数据”都是明文传输的,而恰好有人正在进行网络抓包,他解开你的数据包,然后偷窃你的所有信息。这会对你的财产安全构成了直接威胁。除了财产不安全以外,你的隐私也无法得到保证,什么时候浏览什么了网站,这些都容易被他人所嗅探到。

  HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

   3. 客户端连接到端口443的网站

因此,可以说是 HTTPS
的使用是互联网发展的必然趋势,我们需要这样一种手段来保障我们个人的财产安全,隐私安全。不论是在上网做什么,我们都希望我们的足迹能够被保护起来,不轻易地被不怀好意的人感知到。因此
HTTPS 应该应用在全部的上网场景之中,HTTPS everywhere!

  HTTPS和HTTP的区别主要如下:

   4. 服务器向客户端提供包含其电子签名的证书,该证书用于验证网址
  5. 客户端获取该证书,并根据信任证书颁发机构列表来验证该证书

永利酒店赌场 30

  1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。

  6. 加密通信建立

通过上图我们就可以了解到,相比 HTTP,HTTPS 传输更加安全。

  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

   如果证书验证过程失败的话,则意味着无法验证网址的真实度。这样的话,用户将会看到页面显示证书验证错误,或者他们也可以选择冒着危险继续访问网站,因为他们访问的网站可能是欺诈网站。

  • 所有信息都是加密传播,黑客无法窃听。
  • 具有校验机制,一旦被篡改,通信双方会立刻发现。
  • 配备身份证书,防止身份被冒充。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

     HTTPS被攻破

按说上网更加安全,这并没有什么不好的,然而 HTTPS
的推广却存在着一些障碍,比如 SSL
证书的价格问题、建立安全通信链路所带来的额外开销等。

  4、http的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

   这个过程一直被认为是非常安全的,直到几年前,某攻击者成功对这种通信过程进行劫持,这个过程并不涉及攻击SSL本身,而是对非加密通信和加密通信间的“网桥”的攻击。

证书开销

三、HTTPS的工作原理

   知名安全研究人员Moxie
Marlinspike推测,在大多数情况下,SSL从未直接遭遇威胁问题。SSL连接通常是通过HTTPS发起的,因为用户通过HTTP302响应代码被定位到HTTPS或者他们点击连接将其定位到一个HTTPS站点,例如登录按钮。这就是说,如果攻击者攻击从非安全连接到安全连接的通信,即从HTTP到HTTPS,则实际上攻击的是这个“网桥”,SSL连接还未发生时的中间人攻击。为了有效说明这个概念,Moxie开发了SSLstrip工具,也就是我们下面将要使用的工具。

永利酒店赌场 31

  我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

   这个过程非常简单,与我们前面文章所提到的攻击有所类似,如图2所示。

首先是证书价格问题,不少个人用户在看到价格之后,会产生“配置 HTTPS
是否值得”,“证书之间的价格相差如此之大我该如何选择”等疑问。这可能会使客户在了解
HTTPS 带来的好处之前,就直接打消配置 HTTPS
的念头。其实针对个人博客或者小网站,又拍云就提供 Let’s Encrypt 和
Symantec 的两款免费证书。 OV、EV
证书更建议企业采用,为网站提供更全面的安全保障。

永利酒店赌场 32

永利酒店赌场 33

服务器资源消耗

 

图2:劫持HTTPS通信

HTTPS,即 HTTP Over TLS,建立一条安全通信链路,需要经历一次 SSL/TLS
握手,在握手阶段,双方会采用非对称加密的方式进行密钥协商,例如现在最流行的
RSA 算法和临时椭圆曲线算法,密钥协商的目的是计算出一个称为 “pre master”
的串,用以构建出最终的加密密钥,这个加密密钥用于对称加密,即双方进行数据传输时使用。非对称加密最大的缺陷是其计算的复杂度,这些复杂的数学计算,往往会消耗一定的
CPU 资源。不过不用担心,这消耗主要体现在服务端,例如又拍云 CDN
边缘的服务器每秒需要处理数以万计的 HTTPS
请求,这对服务器的硬件资源是一个极大的考验。

 

   图2中描述的过程如下:

另外,这里的消耗主要来自于握手时候的消耗,建好连接之后就不太耗了。

1.客户端发起一个https的请求(
Suite(密钥算法套件,简称Cipher)发送给服务端。

   1. 客户端与web服务器间的流量被拦截

那么采用 HTTPS 后,到底会多用多少服务器资源?

 

  2. 当遇到HTTPS
URS时,sslstrip使用HTTP链接替换它,并保存了这种变化的映射

2010年1月 Gmail 切换到完全使用 HTTPS, 前端处理 SSL 机器的CPU
负荷增加不超过1%,每个连接的内存消耗少于20KB,网络流量增加少于2%。由于
Gmail 应该是使用N台服务器分布式处理,所以CPU
负荷的数据并不具有太多的参考意义,每个连接内存消耗和网络流量数据有参考意义。这篇文章中还列出了单核每秒大概处理
1500 次握手(针对1024-bit 的
RSA),这个数据很有参考意义,具体信息来源:ImperialViolet(

2.服务端,接收到客户端所有的Cipher后与自身支持的对比,如果不支持则连接断开,反之则会从中选出一种加密算法和HASH算法

   3. 攻击机模拟客户端向服务器提供证书

访问速度

 
 以证书的形式返回给客户端 证书中还包含了 公钥 颁证机构 网址
失效日期
等等。

   4. 从安全网站收到流量提供给客户端

繁重的计算和多次交互天然的影响了 HTTPS
的访问速度。如果什么优化都不做,HTTPS
会明显慢很多。如果做过常规优化,但是不针对 HTTPS
做优化,这种情况下测试的结果是 0.2-0.4
秒耗时的增加。如果是没有优化过的站点,慢 1 秒都不是梦。

 

   这个过程进展很顺利,服务器认为其仍然在接收SSL流量,服务器无法辨别任何改变。用户可以感觉到唯一不同的是,浏览器中不会标记HTTPS,所以某些用户还是能够看出不对劲。

所以,不是慢,是没有优化。

3.客户端收到服务端响应后会做以下几件事

说到优化,为了能够让HTTPS更好更快的普及,工程师们设计出了不少针对性的优化点。

   
3.1 验证证书的合法性    

例如针对 SSL/TLS 握手的开销,引入了 SSL Session 和 TLS Session Tickets
的机制,用以复用会话,减少握手带来的开销;又拍云 CDN 全网支持 HTTP/2 和
TLS 1.3 特性,HTTP/2
带来了巨大的速度提升,具有诸如服务器推送,标头压缩和并行请求等功能。而
TLS 1.3
通过移除有安全隐患的加密算法来提高安全性,通过简化握手,减少延迟并提高性能。

  
 颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等

针对 SSL/TLS 握手会消耗大量的 CPU 资源,各厂商都在探索利用硬件(例如
Intel 提供的 Quick Assistant Technology)进行加速的道路;

       
证书验证通过后,在浏览器的地址栏会加上一把小锁(每家浏览器验证通过后的提示不一样
不做讨论)

针对证书昂贵的问题,又拍云联合 Symantec、GeoTrust、TrustAsia、Let’s
Encrypt 推出付费和免费 SSL
证书申请与管理一站式服务,无需繁杂流程,一键申请,自主部署,轻松实现网站与
Web 应用的 HTTPS 加密部署。

    3.2
生成随机密码

推荐阅读:

       
如果证书验证通过,或者用户接受了不授信的证书,此时浏览器会生成一串随机数,然后用证书中的公钥加密。
      

不是 HTTPS 拖慢网站速度,而是优化做的不够优秀HTTPS 到底加密了什么?

    3.3
HASH握手信息

     
 用最开始约定好的HASH方式,把握手消息取HASH值, 然后用 随机数加密
“握手消息+握手消息HASH值(签名)”  并一起发送给服务端

     
 在这里之所以要取握手消息的HASH值,主要是把握手消息做一个签名,用于验证握手消息在传输过程中没有被篡改过。

 

4.服务端拿到客户端传来的密文,用自己的私钥来解密握手消息取出随机数密码,再用随机数密码 解密
握手消息与HASH值,并与传过来的HASH值做对比确认是否一致。

   
然后用随机密码加密一段握手消息(握手消息+握手消息的HASH值
)给客户端

 

5.客户端用随机数解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密
 

   
 因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截也是没法解密数据的,以此保证了通信的安全

  

非对称加密算法:RSA,DSA/DSS
    在客户端与服务端相互验证的过程中用的是非对称加密 
对称加密算法:AES,RC4,3DES
   
客户端与服务端相互验证通过后,以随机数作为密钥时,就是对称加密
HASH算法:MD5,SHA1,SHA256  
   在确认握手消息没有被篡改时 

 

 

四、HTTPS要比HTTP多用多少服务器资源?

  HTTPS其实就是建构在SSL/TLS之上的
HTTP协议,所以,要比较HTTPS比HTTP多用多少服务器资源,主要看SSL/TLS本身消耗多少服务器资源。

  HTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包,HTTPS除了TCP的三个包,还要加上ssl握手需要的9个包,所以一共是12个包。

  HTTP建立连接,按照下面链接中针对Computer Science
House的测试,是114毫秒;HTTPS建立连接,耗费436毫秒,ssl部分花费322毫秒,包括网络延时和ssl本身加解密的开销(服务器根据客户端的信息确定是否需要生成新的主密钥;服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息;服务器向客户端请求数字签名和公开密钥)。

  当SSL连接建立后,之后的加密方式就变成了3DES等对于CPU负荷较轻的对称加密方式,相对前面SSL建立连接时的非对称加密方式,对称加密方式对CPU的负荷基本可以忽略不记,所以问题就来了,如果频繁的重建ssl的session,对于服务器性能的影响将会是致命的,尽管打开HTTPS保活可以缓解单个连接的性能问题,但是对于并发访问用户数极多的大型网站,基于负荷分担的独立的SSL
termination proxy就显得必不可少了,Web服务放在SSL termination
proxy之后,SSL termination
proxy既可以是基于硬件的,譬如F5;也可以是基于软件的,譬如维基百科用到的就是Nginx。

  那采用HTTPS后,到底会多用多少服务器资源,2010年1月Gmail切换到完全使用HTTPS,
前端处理SSL机器的CPU负荷增加不超过1%,每个连接的内存消耗少于20KB,网络流量增加少于2%,由于Gmail应该是使用N台服务器分布式处理,所以CPU负荷的数据并不具有太多的参考意义,每个连接内存消耗和网络流量数据有参考意义,这篇文章中还列出了单核每秒大概处理1500次握手(针对1024-bit
的 RSA),这个数据很有参考意义。

四、HTTPS的优点

  尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

  (1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

  (2)HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

  (3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

  (4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

五、HTTPS的缺点

  虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

  (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

  (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

  (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

 
 (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

  (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,

     特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

 

参考博客:

 

HTTPS 原理解析

 

HTTP与HTTPS的区别

HTTP与HTTPS的区别

 

网站地图xml地图