はじめに
このドキュメントでは、セキュアシェル(SSH)ネゴシエーション中のパケットレベル交換について説明します。
前提条件
要件
次の基本的なセキュリティの概念に関する知識があることが推奨されます。
- [Authentication]
- 機密保持
- 整合性
- キー交換方式
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
SSHプロトコル
SSHプロトコルは、1台のコンピュータから別のコンピュータにセキュアなリモートログインを行うための方法です。SSHアプリケーションはクライアント/サーバアーキテクチャに基づいており、SSHクライアントインスタンスをSSHサーバに接続します。
SSH交換
1. SSHの最初のステップは Identification String Exchange
.
1.1.クライアントはパケットを作成し、それを次の内容を含むサーバに送信します。
- SSHプロトコルバージョン
- [Software Version]
クライアントプロトコルバージョンとソフトウェアバージョン
1.2.サーバは、自身のSSHプロトコルバージョンとソフトウェアバージョンを含む、自身のID文字列交換で応答します。
サーバプロトコルバージョンとソフトウェアバージョン
2. 次のステップは「Algorithm Negotiation.
」です。このステップでは、クライアントとサーバの両方が次のアルゴリズムをネゴシエートします。
- キー交換
- 暗号化
- ハッシュベースのメッセージ認証コード(HMAC)
- 圧縮
2.1.クライアントは、サポートするアルゴリズムを指定して、Key Exchange Initメッセージをサーバに送信します。アルゴリズムは優先順位に従ってリストされます。
クライアントキー交換の初期化
クライアントでサポートされるアルゴリズム
2.2.サーバは、サポートするアルゴリズムをリストした独自のKey Exchange Initメッセージで応答します。
2.3.これらのメッセージは同時に交換されるため、両者はアルゴリズムリストを比較します。両方の側でサポートされているアルゴリズムに一致がある場合、次のステップに進みます。完全に一致するアルゴリズムがない場合、サーバはクライアントのリストからサポートする最初のアルゴリズムを選択します。
注:クライアントとサーバが共通のアルゴリズムに合意できないと、キー交換は失敗します。
サーバーキー交換の初期化
3. 次に、両側でKey Exchang
e
フェーズに入り、DHキー交換を使用して共有秘密を生成し、サーバを認証します。
3.1.クライアントはキーペアを生成し、Public and Private,
を実行して、Diffie-Hellman Group Exchange Initパケット内のDH公開キーを送信します。このキーペアは、秘密キーの計算に使用されます。
クライアントDiffie-Hellmanグループ交換の初期化
3.2.サーバが独自のPublic and Private k
キーペアを生成する。 クライアントの公開キーと独自のキーペアを使用して共有秘密が計算される
3.3.サーバは、次の入力を使用してExchangeハッシュも計算します。
- クライアントID文字列
- サーバID文字列
- クライアントキーエクスチェンジ初期化のペイロード
- サーバキーエクスチェンジ(IKE)初期化のペイロード
- ホストキーからのサーバ公開キー(RSAキーペア)
- クライアントDH公開キー
- サーバDH公開キー
- 共有秘密キー
3.4.ハッシュの計算後、サーバはRSA秘密キーを使用してハッシュに署名します。
3.5.サーバは、次を含むメッセージDiffie-Hellman Group Exchangeを構築します。
- サーバのRSA公開キー(クライアントがサーバを認証するのを支援するため)
- サーバのDH公開キー(共有秘密の計算用)
- HASH(サーバを認証し、秘密キーがハッシュ計算の一部であるため、サーバが共有秘密を生成したことを証明するため)
Server Diffie-Hellman Group Exchange応答
3.6.クライアントは、Diffie-Hellman Group Exchange Reply(DH)を受信した後、同じ方法でハッシュを計算し、受信したハッシュと比較し、サーバのRSA公開キーを使用して復号化します。
3.7.受信したハッシュを復号化する前に、クライアントはサーバの公開キーを確認する必要があります。この検証は、認証局(CA)によって署名されたデジタル証明書を使用して行われます。 証明書が存在しない場合は、サーバの公開キーを受け入れるかどうかをクライアントが決定します。
注:デジタル証明書を使用しないデバイスに初めてSSHを使用してログインする際、サーバの公開キーを手動で受け入れるよう求めるポップアップが表示される場合があります。接続するたびにポップアップが表示されないようにするには、サーバのホストキーをキャッシュに追加することを選択できます。
サーバ公開キー
4. 共有秘密が生成されたため、両端で次のキーの導出に使用されます。
- 暗号化キー
- IVキー:これらは、セキュリティを強化するために対称アルゴリズムへの入力として使用される乱数です。
- 整合性キー
キー交換の終了は、NEW KEYS
メッセージの交換によって通知されます。このメッセージは、これらの新しいキーを使用して以降のすべてのメッセージが暗号化および保護されることを各当事者に通知します。
クライアントとサーバの新しいキー
5. 最後のステップはサービスリクエストです。クライアントは、SSHサービスリクエストパケットをサーバに送信してユーザ認証を開始します。サーバがSSH Service Acceptメッセージで応答し、クライアントにログインを要求します。この交換は、確立されたセキュアなチャネルを介して行われます。
関連情報