您现在的位置是:首页 >技术杂谈 >【计算机网络之HTTP篇】HTTPS与HTTP的区别网站首页技术杂谈

【计算机网络之HTTP篇】HTTPS与HTTP的区别

是烟花哈 2024-06-17 11:25:12
简介【计算机网络之HTTP篇】HTTPS与HTTP的区别

目录

HTTPS产生的原因

HTTPS工作原理

对称加密

非对称加密

引入数字证书

HTTPS完整工作流程

 高频面试题:HTTPS与HTTP的区别


HTTPS产生的原因

  HTTP协议是按照文本的形式来明文传递数据的,因此数据很容易被黑客劫持,发生泄密可能。  HTTPS协议则可以解决HTTP不安全的缺陷,HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层SSL。(可以理解为HTTPS=HTTP+SSL)

HTTPS工作原理

        HTTPS要保证数据的安全传输,就需要对数据进行加密,这样网络上就不在直接传输明文了而是加密过的密文。加密方式整体上可以分为两种:对称加密非对称加密

对称加密

        对称加密使用一个密钥来对数据进行加密,这样可以得到一个密文,于是客户端就可以传输这个密文给服务器,服务器再使用这个密钥来解密密文,于是就可以避免数据被截取了。需要注意的是:客户端和服务器使用同一个密钥来进行加密和解密。 

        引入对称加密之后, 即使数据被截获 , 由于黑客不知道密钥是啥 , 因此就无法进行解密 , 也就不知道请求的真实内容是啥了。
        由于对称加密过程中,客户端和服务器都使用同一个密钥来进行加密和解密,因此在传递数据之前就需要客户端先向服务器传输一个密钥,约定好用同一个密钥来加密和解密。
        密钥的传输也必须加密传输,如果直接把密钥明文传输 , 那么黑客也就能获得密钥了~~ 此时后续的加密操作就形同虚设了。
        此时如果使用对称加密来传输密钥的话,就需要先确定传输这个密钥的密钥,这样就演变成相互“套娃”了,因此便引入了 非对称加密来传输密钥。

非对称加密

        非对称加密需要使用到两个密钥:一个是公钥,一个是私钥。公钥和私钥是配对的,一个公钥只能配对一个私钥。服务器会生成一对公钥和私钥。非对称加密是为了解决对称加密的密钥安全传输,不被黑客截取。

        非对称加密最大的缺点就是运算速度非常慢 ,比对称加密要慢很多。

公钥和私钥可以互相反着用:

  1. 公钥加密,私钥解密
  2. 私钥加密,公钥解密

非对称加密过程:

  • 客户端向服务器发起建立连接请求,服务器会把公钥传输给客户端
  • 客户端使用公钥对密钥进行加密得到密文,把密文传输给服务器
  • 服务器使用私钥对密文进行解密得到密钥,服务器得到这个密钥就可以和客户端进行对称加密传输
  • 由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密

 

        非对称加密的目的主要是使用服务器发送过来的公钥对称加密传输的密钥进行加密来传输给服务器,保证客户端和服务器进行对称加密的密钥不被截取。

        那么客户端在使用公钥对密钥进行加密的时候,怎么判断客户端使用的公钥是服务器发来的而不是黑客伪造的?客户端是怎么拿到这个公钥的?

于是就引出了数字证书来验证公钥的合法性

引入数字证书

        1、在使用HTTPS协议前,服务器会先向权威机构申请数字证书,数字证书中包含了权威机构自己独有的私钥1加密的数字签名(系统效验和:验证是否被篡改)和一对新的公钥2、私钥2

        2、当客户端向服务器发送请求数字证书时,服务器会把新的公钥2放入数字证书中一起传输给客户端

        3、客户端拿到数字证书后,会使用权威机构的公钥1(客户端的操作系统中会内置权威机构的公钥1来解密数字签名得到一个校验和num1,另外对证书使用同样的算法来计算得到一个新的校验和num2,对比 num1  num2 是否相等,如果相等, 则说明证书是没有被篡改过的

HTTPS完整工作流程

总结:引入数字证书非对称加密都是围绕这个对称加密的密钥工作的。

  • 引入数字证书是为了让客户端确保拿到服务器的非对称加密的公钥,防止公钥被篡改
  • 客户端拿到非对称加密的公钥是为了确保对称加密的密钥传输给服务器,不被黑客获取

 

 高频面试题:HTTPS与HTTP的区别

1、HTTP协议是超文本传输协议,数据是明文传输,具有安全风险,HTTPS是具有安全性的SSL加密传输协议,对数据进行加密传输

2、HTTPS协议需要向权威机构申请数字证书,保证服务器的身份是可信的

3、HTTP的连接相对简单,只需要经过TCP的三次握手就可以进行数据传输,而HTTPS的连接需要经过TCP的三次握手后,再经过SSL的握手才能进行加密数据传输

4、两者的默认端口不一样,HTTP的默认端口是80,HTTPS的默认端口是443

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。