【问题标题】:SSH documentation confusionSSH 文档混乱
【发布时间】:2012-03-14 04:02:28
【问题描述】:

我正在尝试为 node.js 创建一个非常简单且轻量级的 SSH 协议客户端实现。

以下文档完全让我感到困惑: http://www.snailbook.com/docs/transport.txt

它缺少整个密钥交换的完整示例。有很多东西解释得很好,但我不确定如何将这些东西放在一起。

你能帮我举个例子吗?

我在第 7.1 节之后被卡住了。我成功接收到服务器的算法列表,然后我向服务器发送了一个仅包含所需算法的列表。也成功了。

所以,在这种情况下,我们有以下alorightms:

  • kex: diffie-hellman-group1-sha1
  • 密钥:ssh-dss
  • 加密:3des-cbc
  • mac:hmac-sha1

之后,我跳过了第 7.2 节和第 7.3 节,直接进入第 8 节,因为生成密钥需要第 8 节中生成的值 H 和 K。

但是第 8 节对我来说没有意义。它要求客户端和服务器都已经知道相同的素数、生成器和订单值。这些值何时被协商并发送给对方?第 8 节 cleary 说它直接遵循算法交换,因此这些步骤之间没有任何内容...... 我错过了什么吗?

非常感谢您的帮助!

【问题讨论】:

    标签: javascript node.js ssh


    【解决方案1】:

    素数由密钥交换算法指定。例如,引用您的来源:

    “diffie-hellman-group1-sha1”方法指定 Diffie-Hellman 密钥交换,SHA-1 为 HASH,Oakley Group 2 [RFC2409](1024 位 MODP 组)。

    如果您咨询RFC 2409 §6.2,您会发现:

    素数是 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 }。它的十六进制值为

     FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
        29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
        EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
        E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
        EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
        FFFFFFFF FFFFFFFF
    生成器为2(十进制)

    【讨论】:

    • 啊! diffie-hellman-group1-sha1 实际上是获得这个单一素数的程序吗?它曾经是同一个素数吗?
    • 它总是同一个质数,是的。
    • 你也知道这个素数的q是什么吗?
    • RFC 2412 中的解释似乎是说,对于这些组,你需要 1 x p-1 和 1 y p-1,所以我猜这意味着 q = p-1 。 . .但我希望我能 100% 肯定地告诉你,因为这不是你想弄错的事情。 :-/
    猜你喜欢
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多