web-dev-qa-db-ja.com

SSH経由で送信されるすべてのデータは暗号化されていますか?

SSH経由で別のコンピューターに接続すると、2台のコンピューター間で転送されるすべてのデータは暗号化されますか?または、プレーンテキストまたはその他の「傍受しやすい」形式で送信されたデータはありますか?

39
IQAndreas

どのプロトコルでも、「somethingは暗号化されて送信されない」ことを必ず意味する「すべてのデータ」の定義を思いつく可能性があります。

たとえば、初期化と鍵交換の間、アルゴリズムの選択は公開されます。あなたがそのアルゴリズムについてまだ選択していないので明らかにそれができない暗号化されているので、あなたがその事実について不平を言うならば、あなたの平均的な暗号学者はあなたに眉を上げただけではないでしょう。

明らかにsomethingは、暗号化をセットアップする以外の目的がない場合は、暗号化せずに送信する必要があります。しかし、接続が安全になると、すべてが安全になります。暗号化されたチャネルを取得すると、その時点以降、そのチャネルの外には何も送信されません。さらに、暗号化が利用可能になる前にsensitiveデータを送信しないように、プロトコルは非常に慎重です。ユーザー名、パスワード、いかなる種類の識別も、目的の表示も、そのいずれもありません。

解読するものがほとんどなく、wiresharkなどの一般的な無料ツールを使用して簡単に解読できます。パケットキャプチャを起動し、SSHセッションを開始して、自分で交換を調べます。目に見えるものと見えないものがすぐにわかります。 Wiresharkはプロトコルのデコードに優れており、ネットワークトラフィックを監視している誰かに見える範囲で、プロトコルの仕組みを内部で確認できます。

一般的なフローは次のようになります。

  1. SSHバージョン/ソフトウェア識別
  2. 鍵交換init(アルゴリズム選択)
  3. Diffie-Helman鍵交換(SSHホスト鍵を使用してMITMを防止)
    これ以降はすべて暗号化されます
  4. ユーザー認証(ユーザーキーベースの認証を含む)
  5. SSHセッションがアクティブになりました
62
tylerl