V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brader
V2EX  ›  程序员

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

  •  1
     
  •   brader · 2021-06-12 11:20:51 +08:00 · 4188 次点击
    这是一个创建于 1265 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    20 条回复    2021-06-13 15:54:39 +08:00
    pkoukk
        1
    pkoukk  
       2021-06-12 11:29:45 +08:00
    根据 TLS 和 SSL 版本而定,每个版本都有自己支持的算法列表。
    DES 应该早被淘汰了,最低也是 3DES
    alex8
        2
    alex8  
       2021-06-12 11:30:02 +08:00
    多了,现在常用比如 AES-128-GCM
    面试的运维么
    slert
        3
    slert  
       2021-06-12 11:34:39 +08:00
    是 AES 比 DES 更安全点吧
    不过其实我感觉知不知道这个根本不重要
    lululau
        4
    lululau  
       2021-06-12 11:36:41 +08:00 via iPhone
    如果面的不是浏览器开发的话,出这个题的就是脑子有包吧
    muzuiget
        5
    muzuiget  
       2021-06-12 12:10:17 +08:00
    关键词“密码套件”,一个密码套件字符串类似 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,主流就是 AES 。
    phpc
        6
    phpc  
       2021-06-12 12:11:54 +08:00
    firefox 可以看。
    brader
        7
    brader  
    OP
       2021-06-12 12:15:35 +08:00
    @lululau 我也觉得面试官有点故意为难人,让我详细叙述 HTTPS 流程,我答完流程,又一直深问,我答完用到对称加密,又继续问用什么对称加密。。。无限深挖啊
    brader
        8
    brader  
    OP
       2021-06-12 12:17:10 +08:00
    @phpc 原来是 AES,可以受教了
    geekvcn
        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
    geekvcn
        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
    0xsui
        11
    0xsui  
       2021-06-12 15:41:25 +08:00 via Android
    面试啥工作,问这方面问题
    brader
        12
    brader  
    OP
       2021-06-12 16:09:38 +08:00
    @0xsui 就 PHP
    jim9606
        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 实现只支持这两大类。
    icyalala
        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.
    aneureka
        15
    aneureka  
       2021-06-12 19:30:25 +08:00 via iPhone   ❤️ 1
    关于 HTTPS,我觉得这篇文章写的非常好,楼主可以参考一下,顺便用 wireshark 抓抓包

    https://halfrost.com/https-begin/
    xckai123
        16
    xckai123  
       2021-06-12 21:55:15 +08:00
    最终使用的加密算法是个确定范围的动态协商值,前端开发能知道分阶段使用对称非对称加密个人感觉已经算是不错了,这年头面试不仅仅要造火箭 还要造材料了
    yolee599
        17
    yolee599  
       2021-06-13 10:24:52 +08:00 via Android
    对称加密用 AES
    ryougifujino
        18
    ryougifujino  
       2021-06-13 10:27:36 +08:00 via iPhone
    这是要求背 spec 啊😓
    no1xsyzy
        19
    no1xsyzy  
       2021-06-13 15:32:15 +08:00
    你真没搞错面试的职位吗?浏览器开发大部分情况下也不碰这些,也不该随便动这些模块。
    这是搞风控(浏览器环境识别)吧?
    lookas2001
        20
    lookas2001  
       2021-06-13 15:54:39 +08:00   ❤️ 2
    补充一条,chrome f12 进 devtool 切换到 security 标签页可以看到当前 https 使用的加密算法集
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.