ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HTTPS详解一

2021-01-24 15:30:23  阅读:274  来源: 互联网

标签:HTTP 证书 详解 密钥 HTTPS 加密 加密算法


前言

近年来,随着用户和互联网企业安全意识的提高和HTTPS成本的下降,HTTPS已经越来越普及。很多互联网巨头也在力推HTTPS,比如谷歌Chrome浏览器在访问HTTP网站时会在地址栏显示不安全的提示,微信要求所有小程序必须使用HTTPS传输协议,苹果也要求所有在App Store上架的应用必须采用HTTPS,国内外大部分主流网站也都迁移至HTTPS,可见HTTPS全面取代HTTP只是时间问题。

一、HTTP的最大弊端——不安全

HTTP之所以被HTTPS取代,最大的原因就是不安全,至于为什么不安全,看下图就一目了然了。

由图可见,HTTP在传输数据的过程中,所有的数据都是明文传输的,自然没有安全性可言,特别是一些敏感的数据,比如用户密码和信用卡信息等,一旦被第三方获取,后果不堪设想。这里可能会有人会说,我在前端页面对敏感数据进行加密不就行了,比如MD5加盐加密。这么想就太简单了。首先MD5并不是加密算法,其全程是Message Digest Algorithm。意为信息摘要算法,是一种不可逆的哈希算法,也就是说经过前端MD5进行处理,并把得到的哈希值发送给服务器,服务器由于无法复原密码,就会直接用哈希值处理用户请求。所以第三方在获取到这个哈希值后,可以绕过前端登录页面直接访问服务器,造成安全问题。另外,MD5算法本身的安全性也存在缺陷,这里就不展开谈了。

总之MD5,SHA-1之类的哈希算法并不能让HTTP变得更安全。要想让HTTP更安全,只能使用真正的加密算法,因为加密算法可以用密钥加密或还原数据,只要确保密钥不被第三方获取,那就能保证数据传输的安全了。而这正是HTTPS的解决方案,那下面就来了解以下加密算法吧。

二、加密算法

HTTPS解决数据传输安全问题的方案就是使用加密算法,具体来说是混合加密算法,也就是对称加密和非对称加密的混合使用,这里有必要先了解以下这两种加密算法的区别和优缺点。

1.对称加密

对称加密,顾名思义就是加密和解密使用的都是同一个密钥,常见的对称加密有DES,3DES和AES等,其优缺点如下:

  • 优点:算法公开、计算量小、加密速度快、加密效率高,适合加密加密比较大的数据。
  • 缺点:

              1.交易双方需要使用相同的密钥,也就无法避免密钥的传输,而密钥在传输过程中无法保证不被截获,因此对称加密算法的安全性等不到保证。

              2.每对用户每次使用对称加密算法是,都需要使用其他人不知道的唯一密钥,这会使得发收信双方所拥有得要是数量急剧增长,密钥管理成为双方的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。

本文不对具体的加密算法做详细介绍,有兴趣可以参考 《对称加密算法》

如果直接将对称加密算法用在HTTP中,会是下面效果:

 

 

从图中可以看出,被加密的数据在传输过程中是无规则的乱码,即便被第三方截获,在没有密钥的情况下也无法解密数据,也就保证了数据的安全。但是有一个致命的问题,那就是既然双方要使用同样的密钥,那就必然要在传输数据之前先由一方把密钥传给另一方,那么在此过程中密钥就很有可能被截获,这样一来加密的数据也会被轻松解密。那如何确保密钥在传输过程中的安全呢?这就要用到非对称加密了。

 

2.非对称加密

非对称加密,顾名思义,就是加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)。公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有对应的公钥才能解密。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公钥对外公开;得到该公钥的乙方使用公钥对机密信息进行加密后再发送给甲方;甲方在用自己保存的私钥对加密后的信息进行解密。如果对公钥和私钥不太理解,可以想象成一把钥匙和一把锁,只是全世界只有你一个人有这个钥匙,你可以把锁给别人,别人可以用这把锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。常用的非对称算法是RSA算法,想了解的可以点这里:《RSA算法详解一》《RSA算法详解二》,其优缺点如下:

  • 优点:算法公开,加密和解密使用不同的钥匙,私钥不需要通过网络进行传输,安全性很高。
  • 确定:计算量比较大,加密和解密速度相对比对称算法慢很多。

由于非对称加密的强安全性,可以用它完美解决对称加密的密钥泄露问题,效果图如下:

 

 

在上述过程中,客户端在拿到服务器的公钥后,会生成一个随机码(用KEY表示,这个KEY就是后续双方用于对称加密的密钥),然后客户端使用公钥把KEY加密后再发送给服务器,服务器使用私钥将其解密,这样双方就有了同一个密钥KEY,然后双方再使用KEY进行对称加密交互数据。再非对称加密传输KEY的过程中,即便第三方获取到了公钥加密后的KEY,在没有私钥的情况下也无法破解KEY(私钥存在服务器,泄露风险极小),也就保证了接下来对称加密的数据的安全。而上面这个流程图正式HTTPS的雏形,HTTPS正好综合了这两种加密算法的有点,不仅保证了通信安全,还保证了数据传输效率。

三、HTTPS原理详解

先看一下维基百科对HTTPS的定义

Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It is used for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, its predecessor, Secure Sockets Layer (SSL). The protocol is therefore also often referred to as HTTP over TLS, or HTTP over SSL.

HTTPS (Hypertext Transfer Protocol ) 是基于 HTTP 的扩展,用于计算机网络的安全通信,已经在互联网得到广泛应用。在 HTTPS 中,原有的 HTTP 协议会得到 TLS (安全传输层协议) 或其前辈 SSL (安全套接层) 的加密。因此 HTTPS 也常指 HTTP over TLS 或 HTTP over SSL。

可见HTTPS并非独立的通信协议,而是对HTTP的扩展,保证了通信安全,二者关系如下:

 也就是说HTTPS=HTTP+SSL/TLS。

接下来就是最重要的HTTPS原理解析了,如图。

 

HTTPS的整个通信过程可以分为两大阶段:证书验证和数据传输阶段,数据传输阶段又可以分为非对称加密和对称加密两个阶段。具体流程按图中的序号讲解。

  1. 客户端请求HTTPS网址,然后连接到server的443端口(HTTPS默认端口,类似于HTTP的80端口)。
  2. 采用HTTPS协议的服务器必须要有一套数字CA(Certification Authority)证书,证书是需要申请的,并由专门的数字证书认证机构(CA)通过非常严格的审核之后颁发的电子证书(当然了是要钱的,安全级别越高价格越贵)。颁发证书的同时会产生一个私钥和公钥。私钥由服务器自己保存,不可泄漏。公钥则是附带再证书的信息中,可以开放的。证书本身也附带一个证书电子签名,这个签名用来验证证书的完整性和真实性,可以防止证书被篡改。
  3. 服务器响应客户端请求,将证书传递给客户端,证书包含公钥的大量其他信息,比如证书颁发机构信息,公司信息和证书有效期等。Chrome浏览器点击地址栏的锁标志再点击证书就可以查看到证书的详细信息。
  4. 客户端解析证书并对其进行验证。如果证书不是可信机构颁布,或者证书中的域名与实际域名不一致,或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A。然后客户端还会生成一个随机码KEY,并使用公钥A将其加密。
  5. 客户端把机密后的随机码KEY发送给服务器,作为后面对称加密算法的密钥。
  6. 服务器在收到随机码KEY之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全连接,完美解决了对称加密的密钥泄露问题,接下来就可以用对称机密愉快地进行通信了。
  7. 服务器使用密钥(随机码KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥(随机码KEY)解密数据。
  8. 双方使用对称加密愉快地传输所有数据。

四、总结

再来总结一下HTTPS和HTTP的区别以及HTTPS的缺点吧:

HTTPS和HTTP的区别:

  • 最最最最重要的区别就是安全性,HTTP明文传输,不对数据进行加密安全性较差。HTTPS(HTTP+SSL/TLS)的数据传输过程是加密的,安全性较好。
  • 使用HTTPS协议需要申请CA证书,一般免费证书较少,因而需要一定的费用。证书颁发机构如:Symantec、Comodo、DigiCert和GlobalSign等。
  • HTTP页面响应速度比HTTPS快,这个很好理解,由于加了一层安全层,建立连接的过程更复杂,也要交换更多的数据,难免影响速度。
  • 由于HTTPS是建构在SSL/TLS之上的HTTP协议,所以,要比HTTP更耗费服务器资源。
  • HTTPS和HTTP使用的是完全不同连接方式,用的端口也不一样,前者是443,后者是80.

HTTPS的缺点:

  • 在相同的网络环境中,HTTPS相比HTTP无论是响应时间还是耗电量都有大幅度上升。
  • HTTPSd的安全是有范围的,在黑客攻击、服务器劫持等情况下几乎起不到作用。
  • 在现有的证书机制下,中间人攻击依然有可能发生。
  • HTTPS需要更多的服务器资源,也会导致成本升高。

好了,以上就是本篇文章的全部内容了,如有错误,欢迎斧正。最后贴几篇参考文章。

 

标签:HTTP,证书,详解,密钥,HTTPS,加密,加密算法
来源: https://blog.csdn.net/weixin_44093341/article/details/113086797

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有