2012-02-23 29 views
0

我正在嘗試爲node.js創建一個非常簡單的& SSH協議的輕量級客戶端實現。SSH文檔混淆

以下文檔混淆了我完全: http://www.snailbook.com/docs/transport.txt

它缺乏的整個密鑰交換的東西一個完整的例子。有很多很好的解釋,但我不確定如何把這些東西放在一起。

你能幫我把一個例子放在一起嗎?

我被困在7.1節之後。我成功地接收到服務器的alorightms列表,並且只將所需的算法列表發送給服務器。也是成功的。

所以,在這種情況下,我們有以下alorightms:

  • KEX:的Diffie-Hellman-組1-SHA1
  • 鍵:SSH-DSS
  • 加密:3DES-CBC
  • MAC :hmac-sha1

之後,我跳過了第7.2節和第7.3節,直接繼續到第8節,因爲生成密鑰需要值H & K,它們在第8部分中生成。

但是第8部分對我沒有意義。它要求服務器的客戶端&已經知道相同的素數,發生器和訂單值。什麼時候這些價值被協商併發送給對方?第8節cleary說,它直接遵循算法交換,所以這些步驟之間沒有任何東西... 我錯過了什麼嗎?

非常感謝您的幫助!

回答

1

素數由密鑰交換算法指定。例如,從源引述如下:

的 「的Diffie-Hellman-組1-SHA1」 方法指定了與SHA-1哈希,和Oakley的第2組[RFC2409]的Diffie-Hellman密鑰交換(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(十進制)

+0

AHH! diffie-hellman-group1-sha1實際上是一個獲得這個單一素數的過程?它永遠是同一個素數? – 2012-02-23 18:01:34

+0

它總是一樣的素數,是的。 – ruakh 2012-02-23 18:07:32

+0

你也知道這個素數是多少? – 2012-02-23 18:52:47