機密情報や手紙を送るときは、外の世界から隠したいのです。そのため、封筒に封をして米国郵政公社(USPS)を使用して目的地に送付することで、保護されていることを確認しました。少なくとも、これは私たちが情報を送信するために使用した方法です。より高度なレベルの機密性を使用した暗号化とモールス信号についての議論すら入力していません。
今、私たち人間はインターネットに進化し適応してきたので、安全な接続を使用して情報を交換しています。以前は、telnetを使用してポート23を使用してリモートサーバーに接続していました。問題は、プレーンテキストで情報を送信していたことでした。つまり、情報を読みたい人は誰でもネットワークを盗聴でき、情報が危険にさらされていました(同等の情報はUSPS経由で送信された手紙を開いて読むことができると。)
この結果は、元のメッセージを送信したときに望んでいたものではありません。リモートサーバーにメッセージを送信する安全な方法が必要ですよね?もちろん、解決策はSecure Shell(SSH)経由で送信することです。
SSHが暗号化されたメッセージを送信する方法
そのため、クライアントからサーバーへ、またはその逆に暗号化されたメッセージを使用して安全に通信したいと考えています。私は次のようにSSHでこれを達成します。 SSHは、ポート22を介して2つのホスト(Host-1(サーバー)とHost(クライアント))の間に安全な接続を確立します。お互いを認証した後、彼らはメッセージの安全な交換を可能にしました。
SSHは3つの異なる暗号化タイプを使用します:
- 対称暗号化
- 非対称暗号化
- ハッシュ
これらのタイプについて簡単に説明します。
共有キー暗号化とも呼ばれる対称暗号化は、通常、メッセージの暗号化と復号化の両方に単一のキーまたはキーのペアが使用されます。このキーは、クライアントとサーバー間の通信セッション全体を暗号化するために使用されます。
クライアントとサーバーの両方が単一の方法に同意し、共有キーを生成します。これはもちろん第三者に開示されることはないため、共有/秘密キーメッセージの送信に使用されます。この方法の最も興味深い部分は、クライアントとサーバーの間でキーが交換されないことです。代わりに、各マシンは、以前に合意された方法を使用して、共有キーを個別に計算します。サードパーティのマシンがデータをキャプチャしたとしても、データの暗号化に使用された方法が不明であるため、復号化できません。
上記の方法とは異なり、この方法では暗号化と復号化に1対のキーを使用します。これらは公開鍵と秘密鍵として知られています。公開鍵は、その名前が示すように、広く配布されています。秘密鍵は機能の点で公開鍵と密接に関連していますが、公開鍵を知っているだけでは計算できません。
秘密鍵は第三者に公開されないという事実に依存しているため、秘密鍵は通信全体の重要な要素であり、メッセージを復号化できる唯一の鍵であり、独自の公開鍵で暗号化されています。したがって、いずれかの当事者がメッセージを復号化して読みたい場合は、秘密鍵を所有している必要があります。
2つのシステムを使用してこの方法を試してみましょう。まず、ワークステーションから始めます。ワークステーションには、次のように生成された2組のキーがあります。
次に、サーバーからワークステーションへの接続を開始します。
したがって、サーバーはワークステーションの情報をknown_hosts
に保存します。 次のようにファイルします:
サーバーが検証された後、サーバーとクライアントは、Diffie-Hellman鍵交換アルゴリズムを使用してセッション鍵をネゴシエートします。この共有キーは、暗号化と復号化に使用されます。
最終段階はクライアントの認証であり、これはSSHキーペアを使用して行われます。次の図は、このプロセスがどのように発生するかを示しています。
コマンドssh -v [email protected]
を発行すると 、これが何が起こるかです:
結論
この記事の目的は、SSHが2つのシステム間で安全な通信を確立する方法をユーザーに認識させることでした。うまくいけば、私はそのプロセスについていくつかの洞察を提供しました。
[SSHについてもっと知りたいですか? AdvancedSSHチートシートをダウンロードしてください。]