SSH公開キーがクライアントではなくサーバーにあるのはなぜですか?


12

サーバー上に公開鍵を保持する背後にある理論はよくわかりません。公開鍵と秘密鍵のロックボックスの類推では、Aliceのボックスのロックを解除するために、Aliceは公開鍵がBobに配布されている間、秘密鍵を保持します。サーバーがロックボックスの役割を果たしているように見えるのに、なぜ公開鍵を保持しているのでしょうか?

回答:


20

サーバーには、ユーザーとして生成するキーペアとは完全に分離された秘密キーと公開キーがあることに注意してください。通常、サーバーの秘密キーはサーバー構成とともに保存され、公開キーは接続しようとしたときにサーバーによって送信されます。クライアントは、サーバーの公開鍵をknown_hostsファイルと比較します。適切に使用すると、MITM攻撃を防ぐことができます。

個人アカウントの秘密鍵を持っています。サーバーは、使用しようとしているアカウントの秘密鍵が許可されていることを確認できるように、公開鍵が必要です。

あなたの例を使用して。ボブとアリスの両方が秘密鍵と公開鍵を持っています。事前にまたは接続の一部として共有された公開鍵は、秘密鍵によって暗号化されたデータが正当であることを検証するために使用されます。クライアントに公開鍵がない場合、または別の公開鍵がある場合、恐ろしい警告が表示されます。サーバーにクライアントの公開鍵がない場合は、許可されません。


1
あぁ!それははるかに理にかなっています。MITM攻撃から保護する方法があることは知っていましたが、別のキーペアがあることは知りませんでした:)助けてくれてありがとう!
コナーグロッサー

5

ユーザーとしてのあなたは、ログイン時にあなた自身であるという情報を提供する人です。したがって、サーバーはあなたになりすましている人に尋ねるので、認証のために秘密鍵が必要です。名前)それを証明する。

それが機能する方法は、サーバーがあなたに少しのテキストを送信し、それを暗号化してあなたの公開鍵で解読するようにあなたに尋ねることです。あなたの秘密鍵を持つ人だけがこれを行うことができます。


1

便宜上、公開鍵を保持します。それ以外の場合は、SSL CAに似たPKIを作成する必要があります。

アイデアは、sshクライアントがリモートサーバーキーを受け入れるように求めたときに公開キーのフィンガープリントをチェックすることです。


1

より良い例えは、サーバーの公開鍵は、ロックできる開いたロックボックスであり、閉じることができる(開いていない)ことができ、サーバーのみがそれを開くことができるということです。本当の問題は、公開鍵を信頼するかどうか(実際はアリスの箱ですか?)、それからどこで入手しても定義上は公開であり、それがPKIの目的です。


1

公開鍵は、秘密鍵から数学的に導出された非常に大きな数です。

2つの数値がリンクされるように導出され、

ただし、公開鍵のみを知っている人は秘密鍵を見つけることができません。公開鍵は、他の人、自分を認証したい人、または暗号化されたメッセージを送りたい人に送信するものです。公開鍵は機密ではないため、保護する必要はありません。公に広めることができます。babudilli98@gmail.com


1
5年前にすでに提供された他の回答と比較して、この回答には新しいものはないと思います。
カスペルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.