北京快中彩基本走势|快中彩开奖号码

秒懂HTTPS

http和https

HTTP:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

简单来说,HTTP 是一种超文本传输协议,它是无状态的、简单快速的、基于 TCP 的可靠传输协议。

HTTP特点:

  1. 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作。
  2. 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
  3. 基于请求和响应:基本的特性,由客户端发起请求,服务端响应。
  4. 简单快速、灵活。
  5. 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性。


在HTTP/2出?#31181;?#21518;,HTTP的传输效率得到了巨大提升,这归功于其多路复用技术。然而, HTTP 协议这么好,那怎么又冒出来了一个 HTTPS 呢?

主要是因为 HTTP 是明文传输的,这就造成了很大的安全隐患。在网络传输过程中,只要数据包被人劫持,那你就相当于赤身全裸的暴?#23545;?#20182;人面前,毫无半点隐私可言。想象一下,如果你连了一个不可信的 WIFI,正好有使用了某个支付软件进行了支付操作,那么你的密码可能就到别人手里去了,后果可想而知。

随着互联网的发展和普及,网络安全问题越发引入注意,HTTPS便应运而生。

HTTPS:超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来?#29992;?#25968;据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐?#25509;?#23436;整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。

简单来说,HTTPS是身披SSL外壳的HTTP,它本质上还是HTTP协议,使用HTTPS可以保护所有类型网站?#31995;?#32593;页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。

 

背景

从风险的角度来说,HTTPS解决了HTTP的三个问题,如下:

HTTP 三大风险:

  1. 窃听风险:第三方可以获知通信内容。
  2. 篡改风险:第三方可以修改通信内容。
  3. 冒充风险:第三方可以冒充他人身份参与通信。

HTTPS 解决方案:

  1. 内容?#29992;埽?#25152;有信息都是?#29992;?#20256;播,第三方无法窃听。
  2. 验证身份:具有校验机制,一旦被篡改,通信双方会立刻发现。
  3. 保护数据完整性:配备身份证书,防止身份被冒充。

 

实现

上面讲了这么多,大家应该对HTTPS有了一点了解了吧。但是对于其本质,以及如何保护数据安全的原理应?#27809;?#26159;糊里糊涂的吧。别?#20445;?#25105;们这就来了解一下神奇的HTTPS如何保障数据安全。

【注:HTTPS并非绝对的安全,但是它能很大程度上保护数据安全,因为要破解HTTPS安全机制从而获取或者篡改数据需要花费大量的人力物力,这对于那些?#26377;?#19981;良的人来说是很不愿意做的事情】

由于HTTPS涉及到了一些术语,在这里我先解释一下,到时候方便理解。

对称?#29992;埽?#21363;通信双方通过相同的密钥进行信息的加解密。加解密速度快,但是安全性较差,如果其中一方泄露了密钥,那?#29992;?#36807;程就会被人破解。

非对称?#29992;埽?#30456;比对称?#29992;埽?#38750;对称?#29992;?#31639;法需要两个密钥:公开密钥(publickey)和?#25509;?#23494;钥(privatekey)。公开密钥与?#25509;?#23494;钥是一对,如果用公开密钥对数据进行?#29992;埽?#21482;有用对应的?#25509;?#23494;钥才能解密;如果用?#25509;?#23494;钥对数据进行?#29992;埽?#37027;么只有用对应的公开密钥才能解密。因为?#29992;?#21644;解密使用的是两个不同的密钥,所以这种算法叫作非对称?#29992;?#31639;法。两把密钥分别由发送双发各自保管,加解密过程需两把密钥共同完成。安全性更高,但同时计算量也比对称?#29992;?#35201;大很多。

混合?#29992;埽航?#21512;非对称?#29992;?#21644;对称?#29992;?#25216;术。客户端使用对称?#29992;?#29983;成密钥对传输数据进行?#29992;埽?#28982;后使用非对称?#29992;?#30340;公钥再对对称?#29992;?#30340;密钥进行?#29992;埽?#25152;以网络上传输的数据是被对称?#29992;?#30340;密钥?#29992;?#21518;的内容和用非对称?#29992;?#30340;公钥?#29992;?#21518;的对称?#29992;?#30340;密钥,因此即使被黑客截取,由于没有非对称?#29992;?#30340;私钥,无法获取到?#29992;?#26126;文的对称?#29992;?#30340;密钥,便无法获取到明文数据。 【ps:这里好绕?#24314;r(╯﹏╰)╭】

CA:证书颁发机构(Certificate Authority)即颁发数?#31181;?#20070;的机构。是负责发放和管理数?#31181;?#20070;的权威机构,并作为电?#30001;?#21153;交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA?#34892;?#20026;每个使用公开密匙的用户发放一个数?#31181;?#20070;,数?#31181;?#20070;的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。

数字签名:CA会对服务端的公钥和服务端信息用一个Hash算法生成一个消息摘要,然后CA再用它的私钥对消息摘要?#29992;埽?#24418;成签名,这就是数字签名。【注:使用Hash算法有个极好的特性,只要输入数据有一点点变化,那生成的消息摘要就会有巨变,这样就可以防止别人修改原始内容】

数?#31181;?#20070;:CA将服务端的信息以及服务端的数字签名合并, 形成一个全新的东西,叫做“数?#31181;?#20070;”。当服务端把它的证书发给其他人之后, 别人就用同样的Hash 算法, 再次生成消息摘要,然后用CA的公钥对数字签名解密, 得到CA创建的消息摘要, 两者一比,就知道有没有人篡改了。【注:在操作系统/浏览器中会内置一些顶层的CA的证书】

基础术语解释完毕之后,我们来看看使用HTTPS的时候,一些校验流程,如下图:

 

  1. 客户端向服务端发送请求https://xxx.com,然后连接到服务端的443端口。
  2. 服务端传送证书给客户端 ,这个证书里面包含了很多信息,如证书所有者的信息、证书的颁发机构、过期时间、服务端的公钥、第三方证书认证机构(CA)的签名、服务端的域名信息等内容。
  3. 客户端解析证书 。
  4. 这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构、过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即?#25285;?#23545;称?#29992;?#30340;密钥),然后用服务端的公钥(public key)对该随机值进行?#29992;堋?/li>
  5. 传送?#29992;?#20449;息给服务端 ,这部分传送的是用服务端的公钥?#29992;?#21518;的密钥(上述所说的随机?#25285;?#30446;的就是让服务?#35828;?#21040;这个密钥。
  6. 服务端用自己的私钥解密,得到了客户端传过来的密钥,之后开始使用对称密钥来?#29992;?#35299;密数据,就不用再使用公钥和私钥校验了。

整个流程大致如上面所说的。另外有几个点再说一下。

1. 为什么要使用服务端的公钥来?#29992;?#23545;称?#29992;?#30340;密钥?

其实上面有说过,服务端的公钥和私钥是一对的,用公钥?#29992;?#30340;内容必须使用私钥才能解密,用私钥?#29992;?#30340;内容必须使用公钥来解密。公钥谁都能知道,但是只有服务器知道私钥。使用服务端的公钥来?#29992;?#23545;称?#29992;?#30340;密钥,也就是说必须要使用服务器的私钥来解密,而黑客等中间人他们是不可能知道服务端的私钥是什么的,所以他们便无法解密得到用于?#29992;?#25968;据的密钥,自然而然没办法篡改数据的传输。

2. 如何保?#29616;?#20070;安全传输?如何保障服务器给客户端下发的公钥是真正的公钥?

这里面涉及到了证书的校验原理,上面在解释术语的时候就有说到过校验过程,这里贴一张?#35745;?#20986;来看看,会更?#21448;?#35266;,如图:

 

当服务端把它的证书发给其他人之后, 别人也对证书的信息内容用CA使用的Hash 算法进?#20889;?#29702;, 再次生成消息摘要,然后用CA的公钥对数字签名解密, 得到CA创建的消息摘要, 两者一比,就知道有没有人篡改了。

另外,即便中间人虽然有权威机构的公钥,能够解析证书内容并篡改,但是篡改完成之后中间人需要将证书重新?#29992;埽?#20294;是中间人没有权威机构的私钥,无法?#29992;埽?#24378;行?#29992;?#21482;会导致客户端无法解密,如果中间人强?#26032;?#20462;改证书,就会导致证书内容和证书签名不匹配,我们就能知道证书是不是被篡改了。

 

弊端

?#27604;唬?#20174;其他角度来说,HTTPS也具有其弊端,毕竟没有什么东西是绝对完美的。

1. 网络耗时增加

使用HTTP的时候,只需要完成 TCP 三次握手建立 TCP 连接就能够直接发送 HTTP 请求获取应用层数据,此外在整个访问过程中也没有需要消耗计算资源的地方。

而HTTPS 的访问过程,相比 HTTP 要复杂很多。

对于用户来说,一般发起的是HTTP请求。举个例子,比如说访问百度首页,绝大部分用户不会手动输入 https://www.baidu.com 来访问 HTTPS,?#22253;傘?#22909;,那我们看看这里面有哪些地方会增加耗时的地方。

由于用户没有使用HTTPS请求,服务端只能返回 302 强?#20854;?#35272;器跳转到 HTTPS,这个时候就需要多话费一些时间,而?#24518;?#35272;器处理 302 跳转也需要耗时。
通过302 跳转到 HTTPS 服务器之后,由于端口和服务器不同,需要重新完成三次握手,建立 TCP 连接。这里也增加了耗时。
浏览器校验证书,验证证书有效性、服务器信息等过程也需要时间处理。
?#27604;唬?#22686;加耗时的地方不止上面所列的三点,比如说浏览器有可能更CA域名解析、握手等情况。 但是,我们能?#30001;?#38754;这个粗糙的例?#21448;?#30693;道,HTTPS相对于HTTP的确会增加不少的网络耗时情况。

2. 计算耗时增加

浏览器校验证书、数据?#29992;?#31561;等以及服务器获取对称密匙、解密数据等都需要耗费时间。当数据量多的时候,这对服务器CPU的计算能力也提出来很高的要求。

3. 价格昂贵

SSL证书需要购买申请,功能越强大的证书费用越高。【注:这个是导致HTTPS普及率低的很重要原因,因为对于个人来说实在是太贵了。但是目前网上也有一些可以申请免费SSL证书的机构,但是限制比较多。】

 

前景

这些年谷歌一直力推HTTPS协议,对Chrome的用户界面做出了一些改变。2017年1月发布的Chrome 56浏览器开?#21450;?#25910;集密码或信用卡数据的HTTP页面标记为“不安全”。若用户使用2017年10月推出的Chrome 62,带有输入数据的HTTP页面和所有以无痕模式浏览的HTTP页面都会被标记为“不安全”。到了2018年7月,Chrome浏览器的地址栏将把所有HTTP标示为不安全网站。

除去谷歌,其他一些互联网公司也进行了自己的 HTTPS 实现,比如当前国内炒的很火热的微信小程序也要求必须使用 HTTPS 协议;新一代 HTTP/2 协议的支持必须以 HTTPS 为基础;苹果公司要求App Store当中的所有应用必须使用HTTPS传输等?#21462;?/p>

总而言之,HTTPS和传统的HTTP主要的差异遭遇安全性方面,HTTPS?#31995;?#31449;点数据,在互联网上传播具有动态的?#29992;?#29305;性,所?#22253;?#20840;性较高,而HTTP则没有这个功能,在如今网络安全日益突出的大环境下,HTTPS必然成为趋势。

 

posted @ 2019-03-14 11:29 李某龙 阅读(...) 评论(...) 编辑 收藏
北京快中彩基本走势