笔试之计算机网络
1、
HTTP是属于应用层的协议,它是基于TCP/IP的,所以它只是规定一些要传输的内容,以及头部信息,然后通过TCP协议进行传输,依靠IP协议进行寻址。
HTTPS加密过程
客户端发出请求,服务端进行响应。在整个过程中,没有任何加密的东西,所以它是不安全的,中间人可以进行拦截,获取传输和响应的数据,造成数据泄露。这里我们先了解两种加密方式:
- 对称加密
- 非对称加密
对称加密
对称加密指需要对加密和解密使用相同密钥的加密算法。所谓对称,就是采用这种加密方法的双方使用同样的密钥进行加密和解密。对称加密也叫密钥加密。
对称加密安全性低,因为加密跟解密都用的同一把密钥,当密钥被中间人截取时,很容易泄露信息,此时对中间人来说相当于明文传输。
具体实现:
在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。
优点:算法公开、加密速度快,效率高,计算量小
缺点:密钥管理的安全性低
非对称加密
非对称加密指需要两个密钥:公钥跟私钥。公钥跟私钥是一对的,用公钥对数据进行加密只有使用对应的私钥才可以解密,用私钥对数据进行加密只有使用对应的公钥才可以解密。非对称指公钥跟私钥不是同一把密钥,所以叫做非对称加密。
公钥跟私钥是一对的,服务器跟客户端各具有一对配套的密钥(一个公钥一个私钥),实际上共有四把密钥。
服务器的公钥对客户端公开,私钥不公开;客户端的公钥对服务器公开,私钥不公开。
具体实现:
- 客户端向服务器发送消息,用服务器的公钥进行加密;待服务器接收到客户端的发来的消息再利用服务器本身的私钥进行解密。
- 服务器向客户端发送消息,用客户端的公钥进行解密;待客户端接受到服务器的发来的消息再利用客户端本身的私钥进行解密。
优点:安全性较高。非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
缺点:由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
HTTPS加密方式
HTTPS采用的是处理信息的方式是:结合对称加密+非对称加密这两种方式。具体是这样子的:
服务器向客户端发送自己的公钥,客户端接收到公钥后,生成一把密钥(对称加密使用),之后客户端利用服务器发来的公钥对这把密钥进行加密后发送给服务器,服务器接收到后使用自己的私钥进行解密得到客户端生成的密钥,这时客户端跟服务器都具有同一把密钥进行对称加密。
但是这种加密方式并不是完全安全的。如果中间人事先截取了服务器发送的公钥,替换成中间人的公钥发送给客户端,客户端再利用中间人的公钥对客户端生成的密钥进行加密,之后将已加密的内容发送给服务器,注意这时中间人再从中截取,利用自己的私钥对这份内容进行解密得到客户端生成的密钥。
最后中间人再对这把密钥用刚才服务器的公钥进行加密,再发给服务器。
最终,中间人获取了对称加密中的密钥,之后服务器跟客户端进行的加密内容对中间人来说相当于明文。
这时引入了第三方认证。
第三方证书
在HTTPS中,使用 证书 + 数字签名 来解决这个问题。数字证书 = 网站信息 + 数字签名。
具体是这样的:
- 我们需要找到一个第三方机构,它是一个拥有公信力、大家都认可的认证中心,那就是数字证书认证机构(简称CA)。
- 服务器在给客户端传输公钥的过程中,会把公钥以及服务器的个人信息通过Hash算法生成信息摘要。为了防止信息摘要被人调换,客户端还会用CA提供的私钥对信息摘要进行加密来形成数字签名。并且,最后还会把原来没Hash算法之前的个人信息以及公钥和数字签名合并在一起,形成数字证书。
- 当客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则就不是。这样,就可以保证服务器的公钥安全着交给客户端了。
HTTPS = HTTP + TLS/SSL