gpt4 book ai didi

c - SSH2 session 中计算量最大的步骤是什么?

转载 作者:太空狗 更新时间:2023-10-29 15:25:03 25 4
gpt4 key购买 nike

我试图找出在 SSH2 key 交换/身份验证/ session 初始化中到底是什么使用了最多的 CPU。我正在针对嵌入式 CPU 对其进行优化,目前 session 初始化似乎是最大的瓶颈。具体来说,我正在使用带有 RSA key 对的 dropbear 服务器。 RSA 或其部分是否需要大量的 CPU 处理能力?

谢谢!

最佳答案

SSH2 key 交换中三个最昂贵的操作是(在服务器上):

  • Diffie-Hellman key 交换。
  • 服务器动态计算的RSA签名。
  • 对客户端动态计算的签名进行验证(如果客户端使用非对称 key 对来验证自己)。

第三个操作要快得多是客户端使用 RSA key 对:RSA 签名验证非常快,而 DSA 签名验证很昂贵(实际上比 DSA 签名 一代)。

DH 在 SSH specification 中称为 diffie-hellman-group1-sha1diffie-hellman-group14-sha1 的两个组之一完成。 (第 8 节)。后者使用 2048 位模数,而前者坚持使用 1024 位模数。预计较大的模量意味着 DH 成本比较小的大 4 到 8 倍。但是,1024 位 DH 被认为与 1024 位 RSA 一样安全,因此不推荐用于长期安全性(在 SSH 中,DH 用于获取实际的加密 key ;因此,您希望 DH 抵抗与通过 SSH 连接交换的数据一样长的时间必须保密)。

同样,RSA 签名生成成本主要是 key 大小的三次方:2048 位 RSA 签名生成所需的 CPU 大约是 1024 位 RSA 签名生成所需的 8 倍。 DSA 签名生成可能比 RSA 签名生成快一些(可能快两倍)。

因此,对于更快的标准 SSH2 服务器 操作的建议是:

  • 使用 diffie-hellman-group1-sha1 进行 key 交换(如果您可以容忍不是最优的安全性);
  • 为服务器使用 DSA key ;
  • 为客户端使用 RSA key 。

一些 SSH 实现(特别是较新版本的 OpenSSH )支持 ECDSA 签名,并且可以使用 ECDH(椭圆曲线上的 Diffie-Hellman)而不是普通的 DH。 ECDSA 和 ECDH 应该分别比 DSA 和 DH 快得多。此外,256 位椭圆曲线上的 ECDSA 和 ECDH 应该可以实现适当的长期安全性。在 OpenSSH 中,您可以通过将 KexAlgorithms 服务器选项设置为 ecdh-sha2-nistp256 来为 ECDH 选择这样的曲线;和 ssh-keygen -t ecdsa -b 256 将在同一曲线上生成 ECDSA key 对。

因此,更快的 OpenSSH 服务器操作的建议是:

  • 使用ecdh-sha2-nistp256进行 key 交换;
  • 为服务器使用 256 位 ECDSA key 对;
  • 为客户端使用 RSA key 。

为了更快的客户端操作,反转客户端和服务器 key 对的条件。

关于c - SSH2 session 中计算量最大的步骤是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862441/

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