从SSH握手过程解释http://www.cathaycenturies.com/blog/?p=1635
密钥交换
- 客户端有公钥和私钥对。服务器有公钥和私钥对。
- 客户端和服务器交换它们的公钥。
- 客户端现在拥有自己的密钥对以及服务器的公钥。
- 服务器现在拥有自己的密钥对以及客户端的公钥。
- 这种密钥交换是通过不安全的网络完成的。
- 客户端获取其私钥和服务器的公钥,并将其通过数学方程式传递以生成共享秘密(会话密钥)。
- 服务器获取其私钥和客户端的公钥,并将其通过数学方程传递以生成共享秘密(会话密钥)。这两个共享的秘密是相同的!这是一个非对称密钥。
- 此加密隧道用于会话的其余部分,包括下一阶段:用户身份验证。
第 6 和 7 条表示客户端获取其私钥和服务器的公钥,并通过数学方程传递以产生共享秘密(会话密钥),服务器获取其私钥和客户端的公钥并将其传递给产生共享秘密(会话密钥)的数学方程。
他们说服务器和客户端产生共享秘密,即会话密钥,并且这两个共享秘密是相同的。这是否意味着服务器和客户端在同一会话中产生相同的会话密钥。如果是,为什么它还说“这是一个非对称密钥”?
“这是非对称密钥”是否意味着服务器和客户端生成的会话密钥不相同?
第 6 项和第 7 项是否意味着在客户端或服务器上,生成会话密钥的算法的输入是自己的私钥,而对方的公钥?
如果是,那么服务器和客户端上的会话密钥如何相同,因为它们的输入不同?
不同会话的会话密钥有何不同?是否有特定于会话的输入?
我已阅读 Jakuje 的回复https://unix.stackexchange.com/a/290027/674,但我仍然不确定如何回答上述问题。
谢谢。
答案1
- 这是否意味着服务器和客户端在同一会话中产生相同的会话密钥?
是的,从图中可以看出图片在最近的问题中。
如果是,为什么它还说“这是一个非对称密钥”?
不知道。你最好问一下这篇文章的作者。非对称密码学用于创建共享秘密,但我不知道这句话是什么意思。
“这是非对称密钥”是否意味着服务器和客户端生成的会话密钥不相同?
当然不是。共享秘密是相同的(称为共享)。
- 第 6 项和第 7 项是否意味着在客户端或服务器上,生成会话密钥的算法的输入是自己的私钥,而另一个是对方的公钥?
如果是,那么服务器和客户端上的会话密钥如何相同,因为它们的输入不同?
这就是前面提到的“数学方程”的要点。如果颜色不足以说明,也可以用数字来说明维基百科:
- Alice 和 Bob 同意使用模数 p = 23 和基数 g = 5(这是模 23 的原根)。
- Alice 选择一个秘密整数 a = 6,然后发送给 Bob A = ga mod p
- A = 5 6模 23 = 8
- Bob 选择一个秘密整数 b = 15,然后发送给 Alice B = gb mod p
- B = 5 15模 23 = 19
- Alice 计算 s = B a mod p
- s = 19 6模 23 = 2
- Bob 计算 s = A b mod p
- s = 8 15模 23 = 2
- Alice 和 Bob 现在共享一个秘密(数字 2)。
这背后的数学原理是“整数乘法群模 p”,但 RSA 或椭圆曲线密码学背后也有类似的机制。
不同会话的会话密钥有何不同?是否有特定于会话的输入?
不同的会话密钥是通过不同的密钥交换创建的,这在客户端和服务器上生成基本上随机的非对称密钥对。您永远不应该发生两次生成相同随机数据的情况,否则它就不是随机的。在客户端和服务器上执行此操作可以消除单点故障(随机生成器损坏),因为强制服务器和客户端生成相同的数据......几乎是不可能的。
密钥交换的输入也因算法而异,但基本上也是随机选择的模数(在上面的示例中为数字 23)。这是密钥交换的三个随机输入部分,可确保您为不同的会话获得不同的共享密钥。