SSH接続の仕組み

SSH接続の仕組みについてオンラインマニュアル等参照し、まとめました。

(1)SSH接続のイベントシーケンスの概要


 
①暗号化ハンドシェイク
クライアントは正しいサーバーと通信していることを確認できる。
 
②暗号化
クライアントとリモートホスト間の接続のトランスポート層は、対称暗号方式を使用して暗号化される。
 
③クライアントの認証
クライアントはサーバーに対して自己認証する。
 
④クライアントーサーバー間でチャンネルを使って通信
リモートクライアントは、暗号化された接続でリモートホストと対話する。
 

(2)トランスポート層で基本情報を交換


 
①鍵交換、サーバーの承認
 
鍵交換の間、サーバーは一意のホスト鍵を用いて、クライアントに対して自己識別を行う。
 
クライアントがこの特定のサーバーと過去に通信したことがなければ、サーバーのホスト鍵はクライアントには未知であり、接続は成立しない。
 
OpenSSHはこの問題に対処するためにサーバーのホスト鍵を承認する。
 
それ以降の接続では、サーバーのホスト鍵はクライアント上に保存されているバージョンと照合され、クライアントが本当に目的のサーバーと通信していることを確信できる。
 
今後このホスト鍵が一致しなくなった場合には、ユーザーは接続前にクライアントの保存してあるバージョンを削除する必要がある。
 
②公開鍵暗号化アルゴリズムが決定
 
③対称暗号化アルゴリズムが決定
 
④メッセージ認証アルゴリズムが決定
 
⑤ハッシュアルゴリズムが決定
 
・初回の鍵交換で、交換に使用されるハッシュ値と共有秘密値が作成された後、2つのシステムは新しい鍵とアルゴリズムの計算を直ちに開始して、認証と今後この接続で送信されるデータを保護する。
 
・所定の鍵とアルゴリズムを使用して一定量のデータが送信された後に、もう1回鍵交換が行われてハッシュ値と新しい共有秘密値の別のセットが生成される。
 
攻撃者がハッシュ値と共有秘密値を判別できたとしても、その情報が役立つのは限られた時間だけ。
 

(3)認証


 
・トランスポート層が2つのシステム間で情報を渡すためのセキュアなトンネルを構築すると、サーバーは秘密鍵でエンコードされた署名の使用やパスワードの入力などサポートされている認証方法をクライアントに伝える。
 
次に、クライアントはサポートされている認証方法を使ってサーバーに対して自己認証を試みる
 
SSHサーバーとクライアントは、異なるタイプの認証を採用できるように設定可能なため、双方の制御が最適化される。
 
サーバーはそのセキュリティモデルに基づき、サポートする暗号化方法を決定することができ、クライアントは利用可能なオプションの中から試行する認証方法の順番を選択できる。
 

(4)チャンネル


 
・認証に成功した後は、多重化と呼ばれる手法により複数のチャンネルが開かれる。
 
これらの各チャンネルは、異なるターミナルセッションと転送されたX11セッションの通信を処理する。
 
・クライアントとサーバーとも、新しいチャンネルを作成できる。
 
その後、各チャンネルに別々の番号が接続の両端に割り当てられる。
 
クライアントが新しいチャンネルを開こうとする時には、クライアントは要求と共にチャンネル番号を送信する。
 
この情報はサーバーにより保存され、そのチャンネルに通信を移動するために使用される。
 
この目的は、異なるタイプのセッションが相互に影響しないように、あるセッションの終了時にそのチャンネルがSSHによる一次接続を停止せずに閉じることができるようにするため。
 
・チャンネルはフロー制御もサポートしているため規則的な方法でデータを送受信することができる。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です