gpt4 book ai didi

ssl - SSL握手期间浏览器如何生成对称 key

转载 作者:太空宇宙 更新时间:2023-11-03 12:39:03 25 4
gpt4 key购买 nike

在典型的 https 网络场景中,我对浏览器和服务器之间的 SSL 握手有一点困惑:

到目前为止我所了解的是,在 SSL 握手过程中,客户端(在本例中为浏览器)使用公钥(从服务器收到的证书)加密随机选择的对称 key 。这被发送回服务器,服务器使用私钥对其进行解密(对称 key )。这个对称 key 现在在 session 的其余部分用于加密/解密两端的消息。这样做的主要原因之一是使用对称 key 进行更快的加密。

问题

1) 浏览器如何选择并生成这个“随机”选择的对称 key ?

2) 开发人员(或/和浏览器用户)是否可以控制这种生成对称 key 的机制?

最佳答案

Here很好地描述了 HTTPS 连接建立的工作原理。我将总结一下双方(客户端和服务器)如​​何获取 session key ,这个过程被称为“ key 协商协议(protocol)”,这里是如何工作的:

  1. 客户端生成 48 字节的“pre-master secret”随机值。
  2. 客户端用随机数据填充这些字节,使输入等于 128 字节。
  3. 客户端用服务器的公钥加密后发送给服务器。
  4. 然后双方按照以下方式生成主 key :

    master_secret = PRF(
    pre_master_secret,
    "master secret",
    ClientHello.random + ServerHello.random
    )

The PRF is the “Pseudo-Random Function” that’s also defined in the spec and is quite clever. It combines the secret, the ASCII label, and the seed data we give it by using the keyed-Hash Message Authentication Code (HMAC) versions of both MD5 and SHA-1 hash functions. Half of the input is sent to each hash function. It’s clever because it is quite resistant to attack, even in the face of weaknesses in MD5 and SHA-1. This process can feedback on itself and iterate forever to generate as many bytes as we need.

Following this procedure, we obtain a 48 byte “master secret”.

关于ssl - SSL握手期间浏览器如何生成对称 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3936071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com