首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >会话密钥、公共/私钥是如何在ssh服务器和客户端上生成和使用的?

会话密钥、公共/私钥是如何在ssh服务器和客户端上生成和使用的?
EN

Unix & Linux用户
提问于 2016-06-15 21:28:57
回答 1查看 3K关注 0票数 1

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

密钥交换

  1. 客户端有一个公钥和私钥对。服务器有一个公钥和私钥对。
  2. 客户端和服务器交换它们的公钥。
  3. 客户机现在有自己的密钥对加上服务器的公钥。
  4. 服务器现在有自己的密钥对加上客户端的公钥。
  5. 这种密钥交换是在不安全的网络上完成的。
  6. 客户端获取其私钥和服务器的公钥,并将其传递给一个数学方程,以生成共享的秘密(会话密钥)。
  7. 服务器获取它的私钥和客户端的公钥,并通过一个数学方程来生成共享的秘密(会话密钥)。这两个共享的秘密都是一样的!这是不对称的钥匙。
  8. 此加密隧道用于会话的其余部分,包括下一阶段:用户身份验证。
  9. 在以下所有会话更改之前,服务器和客户端之间的公钥交换是否只完成一次?
  10. 是否每个会话在客户端和服务器上生成一次会话密钥?每次生成它们时,它们都以私钥和公钥作为输入。这是否意味着不同会话的会话密钥是相同的,只要私钥和公钥保持不变?
  11. 为什么引号说在同一会话中在服务器和客户端上生成的会话密钥是“相同的”?
  12. 项目8似乎说用户身份验证是在生成会话密钥之后发生的?如果是,用户身份验证是否使用在客户端和服务器上生成的会话密钥,还是只使用客户端和服务器上的公钥和私钥?

顺便问一下,对于进程如何在服务器和客户端上使用公钥和私钥以及会话密钥,是否有一些参考呢?

谢谢。

EN

回答 1

Unix & Linux用户

发布于 2016-06-15 21:48:46

  1. 在以下所有会话更改之前,服务器和客户端之间的公钥交换是否只完成一次?

是。密钥交换的密钥对每个密钥交换都有更改。

  1. 是否每个会话在客户端和服务器上生成一次会话密钥?

是。除非您传输大量数据,否则您的会话持续时间足够长,或者强制重新键控(或者配置重键操作比需要的频率更频繁)。服务器和客户端配置中的RekeyLimit选项。

每次生成它们时,它们都以私钥和公钥作为输入。这是否意味着不同会话的会话密钥是相同的,只要私钥和公钥保持不变?

如上段所述。这些都是为密钥交换而生成的密钥。它们不是前面在前面的问题中讨论过的身份验证密钥或主机密钥。

  1. 为什么引号说在同一会话中在服务器和客户端上生成的会话密钥是“相同的”?

这是密钥交换的要点。我真的很喜欢下面这张解释它的图片(来自维基百科)。它们是根据每个私钥的知识独立生成的,但是通过网络传输的数据(公钥)不足以构造这个共享秘密。

  1. 项目8似乎说用户身份验证是在生成会话密钥之后发生的?

如果是,用户身份验证是否使用在客户端和服务器上生成的会话密钥,还是只使用客户端和服务器上的公钥和私钥?

不是的。会话密钥用于通过网络对信道进行加密。关键是在密钥交换之前,数据在网络上传输不安全,任何人都可以拦截/修改/插入任何数据。密钥交换后,用密码对数据进行加密,用MAC对数据进行认证。

有很多关于SSH协议的信息。OpenSSH项目有一个专门的页面,具有为SSH协议实现的所有标准(RFC)。也许最重要的是RFC4253。此外,开放源码可以解释很多。

我希望我说得更清楚了。如果有什么遗漏,请告诉我。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/290025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档