本文介绍了“计算机网络中的HTTPS原理分析”的知识。很多人在实际案例操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
1、HTTP 的最大弊端mdash;mdash;不安全
HTTP被HTTPS取代的最大原因是不安全。至于为什么不安全,看了下图一目了然。
图1。HTTP数据传输过程
从图中可以看出,在HTTP数据传输的过程中,所有的数据都是以明文传输的,所以自然完全没有安全性,尤其是一些敏感数据,比如用户密码、信用卡信息等,一旦被第三方获取,后果不堪设想。这里可能有人会说,我只能在首页加密敏感数据,比如用盐加密MD5。这么想太简单了。首先,MD5不是加密算法。它的全称是消息摘要算法MD5,意思是信息摘要算法。它是一种不可逆的哈希算法,也就是说前端MD5处理的数据在服务器端无法恢复。这里,以密码为例。前端通过MD5处理用户密码,并将获得的哈希值发送给服务器。由于服务器无法恢复密码,它将直接使用该哈希值来处理用户请求。因此,在获得这个哈希值后,第三方可以绕过前端登录页面,直接访问服务器,造成安全问题。另外MD5算法本身的安全性也是有缺陷的,这里就不多说了。
总之,MD5、SHA-1等哈希算法无法让HTTP更安全。为了使HTTP更安全,我们只能使用真正的加密算法,因为加密算法可以用密钥加密和恢复数据。只要密钥不是第三方获取的,就可以保证数据传输的安全性。这是HTTPS的解决方案,让我们来看看加密算法。
2、加密算法
HTTPS解决数据传输安全问题的方案是使用加密算法,具体来说就是混合加密算法,即混合使用对称加密和非对称加密。首先要了解这两种加密算法的区别和优缺点。
2.1 对称加密
对称加密,顾名思义,意味着加密和解密使用相同的密钥。常见的对称加密算法包括DES、3DES和AES等。它们的优缺点如下:
优点:算法开放,计算量小,加密速度快,加密效率高,适用于大数据加密。
缺点:
交易双方需要使用同一个密钥,因此无法避免密钥的传输,也无法保证密钥在传输过程中不被截获,因此无法保证对称加密的安全性。
用户每次使用对称加密算法,都需要使用一个别人不知道的唯一密钥,这将使发送方和接收方拥有的密钥数量急剧增加,密钥管理成为双方的负担。对称加密算法在分布式网络系统中很难使用,主要是因为密钥管理困难和成本高。
本文不会详细介绍具体的加密算法。感兴趣的同学可以参考对称加密算法进行详细讲解。如果在HTTP中直接使用对称加密算法,将会达到以下效果:
图2。对称加密数据传输过程
从图中可以看出,加密数据在传输过程中是随机乱码的,即使被第三方截获,没有密钥也无法解密,保证了数据的安全性。但是,有一个致命的问题,那就是由于双方都想使用同一个密钥,所以在传输数据之前,一方需要将密钥传递给另一方,所以在这个过程中密钥很可能被截获,从而加密的数据很容易被解密。如何保证密钥在传输过程中的安全性?这就要用到非对称加密了。
2.2 非对称加密
非对称加密,顾名思义,就是加密和解密需要使用两种不同的密钥:公钥和私钥。公钥和私钥是一对。如果使用公钥加密数据,则只能使用相应的私钥解密数据。如果数据是用私钥加密的,只能用相应的公钥解密。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥,并使其中一个成为公开密钥;获得公钥的乙方用公钥对机密信息进行加密后发送给甲方;然后,甲方用自己的私钥解密加密的信息。如果你对公钥和私钥不太了解,你可以把它想象成一把钥匙和一把锁,但是你是世界上唯一有这把钥匙的人,你可以把锁给别人,别人也可以用这把锁把重要的东西锁起来发给你,因为只有你有这把钥匙,所以只有你能看到这把锁锁了什么。常用的非对称加密算法是RSA算法。想了解更多的同学可以点击这里:RSA算法详解1、RSA算法详解2。它的优点和缺点如下:
list-paddingleft-2">
优点:算法公开,加密和解密使用不同的钥匙,私钥不用再网络中传输,安全性很高。
缺点:计算量比较大,加密和解密速度相比对称加密慢很多。
由于非对称加密的强安全性,可以用它完美解决对称加密的密钥泄露问题,效果图如下:
图3. 客户端通过非对称加密把密钥 KEY 发送给服务器
在上述过程中,客户端先是通过非对称加密把之后用于对称加密的密钥 KEY 返送给客户端,然后双方再使用 KEY 进行对称加密交互数据。在非对称加密的数据传输过程中,即便第三方获取了公钥和加密后的 KEY,在没有私钥的情况下也无法破解 KEY (私钥存在服务器,泄露风险极小),也就保证了接下来对称加密的数据安全。而上面这个流程图正是 HTTPS 的雏形,HTTPS 正好综合了这两种加密算法的优点,不仅保证了通信安全,还保证了数据传输效率。
3、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 Secure) 是基于 HTTP 的扩展,用于计算机网络的安全通信,已经在互联网得到广泛应用。在 HTTPS 中,原有的 HTTP 协议会得到 TLS (安全传输层协议) 或其前辈 SSL (安全套接层) 的加密。因此 HTTPS 也常指 HTTP over TLS 或 HTTP over SSL。
可见HTTPS 并非独立的通信协议,而是对 HTTP 的扩展,保证了通信安全,二者关系如下:
图4. HTTP和HTTPS的关系
也就是说 HTTPS = HTTP + SSL / TLS。
接下来就是最重要的 HTTPS 原理解析了,老规矩先上图。
图5. HTTPS 加密、解密、验证及数据传输过程
看上去眼花缭乱,不要怕,且听我细细道来。HTTPS 的整个通信过程可以分为两大阶段:证书验证和数据传输阶段,数据传输阶段又可以分为非对称加密和对称加密两个阶段。具体流程按图中的序号讲解。
1.客户端请求 HTTPS 网址,然后连接到 server 的 443 端口 (HTTPS 默认端口,类似于 HTTP 的80端口)。
2.采用 HTTPS 协议的服务器必须要有一套数字 CA (Certification Authority)证书,证书是需要申请的,并由专门的数字证书认证机构(CA)通过非常严格的审核之后颁发的电子证书 ( (当然了是要钱的,安全级别越高价格越贵))。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则是附带在证书的信息中,可以公开的。证书本身也附带一个证书电子签名,这个签名用来验证证书的完整性和真实性,可以防止证书被篡改。
3.服务器响应客户端请求,将证书传递给客户端,证书包含公钥和大量其他信息,比如证书颁发机构信息,公司信息和证书有效期等。Chrome 浏览器点击地址栏的锁标志再点击证书就可以看到证书详细信息。
图6. B站 CA 证书
4.客户端解析证书并对其进行验证。如果证书不是可信机构颁布,或者证书中的域名与实际域名不一致,或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。就像下面这样:
图7. 浏览器安全警告
如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A。然后客户端还会生成一个随机码 KEY,并使用公钥A将其加密。
5.客户端把加密后的随机码 KEY 发送给服务器,作为后面对称加密的密钥。
6.服务器在收到随机码 KEY 之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全连接,完美解决了对称加密的密钥泄露问题,接下来就可以用对称加密愉快地进行通信了。
7.服务器使用密钥 (随机码 KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥 (随机码 KEY)解密数据。
8.双方使用对称加密愉快地传输所有数据。
好了,以上就是 HTTPS 的原理详解了,如此精美的图搭配这么详细的过程解析,你再搞不懂就说不过去了吧哈哈。
“分析计算机网络HTTPS原理”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/71150.html