【问题标题】:How SSH encrypts communications, when using password-based authentication? [closed]使用基于密码的身份验证时,SSH 如何加密通信? [关闭]
【发布时间】:2020-04-20 16:01:43
【问题描述】:

据我了解,当使用基于密钥的身份验证的 SSH 时,服务器向客户端发送一个质询字符串,客户端使用私钥对其进行加密并将其发送回服务器,服务器使用公钥和 . ..:

但是,当我们使用基于密码的身份验证时,SSH 如何加密通信?即它如何生成密钥来加密从客户端到服务器的数据,反之亦然?

【问题讨论】:

  • 一个插图精美的 Q,b tu StackOverflow 致力于帮助解决编程代码问题。您的 Q 可能适合Super User,但请阅读他们关于主题问题的帮助部分。并且请先阅读Help On-topicHelp How-to-ask,然后再在此处发布更多问题。祝你好运。
  • @shellter 再看一遍后,似乎我的问题没有很好地说明:) 我真正的问题是 SSH 如何加密客户端和服务器之间的通信,因为没有公私钥配对用于该目的...
  • 一个公私密钥对,它是动态生成的,只是为了保护该会话。每一方都生成他们的 DH 或 ECDH 密钥对,然后将他们的公钥发送给对等方。然后,每一方都可以使用密钥协商协议来派生公共 AES 密钥。缺少的是身份验证。同伴们真的不知道他们是在互相交谈还是在中间人交谈。这就是密码的来源。密码用于验证连接。

标签: linux security unix encryption ssh


【解决方案1】:

当您通过另一台计算机使用密码连接时,SSH 使用对称加密:

对称加密通常称为共享密钥或共享秘密 加密。通常只使用一个密钥,或者有时是一个 一对密钥,其中一个密钥可以使用另一个密钥轻松计算。

对称密钥用于加密整个通信过程中 SSH 会话。客户端和服务器都派生密钥 使用约定的方法,并且生成的密钥永远不会透露给 任何第三方。进行创建对称密钥的过程 通过密钥交换算法。是什么让这个算法 特别安全的是密钥永远不会传输 客户端和主机之间。相反,两台计算机共享 公共数据块,然后独立操作 计算密钥。即使另一台机器捕获 公开共享的数据,它将无法计算密钥,因为 密钥交换算法未知。

但必须注意,秘密令牌是特定于每个 SSH 会话,并在客户端身份验证之前生成。一旦 密钥已生成,所有数据包在两台机器之间移动 必须用私钥加密。这包括输入的密码 由用户进入控制台,因此凭据始终受到保护 网络数据包嗅探器。

来源:https://www.hostinger.com/tutorials/ssh-tutorial-how-does-ssh-work

为了加密通信,客户端和服务器使用 Diffie-Hellman 密钥交换

这是算法在非常基本的层面上的工作原理:

  1. 客户端和服务器都同意一个非常大的素数, 这当然没有任何共同点。这个素数 数值也称为种子值。

  2. 接下来,双方就共同的加密机制达成一致,以 通过操作 a 中的种子值来生成另一组值 具体算法方式。这些机制,也称为 加密生成器,对种子执行大型操作。一个 这种生成器的示例是 AES(高级加密标准)。

  3. 双方独立生成另一个素数。这 用作交互的秘密私钥。

  4. 这个新生成的私钥,带有共享号码和 加密算法(例如 AES),用于计算公钥 分发到另一台计算机。

  5. 然后各方使用他们的个人私钥,另一台机器的 共享公钥和原始质数以创建最终 共享密钥。此密钥由两台计算机独立计算,但 将在双方创建相同的加密密钥。

  6. 既然双方有了共享密钥,就可以对称 加密整个 SSH 会话。相同的密钥可用于加密 和解密消息(阅读:对称加密部分)。

既然已经建立了安全的对称加密会话,就必须对用户进行身份验证。

【讨论】:

  • 我真正的问题是 SSH 如何加密客户端和服务器之间的通信,因为没有用于此目的的公私密钥对......你提到客户端和服务器生成一个共享,你能也许详细说明这是怎么发生的?谢谢
  • 对于加密,客户端和服务器使用 Diffie-Hellman 密钥交换来生成共享密钥。 (我将编辑我的答案以详细解释这一点。)
  • 如果我有一点时间,我会做一个很好的图表来说明这一切
【解决方案2】:

https://man.openbsd.org/sshd_config.5#AuthenticationMethods

如果 sshd 配置中的 UsePAM 被禁用,sshd 会直接检查 /etc/passwd/etc/shadow 文件。

密码是通过协商加密发送的,因此对外界来说是安全的。使用基于密码的 ssh 身份验证将取决于您的服务器配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 2021-02-09
    • 2018-12-19
    • 2014-05-30
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多