计算机网络面试——HTTPS篇

x33g5p2x  于2022-03-14 转载在 其他  
字(1.5k)|赞(0)|评价(0)|浏览(237)

一、为什么存在HTTPS
https协议的出现是解决原有http的痛点。

1、http报文使用明文方式传输,可能被第三方窃听。
2、http报文可能在传输的过程中被第三方截取后修改内容,接收方没有办法发现报文被修改。
3、http协议还存在认证的问题,第三方可能冒充其他人进行通信。

二、HTTPS简介
https指的是超文本传输安全协议,https是基于http协议的,不过它会使用TLS/SSL来进行数据加密。使用TLS/SSL协议,所有的信息都是加密的,第三方没有办法窃听。并且它还提供了一种校验机制,信息一旦被篡改,通信双方都会立刻发现。它还配备了身份证书,防止身份被冒充的情况出现。

如上所示为httphttps之间的层级划分,可以看出httpshttp多了一个TSL/SSL的安全层。
三、TLS握手的过程
第一步:客户端向服务器发送请求,请求中包含使用的协议版本号,生成的一个随机数,客户端支持的加密方法
第二步:服务器接受到请求后,确认双方使用的加密方法,并给出服务器的证书,以及一个服务器生成的随机数。
第三步:客户端接收到证书后,验证证书是否有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,然后发送给服务器。
第四步:服务器使用自己的私钥,来解密客户端发送来的随机数。
第五步:客户端和服务器根据约定的加密方法使用前面的三个随机数,生成对话的秘钥,以后的对话的过程中就都使用这个秘钥来加密信息。
四、实现原理
TLS的握手过程主要用到了三种方法来保证传输的安全。
1、对称加密方法:首先是对称加密的方法,对称加密的方法就是,通信双方使用同一个秘钥来对数据进行加密和解密。但是存在一个问题,就是在通信的过程中,秘钥会通过网络传输,一旦秘钥被其他人获取,那么整个加密的过程就毫无意义。此时就需要用到非对称加密。
2、非对称加密:就是存在一个公钥和一个私钥,公钥是公开的,私钥是保密的,用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对应的私钥才能解密。我们可以将公钥公布出去,任何想和我们通信的客户,都可以使用我们提供的公钥对数据进行加密,这样我们就可以使用私钥进行解密,这样就能保证数据的安全了。但是非对称加密存在一个问题,通信双方使用非对称加密导致等待时间过长。因此我们使用对称加密和非对称加密两个方法结合,使用非对称加密来加密密钥来尽心传输,然后使用对称加密进行信息加密。
存在一个问题:上述方法中存在一个问题,因为我们没有办法确定我们得到的公钥就一定是安全的公钥。可能存在一个中间人,截取了对方发给我们的公钥,然后将他自己的公钥发送给我们,当我们使用他的公钥加密后发送的信息,就可以被他用自己的私钥解密。然后他伪装成我们以同样的方法向对方发送信息,这样我们的信息就被窃取了,然而我们自己还不知道。
为了解决这样的问题,我们可以使用数字证书的方式,首先我们使用一种 Hash 算法来对我们的公钥和其他信息进行加密生成一个信息摘要,然后让有公信力的认证中心(简称 CA )用它的私钥对消息摘要加密,形成签名。最后将原始的信息和签名合在一起,称为数字证书。当接收方收到数字证书的时候,先根据原始信息使用同样的 Hash 算法生成一个摘要,然后使用公证处的公钥来对数字证书中的摘要进行解密,最后将解密的摘要和我们生成的摘要进行对比,就能发现我们得到的信息是否被更改了。这个方法最要的是认证中心的可靠性,一般浏览器里会内置一些顶层的认证中心的证书,相当于我们自动信任了他们,只有这样我们才能保证数据的安全。

相关文章

微信公众号

最新文章

更多