前端面经 关于http和https(基本概念、区别、优点及缺点、加密、数字签名、数字证书、工作原理)

http和https的基本概念

http:

  1. 超文本传输协议,是互联网应用最广泛的一种网络协议
  2. 是一个客户端与服务器请求和应答的标准(TCP)
  3. 一个用于从WWW服务器传输超文本到本地浏览器的传输协议
  4. 使浏览器更加高效

https:

  1. HTTP的安全版,以安全为目标的HTTP通道
  2. 在HTTP下加入SSL层,SSL层是HTTPS的安全基础
  3. 建立信息安全通道,确保传输安全性和网站的真实性

http和https的区别

  1. https协议需要CA证书,费用高。
  2. 链接方式不同,端口不同:http协议端口为80,https端口为443。
  3. http超文本传输协议,是明文传输,数据未加密;htps是具有安全性的SSL加密传输协议,更加安全。
  4. http的连接简单,是无状态连接;https是SSL+HTTP协议构建的,可进行加密传输、完整性校验和身份认证的网络协议。

http的三大风险和https的三大优势

因为http是明文传输,信息不加密,所以存在三大风险:

  1. 被窃听的风险:第三方可截获并查看你的内容
  2. 被篡改的危险:第三方可截获并修改你的内容
  3. 被冒充的风险:第三方可伪装成通信方与你通信;

正是因为http存在三大风险,所以才需要https。

而https可以做到加密传输、完整性校验、身份认证,三大优势:

  1. 建立安全信息通道,进行加密传输,保证数据隐私性、安全性;
  2. 内容传输经过完整性校验,保证数据完整性;
  3. 对网站服务器进行真实身份认证;

https解决http的三大风险

在了解https工作原理之前,先了解几个重要内容:加密、数字签名、数字证书。 从而理解https是如何解决http的三大风险:被窃听、被篡改和被冒充;并且理解https的三大优势,加密传输、完整性校验、身份认证。
其实这些是一一对应的:

  1. 加密——加密传输——解决被窃听的风险
  2. 数字签名——完整性校验——解决被篡改的危险
  3. 数字证书——身份认证——解决被冒充的风险。

关于加密——解决风险一“被窃听”

加密有三种方法,逐一介绍

方法一、对称加密

所谓对称加密就是说:对信息的加密和解密都需要用到密钥,而且是同一个密钥。 即没有密钥就没法解密,但只要有密钥就可以解密。
在对称加密这种方式中,要把密钥也转交接收方。但是如何保证转交这个过程中,密钥的安全性呢?有可能密钥会被人窃取,那窃取方手持密钥就可以解密信息了。

方法二、非对称加密

非对称加密方法,是使用一对非对称的密钥。其中一把是”公开密钥“,另一把是”私有密钥“。公开密钥可以随意发布,而私有密钥不能让其他人知道。

  1. 私钥只有一把,并且是服务器“拿着”。
  2. 公钥可以有很多把,是客户端“拿着”。

首先,客户端A想要和服务器B进行通信:A可以将自己的内容(明文)通过B送的公钥做一次加密,然后将加密后的内容传送给B。这时候B就可以拿自己唯一的私钥去解密,从而读取加密后的内容。
简单来说:

  1. 公钥有多把,给多个客户端用;而私钥只有一把,服务器自己用;
  2. 某个客户端拿公钥对内容加密,服务器拿唯一的私钥对内容解密。

如果是服务器向客户端通信,非对称加密也有缺点:

  1. 公钥是公开的,私钥加密的信息,坏人可以截获公钥来解密;
  2. 公钥不包含服务器的信息,不能保证服务器身份的合法性;
  3. 同时,非对称加密算法在加密解密过程中耗时长,降低效率。

方法三、对称加密+非对称加密(https所采用的)

通过上面的讲解,我们可以发现对称加密的优点在于解密效率高,但它不安全;非对称加密的优点在于安全,但是加密解密过程复杂,降低了效率。

对称加密为什么不安全

在方法一中也有讲到:对称加密对信息的加密和解密都是用同一把密钥,需要把密钥也转交给对方。转交的时候有可能出现密钥被窃取的情况。然而任何拿到密钥的人都可以解密内容!所以是不安全的。
相比之下,非对称加密就显得安全很多。在交换信息这个过程中,不用怕信息被窃取篡改。

新思路:对称加密+非对称加密

既然对称加密是在转交密钥时不安全,那就用非对称加密来保证安全性;既然非对称加密在解密加密的过程中耗时长,就用对称加密来简化这一过程,提高效率。优势互补!

对称加密+非对称加密的实现

客户端和服务器先传输一对“对称的密钥”,这对对称的密钥是采用的就是对称加密方法,是用于后续报文交换的。传输这对“对称的密钥”这个过程,则用的是一对非对称密钥来加密解密,采用的是非对称加密方法。
通过非对称加密方式传输“对称的密钥”,就能保证传输的这对“对称密钥”是安全的!传输完成后,在加密解密交换信息的过程,就用这对“对称密钥”来加密解密,使用的是对称加密方式,提高效率!
概括如下:

  1. 传输“对称的密钥”的过程,使用非对称加密方式(保证安全)
  2. 交换报文信息的过程,使用的是对称加密方式(保证效率)

具体做法:客户端拿服务器给的公钥,对“对称密钥”进行加密处理,传输给服务器。服务器用自己的私钥,对传输过来的“对称密钥”做解密处理。这样保证了交换密钥是安全的,再用对称密钥,使用对称加密方式来通信。

关于数字签名——解决风险二“被篡改”

即使通过加密传输,保证数据不能被窃听,数据无法被坏人解密,但是有可能在传输过程中被坏人篡改。所以需要用“数字签名”signature来解决被篡改的风险。

数字签名的作用

  1. 能确定消息是发送方签名且发送出来的,因为签名无法被冒充
  2. 进行完整性校验,证明数据有无被篡改。

服务器发送方—数字签名的生成和发送

1.把一段内容作Hash算法处理,得到一个Hash值;
2.发送者用私钥对Hash值进行加密,得到数字签名signature。
3.发送方将原文明文和数字签名signature一起发送出去。

客户端接收方—数字签名的校验

1.接收方使用发送者提供的公钥对接收到的数字签名signature进行解密,得到一个哈希值A;
2.然后用同样的Hash算法对接收到的明文作处理,得到哈希值B
3.比较哈希值A和B是否相同,若相同,则能保证数据没有被篡改。

但是接收方得保证自己拿到的公钥就是发送方服务器所提供的。

关于数字证书——解决风险三“被冒充”

数字证书认证机构是客户端和服务器双方都可信赖的第三方机构。
数字证书认证流程:

  1. 服务器向第三方机构CA提交公钥、组织信息、个人信息等并申请认证;
  2. CA通过多种手段去验证服务器申请者提供信息的真实性,如组织是否存在,是否合法等
  3. 若审核通过,CA会向申请者签发数字证书。数字证书包含:申请者公钥,申请者的组织和个人信息、有效时间等等。
  4. 客户端client向服务器Server发出请求,Server返回证书文件;
  5. 客户端读取证书中的相关明文信息,采用相同的散列函数得到信息摘要,用CA提供的公钥解密签名,对比若一致,可以确定证书合法,确定服务器的公钥是可信赖的。

https的工作原理

https可以加密传输(对称加密+非对称加密),完整性校验(数字签名),身份认证(数字签证),分别解决了http的被窃听、被篡改、被冒充的三大风险。
把客户端称作Client,服务器端称作Server
流程如下:

  1. Clinet发起一个https请求,接口为443
  2. Server返回公钥证书给Client
  3. Client多方面验证返回的公钥证书
  4. 若Client通过公钥证书的认证,则得到了Server提供的公钥
  5. Client通过伪随机数生成器生成一对“对称密钥”,作为“会话密钥”。并用Server提供的公钥对此“会话密钥”作加密,发送给Server。
  6. Server用自己的私钥对会话密钥作解密,得到会话密钥。至此,双方通过公钥和私钥获取了一对“对称密钥”,即"会话密钥"。
  7. 双方可以用这对“对称密钥”即“会话密钥”来通信了。Server通过对称密钥加密明文信息A,发给Client
  8. Client通过对称密钥解密,得到明文信息A。

https的缺点

  1. https握手阶段费时,页面加载时间延长50%,增加10~20%的耗电
  2. https的缓存不如http高效,会增加数据开销
  3. https需要SSL证书,需要一定的费用

猜你喜欢

转载自blog.csdn.net/qq_43263320/article/details/113728915