字节校招一面:聊聊Https 原理
前言
大家好,字节我是校招田螺。
有位朋友校招面试了字节的面聊后端岗位,问到这道面试题:https 原理。原理
这道题其实比较简单,字节我们如何更好地回答呢?校招我来跟大家聊聊。可以从这几个维度逐层扩展来讲
http为什么不安全?面聊对称算法加密+HTTP非对称加密+HTTP非对称加密+对称加密+HTTP数字签名,给你的原理公钥盖个章完整的HTTPS运行流程图1. http为什么不安全?
我们先来看看HTTP传输:
图片
Http 明文传输,面聊主要有这些缺点:窃听风险、篡改风险、冒充风险
请君试想,如果HTTP请求被某个不怀好意的中间人窃听截取,并且,消息包含银行密码等敏感信息的话,造成的后果不堪设想吧。
2. 对称算法加密+HTTP
既然,服务器租用明文传输不安全,那我们加密是不是就可以了。比如用对称加密算法加密。
对称加密算法:需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。常见的对称加密算法有:DES、3DES、AES看看用对称算法加密后,HTTP流程又是怎样的:
图片
这种方式还是有问题:
一开始客户端怎么把密钥发过去呢?如果不怀好意的中间人截取到了密钥,发送的消息还是会被盗取和利用呢。
3. 非对称加密+HTTP
既然对称算法加密+HTTP 还是不够安全,高防服务器那我们用非对称加密+HTTP。
什么是非对称加密算法?
非对称加密算法需要两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。常用非对称加密算法:RSA、ECC使用非对称加密算法之后,HTTP流程又是怎样的,如下图:
图片
这种方式依然有问题:
非对称算法(如:RSA)有个弊端,它很慢。试想一下,如果你用浏览器请求,它很久才响应,你能接受吗?
4. 非对称加密+对称加密+HTTP
既然非对称加密慢。对称加密会快好多。我们可以使用非对称加密+对称加密双剑合璧的流程图如下:
图片
这种方式还是有问题,没完没了了。。。
如果中间人又来搞事情呢?要是中间人截取公钥,把公钥进行篡改呢? 打个比喻,把公钥比喻你自己的手机号,它是公开的,谁都可以给你打电话。假设你发消息给你朋友,告诉他你的手机号,然后消息被中间人截取修改了,改为110,然后你朋友不知情的情况下,拨通110,打电话给你。。。
5. 数字签名,给你的公钥盖个章
为了避免公钥被篡改,引入了数字证书,如图所下:
图片
证书验证
图片
6. 完整的HTTPS运行流程图
图片