SSHハンドシェイクプロセスで説明されていますhttp://www.cathaycenturies.com/blog/?p=1635
キー交換
- クライアントには公開鍵と秘密鍵のペアがあります。サーバーには公開鍵と秘密鍵のペアがあります。
- クライアントとサーバーは公開鍵を交換します。
- これで、クライアントはサーバーの公開鍵だけでなく、独自の鍵ペアも持っています。
- サーバーにはクライアントの公開鍵だけでなく、独自の鍵ペアもあります。
- この鍵交換は、安全でないネットワークを介して行われる。
- クライアントは秘密鍵とサーバーの公開鍵を取得し、数学方程式を介して渡して共有秘密(セッション鍵)を生成します。
- サーバーは秘密鍵とクライアントの公開鍵を取得し、数学方程式を介して渡して共有秘密(セッション鍵)を生成します。二人が共有する秘密は同じです!これは非対称キーです。
- この暗号化されたトンネルは、次のステップであるユーザー認証を含む残りのセッションに使用されます。
サーバーとクライアント間の公開鍵交換は、変更されるまですべての後続のセッションに対して一度行われますか?
セッションキーは、クライアントとサーバーの両方でセッションごとに1回生成されますか?
生成されるたびに秘密鍵と公開鍵を入力として使用します。これは、秘密鍵と公開鍵が同じである限り、セッション鍵が他のセッションでも同じであることを意味しますか?
同じセッションのサーバーとクライアントで生成されたセッションキーが「同じ」であることを引用文で言うのはなぜですか?
箇条書き8は、セッションキーの生成後にユーザー認証が行われると言っていると思いますか?
それでは、ユーザー認証はクライアントとサーバーで生成されたセッションキーを使用しますか、クライアントとサーバーの公開鍵と秘密鍵のみを使用しますか?
しかし、プロセスがどのように機能するのか、サーバーとクライアントで公開鍵と秘密鍵とセッション鍵を使用する方法についての参照はありますか?
ありがとうございます。
ベストアンサー1
- サーバーとクライアント間の公開鍵交換は、変更されるまですべての後続のセッションに対して一度行われますか?
はい。鍵が交換されるたびに、鍵交換のための鍵が変更されます。
- セッションキーは、クライアントとサーバーの両方でセッションごとに1回生成されますか?
はい。大量のデータを送信しない場合は、セッションが十分に長く続行するか、強制的にキーを再入力するか、必要以上に頻繁にキーを再生成するように設定できます。RekeyLimit
サーバーおよびクライアント構成のオプション。
生成されるたびに秘密鍵と公開鍵を入力として使用します。これは、秘密鍵と公開鍵が同じである限り、セッション鍵が他のセッションでも同じであることを意味しますか?
上記のように。これらのキーは、キー交換のためにのみ生成されます。前の質問で説明した認証キーまたはホストキーではありません。
- 同じセッションのサーバーとクライアントで生成されたセッションキーが「同じ」であることを引用文で言うのはなぜですか?
これが鍵交換の要点です。私はそれを説明する下の画像が本当に好きです。ウィキペディア)。これは各秘密鍵の知識に基づいて独立して生成されますが、ネットワーク経由で送信されるデータ(公開鍵)ではこの共有秘密を構成するのに十分ではありません。
- 箇条書き8は、セッションキーの生成後にユーザー認証が行われると言っていると思いますか?
それでは、ユーザー認証はクライアントとサーバーで生成されたセッションキーを使用しますか、クライアントとサーバーの公開鍵と秘密鍵のみを使用しますか?
習慣。セッションキーは、ネットワークのチャネルを暗号化するために使用されます。要点は、鍵が交換される前にネットワークを介して送信されるデータは安全ではなく、誰もがデータを傍受、変更、または挿入できることです。鍵交換後、データはパスワードを使用して暗号化され、MACを使用して「認証」されます。
SSHプロトコルに関する多くの情報があります。 OpenSSHプロジェクト専用ページSSHプロトコルを実装するためのすべての標準(RFC)に準拠しています。おそらく最も重要なことRFC4253。 opensshのソースコードにも多くの説明があります。
もっと明確にしたら良かったでしょう。欠けているものがあれば教えてください。