V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jimmyczm
V2EX  ›  问与答

PKI 体系中,由 SSL/TSL 实现 HTTPS 应用,浏览器和服务器之间用于加密 HTTP 消息的方式是?

  •  
  •   jimmyczm · 258 天前 · 1136 次点击
    这是一个创建于 258 天前的主题,其中的信息可能已经有所发展或是发生改变。
    A.会话密钥+公钥加密
    B.会话密钥+对称加密

    ------------
    看到了几个不同的答案,要么 A 要么 B ,我对这个不太了解,请问是 A 还是 B ?
    24 条回复    2024-04-12 20:10:17 +08:00
    benedict00
        1
    benedict00  
       258 天前
    公钥加密的是对称加密密钥
    YGHMXFAL
        2
    YGHMXFAL  
       258 天前
    MsgBody 使用 AES-256-GCM/ChaCha20-Poly1305 这样地 AEAD 对称加密算法来保护,对称加密算法所使用地会话密钥需要使用公钥加密算法来保护/交换
    cheng6563
        3
    cheng6563  
       258 天前
    B 吧,Chrome 按 F12 看安全页的 HTTPS 信息可以看到类似这个: “与此网站的连接已使用 TLS 1.3, X25519 和 AES 128 GCM 进行加密和身份验证”

    其中 X25519(类似 RSA)用来确定身份交换密钥,这个密钥就是用来 AES 对称加密的密钥。
    tool2dx
        4
    tool2dx  
       258 天前
    “公钥加密”,这是就类似用非对称加密,巨慢的。速度远远不如对称加密。

    好像黑暗之魂 3 就是用 RSA 来加密游戏文件的。
    jimmyczm
        5
    jimmyczm  
    OP
       258 天前
    @benedict00 对,我看了个图,浏览器是使用了公钥加密,然后发送给服务器,总体下来,加密方式是对称加密,我也很困惑答案是啥
    jimmyczm
        6
    jimmyczm  
    OP
       258 天前
    @YGHMXFAL 题目到还没提到 aes 这种,就是简单的浏览器-服务器之间的加密方式
    jimmyczm
        7
    jimmyczm  
    OP
       258 天前
    @cheng6563 是指密钥的加密方式是使用了对称加密?
    jimmyczm
        8
    jimmyczm  
    OP
       258 天前
    @tool2dx 是啊,但是我看了下,浏览器和服务器之间只要进行了一次密钥交换,就可以生产一个 session ,避免消耗资源
    cheng6563
        9
    cheng6563  
       258 天前
    用非对称加密交换一个密钥,然后用这个密钥用对称加密加密实际的数据。
    比如说你要用 HTTPS 下载个 1G 文件,先用 RSA 加密一个 AES 密钥,再用这个 AES 密钥加密这个 1G 的文件。
    Trim21
        10
    Trim21  
       258 天前
    B 因为非对称加密很慢
    CEBBCAT
        11
    CEBBCAT  
       258 天前
    See this page fetch itself, byte by byte, over TLS
    https://bytebybyte.dev/

    看看这个网页的延时对你有没有帮助
    CEBBCAT
        12
    CEBBCAT  
       258 天前
    @CEBBCAT #11 延时 -> 演示
    jimmyczm
        13
    jimmyczm  
    OP
       258 天前
    @cheng6563 在握手过程中使用了服务器的公钥加密了浏览器的私钥?
    Greenm
        14
    Greenm  
       258 天前
    感觉你 还没懂,这中间有两个过程:

    1. 密钥交换,用的非对称加密,就是 RSA 。
    2. 用第一步交换来的密钥,对后续的传输内容加密,这一步用的是 AES ,就是对称加密。

    所以这个题应该选 B 。 这个问题你可以试着问 GPT ,它会给你完整详细的解答。
    jimmyczm
        15
    jimmyczm  
    OP
       258 天前
    @Trim21 里面是不是有一个服务器的公钥加密了浏览器的私钥的过程?
    jimmyczm
        16
    jimmyczm  
    OP
       258 天前
    @CEBBCAT 好,我去看看
    jimmyczm
        17
    jimmyczm  
    OP
       258 天前
    @Greenm 我问了下 chatgpt ,在握手过程中,浏览器使用了服务器的公钥加密会话密钥,那其实也算是使用了公钥加密吧?
    Greenm
        18
    Greenm  
       258 天前
    @jimmyczm 你的题目是“PKI 体系中,由 SSL/TSL 实现 HTTPS 应用,浏览器和服务器之间用于加密 HTTP 消息的方式是?”

    你要看清楚题目,题目问的是加密 “HTTP 消息”的方式,而不是整个握手过程,加密 http 消息就是只用了对称加密啊。
    sujin190
        19
    sujin190  
       258 天前 via Android
    握手阶段用 rsa 公钥加密和签名后续通信用的对称加密密钥呗,应用数据都是通过这个协商的密钥对称加密通信
    dzdh
        20
    dzdh  
       258 天前
    https 是 非对称加密 一个 双方约定的 key 。后续用这个 key 对称加密传输数据。
    a b 都不对

    会话密钥+对称加密
    yuyuf
        21
    yuyuf  
       258 天前
    浏览器先通过证书获取非对称加密的公钥,然后随机生成一个秘钥(key),通过公钥加密秘钥(key),把加密结果传给服务端。服务度通过非对称加密的私钥解密得到秘钥(key)。

    之后双方通过秘钥(key)使用对称加密通信
    twl007
        22
    twl007  
       258 天前 via iPhone
    @jimmyczm 握手的时候通过公钥来加密生成的临时对称加密的密钥

    之后的加密都会用这个对称加密密钥去加密

    这个文章讲得比较清楚
    https://www.cloudflare.com/zh-cn/learning/ssl/how-does-ssl-work/

    你要是去看 OpenSSL 的 cpher suite 会发现是由 key 交换和 bulk encryption 两部分组成的 分别定义了如何交换临时加密 key 的算法和用来生成临时加密 key 的算法
    jim9606
        23
    jim9606  
       257 天前
    B
    TLS 握手的目的是得到双端共享但对第三者保密的 session key ,目前使用的对称加密主要是 AES-128/196/256-GCM 和 CHACHA20-POLY1305
    公钥加密速度很慢,所以通常只会用来加密少量数据,例如握手阶段可能会用 RSA 加密/签名用于协商的参数(例如 client dh parameter 或者 premaster secret ,数据量非常小),大批量的数据加密交由更快的对称加密完成。
    julyclyde
        24
    julyclyde  
       257 天前
    你这个学习方法很文科啊
    抓流看看、找标准看看就行了
    这东西还有单独提问的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3104 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:15 · PVG 21:15 · LAX 05:15 · JFK 08:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.