面试官:HTTPS 采用的是对称加密还是非对称加密?具体说说其加密过程

3,549 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

写在前面

在目前这种前后端分离的模式下,前端与后端的交互模式已经从原来的本地直接交互,进化到几乎所有前后端交互都通过网络API接口来实现,那么不知道前面讲解了那么多篇安全相关的文章,是否有启示到你,对 HTTP 接口传输相关的安全问题做分析呢?如果没有,那么就让我们一起来了解一下为安全而生的 HTTPS 吧!

HTTPS

什么是 HTTPS?

我们都知道前后端定义出来的 API 接口,大部分都是通过 HTTP 协议来进行实现,而 HTTPS 又是什么呢? 很多人会回答 HTTPS 是一个网络协议,其实严格来讲,HTTPS 并不是某种网络协议,而是 HTTP + SSL 组成的“以安全为目标的 HTTP 通道”。

HTTPS 是如何加密的?

说到 HTTPS 的加密过程,就不得不提一下加密方式的分类,主要分为 对称加密非对称加密

对称加密

对称加密,顾名思义,对称,也就是指使用同一个秘钥来进行加秘和解密,放到具体场景,也就是通讯双方使用同一个秘钥,一方加密发送信息,另一方解密密文获取信息。经典的对称加密算法有 AES 等 批注 2022-06-19 213311.png

非对称加密

非对称秘钥指的是通过特殊手段,实现的一种加密方式,这种方式能够通过一个公钥进行加密,然后通过私钥进行解密,而公钥与私钥不同,因此成为非对称,典型的非对称加密算法有 RSA 等

批注 2022-06-19 225410.png

HTTPS 使用 非对称 + 对称 组合加密

通过上面的图我们大概能够对两种加密方式有了一个初步的了解,从安全性来说,我们从加密过程可以很明显看出来非对称加密安全性要高很多,原因是如果采用对称加密,秘钥有可能在开始阶段由主动方发出时被黑客截获,后面任何加密信息将失去保密效果 ,而如果采用非对称加密,那么黑客即使截获了公钥,也没有任何作用,因为只有掌握在通讯双方手中的私钥才是揭开密文的唯一“钥匙”。而从性能的角度来说,由于非对称加密所涉及到的算法更加复杂,因此,非对称加密的性能会比对称加密差一些,因此,在选择加密方式的时候,我们不只是一味全盘使用非对称加密,而应该在不影响安全性的情况下,果断选择对称加密代替复杂的非对称加密,以此来提高性能。

分析完两种加密方式的利弊,那么 HTTPS 究竟是怎么选择的呢? HTTPS 选择了两种混用,如图,由于 HTTPS 涉及到大量的接口、数据等非常频繁的操作行为,所以如果一概采用非对称加密的话,会严重影响 HTTPS 的性能,因此传输的数据的加密方式应该采用对称加密,而对称加密的秘钥在通讯两端同步的时候容易被截获,因此,HTTPS 采用非对称加密的方式来对该对称秘钥进行传输。通过这两种加密方式的结合,HTTPS 有效地避免性能损耗的同时,也让数据传输安全性得到了保障 批注 2022-06-19 225437.png

总结

今天文章的标题依然是道选择题,当经历多了我们就会发现,选择题往往才是最坑人的,当面试官丢出一道选择题时,困难点其实不是选A还是选B,往往是全选与全不选的大坑等着我们往里跳,因此面对任何一个知识点,无关乎面试,我觉得都应该从根本上理解其原理,从原理推导到应用层面的特性,只有这样,我们才能够真正跨越选择题,将“选择题”化解为“阅读题”!

往期好文推荐

面试官:说说从输入 URL 到页面显示到底经历了什么,体现一下你的知识广度

面试官:作为前端,服务器相关了解多少?

面试官:HTTPS 采用的是对称加密还是非对称加密?具体说说其加密过程

面试官:说说 Cookie 和 Token 的区别?

面试官:网络安全了解多少,简单说说?(一)

面试官:网络安全了解多少,简单说说?(二)

面试官:网络安全了解多少,简单说说?(三)

面试官:网络安全了解多少,简单说说?(四)

面试官:网络安全了解多少,简单说说?(五)

面试官:网络安全了解多少,简单说说?(六)

面试官:网络安全了解多少,简单说说?(七)

面试官:网络安全了解多少,简单说说?(八)

浅尝 | 从 0 到 1 Vue 组件库封装

面试官:这么简单的正则表达式都不会?

Webpack 打包类库踩坑

面试官:你就只会 npm run build 吗?(Webpack 配置 Vue+Ts)

面试官:连VuePress都没搭过还说开发过组件库?(VuePress 搭建)

面试官: 连 Vue 视图更新都不会写?(Vue视图更新原理【一】)

面试官: 能不能手写 Vue 响应式?(Vue2 响应式原理【完整版】)

面试官:能不能手写 Vue3 响应式(Vue3 原理解析之响应系统的实现)

JS 优雅之道(JS 代码优化小 Tip)

面试官:你真的会用 SVG 吗? (SVG 应用实战)

面试官:说一下这个Loading动画实现思路 (CSS3 实现 Loading 动画)

JS 扫盲题 ( 面试题梳理系列 (一))

面试官:你确定你说的防抖不是节流吗?( 面试题梳理系列 (二))

面试官:除了 HTTP,你还用过什么通信协议?(Websocket 在数字孪生中的应用)

面试官:你真的理解 Event Loop 吗?( JS 事件循环 )

面试官:v-for 中 key 为什么不能用 index,从原理层面聊聊?

面试官:vue-router 的 hash 与 history 哪个模式会刷新页面?

面试官:说说你平时用过的自适应方案(数字孪生可视化自适应方案)

面试官:说一下如何优化过渡动画(数字孪生可视化过渡动画)

写在最后

博主接下来将持续更新好文,欢迎关注博主哟!!
如果文章对您有帮助麻烦亲点赞、收藏 + 关注和博主一起成长哟!!❤️❤️❤️