请教目前浏览器 HTTPS 中对称加密使用的是哪种算法?

2021-06-12 11:20:51 +08:00
 brader

引言: HTTPS 请求,开始时候是使用 RSA 算法(非对称加密算法)来传输客户端密钥的,后续数据传输,都是使用客户端密钥来加解密(对称加密算法)数据的。

请问这个 HTTPS 请求过程中,使用的 对称加密算法,是哪种对称加密算法?是 DES 吗?

面试被问住了。。。百度了好久,都是只说到,数据部分用了对称加密算法,但是没有具体说,浏览器用的哪种对称加密算法。

4182 次点击
所在节点    程序员
20 条回复
pkoukk
2021-06-12 11:29:45 +08:00
根据 TLS 和 SSL 版本而定,每个版本都有自己支持的算法列表。
DES 应该早被淘汰了,最低也是 3DES
alex8
2021-06-12 11:30:02 +08:00
多了,现在常用比如 AES-128-GCM
面试的运维么
slert
2021-06-12 11:34:39 +08:00
是 AES 比 DES 更安全点吧
不过其实我感觉知不知道这个根本不重要
lululau
2021-06-12 11:36:41 +08:00
如果面的不是浏览器开发的话,出这个题的就是脑子有包吧
muzuiget
2021-06-12 12:10:17 +08:00
关键词“密码套件”,一个密码套件字符串类似 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,主流就是 AES 。
phpc
2021-06-12 12:11:54 +08:00
firefox 可以看。
brader
2021-06-12 12:15:35 +08:00
@lululau 我也觉得面试官有点故意为难人,让我详细叙述 HTTPS 流程,我答完流程,又一直深问,我答完用到对称加密,又继续问用什么对称加密。。。无限深挖啊
brader
2021-06-12 12:17:10 +08:00
@phpc 原来是 AES,可以受教了
geekvcn
2021-06-12 12:19:29 +08:00
// TLS 1.0 - 1.2 cipher suites.
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA25
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA25
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA38
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256

// TLS 1.3 cipher suites.
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
geekvcn
2021-06-12 12:29:14 +08:00
主流的是 AES-128-GCM CHACHA20-POLY1305
RC4 3DES 都是要被淘汰的,更具客户端环境自适应是 AES 还是 CHACHA20,有硬件 AES 的使用 AES,没硬件 AES 的用 CHACHA20
0xsui
2021-06-12 15:41:25 +08:00
面试啥工作,问这方面问题
brader
2021-06-12 16:09:38 +08:00
@0xsui 就 PHP
jim9606
2021-06-12 16:57:35 +08:00
分享一个 2015 年收藏的系统介绍 TLS 的博文( https://blog.helong.info/post/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/ ),不过那是 TLS1.3 还在草案阶段。

目前主流的对称加密方法都是 AEAD 模式的 AES(AES_xxx_GCM_SHAxxx)或 CHACHA20-POLY1305,OpenSSL1.1.1 的 TLS1.3 实现只支持这两大类。
icyalala
2021-06-12 18:37:24 +08:00
看服务端和客户端的支持,握手时的选择。
比如 Chrome 打开开发者工具,Security 选项卡,V 站目前是:
Certificate - Cloudflare Inc ECC CA-3.
Connection - TLS 1.3, X25519, and AES_128_GCM.
aneureka
2021-06-12 19:30:25 +08:00
关于 HTTPS,我觉得这篇文章写的非常好,楼主可以参考一下,顺便用 wireshark 抓抓包

https://halfrost.com/https-begin/
xckai123
2021-06-12 21:55:15 +08:00
最终使用的加密算法是个确定范围的动态协商值,前端开发能知道分阶段使用对称非对称加密个人感觉已经算是不错了,这年头面试不仅仅要造火箭 还要造材料了
yolee599
2021-06-13 10:24:52 +08:00
对称加密用 AES
ryougifujino
2021-06-13 10:27:36 +08:00
这是要求背 spec 啊😓
no1xsyzy
2021-06-13 15:32:15 +08:00
你真没搞错面试的职位吗?浏览器开发大部分情况下也不碰这些,也不该随便动这些模块。
这是搞风控(浏览器环境识别)吧?
lookas2001
2021-06-13 15:54:39 +08:00
补充一条,chrome f12 进 devtool 切换到 security 标签页可以看到当前 https 使用的加密算法集

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/783059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX