2012-02-23 4 views
0

私はnode.jsのSSHプロトコルの非常に単純な&軽量クライアント実装を作成しようとしています。SSHのドキュメントの混乱

次のドキュメントは完全に私を混乱させる: http://www.snailbook.com/docs/transport.txt

それは全体の鍵交換の事の完全な例を欠いています。よく説明されていることはたくさんありますが、私はそれらのことをどのようにまとめていくのか本当に分かりません。

例をまとめてもらえますか?

セクション7.1の後に固まっています。私は正常にサーバーのalorightmsのリストを受信し、私はサーバーに必要なアロリックだけでリストを送信します。また成功した。だから、

、このケースでは、我々は次のようalorightmsあります

  • KEX:ディフィー・ヘルマン-GROUP1-SHA1
  • キー:
  • のssh-DSS暗号化:3DES-CBC
  • マック:hmac-sha1

その後、セクション7.2と7.3をスキップして、キーを生成するには値H & Kで、セクション8で生成されます。

セクション8はわかりません。これは、クライアントの両方が同じプライム、ジェネレータおよび注文値をすでに知っていることをサーバがクライアントに要求します(&)。それらの価値が交渉されたとき、お互いに送られましたか?セクション8 clearyはアルゴリズム交換に直接従うと言いますので、それらのステップの間には何もありません。 何か不足していますか?

本当にありがとうございました!

答えて

1

プライムは、鍵交換アルゴリズムによって指定されます。たとえば、あなたのソースから引用する:

を "ディフィー・ヘルマン-GROUP1-SHA1" 方式は、ハッシュとしてSHA-1を使ってDiffie-Hellman鍵交換を指定し、オークリーグループ2 [RFC2409](1024ビットMODPグループ)。

そして、あなたはRFC 2409 § 6.2に相談した場合、あなたは見つけることができます:

素数^ 1024 2から2^960から1 + 2^64 * {[2^894パイ] + 129093}。その16進値は

 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(小数)2です。

+0

AHH! diffie-hellman-group1-sha1は実際にはこの単一の素数を得る手続きですか?それはこれまでと同じプライムですか? –

+0

いつも同じ素数ですね。 – ruakh

+0

また、この素数のqは何ですか? –