SSH暗号化はどのように機能しますか?


34

クライアントホストで2つのキー(プライベートキーとパブリックキー)を生成し、パブリックキーをサーバーホストにコピーする方法を読みました。

私が理解しているように、(間違っている場合は修正してください):サーバーは公開鍵でデータを暗号化してクライアントに送信し、クライアントは秘密鍵でデータを復号化します。

しかし、サーバーに送信するためにクライアント上のデータを暗号化する必要がある場合、どのようになりますか?

公開鍵はクライアント上のデータを暗号化しますか?しかし、公開鍵しか持っていない場合、サーバーはどうやってそれを解読できますか?

SSH暗号化はどのように機能しますか?

回答:


35

TCP接続の確立後、最初に、DHキー交換ECDH、またはGSSAPI などのプロトコルを使用して、両方のシステムがセッションキーに同意します。このキーは対称的で一時的です– AESRC4などのアルゴリズムを使用して、両側で同じキーを使用してデータを暗号化および復号化します。

クライアントキーペアはデータの暗号化に使用されることはなく、認証にのみ使用されます。「publickey」は利用可能ないくつかの方法の1つです。同様に、サーバーキーペアは、DHまたはECDHキー交換中にサーバーを認証するためにのみ使用されます。それを使用して暗号化されるデータはありません。

SSH2プロトコルは、以下を含むいくつかのRFCで文書化されています。

  • RFC 4253 – Secure Shell(SSH)トランスポート層プロトコル
  • RFC 4419 – Diffie-Hellman Group Exchange
  • RFC 4432 – RSAキー交換
  • RFC 4462 – GSSAPI認証およびキー交換

13

最初に理解する必要があると思うことは、SSHやSSLのような多くの暗号化プロトコルが認証目的でPKIを使用する一方で、これらのシステムのほとんどが実際にペイロードを送信するためにPKIを使用しないことです。

PKIは、実際のペイロードデータの送信に使用するにはあまりにもCPUを集中的に使用します。起こることは、PKIがランダムに生成されたキーのネゴシエートに使用され、対称暗号化プロトコルで使用されることです。使用されるプロトコルもネゴシエートされ、2つのシステムが同意できる最も強力なプロトコルである必要があります。したがって、最初のハンドシェイクとネゴシエーションが完了すると、ほとんどすべてが標準の対称暗号化になります。


2
詳細については、RFC4253の 15ページで基本的に説明されています。
slhck

12

いくつかの実用的な例を示します。キーAは秘密にされ、そのため秘密キーであり、キーBは公的にアクセス可能な場所に投稿されたため、公開キーであると仮定します。

したがって、すべての人にメッセージを送信し、それがあなたから来て配信中に変更されていないことを確認したい場合は、メッセージを送信し、キーAで暗号化されたメッセージのハッシュを含めます。キーBがハッシュを解読し、受信したメッセージと比較し、メッセージがあなたから来たことを確認できますキーAを持っているのはあなたからだけである可能性があります)。これはSigningと呼ばれます。

誰かがあなたに秘密のメッセージを送りたいが、彼らが誰であるかを明かしたくないと言うことができます。彼らは対称キーでメッセージを暗号化でき(Zoredacheが対称の方がはるかに安価であると述べたように)、そのキーをキーBで暗号化して送信します。Key AのみがKey Bで暗号化されたものを復号化できるため、他の人はあなたに送信されたメッセージの内容を見ることができません。これが通常の暗号化の仕組みとSSHによるデータ交換の方法です。


3

ここではプライベート・公開鍵暗号の仕組みの背後にある数学の比較的親しみやすい説明があります。

BBCからのさらに基本的な説明はこちらです。


このプロセスといくつかの履歴を説明するBBCへの新しいリンクを追加しました。
チョッグ

1

あなたが書く

「公開鍵はクライアント上のデータを暗号化しますか?しかし、公開鍵しかない場合、サーバーはどのようにそれを解読できますか?」

私はそれについてあまり知りませんが、私はそれについて非常に明確に答えることができると思います。

AがBにメッセージを送信する場合、AはBの公開鍵を使用します。これが、Bがそれを復号化する方法です。

Aが自分の公開鍵を使用してメッセージを暗号化した場合、実際には、Bはそれを復号化できません。

ここで説明します

http://www.comodo.com/resources/small-business/digital-certificates2.php

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.