关于ssh中使用的会话密钥的问题

关于ssh中使用的会话密钥的问题

从SSH握手过程解释http://www.cathaycenturies.com/blog/?p=1635

密钥交换

  1. 客户端有公钥和私钥对。服务器有公钥和私钥对。
  2. 客户端和服务器交换它们的公钥。
  3. 客户端现在拥有自己的密钥对以及服务器的公钥。
  4. 服务器现在拥有自己的密钥对以及客户端的公钥。
  5. 这种密钥交换是通过不安全的网络完成的。
  6. 客户端获取其私钥和服务器的公钥,并将其通过数学方程式传递以生成共享秘密(会话密钥)。
  7. 服务器获取其私钥和客户端的公钥,并将其通过数学方程传递以生成共享秘密(会话密钥)。这两个共享的秘密是相同的!这是一个非对称密钥。
  8. 此加密隧道用于会话的其余部分,包括下一阶段:用户身份验证。

第 6 和 7 条表示客户端获取其私钥和服务器的公钥,并通过数学方程传递以产生共享秘密(会话密钥),服务器获取其私钥和客户端的公钥并将其传递给产生共享秘密(会话密钥)的数学方程。

  1. 他们说服务器和客户端产生共享秘密,即会话密钥,并且这两个共享秘密是相同的。这是否意味着服务器和客户端在同一会话中产生相同的会话密钥。如果是,为什么它还说“这是一个非对称密钥”?

    “这是非对称密钥”是否意味着服务器和客户端生成的会话密钥不相同?

  2. 第 6 项和第 7 项是否意味着在客户端或服务器上,生成会话密钥的算法的输入是自己的私钥,而对方的公钥?

    如果是,那么服务器和客户端上的会话密钥如何相同,因为它们的输入不同?

    不同会话的会话密钥有何不同?是否有特定于会话的输入?

我已阅读 Jakuje 的回复https://unix.stackexchange.com/a/290027/674,但我仍然不确定如何回答上述问题。

谢谢。

答案1

  1. 这是否意味着服务器和客户端在同一会话中产生相同的会话密钥?

是的,从图中可以看出图片在最近的问题中。

如果是,为什么它还说“这是一个非对称密钥”?

不知道。你最好问一下这篇文章的作者。非对称密码学用于创建共享秘密,但我不知道这句话是什么意思。

“这是非对称密钥”是否意味着服务器和客户端生成的会话密钥不相同?

当然不是。共享秘密是相同的(称为共享)。

  1. 第 6 项和第 7 项是否意味着在客户端或服务器上,生成会话密钥的算法的输入是自己的私钥,而另一个是对方的公钥?

如果是,那么服务器和客户端上的会话密钥如何相同,因为它们的输入不同?

这就是前面提到的“数学方程”的要点。如果颜色不足以说明,也可以用数字来说明维基百科:

  1. Alice 和 Bob 同意使用模数 p = 23 和基数 g = 5(这是模 23 的原根)。
  2. Alice 选择一个秘密整数 a = 6,然后发送给 Bob A = ga mod p
    • A = 5 6模 23 = 8
  3. Bob 选择一个秘密整数 b = 15,然后发送给 Alice B = gb mod p
    • B = 5 15模 23 = 19
  4. Alice 计算 s = B a mod p
    • s = 19 6模 23 = 2
  5. Bob 计算 s = A b mod p
    • s = 8 15模 23 = 2
  6. Alice 和 Bob 现在共享一个秘密(数字 2)。

这背后的数学原理是“整数乘法群模 p”,但 RSA 或椭圆曲线密码学背后也有类似的机制。

不同会话的会话密钥有何不同?是否有特定于会话的输入?

不同的会话密钥是通过不同的密钥交换创建的,这在客户端和服务器上生成基本上随机的非对称密钥对。您永远不应该发生两次生成相同随机数据的情况,否则它就不是随机的。在客户端和服务器上执行此操作可以消除单点故障(随机生成器损坏),因为强制服务器和客户端生成相同的数据......几乎是不可能的。

密钥交换的输入也因算法而异,但基本上也是随机选择的模数(在上面的示例中为数字 23)。这是密钥交换的三个随机输入部分,可确保您为不同的会话获得不同的共享密钥。

相关内容