引言: HTTPS 请求,开始时候是使用 RSA 算法(非对称加密算法)来传输客户端密钥的,后续数据传输,都是使用客户端密钥来加解密(对称加密算法)数据的。
请问这个 HTTPS 请求过程中,使用的 对称加密算法,是哪种对称加密算法?是 DES 吗?
面试被问住了。。。百度了好久,都是只说到,数据部分用了对称加密算法,但是没有具体说,浏览器用的哪种对称加密算法。
1
pkoukk 2021-06-12 11:29:45 +08:00
根据 TLS 和 SSL 版本而定,每个版本都有自己支持的算法列表。
DES 应该早被淘汰了,最低也是 3DES |
2
alex8 2021-06-12 11:30:02 +08:00
多了,现在常用比如 AES-128-GCM
面试的运维么 |
3
slert 2021-06-12 11:34:39 +08:00
是 AES 比 DES 更安全点吧
不过其实我感觉知不知道这个根本不重要 |
4
lululau 2021-06-12 11:36:41 +08:00 via iPhone
如果面的不是浏览器开发的话,出这个题的就是脑子有包吧
|
5
muzuiget 2021-06-12 12:10:17 +08:00
关键词“密码套件”,一个密码套件字符串类似 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,主流就是 AES 。
|
6
phpc 2021-06-12 12:11:54 +08:00
|
7
brader OP @lululau 我也觉得面试官有点故意为难人,让我详细叙述 HTTPS 流程,我答完流程,又一直深问,我答完用到对称加密,又继续问用什么对称加密。。。无限深挖啊
|
9
geekvcn 2021-06-12 12:19:29 +08:00 via iPhone
// 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 |
10
geekvcn 2021-06-12 12:29:14 +08:00 via iPhone 2
主流的是 AES-128-GCM CHACHA20-POLY1305
RC4 3DES 都是要被淘汰的,更具客户端环境自适应是 AES 还是 CHACHA20,有硬件 AES 的使用 AES,没硬件 AES 的用 CHACHA20 |
11
0xsui 2021-06-12 15:41:25 +08:00 via Android
面试啥工作,问这方面问题
|
13
jim9606 2021-06-12 16:57:35 +08:00 1
分享一个 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 实现只支持这两大类。 |
14
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. |
15
aneureka 2021-06-12 19:30:25 +08:00 via iPhone 1
|
16
xckai123 2021-06-12 21:55:15 +08:00
最终使用的加密算法是个确定范围的动态协商值,前端开发能知道分阶段使用对称非对称加密个人感觉已经算是不错了,这年头面试不仅仅要造火箭 还要造材料了
|
17
yolee599 2021-06-13 10:24:52 +08:00 via Android
对称加密用 AES
|
18
ryougifujino 2021-06-13 10:27:36 +08:00 via iPhone
这是要求背 spec 啊😓
|
19
no1xsyzy 2021-06-13 15:32:15 +08:00
你真没搞错面试的职位吗?浏览器开发大部分情况下也不碰这些,也不该随便动这些模块。
这是搞风控(浏览器环境识别)吧? |
20
lookas2001 2021-06-13 15:54:39 +08:00 2
补充一条,chrome f12 进 devtool 切换到 security 标签页可以看到当前 https 使用的加密算法集
|