SSHでは、ホストキーと公開キーの違いは何ですか。
公開鍵は秘密鍵と公開鍵のペアの一部であると私は確信しているため、サーバーから送信されたもの(プライベートを使用して暗号化)は公開鍵を使用してクライアントが復号化でき、公開鍵で暗号化した後に送信されたものはサーバーの秘密鍵によってのみ復号化できます。
SSHでは、サーバーはホストキーを送信し、クライアントは事前にホストのハッシュキーを知っているか、クライアントが初めてキーを受信した後にローカルストアにキャッシュする必要があります。これにより、ホストの信頼性が保証されます。
私の質問は:2つの違いの私の理解は正しいですか? 「はい」の場合、マシンは接続時にサーバーのホストキーを取得しますが、ホストキーをコピーしてそのホストキーをコピーしたサーバーとしてそのIDを偽造することはできません。または、秘密キーとホストキーの間に何らかの関係があります。それは公開鍵と秘密鍵の間にありますか?
ホストには、公開鍵と秘密鍵で構成されるkeyペアがあります。 (異なる形式の複数のキーペアを持つことができます。接続の開始時に、クライアントとサーバーは、両者がサポートする形式を決定するために交渉します。)ホスト公開キーとホスト秘密キーがあります。ホストキーペアではない他のキーペア(公開キーと秘密キー)もあります(SSHでは、ユーザーにもキーペアがあり、秘密キーはクライアントにあります)。
接続の開始時に、2つのパーティは Diffie-Hellman鍵交換 を使用して安全なチャネルを確立します。これにより、盗聴者が見つけられない共有秘密鍵を確立できます。この時点で、クライアントとサーバーは安全なチャネルを持っていますが(検出されずに中間者によって改ざんできません)、チャネルのもう一方の端に誰がいるかはまだわかりません。
次に、クライアントはランダムな値をサーバーに送信しますchallenge。サーバーは、そのpublicキーとチャレンジ値の署名を送信して応答します。チャレンジ値の署名を計算することにより、サーバーは送信した公開鍵に対応する秘密鍵を知っていることを示します。クライアントがホストの公開鍵をファイルに保存している場合、その時点から、サーバーは以前に通信したホストと同じホストであることがわかります。
このメカニズムでは、誰もが公開鍵を知っている可能性があり、一方の当事者がチャレンジを送信し、もう一方の当事者が秘密鍵を知っていることを証明する方法でチャレンジに応答します(の所有証明)は、公開鍵暗号の一般的な用途です。それは、公開鍵暗号が非対称であるという事実に完全に依存しています。公開鍵を知ることは、秘密鍵を含む計算を行うのに十分な情報を与えません。