当前位置: 首页 > 科技观察

HTTPS详解一:附最精美详尽的HTTPS原理图

时间:2023-03-12 16:04:35 科技观察

前言作为一个有抱负的程序员,了解行业的发展趋势,扩充自己的计算机知识储备是很有必要的,尤其是一些计算机基础内容,比如本文将要讲的计算机网络知识。本文将为大家详细介绍一下HTTPS的实现原理。近年来,随着用户和互联网公司安全意识的提高和HTTPS成本的下降,HTTPS越来越受欢迎。很多互联网巨头也在力推HTTPS。例如,Google的Chrome浏览器在访问HTTP网站时,会在地址栏中显示不安全提示。微信要求所有小程序都使用HTTPS传输协议。国内外大部分主流网站也都迁移到了HTTPS。可见,HTTPS全面取代HTTP只是时间问题。说了这么多,到底什么是HTTPS,它与HTTP相比有哪些优点和缺点?底层原理是如何实现的?让我一一为您解答。我们先来看看HTTP的缺点。1、HTTP不安全的最大缺点HTTP换成HTTPS,最大的原因就是不安全。至于为什么不安全,大家看下图就一目了然了。图1HTTP数据传输流程从图中可以看出,在HTTP数据传输过程中,所有的数据都是明文传输的,自然没有任何安全可言,尤其是一些敏感数据,比如用户密码、信用等卡片信息一旦被第三方获取,后果不堪设想。这里可能有人会说,我在前端页面加密敏感数据还不行,比如MD5加salt加密。这么想很容易。首先,MD5不是一种加密算法。它的全称是MessageDigestAlgorithmMD5,意思是消息摘要算法。它是一种不可逆的哈希算法,也就是说前端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,其优缺点如下:优点:算法公开,加密和解密使用不同的密钥,私钥不不需要再次使用在网络中传输,安全性很高。缺点:计算量比较大,加解密速度比对称加密慢很多。由于非对称加密的安全性强,可以完美解决对称加密的密钥泄露问题。效果图如下:图3.客户端通过非对称加密将密钥KEY发送给服务端。在上述过程中,客户端首先将用于对称加密的密钥KEY通过非对称加密返回给客户端,然后双方使用KEY对交换的数据进行对称加密。在非对称加密数据传输过程中,即使第三方获得了公钥和加密后的KEY,没有私钥也无法破解KEY(私钥存在服务器,泄露风险极小),保证了Next对称加密数据的安全性。上面的流程图就是HTTPS的雏形。HTTPS正是结合了这两种加密算法的优点,既保证了通信安全,又保证了数据传输效率。3、HTTPS原理详解首先看维基百科对HTTPS的定义HypertextTransferProtocolSecure(HTTPS)是超文本传输??协议(HTTP)的扩展。它用于计算机网络上的安全通信,并在Internet上广泛使用。在HTTPS中,通信协议使用传输层安全性(TLS)或以前的安全套接字层(SSL)进行加密。该协议因此也常被称为HTTPoverTLS,或HTTPoverSSL。HTTPS(HypertextTransferProtocolSecure)是基于HTTP的扩展,用于计算机网络中的安全通信,在互联网上得到了广泛的应用。在HTTPS中,原始HTTP协议使用TLS(传输层安全性)或其前身SSL(安全套接字层)进行加密。因此,HTTPS通常也指HTTPoverTLS或HTTPoverSSL。由此可见,HTTPS并不是一个独立的通信协议,而是对HTTP的一种扩展,以保证通信安全。两者的关系如下:图4.HTTP和HTTPS的关系是HTTPS=HTTP+SSL/TLS。接下来就是最重要的HTTPS原理分析,老规矩先上图。图5.HTTPS加密、解密、验证和数据传输过程看着眼花缭乱,别怕,听我详细说。HTTPS的整个通信过程可以分为证书验证和数据传输阶段两个阶段,数据传输阶段又可以分为非对称加密和对称加密两个阶段。具体过程按照图中序号进行说明。1、客户端请求一个HTTPSURL,然后连接到服务器的443端口(HTTPS默认端口,类似于HTTP的80端口)。2、使用HTTPS协议的服务器必须有一套数字CA(CertificationAuthority)证书,需要申请,由专门的数字证书认证机构(CA)经过非常严格的审核后颁发(当然要花钱钱,安全级别越高,它就越昂贵))。颁发证书时,会生成一个私钥和一个公钥。私钥由服务器自己保管,不能泄露。公钥附在证书信息中,可以公开。证书本身还带有证书电子签名,用于验证证书的完整性和真实性,防止证书被篡改。3、服务器响应客户端的请求,将证书传递给客户端。证书包含公钥和许多其他信息,例如证书颁发机构信息、公司信息和证书有效期。在Chrome浏览器中,单击地址栏中的锁定图标,然后单击证书以查看证书的详细信息。图6.B站CA证书4.客户端解析证书并验证。如果证书不是由受信任的机构颁发的,或者证书中的域名与实际域名不匹配,或者证书已过期,则会向访问者显示警告,访问者可以选择是否继续沟通。就像下面这样:图7.浏览器安全警告如果证书正确,客户端将从服务器证书中取出服务器的公钥A。然后客户端也生成一个随机码KEY,并用公钥A对其进行加密。5、客户端将加密后的随机码KEY发送给服务器,作为后续对称加密的密钥。6、服务端收到随机码KEY后,用私钥B解密。经过以上步骤,客户端和服务端终于建立了安全连接,完美解决了对称加密的密钥泄露问题,然后就可以愉快的进行对称加密通信了。7、服务端使用密钥(随机码KEY)对数据进行对称加密后发送给客户端,客户端使用相同的密钥(随机码KEY)对数据进行解密。8.双方愉快地使用对称加密传输所有数据。好了,以上就是对HTTPS原理的详细讲解。这么美的图,这么详细的过程分析,看不懂就说不过去了,哈哈。4.总结总结一下HTTPS和HTTP的区别和HTTPS的缺点:HTTPS和HTTP的区别:最主要的区别是安全性,HTTP明文传输,不加密数据安全性较低。HTTPS(HTTP+SSL/TLS)的数据传输过程经过加密,具有更好的安全性。使用HTTPS协议需要申请CA证书。一般免费证书很少,需要一定的费用。证书颁发机构如:Symantec、Comodo、GoDaddy、GlobalSign等。HTTP页面的响应速度比HTTPS快。这很好理解。由于增加了安全层,建立连接的过程更加复杂,需要交换的数据也更多,必然会影响速度。由于HTTPS是建立在SSL/TLS之上的HTTP协议,它比HTTP消耗更多的服务器资源。HTTPS和HTTP使用完全不同的连接方式和不同的端口。前者为443,后者为80。HTTPS的缺点:在相同的网络环境下,HTTPS相比HTTP在响应时间和功耗上有明显的增加。HTTPS的安全性有限,在黑客攻击、服务器劫持等情况下几乎无用武之地。在现有的证书机制下,仍然存在中间人攻击的可能。HTTPS需要更多的服务器资源,这也导致了更高的成本。另外,笔者将在HTTPS详解二中详细介绍SSL/TLS握手的详细过程及相关重要概念。好了,以上就是本文的全部内容。如有错误,请指正。