面试笔记(1)请谈谈你对https的理解?

面试笔记(1)请谈谈你对https的理解?

一、https与http区别

  1. https 具有安全性的ssl/tls密文传输,http明文传输,超文本传输协议;
  2. https需要证书(用于客户端检验服务端安全性),http不需要证书;
  3. https贵(主要由于要申请证书),http不要钱;
  4. https端口号为443,http端口号为80;
  5. https比较耗时,增加数据开销和功耗,http相对较好;

二、理解https中涉及到的加密

  1. 对称加密:针对一段数据,客户端和服务端通过同一个密钥进行加密或解密。比如场景1:A要向B发送一段文本信息,但是考虑到该段文本是否会被别人看到,于是A打算使用对称加密算法对该段文本信息进行加密。第一步:A使用密钥将文本信息进行加密;第二步:A将加密后的信息发送给B;第三步:B接收到A发来的信息后使用密钥(注意A和B的密钥内容一致)进行解密,得到未加密的文本;上述过程就是一次使用对称加密传送数据的场景。

    加密过程:明文+加密算法+密钥=密文;

    解密过程:密文+解密算法+密钥=明文;

    优点:算法公开、加密和解密速度快;

    缺点:密钥在客户端和服务端同时保存,增加了密钥泄露的风险;

  2. 非对称加密:针对一段数据,客户端掌握公钥(公钥被公开给予每一个客户端),服务端掌握私钥,分别使用自己掌握的公钥/私钥,对数据进行加密/解密。比如场景2:A要想B发送一段文本信息,考虑到安全性决定采用非对称加密。第一步:A将密钥划分成公钥和私钥,A把公钥交给B保管。第二步:A使用自己掌握的私钥将文本信息进行加密;第三步:A将加密后的信息发送给B;第三步:B接收到A发来的信息后使用自己掌握的公钥进行解密,得到未加密的文本;上述过程就是一次使用对称加密传送数据的场景。

    加密过程:(1)明文+加密算法+私钥=密文;(2)明文+加密算法+公钥=密文

    解密过程:(1)密文+解密算法+私钥=明文;(2)密文+解密算法+公钥=明文

    优点:公钥和私钥分别交友客户端和服务端保存,加密和解密公钥/私钥需要意义对应,安全性大大提高;

    缺点:加密/解密算法的复杂行提升导致耗时增加,适合于数据量小的信息;

  3. 在https中为什么要考虑加密?

    http的明文传输存在三个安全隐患:(1)数据内容被第三方查看;(2)数据被第三方修改;(3)数据被第三方匿名重写;

    针对上诉三个隐患我们可以讨论下解决方案。

    隐患一解决方案:为了防止内容被第三方获取,最好的方式就是把内容进行加密处理,无论是对称加密还是非对称加密,都可以解决,只不过非堆成机密更加安全但耗时些。

    隐患二解决方案:数据被第三方修改其实就是会导致接收方接收到的数据信息与原信息不一致。因此可以在发送数据前对数据进行一次处理,比如hash算法处理得到一个hash串,接着再把这个hash串利用密钥进行加密处理得到一个签名(其实就是一个加密后的hash),将签名连同自己的数据一起发送给接收放,接收方利用密钥对签名进行解密,再将数据也作一次hash处理,比较两者的hash值,若一致则内容没有被第三方篡改。

    隐患三解决方案:在隐患二解决方案中其实还存在问题,那就是签名有没有可能被第三方伪造呢?所以,隐患三其实是对隐患二的升级。因此引入了安全证书的概念。所谓安全证书,其实就是通过第三方的权威机构出具的证书,对用户或服务器的认证。在服务端传送的信息中携带安全证书,客户端就知道此次传输是一个安全可靠的。

三、https下客户端向服务端请求数据的过程

对于https的一次数据交付来说,同时使用了对称加密和非对称加密算法。

下面是客户端向服务端请求一次数据的完整过程。

  1. 客户端通过url向服务端请求建立ssl连接;
  2. 服务端收到客户端发的请求后会将安全证书以及公钥(用于非对称加密)传送给客户端;
  3. 客户端接收到服务端传送的安全证书和公钥后,先对安全证书进行校验,校验通过后,随机生成一个字符串(其实就是用于对称加密的密钥),然后利用第二步服务器端传来的公钥对该字符串进行非对称加密处理,接着把通过公钥加密后的字符串(也可以叫做加密后的密钥)返回给服务器端;
  4. 服务器端接收到加密后的密钥后,通过自己本地的私钥(与客户端的公钥一一对应)将之进行非对称解密,得到密钥(就是第三步客户端生成的随机字符串);
  5. 服务端利用第四步得到的密钥对数据进行对称加密,传送给客户端;
  6. 客户端接收到服务端传来的密文,利用密钥(第三步中客户端随机生成的字符串)进行对称解密,得到原始数据;
  7. 客户端完成向服务端请求数据流程;

以上是我查阅了资料结合理解后对https的理解,有不足之处希望能够得到指正,欢迎大家评论。

你可能感兴趣的:(面试笔记(1)请谈谈你对https的理解?)