浏览器-https实现细节

174 阅读2分钟

面试必问,一问细节回答不出就出糗了

首先,把https的先讲。因为我被面试官问过细节,出糗过。

一、https

1、https是在http和tcp中穿插了一个安全层。它对数据进行加密解密操作。它的最终流程是这样的

image.png 首先浏览器发送对称加密套件列表、加密套件列表和一个随机数给服务端。服务端发送两个套件、一个服务端随机数,还有数字证书。

然后浏览器验证证书并得到公钥。然后使用公钥加密另一个随机数,发送给服务器。(这里就是非对称加密:第一个考点)

服务器使用私钥解密得到随机数。所以,现在左右两端都得到了三个随机数。双端生成密钥,并利用这个密钥进行加密解密数据。(对称加密:第二个考点)

2、考点解释
2.1、对称加密:指的是加密解密都用同一个密钥。首先浏览器发送一个对称加密套件列表和一个随机数给服务端。服务端选择一个套件和发送一个随机数。这样子两端都有两个随机数和一个加密方法生成密钥进行加密解密来传输数据。

问题:其中两个随机数在传输过程中是明文的,而且合成密钥的算法也是公开的,所以黑客就可以合成密钥。问题大大滴!!!

2.2、非对称加密:和对称加密不一样,非对称加密有两个密钥,公钥和私钥。首先客户端发送加密套件列表。服务端选择一个加密套件并发送公钥。浏览器使用公钥加密数据。服务端使用私钥解密。

问题:浏览器加密数据发送给服务端这样子没问题。可是,服务端发送的数据却可以被黑客使用窃取的公钥解密。所以这也是不安全的。